5.1 测试硬件
在检测过程中,发现一个棘手问题,就是L298N的驱动电路中,由于静电问题,不知道为什么对AT89S52控制系统输入过来的电平信号影响非常的大。刚开始,以为是程序的问题,但是分开了控制电路板和电机驱动电路板以后,在单片机的I\O口输出的电平信号却是正常的。所以,就把问题定在了电机驱动板上。检查了各个元器件,没发现有任何焊接,短路的问题,后来只能在底线上使用了电池的,最后问题得到完美解决。
5.2 优化程序
在开始的程序时,我们在壁障处理上考虑不周,没有对障碍是否避过进行处理,所以整个小车在壁障的时候显得很死板,于是我们就对这一段程序进行了优化。
优化后,小车运行情况比较稳定了。结论
我们的清洁机器人是基于5l型单片机的自动巡线轮式机器人控制系统运行平稳可靠,抗干扰能力强,不仅满足了机器人的设计要求,同时也为智能机器人搭建了良好的控制平台。本次实训,让我学到了很多东西,不仅使我在理论上对单片机与数电的完美结合有了全新的认识,在实践能力上也得到了提高,这次的实训对我们来说是又一次挑战,我们翻阅了很多资料
参考文献
1、《单片机原理与应用技术》喻宗全 西安电子科技大学出版社
2、《单片机原理及应用》 张鑫 编著 电子工业出版社
3、《单片机的C语言应用程序设计》 马忠梅 编著 清华大学出版社
4、《单片机原理及接口技术》 徐煜明 电子工业出版社
5、《MCS-51 单片机实验指导》 孙江宏 李良玉 编著 机械工业出版社
6、《51单片机机器C语言程序开发实例》 戴仙金 编著 清华大学出版社
C语言程序:
#include <AT89X51.H>
unsigned char a=0,x=0;
void timer0 (void) interrupt 1 using 0
{
TH0=0xd8;TL0=0xf0;x++;
}
main()
{
TMOD=0x51;TH0=0xd8;TL0=0xf0;
EA=1;ET0=1;ET1=1;TR0=1;TR1=1;TH1=0;TL1=0;
while(1)
{
if(P0==0xff) { P2=0x35;};\\如果两个探头没有发现障碍,小车前进
if((P0==0xfd)||(P0==0xfe)||(P0==0xfc) \\探头发现前面有障碍
{while(x<10);P2=0x00;x=0;\\延时让小车停下,主要是进行一个去抖功能
while(x<30);x=0;if(P0==0xfc) \\两个探头发现障碍,此时当墙壁处理,后退转弯
P2=0x3a; while(x<100);x=0;P2=0x00;
while(x<100);x=0;P2=0x36;while((x<180)||(P0!=0xff));x=0;};};
if(P0==0xfd)\\其中一个探头发现障碍,进行遥过处理
机械结构三文图