基于C51单片机的智能小车自主避障设计

2018-12-06 05:44余昕王梓璇杨诗洁陆瑞敏徐思琪
消费导刊 2018年24期
关键词:测距障碍物小车

余昕 王梓璇 杨诗洁 陆瑞敏 徐思琪

西南石油大学电气信息学院

前言:智能化作为现代科技进步的新兴产物,必定是大势所趋。智能避障小车的出现为家用扫地机器人、自动运输机器人和自主勘探机器人等智能产品的设计和推广打下了坚实的基础。同时,对于我国的商业,军事,航天,运输,石油,水利等多种领域的快速发展也起到推波助澜的作用。随着我国工业、农业、太空探索等领域的不断发展,必然会驱动产生更多的实用型智能车,因此,这方面的研究存在巨大潜力。针对当前大多数智能小车以单一的超声波传感器进行检测及避障的不准确性,本文介绍了一种基于C51的智能避障系统,利用STC89C51单片机作为核心模块,以keil软件为开发环境,采用超声波测距和红外避障等多传感器信息融合的采集系统,通过对数据的算法优化,提升小车对环境的感测精度,有效提高了小车的避障成功率。

一、系统硬件设计

(一)系统总体设计

系统总体结构如图1所示。该系统由以下几部分组成:小车平台(包含四个电机)、STC89C51单片机、信息采集模块(含超声波测距传感器HC-SR04和红外避障传感器)、电机驱动模块(ULN2003)、电源模块(5V直流电源)、显示模块(LCD1602)等。因为车头是信息采集的主要部位,要尽量满足信息采集的全面性,而且必须具备测距精度高,时效快的特点,将信息采集模块按图2所示分布。

图1 系统方案总体框图

图2 信息采集模块分布示意图

车头前方安装两个HC-SR04超声波测距模块,该模块的有效测量距离为2cm-400cm,其测量的精度为3mm,测量角度为15º。为扩大整个小车探测障碍物的能力,在超声波旁边放置两个红外避障模块,其朝向为超声波左右10º,再在小车车头的左右45º放置同样的两个红外避障模块(图中的左1、左2、右2、右1)。此设计中车头前方的两种不同的传感器优势互补,有效提升了小车对环境的感测精度。

电机驱动电路采用ULN2003芯片控制实现,可由单片机直接控制。用单片机的P1.0-P1.3的4个I/O口控制该驱动芯片,从而驱动步进电机,形成五项四线电机电路,从而控制小车的前进,并且通过单边转动,可以控制小车的转弯。电源模块采用5V直流电源给ULN2003供电,在5V的工作电压下ULN2003能与TTL和CMOS电路直接相连,工作电压高,工作电流大。电源模块的设计除了考虑系统各模块电压和电流等参数来确保系统工作稳定性,也最大程度地实现了各模块电源转换效率、降低噪声、防止干扰等方面的优化。系统各硬件模块性能稳定、操作简单,符合智能小车的性能要求。

(二)系统工作原理

STC89C51单片机负责小车超声波传感器、红外传感器数据的采集、读取,进行避障算法的运算,并控制小车电机驱动模块实现小车行前进、遇障转弯、停止等功能,从而控制小车高效、准确避障;超声波测距模块负责对前方障碍物进行探测,将测得的信息反馈给主控模块进行测距操作;红外避障模块负责对小车左右两边的障碍物进行探测,并对前方超声波测距模块的测距死角区域的障碍物进行探测,将障碍物的信息反馈给主控模块以便主控模块做出避障反应;显示模块负责将超声波测距模块测得的距离信息显示出来,以便能够直观方便的了解车辆距离前方障碍物的距离信息。该系统在启动前一直处于超声波测距状态,通过一个按键实现对小车的启动,然后小车向前,当超声波探测的距离小于30cm时,返回单片机来让小车短暂停止来判断小车的红外避障模块是否探测到障碍物,如果探测到障碍物单片机做出避障算法并将相应的信息传递给电机驱动电路,从而实现小车的停止与转弯。

二、系统软件平台设计

