《基于单片机的智能车设计》由会员分享,可在线阅读,更多相关《基于单片机的智能车设计(18页珍藏版)》请在金锄头文库上搜索。
1、智能车,第十七组,摘要,由Atmel公司生产的8位AT89S52单片机通过I/O口检测信号,输出PWM信号控制直流电机 前进 停止 左转 右转。采用C语言编程,经反复调试,形成一能完成固定动作和自选动作的智能车。,智能小车软件设计,固定动作8字,程序如下: #include #include int main(void) int counter,j;delay_nms(1700);,for(j = 0; j 10; j+ )for(counter=1;counter=26;counter+)/直走一米P1_1=1;delay_nus(1700);P1_1=0;P1_0=1;delay_nus(
2、1300);P1_0=0;delay_nms(20);for(j = 0; j 63; j+ )for(counter=1;counter=26;counter+)/270度P1_1=1;delay_nus(1584);P1_1=0;P1_0=1;delay_nus(1365);P1_0=0;delay_nms(20);,for(j = 0; j 21; j+ )for(counter=1;counter=26;counter+)/直走2米P1_1=1;delay_nus(1700);P1_1=0;P1_0=1;delay_nus(1300);P1_0=0;delay_nms(20);for(
3、j = 0; j 58; j+ )for(counter=1;counter=26;counter+)/270度P1_1=1;delay_nus(1700);P1_1=0;P1_0=1;delay_nus(1414);P1_0=0;delay_nms(20);,for(j = 0; j 12; j+ )for(counter=1;counter=26;counter+)/直走一米P1_1=1;delay_nus(1700);P1_1=0;P1_0=1;delay_nus(1300);P1_0=0;delay_nms(20); while(1)P1_1=1;P1_0=1;delay_nus(15
4、00);P1_1=0;P1_0=0;delay_nms(20); ,自选动作:心形 程序实现过程如下: #include #include int main(void) int counter,j;delay_nms(1700);for(j = 0; j 20; j+ )for(counter=1;counter=26;counter+)/走两米P1_1=1;delay_nus(1700);P1_1=0;P1_0=1;delay_nus(1300);P1_0=0;delay_nms(20);,for(counter=1;counter=30;counter+)/向左转1/4圈P1_1=1;de
5、lay_nus(1300);P1_1=0;P1_0=1;delay_nus(1300);P1_0=0;delay_nms(20);for(j = 0; j 10; j+ )for(counter=1;counter=26;counter+)/走一米P1_1=1;delay_nus(1700);P1_1=0;P1_0=1;delay_nus(1300);P1_0=0;delay_nms(20);,for(counter=1;counter=30;counter+)/向左转1/4圈P1_1=1;delay_nus(1300);P1_1=0;P1_0=1;delay_nus(1300);P1_0=0
6、;delay_nms(20);for(j = 0; j 10; j+ )for(counter=1;counter=26;counter+)/走一米P1_1=1;delay_nus(1700);P1_1=0;P1_0=1;delay_nus(1300);P1_0=0;delay_nms(20);,for(counter=1;counter=30;counter+)/向右转1/4圈P1_1=1;delay_nus(1700);P1_1=0;P1_0=1;delay_nus(1700);P1_0=0;delay_nms(20);for(j = 0; j 10; j+ )for(counter=1;
7、counter=26;counter+)/走一米P1_1=1;delay_nus(1700);P1_1=0;P1_0=1;delay_nus(1300);P1_0=0;delay_nms(20);,for(counter=1;counter=30;counter+)/向左转1/4圈P1_1=1;delay_nus(1300);P1_1=0;P1_0=1;delay_nus(1300);P1_0=0;delay_nms(20);for(j = 0; j 10; j+ )for(counter=1;counter=26;counter+)/走一米P1_1=1;delay_nus(1700);P1_
8、1=0;P1_0=1;delay_nus(1300);P1_0=0;delay_nms(20);,for(counter=1;counter=30;counter+)/向左转1/4圈P1_1=1;delay_nus(1300);P1_1=0;P1_0=1;delay_nus(1300);P1_0=0;delay_nms(20);for(j = 0; j 18; j+ )for(counter=1;counter=26;counter+)/直走两米P1_1=1;delay_nus(1700);P1_1=0;P1_0=1;delay_nus(1300);P1_0=0;delay_nms(20);,
9、while(1)P1_1=1;P1_0=1;delay_nus(1500);P1_1=0;P1_0=0;delay_nms(20); ,总结与体会,编程是整个小车制作的重点,我们通过对小车电路、比赛规则、外部环境等情况的研究,编写出了相应的程序,经过反复调试最终完成比赛程序。对于硬件的调试我们也遇到了很多的困难,但我们都一一解决了。其中的几个具有代表性的问题如下:,调试过程问题 及解决办法,问题1:采用电池供电,电量不稳定,导致小 车对同一个程序的反应结果不同。解决办法:用变压器制作稳压电源,对小车进行供电。优点:电能持续稳定,节约电池的使用。,2:方向控制方案的选择:,采用左右两个独立电机驱动,通过控制两电机的转速和正反转来控制车的方向,通过左右速度差来控制转向。优点:转弯半径可以很小,甚至可以原地转弯,角度也可以精确控制。,3:程序调试,8字控制程序比较多,调试麻烦,容易改错了数据。 解决办法:对每一个功能模块儿进行单独调试,符合要求后在结合起来运行。,问题3:车轮摩擦力太小,加大了行走调试的难度,对地面条件要求很高。 解决办法:将车轮外围粘上一圈自行车用的气门芯,加大车和地面的摩擦。,