1、基于单片机的智能小车的设计基于单片机的智能小车的设计I摘要单片机作为一种微型控制器,自走入人们的视野以来,就随着科技进步不断地更新换代。它能够将计算机所有关键的零件整合集中在一块芯片上,并且具有强大的计数功能,以及各种必要的接口,因此单片机在自动控制系统中通常处于核心地位。本文对于智能小车的设计思路就应用了最常见的 AT89S51 单片机作控制处理器,该单片机在低功率的基础上,能够保持其性能在一个较高的水平上,且其 8K 的处理器够灵巧,适用于嵌入式产品,在众多单片机中,表现较为优秀。本设计是在单片机的基础上实施的,兼具数据处理、即时调控和报警提醒功能,小车接到行驶指令后,红外探头会检测路况信
2、息(是否处在黑线路径范围内)并反馈给单片机处理,单片机判断后作出相应指令,由电机驱动使小车执行相应行驶动作。单片机与系统的配合使智能小车的行驶保持灵敏迅速的状态。关键词 :单片机 寻迹 报警 红外线 电机驱动基于单片机的智能小车的设计IIAbstractWith the rapid development of science and technology in recent years, SCM applications are continually deepening. Traditional control test drive at the same time, the rapidl
3、y growing update. In real-time detection and control of the microcomputer application system, the microcontroller is often used as a core component. SCM is the main feature integrated computer chip in a micro-computer. It is a set of multi-counting and the interface in one of the micro-controller. T
4、he 51 single-chip microcontroller is the most typical and most representative one.The design of the main application AT89S51 as the control, and display driver integrated circuits and other systems. Based on single chip design. MCU AT89S51 using the controller as an alarm device that can give full p
5、lay to AT89S51 of data processing and real-time control functions. Make the system work in the best condition, improve the system sensitivity.When two signal driven forward by car tracing module,the infrares on whether to produce level signals through the black,retutn again according to requirement
6、of design procedure of judgment for motor driver module,it controls the car turning back forward of running on the black line.Keywords:SCM,Tracing, Alarm device, Level signals, Motor driver module基于单片机的智能小车的设计III目录摘要 IAbstractII目录 III前言 11 设计任务及方案 21.1 设计任务及要求 21.2 设计方案论证 21.2.1 控制器选择 21.2.2 电机驱动芯片的
7、选择 31.2.3 路况检测模块 42 系统硬件电路与实现 52.1 红外遥控及解码模块 52.1.1 二进制信号的调制 62.1.2 二进制信号的解调 72.1.3 二进制信号的解码 72.2 单片机红外接收硬件电路的实现 82.3 电机驱动模块 92.4 路况检测模块 132.4.1 寻迹模块 142.4.2 智能防撞报警模块 163 系统软件设计与实现 173.1 整体程序的构架 183.2 红外遥控解码的实现 193.3 电机驱动 213.4 小车寻迹 213.5 小车防撞报警 224 小车系统原理图 24基于单片机的智能小车的设计IV5 系统调试 265.1 遥控发送接收调试 265
8、.2 电机驱动调试 275.3 寻黑线和防撞的调试 27总结 27致谢 28参考文献 29附录 30元件清单 30系统程序 31基于单片机的智能小车的设计V基于单片机的智能小车的设计27前言在科技飞快进步的今天,自动控制技术已经迅速成长起来,它与传感器技术之间的配合也越来越默契,时下大热的各种电子智能产品就是自动控制技术发展的产物。目前国内的自控和传感技术与国外还存在一定的差距,这一领域的优秀产品已有很多,比如日本本田制造出来的智能机器人,对于人类的步态模仿已达到非常自然的水平,并且它还有一定的智力,能够与六岁的孩童相比。在机械领域一直处于热门地位的汽车,也加入了越来越多的电子信息元素,比如越
9、来越多的汽车产品配置了电子装置,人们在车上不仅可以办公,还能进行多种娱乐活动,这使得汽车向着更加娱乐化和多功能的方向发展,而不仅仅发挥代步功能。另外,汽车的核心配置也越来越电子化,自动控制技术让汽车工艺发展更进了一步。随着自动控制产业的发展,电子信息化的教育也渐渐在国际上被提上日程,越来越多的培养年前一代人才的科技竞赛也走入了人们的视野,比如 中国大学生方程式汽车大赛(FSC、FSEC)、全国大学生机器人大赛等, 都能够很好地激发学生群体的兴趣,促使他们主动学习,对我国电子信息行业的发展产生一定的促进作用。本设计是以杨老师所给出的小车为框架,以 AT89C52 单片机为控制器制作一辆简易的智能
10、小车,希望达到小车能够按照引导线的路径自动行驶的效果,以期跟上汽车产业自动化发展的脚步,并掌握本阶段应具有的专业素养和动手能力。基于单片机的智能小车的设计281 设计任务及方案1.1 设计任务及要求本设计是以单片机作为控制核心制作的一个具有简单智能的小车。设计要求如下:具有单片机核心控制模块;具有红外遥控解码模块;具有电机驱动模块;具有路况检测模块;具有光感模块;具有声控模块;具有 7 段数码管显示模块;具有报警模块;1.2 设计方案论证1.2.1 控制器选择方案一:采用 MSP430 单片机MSP430 是德州仪器 (TI)生产的一种 RISC 混合信号处理器,这个系列的产品一方面在低功耗上
11、表现极其优秀,另一方面又能够不影响信号连接、传感器以及其他组件的正常运行,可以说为电池续航问题交上了一份完美的答卷。MSP430 优点:0.1uA RAM 保持;0.8uA 实时时钟模式;250uA/MIPS 有效;高性能模拟器件;是精确测量的理想选择;其处理器能够达到仅需一串代码就使一个应用运转起来;而且还能够在系统内部更改、更新代码和数据。但系列单片机也有缺点,由于其功耗低,导致几个管脚的驱动力不够,主频也不够高,处理数据的速度不够快,达不到本设计对于单片机的预期,故不选用这一系列的单片机。方案二:采用 AT89S51 单片机 1基于单片机的智能小车的设计29与 MSP430 不同,AT8
12、9S51 在低功率的基础上,能够保持其性能在一个较高的水平上,其 8K 字节的 FLASH 存储器能够与工业 80C51 产品指令和引脚完美融合,同时也能够兼容常规编程器。与 MSP430 的 16位处理器相比,AT89S51 的 8 位处理器更加迷你灵活,适用于更多的嵌入式产品,兼容性更好。AT89S51 具有以下标准功能:8k 字节 Flash,256 字节 RAM,32位 I/O 口线,看门狗定时器,2 个数据指针,三只 16 位定时器/计数器,一个 6 向 2 级中断结构,全双工串行口,片内晶振及时钟电路。除此之外他还能够实现 0Hz 静态逻辑操作,有两款软件能开启省电模式。在不需高效
13、工作的时候,还能够保持处理器不运行,RAM、定时器/计数器、串口、中断继续工作的状态。在低电量模式,还能够保证RAM 数据不丢失,振荡器停止,单片机不运行,持续该状态到各项条件能够恢复正常工作。方案选择:综上所述:经过对 MSP430 和 AT89S51 的各项条件比较,本设计将采用 MSP430 作为处理器,其物美价廉,上手更容易,性能表现也优异,符合设计最初的期望值。1.2.2 电机驱动芯片的选择方案一:采用 L298N L298N 为 SGS-THOMSON Microelectronics 所出产的双全桥步进电机专用驱动芯片( Dual Full-Bridge Driver ) ,内部
14、包含 4 信道逻辑驱动电路,是专门针对于二相和四相步进电机的一款驱动器,它能够在同一时间调动两个二相或者一个四相的步进电机,它的内部有两个 H-Bridge 的高电压、大电流双全桥式驱动器,用来接收标准 TTL 逻辑准位信号,能够调动 46V、2A 以下的步进电机,且可以直接透过电源来调节输出电压;它还能够识别单片机 IO 端口传来的模拟信号,但 IO 端口在智能小车中较为少见,不过这一芯片的优点是造价低廉。方案二:采用 LG9110LG9110 这种电路驱动芯片对电路的集成度更高,将各个电路集中在一个芯片上,能够减少外部元件比例,减少造价。另外这种芯片有两个通道可以进行输入,且两个输出端都能
15、保持 750-800mA 较大电流基于单片机的智能小车的设计30通过,峰值电流能力可达 1.5-2.0A,从而保证了驱动能力,提供更高的工作效率。而它所具有的低输出饱和压降以及内置钳位二极管释放感性负载的反向冲击电流的功能,又保证了在使用中安全性。因此,这种芯片作为集成电路器件已经普遍被用在玩具汽车电机驱动、步进电机驱动以及开关功率管等电路上。方案三:使用分立原件搭建电机驱动电路 这种方法成本非常低,普遍应用于规模化生作业中,但它有一个缺点,即 H 桥电路的运转状态不能保持稳定,发生硬件问题的几率比较大,因此不选用这种方法。综上所述:经过对上面三种驱动芯片的比较,我们发现第二种芯片不论是在驱动
16、能力上、造价上,还是使用的难易程度上都表现较为优秀,因此决定使用第二种芯片 LG9110。1.2.3 路况检测模块这个部分我们将使用红外发射探头来处理,当红外线检测到异物后,将信号返回到探头,探头再把信号传送给单片机控制器进行判断,以这样的一个模式,来判断整体路况信息。2 系统硬件电路与实现本方案选取 AT89C52 单片机为处理器,调控各单元工作,其硬件组成框架如图 2.1基于单片机的智能小车的设计31AT89C52遥控模块路面检测模块电机驱动模块报警模块显示模块图 2.1 系统硬件组成框架图2.1 红外遥控及解码模块家中普遍使用的电视遥控器就使用了红外遥控技术,这种技术有诸多优势,比如:无
17、线实施、不需要触控、干扰因素少、有效信息传输率高、功率损耗小、造价低廉等,随着近年来的发展,已经被广泛地应用于各个领域。这一技术系统由 2 个部门构成:发送和接收部门。发送部分由主芯片将待发的二进制信号编码调制为一系列的脉冲串信号,通过红外发射管发射红外信号红外信号接收端普遍采用价格便宜,效率高且效果有保证的一体化红外接收头(如 HS0038,它接收红外频率为38KHz,周期为 26us)。这种接收头在放大信号的同时,还能对信号的波形进行检测和修整,并转换成 TTL 电平的编码语言,传到中央处理器,由 cpu 解码和发布指令,去控制相关对象。如图 2.1.1 所示。遥控器 一体化红外接收头 单
18、片机发送 接收解调 解码基于单片机的智能小车的设计32图 2.1.1 红外遥控解码框图2.1.1 二进制信号的调制控制器的主芯片要负责二进制信号的处理工作,它将二进制信号的编码处理为 38KHz 的不连续脉冲串,简单来说就是做一个把两者相乘的工作,用于之后的信号发射环节。如图 2.1.2 所示,A 为二进制信号波,B 是频率=38KHz(周期=26us) 的不间断脉冲串, C 为经芯片处理过的不连续脉冲串(即 C=AB),用于之后的信号发射环节的波信号(图中二进制信号编码为 101)。图 2.1.2 二进制信号的调制2.1.2 二进制信号的解调红外接收头我们采用的是 HS0038,它负责了二进
19、制信号的复原工作,就是解调,即将上面提到的不连续脉冲信号恢复成二进制信号波(恰好是图 2.1.2 中二进制信号波的垂直翻转)。此阶段接收头的工作可以简单解释成:有脉冲串时输出低电平,没有脉冲串时则输出高电平。该红外接收头 1 脚 GND 接电源地,2 脚 VCC 接+5V,3 脚 OUT基于单片机的智能小车的设计33为数据输出(TTL 电平,反相输出),能直接和单片机连接。图 2.1.3 HS0038 解调出的波形2.1.3 二进制信号的解码接收单片机的解码工作,相当于将受到的波形复原成一开始发送端输出的信号。如图 2.1.3,把波形 E 解码还原成数据信息 101。图 2.1.4为红外信号的
20、编码格式图 2.1.4 红外信号的编码格式传输开始 8 位数据 传输结束20 个脉冲 高位在前,低位在后 10 个脉冲基于单片机的智能小车的设计342.2 单片机红外接收硬件的电路设计红外接收硬件的电路设计如图 2.2.1, IR 是红外接收头的圆形面,用于接收红外信号,它和 SE303 发射管之间的有效距离是 35m,在这个范围内能够进行有效的红外收发。图 2.2.1 红外接收电路3 脚接电源,2 脚接地,一脚接单片机的 P3.3(外部中断 0),在收到红外信号时,1 脚处理之后把信号输送到单片机,使其暂停,进而开始解码工作。2.3 电机驱动模块目前直流电机已经普遍应用于遥控车,它有 2 个
21、控制端口,能够根据接收的电平的异同来调整电机的工作。电机驱动单元的电路图如图 2.3.1 所示。基于单片机的智能小车的设计35图 2.3.1 电机驱动模块P0.0P0.3 电平的水平会影响直流电机 M1、M2 的转向,单片机就是通过调控这几个引脚的电平水平来调控电机的转向。引脚的电平为 1010使,M1、M2 正转,使小车往前走;引脚电平为 0101 时,M1、M2 反转,使小车向后走;引脚电平为 1001 或 0110 时,M1 和 M2 一个正转一个反转,使得小车能够向左向右走。然而只以单片机输出的电压来带动小车形势是完全不够的,其电压太小,不足以带动小车持续运行,因此我们选取了一种合适的
22、电动机芯片来弥补这个不足。L9110 芯片在性能上表现优秀,且造价不贵,又能够很好地兼顾到小车本身的重量和电压等其他要求,可以说是最适宜用于这个小车设计的芯片了。下面给出关于 L9110 的相关数据手册。基于单片机的智能小车的设计36图 2.3.2 LG9110 的实物图特点: 低静态工作电流; 宽电源电压范围 2.5V-12V; 每通道具有 800mA 连续电流输出能力; 较低的饱和压降; TTL/CMOS 输出电平兼容,可直接连接 CPU;输出内置钳位二极管,适用于感性负载; 控制和驱动集成于单片 IC 之中; 具备管脚高压保护功能;基于单片机的智能小车的设计37图 2.3.3 LG911
23、0 管脚图管脚定义如表 2.3.1表 2.3.1 LG9110 的管脚定义序号 符号 功能1 OA A 路输出管脚2 VCC 电源电压3 VCC 电源电压4 OB B 路输出管脚5 GND 地线6 IA A 路输入管脚7 IB B 路输入管脚8 GND 地线基于单片机的智能小车的设计38L9110 有 8 个管脚,电源脚、接地脚、输入脚(IA/IB)、输出脚(OA/OB)各有 2 个,2 个输出脚与电机两极相连,2 个输入脚与单片机相连,它们共同协作调控电机工作。图 2.2.4 为 L9110 的硬件连接图。图 2.3.4 LG9110 硬件连接图2.4 路况检测模块这个单元的工作主要由红外探
24、头来负责,使用了简易且应用广泛地红外探测法来达到目的。发射器发出红外信号到达路面,再由路面返回接收器,因为黑色和白色物体反射回来的光的强度不同,红外装置就可以通过返回的光的强度来确定路况。图 2.4.1 为这一单元的硬件框架图。基于单片机的智能小车的设计39图 2.4.1 路况检测单元框架设计图发射管 V1、V6、V3 通电之后,往车前面和地面连续发出红外光,在前方有白墙或者普通路面就会反射回强度较高的红外光,使得V2、V5、V4 接通,把低电平信号传到单片机 P3.5-3.7,进行进一步的信号识别处理。这一单元的检测可实现黑线检测和障碍物检测 2 个功能。2.4.1 寻迹模块在这一单元,我们
25、在白纸上预设了一条无规则的弯曲黑线跑道,原理如上面叙述的红外探头的工作原理,小车在行进时,探头连续向地面发出红外信号,白纸部分反射回的红外信号能够接通接收管信号通路,黑线部分则会吸收红外,不返回信号,这要求黑线跑道的宽度至少要比两个探头的距离宽,这才能够保证被检测到。寻迹模块设计实物如图 2.4.2 所示。基于单片机的智能小车的设计40图 2.4.2 小车前方探头实物如图,小车前方下部的两个透明物就是红外发射探头,两个黑色的就是红外接收探头,黑色路径的宽度只要要宽于这个尺寸,就能够确保小车寻迹行驶。当小车开始运行,如果在黑色路径之内,则没有红外信号被返回,小车将继续行驶;如果稍微偏离黑色路径,
26、红外信号就会返回接收管,是接收探头接通,将信号传递给单片机作判断,如果收到的是左边的接收器传来的信号,单片机就会发出向右转向的指令,如果收到的是右边的接收器传来的信号,单片机就会发出向左转向的指令。小车的按照一定的路径行驶就是通过这样的信号传递流程实现的。2.4.2 智能防撞报警模块这一个单元对于现代汽车向进一步自动化方向发展非常有价值,也是一个非常实用,能够提高驾驶安全性的一个功能。如果车子能够自动判别前面有没有异物,并对驾驶员发出提醒,那么将在一定程度上减少交通事故的发生。基于单片机的智能小车的设计41当小车在空地上时,前面的 2 个探头会检测前方是否有异物,向下的 4 个探头会一同接到检
27、测信息,在小车遇到危险路况时(比如山崖边),单片机就会根据探头传来的信号调整小车的行驶方向,并发出警示提醒,避免危险。本单元的设计如图 2.4.3 所示。图 2.4.3 防撞报警模块电路设计如果前方有异物,单片机就会给 P0.6 传递一个高电平信号,然后三极管 V1 被接通,接着连通报警器 SB1,发出蜂鸣警示。如果前方路况正常无异物,那么红外接收探头就会收到反射回来的红外光,并传递给单片机一个低电平;同样的原理,在小车走到山崖边上时,由于山崖太深,发出去的红外信号返回距离太长不能被接收探头检测到,那么传递给单片机的就还是一个高电平信号,接着单片机就会对次信号进行判断并发出对应指令调整小车路径
28、,同时发给报警器一个指令,发出蜂鸣提醒。基于单片机的智能小车的设计423 系统软件设计与实现为了方便使用程序,我们在软件设计方面做了一定的工作,把全部程序单元都嵌入遥控器,这样做的优点不止是方便使用,还能够节省 CPU 的存储空间,因为整个设计中有多个单元都需要进行即时检测,如果不做这样的嵌入的话,不但会占 CPU 空间,还会影响各单元的正常运行。各个单元的衔接如图 3.1 所示。图 3.1 程序模块连接遥控器发出信号后,单片机运行外部中断模式,对遥控器发出的信号实施解码操作,解码完毕后对照遥控器传来的数据信息向对应的单元发出运行指令,所有模块运行的结果指令由电机来实施,因此图3.1 中所有的
29、箭头最后都汇总于电机控制单元。遥控器输入 单片机解码电机控制(前进后退左右转)黑线寻迹防撞报警基于单片机的智能小车的设计433.1 整体程序的构架程序框图如图 3.1.1 所示信 信 信信 信 信 信 信 信 信 信信信 信 信 信 信 信 信 信 信信 信 信 信 信 信 信 信 信信 信 信 信 信 信图 3.1.1 整体程序框图3.2 红外遥控解码的实现所有的控制单元都集中在一个遥控器内,因此串联起这个设计的角色就是红外信号的解码部分,它就像是开启这个系统的门。按下遥控器上的按钮发出红外信号时,1 脚会将信号转换成脉宽波,并让单片机暂停运转,同时打开定时器和计数器。统计每个脉冲到达的时间
30、和最终的数量,待一次红外信号的脉冲接收完毕后,计数基于单片机的智能小车的设计44器和定时器停止工作。然后开始识别此次信号的脉冲数量,若31 就舍掉,若是 0 或 1 就存储下来,再进行进一步的判断,先跟前导码比较看是不是吻合,简单来说就是判断遥控器是否匹配,若匹配就存储起来,之后核心程序再利用 swich 函数对其处理并发布指令。举例来说就是,按下向下按钮,核心程序就用后退函数来使小车做出后退动作。如图 3.2 所示基于单片机的智能小车的设计45初始化中断口是否有遥控信号输入是否有抖动进入解码计数脉冲个数同时计数单个脉冲宽度脉冲个数是否为32 个数据解码并判断数据码和数据反码取非之后是否相等执
31、行相关模块否是是否是否是否图 3.2 解码程序框图基于单片机的智能小车的设计463.3 电机驱动电机驱动在这个设计当中处于一个主导地位,所有单元,所有程序发出的命令,想要最终在小车的行驶动作上有所体现,都必须通过它。电机驱动能让小车实现的动作有前行、倒退、向左向右转和停止。这些动作并不是只能通过按下遥控器上相应的按钮才能实现,我们在设计程序时,为了使小车更加智能化,把前行、倒退、向左向右转和停止这些动作指令分别写成了函数,这样每个子单元的工作只要运行相应的函数就能够实现。这样做就节省了很大的程序空间。比如说,在写入左转函数时,为了让小车实现左转的动作,仅给 P0.0-0.3 赋值0010 就能
32、实现,其他前行、后退等动作只要改变对应的赋值就可以完成动作。不过为了保险起见,减少失误,我们可再写入延迟函数,防止指令执行过于迅速损害电机。3.4 小车寻迹小车的主程序若是监测到遥控器发出的寻迹信号,那么主程序就会通过调取设定好的寻迹函数进行寻迹。以下内容是关于寻迹功能设计的主要思路。首先,我们需要搞懂小车是如何进行寻迹功能的,关于它的原理已经陈述过,这里就不做过多说明,以免冗余。小车寻迹函数指的是:P3.5 和 P3.6,这两个函数作为实时扫描单片机管脚。小车左侧探头返回的信号由 P3.5 管脚接受, p3.5=0 代表的是左方探头正在跑离黑线,与此同时,实时扫描的单片机监测 p3.5=0,
33、立即调取右转函数,实现小车的右转功能。小车右侧探头返回的信号由 P3.6 管脚接受,同样的原理,当监测到右侧探头正在跑离黑线时,左转的寻迹函数立即被调取,实现小车的左转功能。如图 3.4,关于小车寻迹功能设计的程序示意图。基于单片机的智能小车的设计47初始化探头跑出黑线了吗哪边探头有输入前进后退右转 左转是否左左右均有右图 3.4 小车寻迹程序示意图基于单片机的智能小车的设计483.5 小车防撞与报警小车的防撞报警系统由主人来激活,在遇到阻碍小车前行或者有危险时,小车主程序监测到其防撞系统激活后,立刻调取 p3.7 函数。p3.7 是小车内部防撞函数,借助小车的电机驱动函数共同调控小车行驶路径
34、,以防落入悬崖等危险情况,改变其行驶路径的同时并出发报警信号引起报警。如图 3.5,关于小车防撞与报警的程序示意图。初始化前方有悬崖或障碍物吗前进后退并报警左转并报警是否基于单片机的智能小车的设计49图 3.5 小车防撞与报警程序示意图4 小车系统原理图如图 4.1,关于小车的硬件电路总设计图基于单片机的智能小车的设计501 2 3 4 5 6ABCD654321DCBARST9RXD/P3.010 INT0/P3.212INT1/P3.13 T0/P3.414 T1/P3.515EA/VPP31XTAL119P0./AD0 39P0.1/AD1 38P0.2/AD2 37P0.3AD3 36
35、P0.4/AD4 35P0.5/AD5 34P0.6/AD6 3P0.7/AD7 32P1.01 P1.2 P1.23P1.34 P1.45 P1.56P1.67 P1.78P2.0/A8 21P2.1/A9 2P2./A1023P2.3/A1 24P2.4/A12 25P2.5/A13 26P2.6/A14 27P2.7/A1528ALE/PROG30TXD/P3.11WR/P3.616 RD/P3.717PSEN29XTAL218VCC40IC1AT89S52RX110KRX1210KRX1310KRX1410KRX1510KRX1610KRX1710KR18560R16560R19560
36、R20560R21560R2560R23560RX1810KR25560D1D2D5D6D7 D3D4D8 8 17 26 35 4IC3LG9108 17 26 35 4IC4LG910C2104C3104MM1MM2V38050R64.7K R41MR547KR3150KR115KB1V1850V2850 SB1R1420R7560R220RL1D2R2560D1Z1a bcdefgDPAA12345678910SM1R8 560R7 560R13 560R12 560R1 560R10 560R9 560R415KR320R515KR620R815KR120V1 V6 V3V2 V5 V4123IRS2R2410KS1R1710KC730P C830PC610uFR1510KC510uFVC