微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > 基于AT89C52的机器人在复杂路线下的自主寻迹系统

基于AT89C52的机器人在复杂路线下的自主寻迹系统

时间:09-10 来源:互联网 点击:

言编程。其思路为:第1步,系统初始化后,读取单片机P2口的值,然后对其P2.0、P2.1、P2.2按位取与,得到传感器模块的组合值。第2步,将得到的组合值与预定的值比较,若相等则执行相应的动作,否则继续比较,直到获得正确的动作。比较完全部动作后,转到第1步重新扫描传感器的状态值。

  为了进一步提高系统的安全性和可靠性,还需增加异常处理算法。可能出现的异常情况有:过小弯道或小角度折道时,机器人还来不及转过弯来,就已经完全偏离黑线。这种情况下,3个传感器都输出“1”,检测不到黑线,若不及时处理,机器人将无法继续寻迹。针对该情况,设计了原地旋转动作来找回预定路线,不过原地旋转有顺、逆时针之分,因此还得区分开来。改进后编程的思路为:每次读取P2口值之前,将其上一次的传感器组合值存入某个寄存器,当出现组合值为 “111”的情况时,立即查询上一次的值,根据该值,可以判断出机器人是从哪一侧偏离黑线的,从而进行顺或逆时针原地旋转。其主要程序如下:

  ……;系统初始化

  SENSOR: MOVA,P2

  ANLA,#07H;读P2口值,对P2.0、P2.1、P2.2按位取与

  CJNEA,#07H,NEXT;如组合值为111,直接转到动作判断程序,否则转到NEXT

  LJMPDATA_PROCESS

  NEXT:MOVR5,A;将本次传感器组合值赋给R5

  LJMPDATA_PROCESS

  DATA_PROCESS: CJNE A,#07H,D1;对组合值判断,确认为常规动作还是旋转动作

  LJMP ROTATE

  D1:……;继续常规动作判断

  ……

  ROTATE: MOV A,R7 ;旋转判断,将上一次传感器组合值赋给A

  CJNE A,#06H,R1;对上一次传感器组合值判断,决定顺逆旋转

  LJMPCLOCKWISE

  R1:……;继续顺逆判断

  ……

  CLOCKWISE:……;顺时针旋转动作

  LJMP DELAYS

  DELAYS:MOV A,R5

  MOV R7,A;将本次传感器组合值赋给R7

  LCALL DELAY;调用DELAYS子程序进行延时

  LJMP SENSOR ;重新扫描传感器状态

  END;程序结束

  结语

  根据上述设计思路,我们制作出寻迹机器人并进行了测试。测试场地如图4所示,黑色导引线宽度为3 cm,黑线周围区域均为白纸覆盖。测试结果表明:该寻迹机器人能在此复杂路线下平稳、顺利地沿着黑线走完全程,并在终点沿原路返回,达到了预期的目标。这为进一步研究复杂环境下的自动行走机器人提供了参考。

  

  本文的创新点为:使用3个自制的红外光电传感器,以简单的设计和较少的硬件实现了复杂路线下机器人的寻迹。而基于该机器人双级转弯的设计思想,可以增加传感器数量、组成传感器阵列来实现多级转弯,从而对机器人的自主寻迹有着更为精确的控制。

  参考文献

  [1] 韩毅,张雪峰.一种低成本寻迹机器人的实现[J].微计算机信息,2008,52:233235.

  [2] 朱益斌,胡学龙,朱亚锋,等.自主式寻迹机器人小车的设计[J].国外电子测量技术,2006,25(7):4042.

  [3] 何立民.MCS51系列单片机应用系统设计[M].北京:北京航空航天大学出版社,2003.

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top