蓝牙控制自动避障小车的设计Word下载.docx
《蓝牙控制自动避障小车的设计Word下载.docx》由会员分享,可在线阅读,更多相关《蓝牙控制自动避障小车的设计Word下载.docx(17页珍藏版)》请在冰豆网上搜索。
蓝牙控制&
自动避障小车的设计
—基于STC89C52单片机
王聪
(开封大学机电工程学院应用电子专业)
一、绪论
(一)智能小车的作用和意义
自第一台工业机器人诞生以来,机器人的发展已经遍及机械、电子、冶金、交通、宇航、国防等领域。
近年来机器人的智能水平不断提高,并且迅速地改变着人们的生活方式。
人们在不断探讨、改造、认识自然的过程中,制造能替代人劳动的机器一直是人类的梦想。
随着科学技术的发展,机器人的感系统,对于视觉的各种技术而言图像处理技术已相当发达,而基于图像的理解技术还很落后,机器视觉需要通过大量的运算也只能识别一些结构化环境简单的目标。
视觉传感器的核心器件是摄像管或CCD,目前的CCD已能做到自动聚焦。
但CCD传感器的价格、体积和使用方式上并不占优势,因此在不要求清晰图像只需要粗略感觉的系统中考虑使用接近觉传感器是觉传感器种类越来越多,其中视觉传感器成为自动行走和驾驶的重要部件。
视觉的典型应用领域为自主式智能导航一种实用有效的方法。
机器人要实现避障功能就必须要感知障碍物,避障控制系统是基于自动导引小车(AVG—auto-guidevehicle)系统,基于它的智能小车实现自动避开障碍,选择正确的行进路线。
使用传感器感知障碍并作出判断和相应的执行动作。
该智能小车可以作为机器人的典型代表。
它可以分为三大组成部分:
传感器检测部分、CPU、执行部分。
基于上述要求,传感检测部分考虑到小车一般不需要感知清晰的图像,只要求粗略感知即可,所以可以舍弃昂贵的CCD传感器而考虑使用价廉物美的红外反射式传感器来充当。
智能小车的执行部分,是由直流电机来充当的,主要控制小车的行进方向和速度。
单片机驱动直流电机一般有两种方案:
第一,勿需占用单片机资源,直接选择有PWM功能的单片机,这样可以实现精确调速;
第二,可以由软件模拟PWM输出调制,需要占用单片机资源,难以精确调速,但单片机型号的选择余地较大。
考虑到实际情况,本文选择第二种方案。
CPU使用STC89C52单片机,配合软件编程实现。
(二)智能小车的现状
现智能小车发展很快,从智能玩具到其它各行业都有实质成果。
其基本可实现循迹、避障、检测贴片、寻光入库、避崖等基本功能,这几节的电子设计大赛智能小车又在向声控系统发展。
比较出名的飞思卡尔智能小车更是走在前列。
我此次的设计主要实现循迹避障这两个功能。
二、方案设计与论证
根据要求,确定如下方案:
在现有玩具电动车的基础上,加装光电检测器,实现对电动车的速度、位置、运行状况的实时测量,并将测量数据传送至单片机进行处理,然后由单片机根据所检测的各种数据实现对电动车的智能控制。
这种方案能实现对电动车的运动状态进行实时控制,控制灵活、可靠,精度高,可满足对系统的各项要求。
(一)避障模块
小车避障原理是小车上电直走,当发现前方有障碍物的时候转弯继续前进,如此往复。
在该模块中利用了简单、应用也比较普遍的检测方法——红外探测法。
红外探测法,即利用红外线在不同颜色的物理表面具有不同的反射性质的特点。
在小车行驶过程中不断地向前方发射红外光,当红外距离传感器没有遇到障碍物时为关断状态;
如果遇到障碍物则闭合。
(电路图如图1)。
图1红外距离传感器原理图
市面上有很多红外传感器,在这里我选用常用的2~80cm可调距离传感器(如图2)。
图2红外距离传感器
(二)主控系统
根据设计要求,我认为此设计属于多输入量的复杂程序控制问题。
据此,拟定了以下两种方案并进行了综合的比较论证,具体有如下两种方案:
1.采用PLC作为主控系统,PLC虽然性能稳定但是价格昂贵,为此,我们不采用该种方案,进而提出了第二种设想。
2.采用单片机作为整个系统的核心,用其控制行进中的小车,以实现其既定的性能指标。
充分分析我们的系统,其关键在于实现小车的自动控制,而在这一点上,单片机就显现出来它的优势——控制简单、方便、快捷。
这样一来,单片机就可以充分发挥其资源丰富、有较为强大的控制功能及可位寻址操作功能、价格低廉等优点。
因此,这种方案是一种较为理想的方案。
针对本设计特点——多开关量输入的复杂程序控制系统,需要擅长处理多开关量的标准单片机,而不能用精简I/O口和程序存储器的小体积单片机,D/A、A/D功能也不必选用。
根据这些分析,我选定了STC89C52单片机(如图3)作为本设计的主控装置,51系列单片机具有功能强大的位操作指令,I/O口均可按位寻址,程序空间多达8K,对于本设计也绰绰有余,更可贵的是STC89C52单片机价格非常低廉。
在综合考虑了传感器、两部电机的驱动等诸多因素后,我们决定采用一片单片机,充分利用STC89C52单片机的资源。
图3STC89C52引脚图
(三)电机驱动模块
电机驱动模块拟用两种解决方案,分别如下:
1.采用继电器对电动机的开或关进行控制,通过开关的切换对小车的速度进行调整.此方案的优点是电路较为简单,缺点是继电器的响应时间慢,易损坏,寿命较短,可靠性不高。
2.采用功率三极管作为功率放大器的输出控制直流电机。
线性型驱动的电路结构和原理简单,加速能力强,采用由达林顿管组成的H型桥式电路(如图4)。
用单片机控制达林顿管使之工作在占空比可调的开关状态下,精确调整电动机转速。
这种电路由于工作在管子的饱和截止模式下,效率非常高,H型桥式电路保证了简单的实现转速和方向的控制,电子管的开关速度很快,稳定性也极强,是一种广泛采用的PWM调速技术。
图4H桥式电路
实际使用的时候,用分立元件制作H桥是很麻烦的,好在现在市面上有很多封装好的H桥集成电路,接上电源、电机和控制信号就可以使用了,在额定的电压和电流内使用非常方便可靠。
比如常用的L293D、L298N、TA7257P、SN754410等。
现市面上有很多此种芯片,我选用了L298N(如图5)。
图5L298N
(四)机械系统
本题目要求小车的机械系统稳定、灵活、简单,而三轮运动系统具备以上特点。
小车上装有电池、电机、电子器件等,使得电机负担较重。
为使小车能够顺利启动,且运动平稳,在直流电机和轮车轴之间加装了三级减速齿轮。
将电池放置在车体的电机前后位置,降低车体重心,提高稳定性,同时可增加驱动轮的抓地力,减小轮子空转所引起的误差。
经过实测发现发现三轮容易在走直线的时候出现跑偏的现象。
为了尽可能的降低这种误差因而加装为四轮
(五)电源系统
采用4节普通1.5V干电池单电源供电,但6V的电压太小不能同时给单片机与与电机供电。
电机在运行过程中产生的反向电动势可能会影响单片机的正常工作。
所以决定独立供电,即单片机控制系统和光对管与电机分开供电。
由于单片机为低功耗元件而可采用普通1.5v电池(共4节)供电,电机为大功耗器件因而单独采用锂电(900mAh)供电(如图6)。
图6锂电池
三、硬件设计
(一)信号检测模块
信号检测模块采用红外距离传感器,红外距离传感器采用距离可调传感器(可调范围2~80cm),可以精确的调整避障距离范围。
蓝牙转串口模块可以轻松实现串口数据无线透传。
(如图7)
图7距离传感器、蓝牙转串口电路
(二)主控电路
本模块主要是对采集信号进行分析,同时控制电机起停、正反转。
(原理图如图8)
图8主控电路图
(三)驱动电路
本模块主要是对单片机传送过来的高低电平信号进行处理,控制电机起停、正反转。
(原理图如图9)
图9驱动模块原理图
(四)总体设计
智能小车采用前轮驱动,前轮左右两边各用一个电机驱动,调制前面两个轮子的转速起停从而达到控制转向的目的,后轮是万向轮,起支撑的作用。
将循迹光对管分别装在车体下的左右。
当车身下左边的传感器检测到黑线时,主控芯片控制左轮电机停止,车向左修正,当车身下右边传感器检测到黑线时,主控芯片控制右轮电机停止,车向右修正。
(总电路图如图10)
图10总电路图
四、软件设计
(一)总体结构框图
(二)总体程序流程图
(三)总程序
/***************************************************************************
*程序功能:
单片机自动避障、蓝牙无线控制程序
*作者:
WangCong
*版本(最后修改时间):
2012.5.27
****************************************************************************/
#include<
at89x51.h>
stdio.h>
#defineucharunsignedchar
*DIR1和PWM1控制左边电机
*DIR2和PWM2控制右边电机
*DIR为方向控制(控制正反转),PWM为使能信号(1为运转,0为停止)
*下面为左边电机的状态表(右边电机也是如此):
—————————————————————————
DIR1PWM1状态
01正转
00停
11反转
—————————————————————————
10停
#defineDIR1P2_0
#definePWM1P2_1
#defineDIR2P2_2
#definePWM2P2_3
voiddelayMS(uchart);
//延时
voidgo_forward();
//前走
voidgo_back();
//后退
voidturn_left();
//左转
voidturn_right();
//右转
voidstop();
//停
voidmain(void)
{
ucharxdatarcvdata[1];
EA=1;
//开启总中断
SCON=0x50;
//串口方式1,允许接收
TMOD=0X21;
TH1=0xFD;
//11.0592MHZ9600波特率
TL1=0xFD;
TR1=1;
//启动定时器1
EX0=1;
//开启外部中断0,即P32引脚
IT0=0;
//设置成低电平触发方式,IT0=1为下降沿触发
PWM1=0;
//防止小车上电就开始跑
PWM2=0;
while
(1)
{
rcvdata[0]=0;
if(RI)
{
rcvdata[0]=SBUF;
//把接收到的数据保存
RI=0;
SBUF=rcvdata[0];
if(SBUF=='
1'
)
go_forward();
2'
go_back();
3'
turn_left();
4'
turn_right();
5'
stop();
//把收到的数据通过串口发送出去
while(!
TI);
TI=0;
}
}
}
*外部中断0C51中断号10的优先级最高,关键字"
interrupt"
,这是C语言的中断函数表示法
*本中断的响应是P32引脚有低电平触发
voidint_0()interrupt0
{
//后退防止碰住障碍物
DIR1=1;
PWM1=1;
DIR2=1;
PWM2=1;
delayMS(1000);
//左转
PWM1=1;
DIR2=0;
PWM2=1;
//继续向前走
DIR1=0;
DIR2=0;
voidgo_forward()//前走
printf("
go_forward"
);
voidgo_back()//后退
go_back"
voidturn_left()//左转
turn_left"
voidturn_right()//右转
DIR2=1;
turn_right"
voidstop()//停
stop"
voiddelayMS(uchart)//延时
uchari;
while(t--)
for(i=0;
i<
120;
i++);
五、安装和调试
采用螺丝将循迹板及电机等安装组合成车体。
通过改变光红外距离传感器的可调电位器的大小来改变感应距离,通过改变延时程序来改变速度的大小。
下表为小车运行测试情况如下表:
运行次数
成功次数
成功率
10
8
90%
结束语:
整个系统的设计以单片机为核心,利用了红外光距离传感器,蓝牙串口无线透传模块将软件和硬件相结合。
本系统能实现如下功能:
自动躲避障碍物,并继续前进。
如果遇到死角的话可以通过电脑端软件手动无线控制它的运动方向。
从运行情况来看避障效果比较好,但小车偶尔遇到死角,我认为是由于红外距离传感器的数量太少了。
我相信条件允许下我肯定能解决这一问题。
通过本次设计我掌握了很多以前不熟练的东西,认识了很多以前不熟悉得东西,使我在人生上又进了一步。
也认识到很多的不足。
致谢
本设计能够顺利完成,感谢杨老师老师以及身边同学的指导和帮助。
在设计过程中,杨老师给予了悉心的指导,并且在设计环境和器材方面给予了大力的帮助和支持,在此,我对杨老师表示最真挚的感谢!
同时感谢所有帮助过我的同学!
感些评阅老师百忙之中抽出时间对本论文进行了评阅!
参考文献:
1.求是科技,《单片机典型模块设计实例导航(第2版)》,人民邮电出版社,2008年7月出版
2.李全利,《单片机原理及应用技术》,高等教育出版社,2009年1月出版
3.丁明亮,《51单片机应用设计与仿真-基于keilC与Proteus》,北京航空航天大学出版社,2009年2月出版