红外避障小车设计1.docx
《红外避障小车设计1.docx》由会员分享,可在线阅读,更多相关《红外避障小车设计1.docx(42页珍藏版)》请在冰豆网上搜索。
红外避障小车设计1
红外避障
小车
学校:
西安工程大学
学院:
电子信息学院
姓名:
****
班级:
06级电子一班
前言
---------------------------------------------------
随着生产自动化的发展需要,机器人已经越来越广泛地应用到生产自动化上,随着科学技术的发展,机器人的传感器种类也越来越多,其中红外传感器已经成为自动行走和驾驶的重要部件。
红外的典型应用领域为自主式智能导航系统,机器人要实现自动避障功能就必须要感知障碍物,感知障碍物相当给机器人一个视觉功能。
智能避障是基于红外传感系统,采用红外传感器实现前方障碍物检测,并判断障碍物远近。
由于时间和水平有限,我们暂选最基本的避障功能作为此次设计的目标。
本设计通过小车这个载体再结合由AT89S51为核心的控制板可以达到其基本功能,再辅加由漫反射式光电开关组成的避障电路、555组成的转速控制电路、电源电路、差分驱动电路就可以完善整个设计。
前言------------------------------------------------------------------------------1
目录------------------------------------------------------------------------------2
摘要------------------------------------------------------------------------------3
功能概述------------------------------------------------------------------------3
硬件设计------------------------------------------------------------------------3
避障电路------------------------------------------------------------------------4
单片机电路---------------------------------------------------------------------7
电机转速控制电路------------------------------------------------------------7
电源电路------------------------------------------------------------------------8
电机驱动电路---------------------------------------------------------------9
主程序设计--------------------------------------------------------------------12
小结-----------------------------------------------------------------------------23
参考文献-----------------------------------------------------------------------23
1.【摘要】:
本文提出一种智能避障小车的设计方法,利用红外技术检测障碍物信息,采用AT89S51单片机进行实时控制,实现智能避障,智能小车采用后轮驱动,两轮各用一个直流电机控制,避障用的传感器采用红外漫反射式传感器。
【关键词】:
避障光电开关差分控制LCD
2.功能概述
智能小车采用前轮驱动,前轮左右两边各用一个电机驱动,分别控制两个轮子的转动从而达到转向的目的,后轮是万向轮,起支撑的作用。
将三个红外线光电传感器分别装在车体的左中右,当车的左边的传感器检测到障碍物时,主控芯片控制右轮电机停止左轮转动,车向右方转向,当车的右边传感器检测到障碍物时,主控芯片控制左轮电机停止转动,车向左方转向,当前面有障碍物时规定车右转。
于此同时测定速度并显示,在避障小车前进的同时从LCD点阵液晶显示器上显示小车当时速度。
在小车左转或右转时在显示器上显示出左或右。
3.硬件设计
如下图所示,是本次设计智能小车的电路框图。
以AT89S51为电路的中央处理器,来处理传感器采集来的数据,处理完毕之后以便去控制电机驱动电路来驱动电机。
电源部分是为整个电路模块提供电源,以便能正常工作。
4.避障电路
(1) 障碍物探测方案的选择
方案一:
脉冲调制的反射式红外线发射接受器。
由于采用该有交流分量的调制信号,则可大幅度减少外界干扰;另外红外线接受官的最大工作电流取决于平均电流。
如果采用占空比小的调制信号,再品均电流不变的情况下,顺势电流很大(50—100mA),则大大提高了信噪比。
并且其反应灵敏,外围电路也很简单。
它的优点是消除了外界光线的干扰提高了灵敏度。
方案二:
采用超声波传感器,如果传感器接收到反射的超声波,则通知单片机前方有障碍物,如则通知单片机可以向前行驶。
市场上很多红外光电探头也都是基于这个原理。
这样不但能准确完成测量,而且能避免电路的复杂性
由以上两种方案比较可知。
方案二要比方案一优势大,市场上很多红外观点探头也都基于这个原理。
其电路简单,工作可靠,性能比较稳定。
从而避免了电路的复杂性,因此我先用方案二作为小车的监测系统。
避障电路采用漫反射式光电开关进行避障。
光电开关是集发射头和接收头于一体的检测开关,其工作原理是根据发射头发出的光束,被障碍物反射,接收头据此做出判断是否有障碍物。
当有光线反射回来时,输出低电平;当没有光线反射回来时,输出高电平。
单片机根据接收头电平的高低做出相应控制,避免小车碰到障碍物,由于接收管输出TTL电平,有利于单片机对信号的处理。
光电开关工作原理:
光电开关是通过把光强度的变化转换成电信号的变化来实现控制的。
光电开关在一般情况下,有三部分构成,它们分为:
发送器、接收器和检测电路。
避障电路如下:
避障电路功能表:
传感器
避障电路输出(上升沿动作)
待执行命令
左
中
右
左转信号(P2.1)
右转信号(P2.0)
0
0
0
√
右转
0
0
1
√
右转
0
1
0
√
右转
0
1
1
√
右转
1
0
0
√
左转
1
0
1
√
右转
1
1
0
√
左转
1
1
1
前进
注解(“0”表示有障碍物;“1”表示无障碍物)
4.单片机电路
本设计的主控芯片选择AT89S51,负责检测传感器的状态并向电机驱动电路发出动作命令。
复位电路采用手动复位。
单片机电路如下:
5.电机转速控制电路
由555时基电路构成多谐振荡器提供一个PWM信号,通过控制该信号的占空比来实现电机调速。
阻容元件的取值初步定为图中所示。
多谐振荡器如下:
其中占空比:
q=(R1+Rx1)/(R1+R2+Rx)
周期:
T=(R1+R2+Rx)Cln2
6.电源电路
本系统所有芯片都需要+5V的工作电压,而干电池只能提供的电压为1.5V的倍数的电压,并且随着使用时间的延长,其电压会逐渐下降,则需要LM7805稳压芯片。
L7805能提供300至500mA的电流,足以满足芯片供电的要求。
虽然微处理器和微控制器不需要支持电路,功耗也很低,但必须要加以考虑。
电源电路拟定为:
7.电机驱动电路
市场上用很多种类的小电压直流电动机,很方便的选择到。
主要有普通电动机、和步进电动机。
方案一:
采用步进电机,步进电动机的一个显著的特点就是具有快速启动和停止能力,能够达到我们所要求的标准。
如果负荷不超过步进电机所能提供的动态转矩值,就能够立即是步进电机启动或反转。
其转换灵敏度比较高。
正转、反转控制灵活。
但是步进电机的价格比较昂贵,对于我们的现状相差太远。
方案二:
采用普通的直流电机。
直流电机具有优良的调速特性,调速平滑、方便。
调整范围广;过载能力强,能承受频繁的冲击负载,可实现频繁的无极快速启动、制动和反转。
能满足各种不容的特殊运行要求。
由于普通直流电机价格适宜,更易于购买,并且电路相对简单,因此采用直流电机作为动力源
本设计采用差分放大驱动使电机正反转从而做到前进,左转右转。
采用四个大功率晶体管组成H桥式电路,四个大功率晶体管分为两组,交替导通和截止,用单片机控制使之工作在开关状态,进而控制电机的运行。
该控制电路由于四个大功率晶体管只工作在饱和与截止状态下,效率非常高,并且大功率晶体管开关的速度很快,稳定性也极强,是一种广泛采用的电路。
采用与门对两电机进行选择控制,从而实现前进、左转、右转。
驱动电路原路框图如下:
电路图如下:
注释:
将圆盘12等分半径2CM,周长4*pi.用程序设定1S内采集到的脉冲数可以转化为速度。
单位时间内前进距离为S,则:
速度V大小为S。
驱动状态表:
注解:
(“0”代表低电平“1”代表高电平)
电机驱动电路功能表
输入
小车状态
P1.0
P1.1
P1.2
P1.3
P1.4
P1.5
1
1
1
1
1
0
前进
1
1
1
1
0
0
停止
1
0
0
0
1
1
左转
0
1
0
0
1
1
右转
8. 主程序流程图
源程序:
RSBITP2.2
RWBITP2.3
EBITP2.4
ORG0000H
LJMPMAIN
ORG0030H
MAIN:
MOVP2,#0FFH
MOVP1,#1FH;前进
MOVTMOD,#10H
MOVR1,#0C8H
SETBTR1
TIME:
MOVTH1,#0D8H
MOVTL1,#0F0H
JNBTF1,$
DJNZR1,TIME
CLRTR1
MOVR7,#00H;脉冲个数
MOVR1,#64H
MOVTMOD,#10H
SETBTR1
LOOP6:
MOVTH1,#08H
MOVTL0,#0F0H
NEXT:
MOVC,0
JBTF1,LOOP7;判断TF1是否溢出
ORLC,P3.4
JNCLOOP6;判断C是否为1
INCR7;1S内出现的脉冲个数
JBTF1,LOOP7
SJMPNEXT
LOOP7:
DJNZR1,LOOP6
CLRTR1
CLRC
MOVA,R7;脉冲个数乘以2
ADDCA,R7
MOVR7,A
MOVA,#01H;一个码格的弧长
MOVB,R7
MULAB;计算总弧长
DAA;十进制调整
MOVR5,A
MOVA,B;B的值给A
JNCLOOP8;判断十进制调整是CY有没有被置1
INCA
CLRC
LOOP8:
DAA;十进制调整
MOVR6,A
JNCLOOP9
INC70H;十进制调整如果CY被置1,70H赋值1
CLRC
LOOP9:
MOVA,R6;解释R6,R5分别表示总长的高位和低位
ANLA,#0F0H;取R6的高四位,赋给71H
SWAPA
MOV71H,A
MOVA,R6
ANLA,#0FH;取R6的低四位,赋给72H
MOV72H,A
MOVA,R5
ANLA,#0F0H;取R5的高四位,赋给73H
SWAPA
MOV73H,A
MOVA,R5
ANLA,#0FH;取R5的低四位,赋给74H
MOV73H,A
/******显示前进******/
MOVSP,#50H
ACALLINIT
MOVA,10000000B
ACALLWC51R
MOVA,"G"
ACALLWC51DDR
MOVA,"0"
ACALLWC51DDR
MOVA,""
ACALLWC51DDR
MOVA,"A"
ACALLWC51DDR
MOVA,"H"
ACALLWC51DDR
MOVA,"E"
ACALLWC51DDR
MOVA,"A"
ACALLWC51DDR
MOVA,"D"
ACALLWC51DDR
MOVA,11000101B
ACALLWC51R
MOVA,70H
ACALLWC51DDR
MOVA,71H
ACALLWC51DDR
MOVA,72H
ACALLWC51DDR
MOVA,"."
ACALLWC51DDR
MOVA,73H
ACALLWC51DDR
MOVA,74H
ACALLWC51DDR
MOVC,P2.0
JCLOOP1;判断P2.0
MOVP1,#0FH;停车
LCALLLOOP2
MOVP1,#32H;右转
LCALLRIGHT
LJMPLOOP4
LOOP1:
MOVC,P2.1
JCNEXT1;判断P2.1
MOVP1,#0FH;停车
LCALLLOOP2
MOVP1,#31H;左转
LCALLLEFT
LJMPLOOP4
NEXT1:
LJMPMAIN
/*****停车定时*****/
LOOP2:
MOVTMOD,#10H
MOVR0,#64H
SETBTR1
LOOP3:
MOVTH1,#0D8H
MOVTL1,#0F0H
JNBTF1,$
DJNZR0,LOOP3
CLRTR1
RET
/*****转向定时*****/
LOOP4:
MOVTMOD,#10H
MOVR1,#0C8H
SETBTR1
LOOP5:
MOVTH1,#0D8H
MOVTL1,#0F0H
JNBTF1,$
DJNZR1,LOOP5
CLRTR1
MOVP1,#1FH;前进
LJMPMAIN
/*****显示左转*****/
LEFT:
MOVSP,#50H
ACALLINIT
MOVA,10000000B
ACALLWC51R
MOVA,"L"
ACALLWC51DDR
MOVA,"E"
ACALLWC51DDR
MOVA,"F"
ACALLWC51DDR
MOVA,"T"
ACALLWC51DDR
RET
/*****显示右转*****/
RIGHT:
MOVSP,#50H
ACALLINIT
MOVA,10000000B
ACALLWC51R
MOVA,"R"
ACALLWC51DDR
MOVA,"I"
ACALLWC51DDR
MOVA,"G"
ACALLWC51DDR
MOVA,"H"
ACALLWC51DDR
MOVA,"T"
ACALLWC51DDR
RET
/***********初始化子程序***********/
INIT:
MOVA,#00000001H;清屏
ACALLWC51R
MOVA,#00111000B;使用8位数据
LCALLWC51R
MOVA,#00000110B;字符不动,光标自动右移一格
LCALLWC51R
/*****检查忙子程序*****/
F_BUSY:
PUSHACC;保护现场
PUSHDPH
PUSHDPL
PUSHPSW
WAIT:
CLRRS
SETBRW
CLRE
SETBE
MOVA,P1
CLRE
JBACC.7,WAIT;忙,等待
POPPSW;不忙,恢复现场
POPDPL
POPDPH
POPACC
ACALLDELAY
RET
/*****写入命令子程序*****/
WC51R:
ACALLF_BUSY
CLRE
CLRRS
CLRRW
SETBE
MOVP1,ACC
CLRE
ACALLDELAY
RET
/*****写入数据子程序*****/
WC51DDR:
ACALLF_BUSY
CLRE
SETBRS
CLRRW
SETBE
MOVP1,ACC
CLRE
ACALLDELAY
RET
/*****延时子程序*****/
DELAY:
MOVR6,#5
D1:
MOVR7,#248
DJNZR7,$
DJNZR6,D1
RET
END
9. 小结
本文提出了一种经济实用的智能小车设计方法,给出了从硬件电路设计到软件设计的一系列步骤。
采用了直流电机作为执行元件,E3F系列光电开关作为检测元件,AT89S51单片机作为主控芯片,完成了小车避障功能的实现。
与此同时应用LCD显示状态,本设计不仅对于了解单片机的结构、电路设计及控制功能有一定的帮助,还有益于诱发学习单片机的兴趣。
参考文献
【1】李朝青.单片微机原理及接口技术(第三版)。
[M]北京航空航天大学出版社
【2】阎石.数字电子技术基础(清华大学电子学教研组编第五版)高等教育出版社
【3】康华光.电子技术基础(第五版)高等教育出版社
【4】《无线电》2009年第2期宋泽清关于灵活避障快速循迹
【5】杨加国单片机原理与应用及C51程序设计清华大学出版社
智能红外避障小车的设计与制作
以前用LM393做过红外避障小车,但避障效果不佳。
究其原因主要有两点,一是发射的红外信号未经调制探测范围窄;二是LM393本身只是个电压比较器,在输出电压翻转时没有延时,我们看到的现象就是小车在障碍物前面一前一后的瞎磨蹭,看了很是不爽。
现在介绍智能红外避障小车的设计与制作。
一.设计思想与总体方案
1,设计思想
小车沿直线行驶,当探测到前方有障碍物时停止,再后退,然后右转弯,最后继续前进,如此反复。
2,总体设计方案和框图
本设计以AT89C2051单片机作为检测和控制核心,用红外光电开头探测障碍物,RP5履带式坦克底盘作车体。
框图如下:
二.系统硬件组成及设计原理
本系统硬件部分由单片机单元,红外传感器单元,电机驱动单元,蜂鸣器单元,键盘输入单元及电源单元组成。
1,单片机单元
本系统采用AT89C2051单片机作为中央处理器,其主要任务是扫描键盘输入的信号启动小车,读P3.5判断前方有无障碍物,并执行相关动作(本设计中P3.5=0时,前方有障碍;P3.5=1时前方无障碍),P1.4----P1.7是电机驱动口;P3.7是蜂鸣器信号输出;P3.5接红外传感器。
2,红外传感器单元
为简化硬件电路,传感器单元采用了发射/接收一体化的红外光电开头,型号E3F-DS30C4,点击图片可以查看其详细资料。
该传感器为漫反射型,使用电压范围宽(DC6V--36V),探测距离可调节,最大可达30CM,输出信号可直接与单片机的I/O口相连接。
3,电机驱动单元
PR5履带式坦克底盘为双电机驱动,转弯非常灵活,本系统用常用的电机驱动集成电路L293D控制两只电机。
L293D内含2个H桥的高电压大电流双全桥式驱动器,接收标准的TTL逻辑电平信号,可驱动36V,2A以下的电机。
2,7,10,15接输入控制电平;3,6和11,14脚分别接两只电机,1,9脚接控制使能端,控制电机停转,单片机输出两组PWM信号,每一组PWM信号用来控制一个电机的转速。
现以其中一组电机为例来说明:
2,7脚输入高/低或低/高,实现电机的正/反转
2,7脚均为高或均为低,实现电机停转
1脚为高电电平时,2,7脚输入才有效,反之输入无效(所以在本系统中将1和9脚接高电平),也可以在1脚输入PWM信号,通过调整PWM的占空比来实现电机的无级调速(本系统中未使用)。
3,蜂鸣器单元
设计为上电蜂鸣,按启动按键和有障碍物时蜂鸣一次。
由三极管,蜂鸣器和电阻组成。
4,键盘输入单元
设计两只按键,S2启动,由单片机扫描P3.4,此脚为低电平时启动;S1是停止,刚开始想通过编程来实现,后来在与朋友交流时,决定把S1装在复位电路中,这个办法既简单又有效,呵呵。
5,电源电路
系统采用两组电压供电,+8.4V是电机驱动电压,+5V供给单片机,L239D及蜂鸣器电路等。
三.软件设计
由于系统要实现的功能比较简单,所以程序也比较简单。
想要实现小车的前进,停止,后退和右转弯,单片机在各个阶段P1口的状态如下:
P1=01100000=60H(十六进制), P1.7=0 P1.6=1 P1.5=1 P1.4=0 ,小车前进
P1=10010000=90H(十六进制), P1.7=1 P1.6=0 P1.5=0 P1.4=1, 小车后退
P1=00000000=00H(十六进制), P1.7=0 P1.6=0 P1.5=0 P1.4=0, 小车停止
P1=01010000=50H(十六进制), P1.7=0 P1.6=1 P1.5=0 P1.4=1, 小车右转
四.系统硬件连接图及源程序
1,硬件连接图:
2,源程序
ORG 000H ,开机初始化
MOVA,#00H
MOVP1,A ,P1口清零
LCALLBING ,上电蜂鸣
START:
MOVC,P3.4
MOV22H,C
JB22H,START ,按键扫描
LCALLBING ,按下按键时蜂鸣
JNB22H,QIDONG ,按下按键转QIDONG
QIDONG:
LCALLDEL ,延时启动