基于单片机的智能避障小车系统设计

时间:2022-06-11 02:31:48

基于单片机的智能避障小车系统设计

【摘要】介绍了一种基于AT89S52单片机的智能避障小车。系统以AT89S52 为控制核心,采用3组红外传感器完成障碍物检测。通过I/O口控制360°伺服舵机实现小车前进、倒退、转向、避障等动作,利用PWM(脉宽调制)方法可精确控制小车运行速度。系统电路结构简单,响应速度快,实践证明小车能够成功实现自动避障。

【关键词】AT89S52;红外传感器;伺服舵机;避障

Abstract:This paper introduces an intelligent obstacle avoidance car based on SCMC.The system uses AT89S52 as the control core,using 3 groups of infrared sensors for obstacle detection.Through the I/O port control 360 °servo realize the car’s forward,backwards,steering,obstacle avoidance action ect,and using the Pulse-Width Modulation(PWM)method can control the speed of the car accuracy.This system has the advantages of simple structure,fast response speed and test proved that the car could keep away from the obstacle successfully.

Key words:AT89S52;Infrared sensor;Servo steering gear;Obstacle avoidance

引言

智能小车作为轮式机器人的一个重要分支,随着机器人研究的深入受到越来越多人的关注。国内很多高校和研究院所在机器人小车项目上都取得了成绩,也有多家公司在开发和研制教学及比赛用机器人小车。本设计以AT89S52单片机作为系统控制核心,单片机根据红外避障传感器检测到的不同信号,控制小车左右两个伺服舵机的转速和方向,完成正常行驶和自动避障功能。实践证明,此方案可行并且可靠。

1.系统总体设计

小车车体结构俯视图[1]如图1所示,循迹小车主要由控制电路板、电机、传感器模块、底盘部件等结构组成。系统总体框图如图2所示,总体设计方案如下:

图1 车体结构俯视图

图2 系统总体框图

①控制电路板以AT89S52为控制核心,外接红外避障传感器和控制电机信号;②电机采用伺服舵机驱动小车实现基本巡航动作(前进、后退、左转、右转、停止、掉头);③传感器选择三只E18-D80NK红外光电开关检测小车前方障碍物,单片机根据三个传感器接收信号的情况判断前方障碍物的分布,控制小车自动避障。④小车底盘部件包括了底盘本体、电池盒 、左右轮子和尾轮等部件。选用三轮结构车体,车体前方两侧为驱动轮,后方中心装有尾轮,起支撑作用,这样可以保证小车能够灵活循迹。

2.系统硬件设计

2.1 伺服电机模块

采用可以按照指令连续控制位置或速度的360度伺服舵机。舵机的控制信号为周期是20ms的脉宽调制(PWM)信号。舵机内部有一个基准电路,产生周期20ms,宽度1.5ms的基准信号,有一个比较器,将外加信号与基准信号相比较,判断出方向和大小,从而产生电机的转动信号。图3所示是高电平持续1.5ms 低电平持续20ms,然后不断重复的控制脉冲序列。该脉冲序列发给经过零点标定后的伺服电机,伺服电机不会旋转。如果此时电机旋转,表明电机需要标定。

图3 电机转速为零的控制信号时序图

图4 控制伺服电机顺时针全速旋转的时序

图5 控制伺服电机逆时针全速旋转的时序

图6 电机与单片机的接口原理

从图3、图4和图5可知[2],控制电机运动转速的是高电平持续的时间,当高电平持续时间为1.3ms时,电机顺时针全速旋转,当高电平持续时间1.7ms时,电机逆时针速旋转。舵机的输入线共有三条,红色是电源线,黑色是地线,另外一根白线是控制信号线。选择P1_0专门控制右轮伺服电机;P1_1专门控制左轮伺服电机。电机与单片机的接口连接如图6所示。

2.2 红外避障模块

