基于单片机的车辆倒车防撞系统设计与实现
2022-07-20赵宗坤
赵宗坤
(武昌工学院智能制造学院,湖北武汉,430065)
0 引言
随着人民生活水平的提高,人民群众拥有私家汽车的数量逐年增多。但司机在驾车行驶过程中,发生碰碰撞撞在所难免,为了保障行车的稳定性,设计一款汽车倒车防撞系统。而超声波测距相较于其他的非接触式测距而言,有着一定的优势,如电磁会受到电磁的干扰,光线会受到阳光和雾霾的影响。这些对超声波来说都不具有影响,对各种恶劣的环境都有一定的适应能力。目前我国的非接触式测距仪常采用超声波、激光和雷达,红外线等。相比超声波,制作雷达或激光测距仪的成本过高,还有红外线测距仪的测距距离又偏短。因此,以超声波作为测距工具已越来越受到我国的关注,应用的领域也越来越广,包括机器人行走,自动导航,水位监测等。随着自动驾驶汽车作为如今汽车领域研究的热点,能够自动避开障碍的技术也越来越受到关注。作为自动驾驶技术的领跑者,美国特斯拉公司已经研发出一套自动驾驶系统,包括8 个摄像头、12 个超声波传感器、一个雷达、一个强大的计算机芯片和大量软件开发。其不仅可以使驾驶员在疲劳的时候放手小憩,而且对于一些非常难停的车位,也能依靠这套系统,实现自主停车,充分解决了司机停车难,易剐蹭的倒车难题。而我国虽然在自动驾驶方面的研究落后于国外,但是我国也研发出了半自动的辅助驾驶系统,如最新上市的宝骏RS-5,其包含77GHz 毫米波雷达,再加上高清摄像头,从而实现ACC 自适应巡航、主动刹车和车道保持等多达14 项智能驾驶辅助功能。大大提高了汽车在行驶或者倒车过程中的安全性。
1 系统总体设计
为了节约成本,减少外部因素的干扰,本系统在比较各种测距工具后选择了以超声波来作为测距工具。
本设计主要包括:单片机最小系统、电源模块、液晶LCD显示器超、声波模块、WT588D 语音模块。
如图1 所示,单片机最小系统在本设计中就是控制核心,而汽车在倒车过程中,超声波一直作为测距工具实时反馈数据,并且每3 秒自动更新一次,然后单片机根据接受到数据,以数字的形式在LCD1602 液晶显示屏上显示,然后WT588D 语音模块把汽车和障碍物之间的距离用语音播报出来。
图1 系统总体设计
2 硬件系统
2.1 单片机最小系统
单片机的最小系统由复位电路、单片机和时钟电路组成,电路图如图2 所示。在单片机外界加一个5V 的电源。是因为单片机工作所需的最多电压为5.5V,最低的电压也要4V。单片机中的VCC 部分要和5V 的正极相连接,VSS 则是接地的一端。确定单片机的工作是否处于开始状态,都得复位电路来决定。当MCU 上电时,它会产生一个复位信号,MCU开始确定MCU 的初始工作状态。当MCU 系统运行且程序由于外部环境的干扰而运行时,复位按钮内的程序从头开始自动执行。通常,外部按钮的上电和手动复位有自动复位功能。当时钟电路开始工作,此时,RESET 端子连续提供2 个机器周期的高电平,MCU 复位操作就完成了。外部的那个手动按钮就是复位电路的按钮,需要与上拉电阻连接以增加输出高电平的值。时钟电路就像微控制器的核心,它控制着微控制器的工作节奏。时钟电路同时也可看作一个振荡电路,微控制器收到它所提供的正弦波信号,一次来作为标准,然后来决定执行速度是快还是慢。XTAL1 对应反相放大器的输入,而XTAL2 则是对应输出,片内振荡器的配置都是由它们来完成的。在外部时钟源被驱动器件使用的情况下,XTAL2 就不用连接了。由于一个机器周期等于6 个状态周期,2 个振荡周期又一个状态周期相等,所以一个机器周期等于12 个振荡周期。假设一个振荡周期的值为1/12us,那么就可以得出外部石英晶体振荡器的振荡频率是12MHz。
2.2 电源电路模块
电源部分的设计由6 节5 号干电池供电9V,由LM7805稳压器模块调节为5V 电源,为MCU 和每个模块供电。该电路由电源开关,稳压器模块,电阻器,电容器和发光二极管组成。该电容器主要用于过滤超声波和单片机模块,以提供稳定的电源。具体电路如图3 所示。
2.3 液晶显示模块
为了得到更加清晰和精准的数字,选择采用LCD1602 来作为显示屏。这样有利于司机进行判断。电路如图4 所示,图中的液晶的RS、RW、EN 叫做命令操作脚,P1 则是数据接口。
图4 液晶显示模块
2.4 超声波测试模块
一个超声波模块的组成包括超声波发射器,接收器和控制电路。其距离感应最远为8.88m ,最近为0.04m,采用的是非接触式的方式,精度保持在3mm 左右。基本工作原理:首先是IO端口TRIG被触发测距,给出一个至少10us高电平信号。8 个40KHZ 方波也会由模块来自动发射,自动检测是否有信号返回;如果有信号返回,IO 口ECHO 就会输出一个高电平。高电平持续的时间为多久,超声波从发射到返回的时间就是多久。超声波传感器有两个探头,一个负责发射,一个负责接收,这两个过程都是由其内部的压电晶片完成的。
3 软件系统
3.1 主程序流程图
如图5 所示,当程序运行开始的时候,单片机首先进行初始化,然后判断自动播放按键是否按下,如果没有按下,就要手动按下播放键,这时,超声波测距仪开始工作,发送超声波,在碰到障碍物后返回,然后超声波测距仪开始计算与障碍物的距离,然后将数据传输到液晶显示器上显示距离,同时通过语音播报器告知驾驶员安全距离还有多少,这个过程每隔3 秒自动更新一次。超声波传感器的发射探头发射出声波,单片机内部定时器就开始计时,当接收探头检测到信号返回时,定时器停止计时,定时器计时的这段时间就是声波传送的时间,然后根据公式就可以计算出汽车与障碍物之间的距离。
图5 主程序流程设计图
3.2 超声波程序流程图
如图6 所示,当程序启动时,IO 口触发,给Trig 口至少10us 的高电平,超声波测距仪开始工作。此时,定时器0 关闭,计数器清零。信号返回时,先判断I/O 口ECH0 是否输出为高电平,如果不是,则返回重新判断,如果是,启动定时器0,定时器0 启动开始计时,。然后判断I/O 口ECH0 输出的是不是低电平,如果不是,返回判断,如果是,关闭定时器0,停止计时。由高电平到低电平的这段持续时间就是超声波从发射到返回的时间。然后计算出时间,重新开始测距。
图6 超声波程序设计图
单片机的编程,设计涉及到很多模块,单片机模块、LED液晶显示模块、WT588D 语音模块等,采用C 语言编程,对于超声波测距,要设定一个固定值,是的超声波能够一直循环测距,而不是一次性测距,本系统设定的时间为3S,为了对司机有非常清楚的提示,不仅要在液晶显示屏上显示出来,而且还得通过语音播报进行语音提醒,所以,在设计时,要确保到声波传回来的时,要把数据用显示屏和语音播报同时提示,确保不会发生语音播报后,显示屏缺没有数据显示的情况,对于测距,要利用单片机I/O 口的触发,激活超声波,同时,确保单片机定时器对声波从发射到返回这段时间的记录,然后通过时间数据来计算出汽车和障碍物之间的距离。
4 实物测试
如图7 所示,为实物调试效果示意图,汽车与障碍物的距离实时显示在LED 显示器上面,此为超声波能够测出的最远距离,当超出这个距离的时候,语音模块就会发出“超出量程”的提示,说明已超出超声波所能测出的距离,但小于这个距离时,超声波重新开始测距,依然是每3 秒更新一次,司机也能在这个距离里有操作反馈。
图7 最远距离测试显示
图8 最近距离测距显示
图中的黄色信号灯为语音模块的busy 输出端,当它亮时,表示语音模块可放音,蓝色按键为电源启动键,液晶显示器下方的黑色按键则为复位按键。
右上角像喇叭形状的就是超声波传感器的两个探头,一个用来发送超声波信号,一个则用来接收,然后数据通过液晶显示器显示出来,液晶显示器的数据标识采用拼音的形式,来提示各个数据所表示的意义。
实物比较简便,易于加装在汽车中,有很好的实用性,不足的地方在于,扬声器没有进行加固保护,容易在碰撞出受损,从而导致播出的声音带着杂音,极大的影响播出声音的效果,解决办法就是将扬声器焊接在电路板上,使其固定,不会在汽车的行驶过程中发生碰撞而受损。
实物调试分别做了超声波的最远距离和最近距离的测试,阐述了在两种不同的状态下,汽车防撞倒车系统会作出怎样的表现,然后司机根据显示的数值和播报的语音来调整车的位置,避免事故的发生,该调试时人为的用手拿着进行的调试,在汽车上的效果如何,还需要进一步的实验和调试。
5 小结
本设计研究的倒车防撞系统是基于超声波测距的。该系统的工作处理器核心是STC89C52 单片机,超声波的原理是利用发射和接收超声波,根据超声波在空气中的传播时间来计算出传播距离。经过单片机的处理在液晶上显示距离,并通过语音模块把当前的具体播报出来。