APP下载

基于单片机的自适应避障小车的设计

2017-04-22胡海

微型电脑应用 2017年4期
关键词:蜂鸣器障碍物小车

胡海

(华南理工大学,广州学院,广州 510800)

基于单片机的自适应避障小车的设计

胡海

(华南理工大学,广州学院,广州 510800)

自适应避障玩具是一种可以通过编程方法来完成指定功能的小型化玩具。由于具有很强的趣味性,避障玩具受到广大机器人爱好者以及高校学生的喜爱。这里介绍具有自动避障功能的小车的设计与制作。论文对避障小车的设计方案以及软硬件的功能和工作原理进行了详细的分析和论述。经多次反复实测试后,避障的功能得以实现。该智能小车的电路结构简单,调试方便,系统反应迅速、灵活,设计方案正确、可行,各项指标均达标。

智能玩具; 自动避障; L298N; 超声波

0 引言

智能汽车是一个小机器人来完成通过编程的方式具体的任务,它集制造成本低廉,电路结构简单,调试程序方便等优势。智能车避障,具有操控便捷的避障程序,计算简单,简单的方式实现实时控制,测量精度能满足实际要求,今后将广泛应用于智能车辆[1]。

这里介绍的正是具有自动避障功能的小车的设计与制作,使用STC89C52单片机作为主控芯片,当汽车与障碍物距离大于40厘米时,车子将会在芯片的控制之下沿着直线移动,当障碍物小于15 cm时,小车自动左转90度,并且蜂鸣器报警,当小车转过90度后,对前方道路再次检测,若无障碍,向前行驶。如果存在障碍物且小于15 cm,小车右转180度,并且蜂鸣器报警。若无障碍物,向前行驶,有障碍物且距离小于15 cm,小车向右转90度并向前行驶,并且蜂鸣器报警。

1 系统硬件设计

1.1 系统框图

系统方框图如图1所示,主控芯片采用STC89C52芯片,负责接收传感器的状态并向电机驱动模块发出动作指令。复位采用手动复位。避障模块采用购买的成品,该模块在单片机的控制下对小车前方的路况进行检查,并将检测信息反馈给单片机,单片机经过处理反馈回来的信息,发出相应的指令控制驱动模块,从而控制小车做出相应的动作,达到避障的目的。

图1 系统框图

1.2 系统硬件电路设计

1.2.1 MCU

本设计中使用的是STC89C52单片机,内置8位中央处理单元、256字节内部数据存储器RAM、8k片内程序存储器(ROM)32个双向输入/输出(I/O)口、3个16位定时/计数器和5个两级中断结构,一个全双工串行通信口,片内时钟振荡电路[2]。此外,89C52还可工作于低功耗模式,可通过两种软件选择空闲和掉电模式。在空闲模式下冻结CPU而RAM定时器、串行口和中断系统维持其功能。掉电模式下,保存RAM数据,时钟振荡停止,同时停止芯片内其它功能。

1.2.2 L298N模块

L298N是一个电机的驱动模块,它的供电方式有两种,当电压大于7 V且小于等于35 V时接+12 V此接口,若小于7 V但大于5 V选择接入5 V此接口,但从原则上说一般是使用+12 V此接口,L298N模块外设了8个排针,其中有两个是电机使能端(EA),两个是5 V接口,平常EA与5 V是用跳线帽接在一起。当EA为1时(这里的1是指高电平,一般是5 V),外部CPU对其进行编程此模块才能输出电压和电流。剩余的四个端口是与STC89C52相接。当L298N模块超过7 V供电时,就可以从5 V端口直接输出5 V电压对单片机进行供电,再将地线相接,这样就成为一个整体,小车才能走动。本次使用了4个直流电机,用两块L298N电机驱动来驱动这四个直流电机的转动。

1.2.3 超声波避障模块

该部分采用HC-SR04超声波测距模块,该模块可提供2-400 cm的非接触式距离感测功能,测距精度可达到3 cm[3],模块包括超生波发射器,接收器与控制电路。 工作原理:

1) 采用IO口TRIG触发测距,给至少给10 us的高电平

2) 模块自动发送8个40 khz的方波,自动检测是否有信号返回;

3) 有信号返回,通过IO口ECHO输出一个高电平,高电平持续的时间就是超声波从发射到返回的时间。

测试距离=(高电平时间*声速(340 m/s))/2

TRIG是触发控制信号输入端,接单片机的P2.3引脚,ECHO回响信号输出端接P2.2引脚,如图2所示。

图2 超声波模块接线图

1.2.4 舵机模块

舵机模块采用 SG90舵机,主要用来带动小车转向,是一种位置伺服的驱动器,主要是由外壳、电路板、无核心马达、齿轮与位置检测器所构成[4]。该舵机旋转的角度范围是0度到180度。SG90舵机外接三根线,分别用棕、红、橙三种颜色进行区分,棕色为接地线,红色为电源正极线,橙色为信号线。舵机转动的角度是通过调节PWM信号的占空比来实现的。

