1 引言电子园51单片机学习网 oX Bg k{/oXG
"P"MGy)G:w.{N0近年来,机器人的发展遍及机械、电子、冶金、交通、宇航、国防等领域,机器人的智能水平不断提高。在自主式智能导航系统中,机器人要实现自动导引功能就必须要感知导引线,即常说的“寻迹”,这相当于给机器人一个视觉功能。
9?ad KXA?0 电子园51单片机学习网F-n/Yvl1GMz笔者所设计的机器人是一个自动导引小车(AGV),包括两大部分:一是行进方向的检测处理;二是步进电机的驱动。
$^S+a"iJ8f!`G&~0 电子园51单片机学习网 _6l0f8QFN在该系统里,采用与地面颜色有较大差别的线条作引导,使用传感器感知导引线,用单片机AT89C52扫描光电传感器组,对采集到的信号进行分析处理并做出逻辑判断后,得到行进方向,然后根据一定的步数去驱动步进电机,实现机器人的循迹行进。电子园51单片机学习网TXM#dx
电子园51单片机学习网] C+zs{z'yR小车的驱动采用步进电机,因为步进电机具有快速起停能力,且转换精度高,正反转控制灵活。
x'yDl`9R q:m0 电子园51单片机学习网 T0ia0K;`n2 硬件电路
u-\o$PofUl0)t;S h*Xnt.s0采用AT89C52单片机作为控制核心对光电传感器送来的各种信号进行分析处理,以控制机器人的方向和驱动及数据显示等,如图1所示。电子园51单片机学习网4_VU*b?;x
电子园51单片机学习网!p{zq z/F%e2iN jt为了检测黑色导引线,笔者采用了8个光电传感器组成的矩阵组。如图2所示,相对于小车底盘的中心,我们布置了内外两层各4个传感器。每层4个传感器对应着中心的4个方向:前、后、左前、右前。可采用扫描方式分两次得到各行数据。电子园51单片机学习网Y)?+R(zC9^'_A
)})O;E-u rW!F^0
H-Q]^9WH5Z0z3J | Us!?x6t0图1 硬件框图电子园51单片机学习网h`@ra
电子园51单片机学习网aKh3X MO电子园51单片机学习网f p MQ D R
电子园51单片机学习网*P#q'pR P,_E1to电子园51单片机学习网\RAWLt
电子园51单片机学习网)u*V4ZF/PrUq电子园51单片机学习网S"p3r&y%X#k6` ]
电子园51单片机学习网H7WO7F3]k-GT)C图2 光电传感器矩阵组
4b0U1kEL:h7s0N7o.@*S3c.B.g!t0导引线检测的具体电路如图3所示。此处采用的是TCRT1000反射式红外光电传感器。以第1行第1列的光电传感器为例,其工作原理是这样的:P1 .0输出低电平时,三极管A1015导通,光电传感器工作,TCRT1000的发射端发出不可见的红外光。当反射物由非黑色导引线变为黑色导引线时,光电三极管的基极接受不到反射光,从而光敏三极管由导通变为截止,使得集电极电压由低电平变为高电平,经过74LS14反相器反相整形,输出值由逻辑1变为逻辑0后,送入单片机中进行进一步处理。电子园51单片机学习网|T.z4Z3I+TR y
电子园51单片机学习网^0W*\3d.C$yX|@值得指出的是在此处PNP三极管A1015的使用。此处如果选用NPN三极管,则在开机或复位时P1口各位输出高电平会误扫描传感器矩阵,而选用PNP三极管就可以避免这种情况,能很好的控制光电传感器的工作,并可以增加驱动能力。
T(t4Z5t5l.` cMb0电子园51单片机学习网:['K.F$y6vc&Q s;j
图3 光电传感器寻迹电路图
L_-T3v:f*k&i&I_0#q!Yz)C8Z?U(j0|03 寻迹
V$C9fJgGj)F0 电子园51单片机学习网7Eudtn单片机控制寻迹的原理是这样的:第一步,通过矩阵式扫描,即给光电传感器矩阵分别输入两个“1”信号的行值,将输出的4个列值信号分别存入两个地址(如30H、31H)的低4位,低4位从高到低分别对应着4个方向:前、后、左前、右前。然后用“F0”与这八位做“或”逻辑运算,即屏蔽掉高四位后作为本次的信号值;第二步,将本次的信号值与上一次扫描处理后的信号值进行逻辑处理,得出一个新方向,作为机器人行进的方向。
:?%`x!uw)G#L]0\A3Wr8t0在这个程序里,逻辑处理内外层得到新方向是寻迹的关键。笔者在其中按先后步骤使用了3种规则:
e%n w$V)Q%?0wx`{"h[G0前后比较规则,内外层切换规则,优先级规则。
2v/Dt8GL9@9Rn7k0 电子园51单片机学习网Un-{6_ V7s'g(1) 前后比较规则电子园51单片机学习网 z4[S1J.^)QSV r5sf7K6G
*~-hg,r(T0此规则是这个算法的核心规则。它的目的是尽可能的用新探测到的黑点作为新方向。新方向F通过
? Wc-l.~:C%h09rgF!bHt.@ s G;Y.j*y%I0 (1)
*yr"z9p#@wN0 电子园51单片机学习网_k)~!s4k-e7fm2O[来求得。(其中 为本次的信号值, 为前次的信号值)逻辑处理前“0”表示黑线轨迹,逻辑处理后“1”表示轨迹行进方向。举例如下:以内层为例,设当前测得的值为
X"v I8}?1jc7Ky08[J9Y+KCo0
,[Lu@&@DZX'k6| ]&R01Tt+_A2Tf0且前一次测得的值为
%r2E8N8ZXs lc+f0 电子园51单片机学习网H`3H,u a$H0F*NR'W!am^z%Tu0经过上述(1)逻辑处理后,假设结果为
1_7d2Rq+D\#xg0+Yk7^ a ]b8q{2['r0电子园51单片机学习网{_A!{"R
,pTw5J[EB0
.y6npW:c0 电子园51单片机学习网9Rk7y0ED,q7r j&KQ则正前方是行进的新方向。电子园51单片机学习网,bL Jz| V
电子园51单片机学习网1j P&[0T!F:w5YY u(2) 内外层切换规则电子园51单片机学习网 _-muc? K1I c,{
_:tp1xR*mO0如果光电传感器组前后两次所检测的值完全一样,则在逻辑处理后会出现全零,这时保持原方向行进。如果碰到曲线拐弯或者曲线断续,则有可能出现多个“1”即多个方向,这时可采用“内外层切换规则”,也就是说从内层切换到外层,启用外层扫描值重复上述前后比较规则来进行判断。启用外层信号进行二次判断能很好的处理曲线拐弯及曲线断续等内层处理不好的情况。但用外层信号判断,因为其传感器布置的间隙距离比内层大,其控制精度不如用内层信号判断高。
6}~mgW?0 电子园51单片机学习网NM.zl#a+z(3) 纠错规则电子园51单片机学习网f/ND$U.e
电子园51单片机学习网!y;e0h1OE}/f k2]在运行中,传感器有可能受到干扰而发出错误信号导致机器人走错或迷失方向,这个时候纠错规则能让机器人后退起到纠错作用。所谓纠错规则就是在走错后出现了内外层左前、前、右前均没有探测到引导线,而后向探测到了导引线的情况下,让机器人后退,一直退到前面三个方向传感器里有传感器探测到导引线为止。此时再用(1)式求得新的行进方向,从而实现纠错功能。
(D.v%F+^ SSS!g/Y0 电子园51单片机学习网[ O*n"E)PzX#f ^ C7k其中前后比较法的逻辑处理及随后的判断程序具体如下:(30H放本次信号值,32H放前次信号值)电子园51单片机学习网7QM(b0]NAO-h
电子园51单片机学习网*v'k'C0}$r#{DATADEAL:MOV A, 30H
^NA$i*q`0g7f/_Hu:m7pl$s0 XRL A, 32H电子园51单片机学习网(l aXSDVM
电子园51单片机学习网 ef ?M5FW8^,|;Bz&PANL A, 32H ;按(1)式求新向电子园51单片机学习网-NLD(Xk'|}
电子园51单片机学习网5t@:]q1LMOV 36H, A ;保存
? o%d\Z.p?)j0 电子园51单片机学习网2] Dw h3z6u I|MOV R3, #8电子园51单片机学习网aQ@mcK%nw
电子园51单片机学习网DD8UtzMOV R4, #0电子园51单片机学习网N:a v*TAt
电子园51单片机学习网*p!@,gmL E`COUNT: JB ACC.0, ADDN电子园51单片机学习网-O.^7{N'|u-I
电子园51单片机学习网.e] WF&Sd ` Nu"a ACOUNT1: RR A电子园51单片机学习网8s!n#?oE,zy,y
电子园51单片机学习网IBT5oA"Z6UVMpDJNZ R3, COUNT电子园51单片机学习网1{u+e ~xp-[
.W1dN*d4a%V][2J9V0 CJNE R4, #1H, JUDGE ;R4里所含不是1个“1”时,电子园51单片机学习网Gx&JJ+L)c'o
电子园51单片机学习网A"KR?:~eU#^(pI+y;转“JUDGE”再判断
7I:h2G:Fzkt0 电子园51单片机学习网7xV5iN,U)qAJMP MOTORRUN ;R4里只有一个“1”时,以此电子园51单片机学习网 O-UM$wJa7jYh
电子园51单片机学习网AvF5f|,D7MMF;“1”所代表的方向作为新方向
?n+UC7V)J4ON T0D2o3P:Szn4w O0ADDN: INC R4电子园51单片机学习网%D-}#\-R3s4VE
w%Qs9[M:V)[ D7d|0 AJMP COUNT1电子园51单片机学习网ay7D2Hr2c3E I
电子园51单片机学习网|^ _d~B t7}JUDGE: JC KEEPMOVE ;少于一个“1”,保持原方向电子园51单片机学习网t9x/wBKR y
8cH)[ i[2oPU{0 AJMP OUTCHECK ;多于一个“1”,则取用外层电子园51单片机学习网| sB Y8Gd
电子园51单片机学习网.J]I(|2~B}……电子园51单片机学习网6Yhn/B w1y,PZ
+L+ur [vm0MOTORRUN:…… ;电机驱动子程序
K!tV-i$qO~;n0Um/^/p#`7M4fH:v0KEEPMOVE:…… ;保持原运动状态子程序
~$r.LYhewfd:N%p0C7K+Ymv9V8T"iAJ0OUTCHECK:…… ;取用外层信号值判断子程序电子园51单片机学习网'{ID8f5yt%o3l
B9|7P N6zQU"NCq04 执行
I#o jXbqVXw+`0 电子园51单片机学习网0A F+\Wi导引机器人的驱动方式采用一驱动轮一转向轮方式:将后轮作为驱动轮,前轮作为转向轮,通过切换转向轮向左或向右的方式改变机器人的方向。这种方式与汽车的控制方式一样,直线行进性能好,可以高速移动。从1个步进脉冲对应的行进路程,可以预算出应给步进电机发出的脉冲数。预定的行进路程以小于内层传感器间隙距离的1/2为宜,这样可以保证机器人位置测量的连续性和方向识别的准确性。单片机AT89C52根据其逻辑处理出来的方向,调用步进电机的驱动程序即可实现机器人循迹连续运动的功能。
/x6u5_+R'B6`"}0 电子园51单片机学习网E(l&dA+` j`4]F5 结束语
(mJ;c h;ZM0 电子园51单片机学习网b([.h#qs2Ou笔者在做好硬件部分的基础上,根据上述思路编制了程序进行了实验。实验中笔者采用了与底色有较大差异的黑色胶带作导引线,胶带宽1.8cm,其中导引线总长6000mm,断续部分的间断距离不大于10mm,步进电机执行一次驱动预定的行进路程为4mm。在没有强烈日光干扰的情况下,笔者所设计的寻迹系统能自动识别黑色导引线并选择正确的方向运动。测试结果:系统总能在60S内连续正确地走完全程,而且机器人(中心)所走的轨迹基本上在黑线上。可见,即使是比较复杂的曲线,笔者设计的导引机器人也能准确地实现寻迹功能。电子园51单片机学习网CT7O A:T[
电子园51单片机学习网 \4y ievS e^(m4H本文作者的创新点是:针对基于光电传感器组寻迹的自动导引机器人,设计了一种新的传感器阵列的布置方式。根据此布置方式,提出了三个处理规则结合而成的轨迹识别算法。电子园51单片机学习网t0~UmnQ(VX
电子园51单片机学习网3|,w]M'j)w I电子园51单片机学习网5sqGM1oSy
X/Z:k'g5SIo0
F/jA0Z1h0bq T6q05a-K-`+^D]6f%by0参考文献电子园51单片机学习网s*@$``^.b4d9`0D
+{O$Tn$Re:]vB01. 何立民.MCS—51系列单片机应用系统设计.北京:北京航空航天大学出版社,2003年电子园51单片机学习网xph"r2EU Gj I
电子园51单片机学习网2?7[ w Ok]k2. 廖华丽,周祥,董丰,王延旗.基于模糊控制的AGV寻迹算法.哈尔滨工业大学学报 2005(7)
F~CE4D"e,R U)}#B0Y.`2e6z;@3O#Pg03. 胡银彪,冯建超.拖靶高度控制系统的设计.微计算机信息 2002(11)电子园51单片机学习网 jg3KS k.T
文章评论(0条评论)
登录后参与讨论