本系统软件采用模块化结构,由主程序、避障子程序、电机驱动程序、测量子程序、显示子程序构成,如图3所示。STC89C51单片机控制器软件模块实现了小车实时接受控制命令,对超声波传感器模块、红外传感器模块收集的数据进行优化,对智能小车避障策略进行选择,LCD实时显示障碍物距离,并通过软件调节驱动直流电机的PWM信号的大小,控制左右轮转速,实现小车各种避障动作。

小车的避障策略如图4所示。当小车通过按键启动后,小车向前行驶,同时超声波测距模块和红外避障模块开始工作,探测障碍物的大小距离等信息。当超声波探测到的距离小于30cm时,红外避障模块探测左右两边是否存在障碍物,当左边有障碍物时,小车向右转弯直至超声波探测到的距离大于30cm时且左边的红外探测到物障碍物,则继续向前行驶,直至下一次遇到障碍物,反之亦然;当超声波探测到的距离信息小于30cm且左右两边均没有探测到障碍物,则小车默认右转;当超声波探测到的距离信息小于30cm且左右两边都存在障碍物时,小车停止。

图3 软件设计图

图4 避障策略框图

三、测距与避障

(一)超声波测距电路

设计方案中采用HC-SR04超声波测距模块,该模块主要由发射部分和接收部分组成,该模块由主控单片机控制P2.1口发出8个40KHz的方波,检测是否有信号返回,当有信号返回时,测距模块反馈给单片机P2.0口一个高电平。该模块可直接与单片机相连,由单片机驱动该模块进行测距,利用单片机的定时器T0计时计算出所测距离S,如公式(4.1)所示。

(二)红外避障电路

红外避障电路由光电二极管组成,采用LM393比较器对电压值进行比较,利用电位器调节参考电压,从而实现对障碍物的探测。当接收二极管没有接收到有障碍物信息时,LM393指示灯处于长灭状态。当接收二极管接收到有障碍物信息时,LM393输出一个低电平,此时指示灯亮。

与超声波模块相似,其电源依旧与单片机共用,将该模块的OUT端与单片机的I/O端口相连即可。根据布局方案,本设计采用四个红外避障模块,依次检测左右两边的障碍物分别与单片机的引脚连接。

四、实验测试

小车软硬件平台设计完毕后。为了验证智能小车的避障性能,在实物环境下对其进行实验测试。智能小车在前进过程中信息采集系统不断探测前方周围是否有障碍物,当存在障碍物时,能够判断出相应障碍物的方向和距离,并采取相应的避障动作。

当小车遇到墙角时,小车按照图中箭头所示的路径行驶,在距离前方障碍物较近时,小车开始转弯,直到与障碍物基本平行时再前进,右边探测到障碍物,则再向左转,最终成功躲避障碍物。

顺利通过躲避墙角障碍物后,再按照图5所示摆放障碍物,当小车遇到多障碍物时,按照图中箭头所示的路径行驶,小车在前进的过程中遇到障碍物,由于此时左右两边均没有障碍物,所以此时小车左转,转过来之后小车前进,左边的红外避障模块探测到左边的障碍物后往右转,然后小车再次探测到前方障碍物,再向右转,从两个障碍物之间穿过。

图5 多障碍物避障

根据上述的测试过程,对小车在多障碍物时能够准确躲避的效果进行了统计,结果如表1所示。

表1 避障测试结果

总结:本设计采用 STC89C51芯片对直流电机进行控制,同时采用超声波以及红外传感器检测周围障碍,再由芯片做出判断,选择正确路线。液晶显示器由单片机控制进行读写操作,并在其上面显示数据。智能小车避障系统中用了红外传感器及超声波传感器,通过输出端口输出相应的电机驱动信号控制小车,实现相应的动作来达到避开障碍物的目的。利用红外传感器、超声波传感器检测道路上的障碍,控制电动小车的自动避障,并通过液晶显示距离。整个系统的电路结构较简单,可靠性能高,实际测试效果较好,很好的满足了题目的要求,并在题目的要求基础上有一定创意和发挥,使整个设计更加人性化。

猜你喜欢
测距障碍物小车
大车拉小车
自制小车来比赛
高低翻越
SelTrac®CBTC系统中非通信障碍物的设计和处理
类星体的精准测距
刘老师想开小车
两轮自平衡小车的设计与实现
浅谈超声波测距
基于PSOC超声测距系统设计
相对差分单项测距△DOR