目录
前言 2
1 方案设计 4
1.1 方案论证 4
1.1.1 控制器的选择与论证 4
1.1.2 电机驱动芯片的选择与论证 4
1.1.3 显示器件的选择与论证 5
1.1.4 路况检测模块 5
2 系统硬件电路与实现 5
2.1 红外遥控及解码模块 5
2.2 红外遥控模块及解码模块 6
2.2.1 二进制信号的调制 6
2.2.2 二进制信号的解调 7
2.2.3 二进制信号的解码 7
2.3 单片机红外硬件电路的实现 8
2.4 电机驱动智能灭火模块 8
2.5 路况检测模块 11
2.6 智能防撞报警模块 12
3 系统软件设计及实现 14
3.1 红外整体程序 14
3.2 红外遥控的解码和实现 15
3.3 电机驱动灭火 16
3.4 小车防撞报警 17
4 系统调试 18
4.1 遥控发送接收调试 19
4.2 灭火驱动调试 20
5 总结 22
前言
在现代社会,单片机技术发展迅速,机械电子技术逐步融合,自动控制技术在工业中的地位已经变得非常重要。迄今为止,中国的自动控制和传感器技术在世界上处于领先地位,譬如,玉兔二号今年一月在背面着陆。作为第二次工业革命的产物,汽车也与更准确的电子信息相结合,特别是现在的热门的自行巡航系统,表明了电子信息技术对汽车影响巨大,汽车上加装的各种智能系统使汽车的功能更加多样,集代步,娱乐,甚至办公等多种功能于一体。
随着时代发展,单片机的应用会越来越多,越来越深入。目前中国的信息技术虽然达到了世界顶尖水准,但在很多方面和发达国家仍然有很大的差距,这需要我们继续努力,奋起直追。为了适应今后智能汽车的发展,现特开始研究小型智能灭火小车。探索今后智能汽车的发展模式,掌握多种控制技术和实时传感器的配合方法。促进智能汽车的发展。此项设计的核心应用了51单片机为控制核心,实现小车寻迹,蓝牙控制,灭火等多种智能功能。
1 方案设计
1.1 方案论证
在对系统进行设计时,对传感器的选择以及芯片的选择,电机的功率选择都进行了一一论证,尽可能选择出适合系统的传感器及芯片,以及功率适合的电机。
1.1.1 控制器的选择与论证
方案一: STM32F103RBT6。32位单片机主频为72M,而51单片机的最高主频为24M,所以STM 32的运行速度比51单片机快很多。集成大部分工控当中的功能模块如USB,管脚多且外设丰富,该单片机的程序模块化,代码效率高,函数接口简单,开发简易且周期短,主要在工业控制、智能设备等上面使用。
方案二: AT89C51系列。传统的8051内核单片机升级后的单片机。有抗干扰强、工作频率广、内部高可靠进行复位、功耗低的优点,这种系列单片机采用的是AT89C第八代的加密技术,以现在技术水平来说暂时是没办法解的,完全兼容传统语句代码,抗干扰能力强,具有防外部时钟的功能。
综合考虑,系统最终选择的是方案二,主控芯片采用价格低廉,保密性能强,开发简易的8位单片机。
1.1.2 电机驱动芯片的选择与论证
方案一:采用L298N
L298N,内部包含4信道逻辑驱动电路,二相和四相步进电机的专用驱动器,可同时驱动2个二相或1个四相步进电机,内含二个H-Bridge 的高电压、大电流双全桥式驱动器,可驱动46V、2A以下的步进电机,接收标准TTL逻辑准位信号,可以直接透过电源来调节输出电压;此芯片可直接由单片机的IO端口来提供模拟时序信号,但在智能小车电路中单片机IO 端口的使用匮乏。该设计也不用于速度控制,相对来讲LG9110成本较低。
方案二:采用LG9110
LG9110是为控制驱动电机设计的,单片IC之中集成了分立电路,使整机可靠性提高,外围器件成本降低。该芯片具有良好的抗干扰性,有两个TTL/CMOS兼容电平的输入;两个输出端能直接驱动电机的正反转运动,每通道能通过750-800mA的持续电流,峰值电流能力可达1.5-2.0A;同时它具有较低的输出饱和压降;钳位二极管可以释放感性负载的反向冲击电流,使它在驱动继电器、直流电机、步进电机或开关功率管的使用安全可靠。LG9110被广泛应用于各种电路上,如玩具汽车电机驱动、步进电机驱动、和开关功率管等。
方案三:使用分立原件搭建电机驱动电路
使用分立原件搭建电机驱动电路造价低廉,在大规模生产中使用广泛。但分立原件H桥电路工作性能不够稳定,较易出现硬件上的故障,故我们放弃了这一方案。
比较以上方案,在本系统中电机驱动芯片选用第二个方案,使用LG9110作为驱动电路。因为该LG9110驱动能力强,成本低廉,操作起来方便,因此本设计控制器选用此方案。
1.1.3 显示器件的选择与论证
方案一:TFT屏。TFT液晶为每个像素提供了半导体开关,每个像素能由点脉冲直接进行控制,因此每个节点彼此独立,并且可以持续控制,这不仅使显示屏的响应速度提高了很多,同时也可以使显示色阶得到精确的控制,因此TFT液晶的颜色更真实。TFT液晶显示屏具有以下特点:颜色鲜艳、层次感强、亮度好。
方案二:7段数码管是数码管是一类价格便宜 使用简单,通过对其不同的管脚输入相对的电流,使其发亮,从而显示出数字能够显示时间、日期、温度等所有可用数字表示的参数的器件,每个数码管的每一个段码都由一个单片机的I/O端口,或者使用如BCD码二-十进制译码器译码进行驱动。
综合考虑,系统采用亮度高、编程简单、价格低廉、应用广泛的数码管,即方案二。
1.1.4 路况检测模块
采用红外传感器发送接收探头来检测实时路况信息,并传回单片机处理。红外发射探头发射红外信号,遇地面或障碍物反射回红外接收探头,红外接收探头接收到从地面或障碍物反射回的红外信号之后给单片给一个电平信号,来判断整体路况信息。
可直接选择程序简单,性能可靠,价格低廉的红外传感器就可实现。
2 系统硬件电路与实现
2.1 红外遥控及解码模块
本设计采用了AT89C51单片机作为主控芯片来处理各模块运营工作,图1表示出系统硬件总框图。
图1 系统硬件总体框图
2.2 红外遥控模块及解码模块
红外遥控是一种无线,不需要接触的新技术,信息传输更加准确,抗干扰能力强,功耗和成本低,便于携带等诸多优点。应用在现代诸多的商业产品中,如电视,空调等。并且被电子计算机系统所应用。发送和接收两个模块组成了红外遥控模块。发送模块由主芯片的二进制信号编码调试的脉冲信号,通过发射管发射信号。接收管一般采用便宜耐用的接收头,接收信号后,经过放大,检测再传输给单片机处理,如图2所示。
图2 红外遥控解码框图
2.2.1 二进制信号的调制
信号的调制根据遥控器的芯片来完成,把编码后的二进制信号调为频率38KHz的间断脉冲串,差不多等于用二进制信号的编码乘以频率为38KHz 的脉冲信号得出来的间断脉冲串,即调制后用于红外发射二极管发送的信号。如图3所示,A是二进制信号的编码波形,B 是频率为38KHz(周期为26us) 的连续脉冲串,C是经调制后的间断脉冲(C=A×B),用于红外发射二极管发送的波形。图3中,待发送的二进制数据为 101。如图3所示。
图3 二进制信号的调制
2.2.2 二进制信号的解调
一体化红外接收头HS0038完成二进制信号的解调,内部处理并解调复原收到的红外信号,输出图4中波形E(正好是对图3中波形A 的取反),HS0038的解调可理解为:在输入有脉冲串时,输出端输出低电平,否则输出高电平。一体化红外接收头HS0038的 1脚GND接电源地,2脚VCC接+5V,3脚OUT为数据输出(TTL电平,反相输出),能够与单片机相联。
图4 HS0038解调出的波形
2.2.3 二进制信号的解码
接收单片机完成二进制信号的解码,它通过解码红外接收头送来的二进制编码波形,还原出发送端发送的数据。如图5所示
图5 红外信号的编码格式
2.3 单片机红外硬件电路的实现
图6中,一体化红外接收头IR的圆形面为红外接收面,它与SE303红外发射管的有效收发直射距离为35m。
图6 红外接收电路
2.4 电机驱动智能灭火模块
通常情况下大多数的智能遥控小车都使用直流电动机控制小车的运动,直流电机有两个控制端,通过改变输入电平的不同来改变电机的不同的运转。图7为电机驱动模块
图7 电机驱动电路
在图7中,单片机通过控制P0.0P0.3引脚高低电平来控制直流电机M1、M2的正反转。当P0.0P0.3输入为1010时,两电机均处于正转状态,当前小车体现为前进;当P0.0P0.30输入为0101时,两电机均处于反转模式,小车整体表现为后退。当P0.0P0.3输入为1001以及0110时,一电机正转,另一电机反转,便实现了左右转向功能。
小车的智能灭火模块通过红外传感器感受到附近温度变化。当附近温度过高时,红外传感器将感受到的信号传给单片机处理,单片机再把处理的信息反馈给灭火模块,从而打开风扇,实现风灭火,智能化的小车能减少损失,保护居民的人身财产安全。
显而易见,如果只靠单片机来驱动小车的行进智能灭火是不现实的,毕竟单片机自身管脚输出的高电平的电压是微弱的,这种微弱电压直接控制电机会导致电机的马力不足,不能够带动整个小车运行,因此在这种情况之下,最适合的方式就是运用电机的驱动芯片来实现小车的运动,所以采用了一款便宜的电机驱动芯片L9110来完成,实际上L298N芯片可以更好的驱动电机,能实现电机调速的功能,但是因为小车自身的重量和电压问题我们就采用L9110芯片。下面是关于L9110的相关数据手册。
图8 LG9110的实物图
特点有工作电流低,静态;电源电压范围2.5V-12V,干电池即可实现;各个通道具有连续输出电流的能力;饱和压降低;输出电平兼容,可直接连接CPU;有高压保护功能。
图9 器件管脚图
图10 LG9110管脚定义
序号 符号 功能
1 OA A路输出管脚
2 VCC 电源电压
3 VCC 电源电压
4 OB B路输出管脚
5 GND 地线
6 IA A路输入管脚
7 IB B路输入管脚
8 GND 地线
LG9110电机驱动芯片有8个管脚,里面有两个电源管脚和两个接地管脚,还有两个输入(IA/IB)、和两个输出管脚(OA/OB),两个输出管脚接,电机的两极,而两输入管脚和单片机连接,从而控制电机的状态。小车感受到温度信号时,通过输入管脚IA和IB与单片机的连接处理信号,再通过电路提供动力,使风扇旋转,从而达到灭火效果。
图11 LG9110电动机硬件连接效果
2.5 路况检测模块
检测模块采用了红外发射和接收探头来探测路况消息。红外发射管发射出红外信号,经过路面的信号的反射到红外接收管进行判断,因为白纸与黑纸对于光线反射的效果不同,可根据光线反射的强弱来判断前方是否存在障碍物和道路情况。该模块使用的是简单的红外探头。
图12 路况检测模块硬件连接图
通电之后红外发射管V1、V6、V3导通,向地面和前方实时发射红外信号,如果遇到白色墙或路面时,红外信号经白色路面会出现较强发射,这个时候红外接收探头V2、V5、V4就可以接收到红外信号,让这些探头导通,把低电平送给P3.5、P3.6、P3.7让单片机通过判断处理。路面检测模块有两部分,分别为小车寻黑线的检测和前方是否有障碍物的检测。
2.6 智能防撞报警模块
防撞就是在遇到障碍物的时候,自动转向避开障碍物,它能够预警前方的危险。通过把小车放置在空旷的路面上,小车的前端两探头通过感应前面是否有障碍物,此时,朝下的四个探头也会接收来自地面的信息,当小车运行遇到障碍物时,小车上面主控芯片单片机就会接收到此时路况的具体信息,进而去改变小车的运行路径,同时发出报警信号。
图13 防撞探头连接图
当前面遇到障碍物时,单片机经过分析得到信息之后送给P0.6一个高电平信号,可以使得三极管V1导通,引起SB1蜂鸣器导通,发出报警信号。
当前方无障碍物时,另一个红外接收探头则接收不到发射出来的红外信号,当前方遇到障碍物时,发射头发出去的红外信号被前方的障碍物反射回来,此时被接受探头接收,探头接收到信号时,将会使其中一个管脚成为低电平,再传送给单片机。
3 系统软件设计及实现
在系统软件设计时,我们将所有的模块程序嵌入到遥控器中,这种嵌入式主要是为了便于控制,且不占CPU,因为遥控模块、寻迹模块、以及避障模块等都同时用到了实时检测扫描,这样不仅占用CPU,而且多个程序一块运行还会产生冲突。
图14 程序模块连接
3.1 红外整体程序
在红外系统系统设计中,首先需要一个灵敏的传感器,当传感器检测到红外信号的时候来接受信号。如果信号接受失败,则重复接收,直到信号接收成功。如果一直接收不成功,则可能是红外传感器硬件出现问题。信号接收后,单片机会分析红外信号,对红外信号进行解码,然后执行相关的功能。
图15 红外整体程序框图
3.2 红外遥控的解码和实现
整个控制程序都嵌入到了遥控模块这一单元里边,所以红外遥控的解码是贯穿整个设计的主线,起到了整个系统入口的作用。当遥控器上按下按键时,1脚收到遥控器发送的红外脉冲信号并解码出脉宽波形,同时使单片机产生中断,并开启定时器、脉冲个数计数。记录出每来一个脉冲的时间和脉冲总个数,等到一帧的数据发送完成之后,单片机结束计数,并关闭定时器。之后进入判断阶段,首先判断这一帧数据中的脉冲个数,如果脉冲个数大于31个则将数据丢弃,如果刚好则判断接收的脉冲是0还是1,接收完之后将这些数据保存起来,再来比对数据的对错,首先比对前导码是否正确,也就是看一下当前遥控器是不是与小车匹配的遥控器,如果都正确之后再来将码值存起来。主程序用一个swich函数来对相应码值进行对应函数的调用就可以了,比如按下了上键,则调用前进函数来完成小车前进动作。
图15 解码程序框图
3.3 电机驱动灭火
从宏观上讲,电机驱动在小车运行中占据主导,也是小车接收到命令之后的最终输出,任何一个模块所执行命令的外在表现。
电机驱动包括驱动电机前进、后退、左转、右转、暂停及风扇的旋转的功能,这些功能不仅仅只是遥控器按下上下左右之后才执行,而是每一个模块都会有执行电机驱动模块的操作,所以在设计程序时,最优设计应该是将这些前进、后退、左右转向单独编译成一个函数块,每一个子模块的运行就只需调用这些函数就可完成。这样做就节省了很大的程序空间。
图16 小车灭火程序框图
3.4 小车防撞报警
主人命令开启防撞功能时,小车主程序调用防撞报警函数,在防撞报警函数打开时进入实时检测P3.7脚,当前方遇到悬崖或障碍物时,小车内部防撞函数调用电机驱动函数来调节小车行经来避免掉入悬崖或撞击障碍物,并触发报警信号引起报警。 图17 防撞报警程序图
4 系统调试
把原理图画、最终PCB画好之后再根据实验室现有的实验条件进行制版,并一并把所有元器件焊接上,在焊接时应注意以下几点:
电解电容有正负极之分,长正短负。;
二极管有正负极之分,长正短负;
话筒有正负之分,负极与外壳相连;
蜂鸣器有正负之分,长正短负;
三极管按照电路板封装焊接;
集成电路即芯片,安装时要注意缺口对应
数码管焊接时注意数码管上的小数点要与电路板封装上的小数点对应;
焊接完之后,还需对小车各个模块进行调试,以确保硬件的完好。
4.1 遥控发送接收调试
由于是厂家直接提供的遥控器,为了确保遥控器能够正常发送红外信号,必须提前进行测试,但遥控器是集成的,而红外线发射灯又是透明的,当发送的时候人眼观察不到任何现象,那么怎样知道遥控器是否正常呢?这里教你一小招,将遥控器装上电池,然后将你自己的手机的照相功能打开,将手机上的摄像头对准你遥控器前面的发射灯,然后按遥控器上的随便哪个按键,观察手机照相功能里面的遥控器发射灯是否点亮,如果灯已被点亮,则说明遥控器能够正常发射红外信号,否则遥控不能发射红外信号。这一招很简单,在家里也能用,平常家里面的遥控电视机遥控器不灵了就可试着采用这一方法,进而初步判断是不是遥控器已坏或者遥控器上面电池没电了。当数码管显示为3时,此时小车将实现红外遥控功能。按动遥控板即可控制小车的运动。
在上面已经介绍了遥控器的测试,现在再来谈谈红外接收头的调试,如果遥控器能够正常工作,下一步就应该测试一下接收头是否正常接收了。小车上电之后将接收头的1号管脚接上示波器,然后一直按下遥控器上面的按键,观察示波器上面波形,如果能够发现有重复的高低脉冲,但看不清具体的脉冲宽度,则说明红外线能够正常接收红外信号。如果接上之后没什么反应,也未见其波形,初步推断是接收头有问题,或许是元器件已坏,也可能是焊接时有虚焊或短路,这时应该再次检查电路连接。
以上步骤都完成且正常之后可烧写遥控小程序以此来检查所用程序是否能够正常解码。
图19 小车遥控功能测试
4.2 灭火驱动调试
当小车调试到灭火程序时,车子两端各有一个红外传感器可以感受到附近的温度变化。当两个红外传感器同时感受到温度变化时,小车报警并停止前进,并打开风扇进行灭火,当火源消失时,小车停止报警并开始行进。第一次调试时,所使用火源温度不够用,红外传感器感受不到外界信号,故失败。第二次调试时,小车两个红外传感器均受到信号反馈,但是小车只停车报警,风扇并没有运行。通过排除法,了解到小车风扇电路出现问题,故重新焊接风扇电路,然后实现小车的灭火功能。
图20 小车灭火功能调试