单片机智能小车设计
开始 第四章 软件设计
读取I/O值 NO 红外传感器为1? 直流电机停止 YES 直流电机后退 读取指南针值 直流电机停止 YES 指南针值 > a+5 直流电机1:前进,速度10 直流电机2:前进,速度10 YES 指南针值 < a-5 读取指南针值 NO 指南针值 > a+5‖值 < a-5 END 直流电机前进 直流电机1:前进,速度16 直流电机2:前进,速度10 读取指南针值 读取指南针值 END END 图4-5图形化子程序1碰撞传感器1
20
单片机智能小车设计 第四章 软件设计
4.4子程序2红外传感器1
图4-6图像化子程序2红外传感器1
21
单片机智能小车设计 第五章 系统调试
第五章 系统调试
5.1 机器人结构调试
购物车由于重心较高,正常工作时速度较快,因此导致工作过程中稳定性不高,并且时有出现翻车现象,最终通过拆除除直流电机3,将车体底盘降低,重心下降从而很好的解决了问题。
5.2 红外传感器采集调试
3个红外传感器的布局采用上1下2的布局方式,这样能够充分检测货架信息,在软件设计上大体程序如下:
AD_value = Read_Sensor();//得到传感器状态
if((AD_value&0xE7)==0) error = error0; //判断位置 else if((AD_value&0xF0)!=0xF0){ //判断状态 if((AD_value&0x80)==0) error = -error6; else if((AD_value&0xC0)==0) error = -error5; else if((AD_value&0x40)==0) error = -error4; else if((AD_value&0x60)==0) error = -error3; else if((AD_value&0x20)==0) error = -error2; else if((AD_value&0x30)==0) error = -error1; else if((AD_value&0x10)==0) error = error0; }
else if((AD_value&0x0F)!=0x0F){ //判断状态 if((AD_value&0x01)==0) error = error6; else if((AD_value&0x03)==0) error = error5; else if((AD_value&0x02)==0) error = error4; else if((AD_value&0x06)==0) error = error3; else if((AD_value&0x04)==0) error = error2;
22
单片机智能小车设计 第五章 系统调试
else if((AD_value&0x0C)==0) error = error1; else if((AD_value&0x08)==0) error = error0; }
5.3 直流电机调试
速度对机器人的总体工作会产生很大影响,两个直流电机的转速存在一定的差异,因此很容易导致购物车偏离正常轨道行走,最终通过设置指南针的函数来修正由于两个直流电机转速不一样导致的偏差以及通过多次试验来调整两轮子的速度得以解决问题。
5.4伺服电机调试
由于伺服电机在取物的转动过程中会对磁场形成一定的影响,因此很多时候会导致指南针的函数发生变化从而使得机器人行走方向发生变化,最终通过只用一个伺服电机并延长取物后延时的方式,直至伺服电机完全不转动才继续下一个动作的方式成功地解决了问题。
23