工作原理是由接收机或者单片机发出信号给舵机,其内部有一个基准电路,产生周期为20 ms,宽度为1.5 ms的基准信号,将获得的直流偏置电压与电位器的电压比较,获得电压差输出。经由电路板上的IC判断转动方向,再驱动无核心马达开始转动,透过减速齿轮将动力传至摆臂,同时由位置检测器送回信号,判断是否已经到达定位。其适用于那些需要角度不断变化并可以保持的控制系统。

1.2.5 蜂鸣器电路

蜂鸣器是个比较简单发声器件,具有利用直流供电,结构一体化等特点,如图3所示。

图3 蜂鸣器电路

在计算机、玩具、电子、复印机、以及其他各种报警电路以及医疗设备等中运用是非常广泛的。此处需要的蜂鸣器是一通电就能响的,故采用有源蜂鸣器。价格虽然比较贵,但是使用方便,外围结构也无需多少。当然电阻跟三极管也是要选对的。在这里我选了一个PNP三极管用来驱动蜂鸣器。另外驱动电阻选的是1K电阻。这样子蜂鸣器就能发出声音。还可以通过增加一个定时器来设定一个频率,使它发出不同的响声。电阻可以调节,电阻越小蜂鸣器的声音就会越大。

1.2.6 供电电路

本次设计中选用了两节3.7可充电干电池供电,在小车下面嵌套进去,既不影响行走,也不影响美观。另买了一个电池盒,将两个电池并联起来,合成一个超过7 V的电源,对L298N进行供电。然后L298N取出5 V电源对单片机进行供电。不够电可进行充电,保证工作的正常。

2 系统的软件设计

2.1 主程序

在程序设计中,为了便于调试,方便找到程序问题的所在,程序采用在主函数中调用各个子函数的形式。当启动一次超声波测距程序时,单片机会根据检测反馈回来的信息进行相应的处理,进而判断是否有障碍物,当障碍物的距离小于设定的安全距离时,单片机会发出相应的指令,控制驱动电路,对小车的行驶方向进行调整。当小车前方无障碍物时,主程序会在一定的时间内自动启动一次超生波测距程序,若无障碍继续按原来的方向行驶。如此循环,达到避障的目的。

2.2 超声波避障子程序

只需提供一个10 us以上的脉冲信号,超声波该模块内部将发出8个40 KHz周期电平并检测回波。一旦检测到有回波信号则输出回响信号。回响信号的脉冲宽度与所测的距离成正比。由此通过发射信号到接收到回响信号的时间间隔可以计算得到距离。具体程序如下:

StartModule() //发射一次超声波 {

TRIG=1; //

DelayUs2x(8); //延时20us TRIG=0; while(!RX); //当RX为零时等待 TR0=1;

//开启计数

while(RX); //当RX为1计数并等待 TR0=0;

//关闭计数T0

Count();

//计算

}

2.3 驱动模块程序

当在主程序中当计数器T1溢出中断响应时,会首先判断障碍物的距离是否小于设定的安全距离(被设计为15 cm),若大于安全距离,小车继续按原来的方向行驶,若小于安全距离,小车首先左转90度,停下并启动超声波避障程序再次对前方的路况进行障碍有无的检测,若无障碍物或有障碍但大于安全距离,小车沿该方向前进,反之当障碍物的距离小于安全距离时,小车向右旋转180度,停止并再次启动超生波避障程序,对前方的路况进行检测,若无障碍物或有障碍物但距离大于安全距离,小车沿该方向前进,反之当障碍物的距离小于安全距离时。小车向右转90度,沿该方向行驶。如此循环实现避障。

3 系统调试

3.1 硬件调试

本设计的智能避障小车,一共分为四大模块加小车电机的调试。分别是:L298驱动模块,电源供电模块、单片机最小系统、蜂鸣器报警模块以及小车电机的测试。调试的时候我们可以把模块及小车电机分别调试,最后再将所有的模块组合在一起,并再进行最后的整机调试这样一个设计调试的思路。另外还需检查电路设计的问题。电路设计很是关键,这关系到整个系统是否可以正常工作。就必须根据自己调试过的电路加以改造,便能完善这个电路,让该电路系统发挥出更好的效果。

3.1.1 电源供电模块的调试

将两块电池放进电池盒内,用电压表的直流20 V电压档测量输出电压值是否正常,若为8 V多则为满电,若低于8 V则电池电量已消耗许多,需充电。

3.1.2 L298N模块的调试

待电源供电模块检查完毕后,将电源模块与L298N模块相接,将5 V电源接与单片机,对单片机进行供电。然后单片机对L298N进行控制,再用电压表测量输出端的电压值是否有改变,若改变大说明模块正常,可继续使用。

