资源描述
前 言
---------------------------------------------------
伴随生产自动化发展需要,机器人已经越来越广泛地应用到生产自动化上,伴随科学技术发展,机器人传感器种类也越来越多,其中红外传感器已经成为自动行走和驾驶关键部件。
红外经典应用领域为自主式智能导航系统,机器人要实现自动避障功效就必需要感知障碍物,感知障碍物相当给机器人一个视觉功效。智能避障是基于红外传感系统,采取红外传感器实现前方障碍物检测,并判定障碍物远近。
因为时间和水平有限,我们暂选最基础避障功效作为此次设计目标。
本设计经过小车这个载体再结合由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. 主程序步骤图
源程序:
RS BIT P2.2
RW BIT P2.3
E BIT P2.4
ORG 0000H
LJMP MAIN
ORG 0030H
MAIN: MOV P2,#0FFH
MOV P1,#1FH ;前进
MOV TMOD,#10H
MOV R1,#0C8H
SETB TR1
TIME:MOV TH1,#0D8H
MOV TL1,#0F0H
JNB TF1,$
DJNZ R1,TIME
CLR TR1
MOV R7, #00H ;脉冲个数
MOV R1, #64H
MOV TMOD, #10H
SETB TR1
LOOP6: MOV TH1, #08H
MOV TL0, #0F0H
NEXT: MOV C, 0
JB TF1, LOOP7 ;判定TF1是否溢出
ORL C, P3.4
JNC LOOP6 ;判定C是否为1
INC R7 ;1S内出现脉冲个数
JB TF1, LOOP7
SJMP NEXT
LOOP7: DJNZ R1, LOOP6
CLR TR1
CLR C
MOV A,R7 ;脉冲个数乘以2
ADDC A,R7
MOV R7,A
MOV A, #01H ;一个码格弧长
MOV B, R7
MUL AB ;计算总弧长
DA A ;十进制调整
MOV R5, A
MOV A, B ;B值给A
JNC LOOP8 ;判定十进制调整是CY有没有被置1
INC A
CLR C
LOOP8: DA A ;十进制调整
MOV R6, A
JNC LOOP9
INC 70H ;十进制调整假如CY被置1,70H赋值1
CLR C
LOOP9: MOV A, R6 ;解释R6,R5分别表示总长高位和低位
ANL A, #0F0H ;取R6高四位,赋给71H
SWAP A
MOV 71H, A
MOV A, R6
ANL A, #0FH ;取R6低四位,赋给72H
MOV 72H, A
MOV A, R5
ANL A, #0F0H ;取R5高四位,赋给73H
SWAP A
MOV 73H, A
MOV A, R5
ANL A, #0FH ;取R5低四位,赋给74H
MOV 73H, A
/******显示前进******/
MOV SP, #50H
ACALL INIT
MOV A, 10000000B
ACALL WC51R
MOV A, "G"
ACALL WC51DDR
MOV A, "0"
ACALL WC51DDR
MOV A, " "
ACALL WC51DDR
MOV A, "A"
ACALL WC51DDR
MOV A, "H"
ACALL WC51DDR
MOV A, "E"
ACALL WC51DDR
MOV A, "A"
ACALL WC51DDR
MOV A, "D"
ACALL WC51DDR
MOV A, 11000101B
ACALL WC51R
MOV A, 70H
ACALL WC51DDR
MOV A, 71H
ACALL WC51DDR
MOV A, 72H
ACALL WC51DDR
MOV A, "."
ACALL WC51DDR
MOV A, 73H
ACALL WC51DDR
MOV A, 74H
ACALL WC51DDR
MOV C,P2.0
JC LOOP1 ;判定P2.0
MOV P1,#0FH ;停车
LCALL LOOP2
MOV P1,#32H ;右转
LCALL RIGHT
LJMP LOOP4
LOOP1:MOV C,P2.1
JC NEXT1 ;判定P2.1
MOV P1,#0FH ;停车
LCALL LOOP2
MOV P1,#31H ;左转
LCALL LEFT
LJMP LOOP4
NEXT1:LJMP MAIN
/*****停车定时*****/
LOOP2:MOV TMOD,#10H
MOV R0,#64H
SETB TR1
LOOP3:MOV TH1,#0D8H
MOV TL1,#0F0H
JNB TF1,$
DJNZ R0,LOOP3
CLR TR1
RET
/*****转向定时*****/
LOOP4:MOV TMOD,#10H
MOV R1,#0C8H
SETB TR1
LOOP5:MOV TH1,#0D8H
MOV TL1,#0F0H
JNB TF1,$
DJNZ R1,LOOP5
CLR TR1
MOV P1,#1FH ;前进
LJMP MAIN
/*****显示左转*****/
LEFT: MOV SP, #50H
ACALL INIT
MOV A, 10000000B
ACALL WC51R
MOV A, "L"
ACALL WC51DDR
MOV A, "E"
ACALL WC51DDR
MOV A, "F"
ACALL WC51DDR
MOV A, "T"
ACALL WC51DDR
RET
/*****显示右转*****/
RIGHT: MOV SP, #50H
ACALL INIT
MOV A, 10000000B
ACALL WC51R
MOV A, "R"
ACALL WC51DDR
MOV A, "I"
ACALL WC51DDR
MOV A, "G"
ACALL WC51DDR
MOV A, "H"
ACALL WC51DDR
MOV A, "T"
ACALL WC51DDR
RET
/***********初始化子程序***********/
INIT: MOV A, #00000001H ;清屏
ACALL WC51R
MOV A, #00111000B ;使用8位数据
LCALL WC51R
MOV A, #00000110B ;字符不动,光标自动右移一格
LCALL WC51R
/*****检验忙子程序*****/
F_BUSY:PUSH ACC ;保护现场
PUSH DPH
PUSH DPL
PUSH PSW
WAIT: CLR RS
SETB RW
CLR E
SETB E
MOV A, P1
CLR E
JB ACC.7,WAIT ;忙,等候
POP PSW ;不忙,恢复现场
POP DPL
POP DPH
POP ACC
ACALL DELAY
RET
/*****写入命令子程序*****/
WC51R: ACALL F_BUSY
CLR E
CLR RS
CLR RW
SETB E
MOV P1, ACC
CLR E
ACALL DELAY
RET
/*****写入数据子程序*****/
WC51DDR:ACALL F_BUSY
CLR E
SETB RS
CLR RW
SETB E
MOV P1, ACC
CLR E
ACALL DELAY
RET
/*****延时子程序*****/
DELAY: MOV R6, #5
D1: MOV R7, #248
DJNZ R7, $
DJNZ R6, D1
RET
END
9. 小结
本文提出了一个经济实用智能小车设计方法,给出了从硬件电路设计到软件设计一系列步骤。采取了直流电机作为实施元件,E3F系列光电开关作为检测元件,AT89S51单片机作为主控芯片,完成了小车避障功效实现。和此同时应用LCD显示状态,本设计不仅对于了解单片机结构、电路设计及控制功效有一定帮助,还有益于诱发学习单片机爱好。
参考文件
【1】 李朝青.单片微机原理及接口技术(第三版)。 [M]北京航空航天大学出版社
【2】 阎 石. 数字电子技术基础(清华大学电子学教研组编 第五版) 高等教育出版社
【3】 康华光. 电子技术基础(第五版) 高等教育出版社
【4】 《无线电》第2期 宋泽清 相关灵活避障 快速循迹
【5】 杨加国 单片机原理和应用及C51程序设计 清华大学出版社
展开阅读全文