选择光电开关E18-D80NK-N进行障碍物信息采集,E18-D80NK-N是一种集发射与接收于一体的光电传感器,平均有效探测距离0~80cm可调,发射光经过调制后发出,接收头对反射光进行解调输出。有效的避免了可见光的干扰。E18-D80NK-N是NPN型光电开关,检测到目标物体时输出低电平,正常状态时高电平输出。其外部接线是三线制,红色接+5V电源,绿色线接地,黄色是输出信号,输出时外加一个1K的上拉电阻接到单片机I/O口上。光电开关内部原理和外部接线图如图7所示[3]。小车车头安装3个E18-D80NK,中间一个对向正前方,左右两侧传感器向两边分开约30度,分别探测正前方,前右侧,前左侧障碍物信息。三个光电开关输出信号分别连接到了P2_1,P2_2,P2_3引脚上。

图7 传感器内部原理及外部接线图

2.3 电源模块

采用2节3.7V可充电式锂电池串联共7.4V电源,经三端稳压器7805经C6、C7滤波,在电源电路里起到抑制纹波电压,滤除高频干扰的作用,7.4V电压经7805的电压变换后使得输出得到一个稳定平滑的逻辑数字5V直流电压给伺服舵机、单片机芯片以及传感器供电。电源系统的电路图如图8所示。

图8 逻辑5V电压产生电路

图9 move函数体

3.系统软件设计

3.1 小车基本动作实现

小车向前走时,从小车的左边看,它向前走时轮子是逆时针旋转的;从右边看另一个轮子则是顺时针旋转的。同理,小车其他动作左右轮子的运动方向也可以分析出来,结合图3、图4、图5电机控制时序图,可分析出小车运行方向和速度控制情况,如表1所示。在表1中,无论是参数tleft还是tright,其值越接近1500?s,小车速度越低。因此,可通过改变参数大小实现小车的加减速控制。发给单片机控制引脚的高电平持续时间决定了伺服电机旋转的速度和方向。实际上两个轮子的不同速度组合控制着机器人的运动速度和方向,因此在C语言程序设计中,可以直接用两个车轮的速度作为形式参数,定义left为左轮参数,定义right为右轮参数,这样可以将小车所有运动用一个函数(move)来实现。for循环的参数counter控制了发送给电机的脉冲数量。由于每个脉冲的时间是相同的,因而for循环的参数也控制了伺服电机运行的时间。move函数的定义如图9所示。

表2 小车自动避障策略表

3.2 小车避障功能的实现

图10为自动避障程序流程图,该流程图中小车的7个避障动作函数内容与表2所给出的避障策略表一致。采用T1定时器作为小车周期性探测和动作的时钟,每隔0.1s响应T1定时中断,在T1的中断服务程序中判断三个光电开关的返回值,控制小车完成相应的避障动作。

图10 小车自动避障程序流程

4.结论

实际测试证明,该系统控制下的小车具有很好的自动避障能力,经过多次测试和调试,总结如下几点经验:①注意调整红外传感器的角度,使传感器不会受桌面等非障碍物的影响。②小车全速行驶突然停下时,小车会有翻车或向前冲的可能,导致后续动作出现偏差。这个问题的有效解决方法是:停止程序后执行一个停顿脉冲和200毫秒的延时。这样就很好的增加了小车运行的稳定性。③程序中发送脉冲给电机之前检查障碍物,可大大改善小车行走性能。

参考文献

[1]刘开绪,韩志友.基于AT89C51的寻迹小车掉头运动系统设计与实现[J].长春工业大学学报(自然科学版),2009, 30(1):79-81.

[2]秦志强.C51单片机应用与C语言程序设计[M].电子工业出版社,2011.8.

[3]向楠,邹华东.基于STC89C52RC单片机智能搬运电动小车设计[J].湖南工程学院学报(自然科学版),2014, 24(1):19-21.

基金项目:2013江苏省高等学校大学生实践创新训练计划项目(编号:201312920004Y)。

作者简介:

陆春雨(1993―),男,现就读于南京化工职业技术学院机电一体化技术专业。

王琰(1980―),女,工学硕士,讲师,主要研究方向:机电控制技术。

上一篇:基于PLC的电压互感器线电压和相电压的测量 下一篇:结构拓扑优化与客车车身优化设计