3.1.3 小车电机的测试

小车电机正常的测试比较简单,在电机金属端焊上杜邦线,各与接干电池的某一端相接,查看小车电机是否在转动。当然得先保证电池是否正常工作。若电池正常而电机不会转动。

3.1.4 蜂鸣器报警调试

蜂鸣器的连接十分简单,只需利用一个PNP管来做驱动,当然电阻的选择也是非常重要的,所以必须选择适当,不然蜂鸣器可能不会鸣叫。当出现低电平时蜂鸣器将会发出声音,当出现高电平时没有声音。本设计中,蜂鸣器连接到P2.0口。

3.2 软件调试

软件调试是该设计一个难点,在调试采用分模块调试,首先调试超声波避障模块,该部分的难点是控制超声波的发射和接收,并要计算出障碍物的距离,最初按超声波工作时序图进行编写,但由于自己理解存在一定的错误,程序始终无法达到预期的目标,后来通过在程序中加入了计数器溢出中断,经过多次调试,最终成功控制住了该模块。

其次开始调试驱动模块,驱动模块也是核心模块,起初采用switch语句进行编写,但实际测试效果不能达到控制小车转向的效果。多次尝试失败后,改用了if-else语句进行驱动程序的编写,由于是调试只写了实现左转的程序,烧入单片机后,实现了预想中的效果,接下来又加入右转的程序,再次调试发现,转向时间过长,本来要转90的,实际旋转了120度,出现的问题只是延时的地方过长,反复修改延时的时间,最终达到了预想中的效果。

3.3 系统联调

将硬件调试和软件调试相结合,在电路原理图上先检测电路有没有短接,断路现象,可以用万用表检测电路中的电流、电压是否符合。上电后,观察各个电源指示灯是否正常,用万用表检测各个主要测试点,看各个测试点电压是否正常。正常后,将所编写的程序烧入单片机最小系统中,进行系统联调,看是否能够达到预期效果。在调试中发现,避障程序能够检测到障碍物的距离,但不能有效避开障碍物,仔细查看程序发现,避障程序再出里小车转向部分存在问题,进行修改后,再次进行系统联调,发现小车能避开障碍物,但仍不能达到预想的效果。再次修改,再次系统联调,如此往复直至达到预期的效果。

4 总结

本系统能实现对小车的运动状态进行自适应避障控制。该智能小车的电路结构简单,调试方便,系统反应迅速、灵活,以89C52为控制核心,利用自制小车或玩具小车进行小车的模拟,采用超声波避障模块进行障碍物的检测。单片机控制避障模块发射和接收,通过相应的程序处理,判断障碍物的位置。根据检测情况单片机控制电机驱动模块,控制小车电机的正反转实现小车的转向,来实现避开障碍物。经过反复测试,小车功能基本实现。

[1] 符强,任风华.基于手机蓝牙的遥控小车的设计[J]. 现代计算机(专业版),2011, (31):77-79.

[2] 林长青,成海量.基于Android系统和蓝牙通信的手机遥控车设计[J]. 山西电子技术,2012, (03):56-58.

[3] 孙玉艳. 实现PC机与单片机的数据通信与控制[J]. 广东白云职业技术学院,广州白云工商高级技工学校学报,2002,(04): 46-49.

[4] 林碧琴. 基于单片机的智能避障小车的设计和制作[J].电子测试,2013(15):60-62.

Design of adaptive obstacle avoidance vehicle based on single chip microcomputer

Hu Hai

(Guangzhou College of South China University of Technology,Guangzhou 510800, China)

Automatic obstacle avoidance car is a small toy to accomplish specific tasks by means of programming. Because of its strong interest, the majority of robot lovers and college students love to play obstacle avoidance car. This paper introduces the design and manufacture of automatic obstacle avoidance car. The design scheme and the function and working principle of the hardware and software are analyzed and discussed in detail. By repeated tests the obstacle avoidance function can achieve the design functions. The intelligent car has the advantages of simple circuit structure, convenient debugging, fast response. Flexible design scheme is correct, the indicators are all satisfied.

Intelligent toy; Automatic obstacle avoidance; L298N; Ultrasonic

胡 海(1983-),男,安庆市人,华南理工大学广州学院,科研处,实习研究员,研究方向:微电子学 马 乐(1968-),女,齐齐哈尔人,副教授,研究方向:数据结构分析。

1007-757X(2017)04-0045-03

TN91

A

2016.11.21)

猜你喜欢

蜂鸣器障碍物小车
电动自行车产品车速提示音检测现状和整改技术研究(2)
大车拉小车
自制小车来比赛
掌控板制作简易钢琴
高低翻越
SelTrac®CBTC系统中非通信障碍物的设计和处理
赶飞机
单片机驱动蜂鸣器的程序设计
刘老师想开小车
两轮自平衡小车的设计与实现