1、 循迹小车设计报告基于单片机C 21 2020年4月19日 文档仅供参考,不当之处,请联系改正。 循迹小车 组员;09机电2班,陈海韬,吴顺全 目录 目录…………………………………………………………………………………..0 摘要;………………………………………………………………………………..1 1.
2、任务及要求………………………………………………………………………1 1.1任务………………………………………………………………………………..1 2.系统设计方案……………………………………………………………………..1 2.1小车循迹原理………………………………………………………………………1 2.2控制系统总体设计………………………………………………………………….2 3.系统方案…………………………………………………………………………….2 3.1 循迹传感器模块……………………………………………………………………2 3.1.1红外线传感器ST188简介…………………………
3、……………………………..3 3.1.2比较器LM324简介……………………………………………………………….3 3.1.3具体电路……………………………………………………………………………3 3.1.4传感器安装………………………………………………………………………….4 3.2控制器模块…………………………………………………………………………….5 3.3电源模块………………………………………………………………………………..6 3.4电机及驱动模块………………………………………………………………………..6 3.4.1电机……………………………………………………………………
4、………………6 3.4.2驱动……………………………………………………………………………………6 4.软件设计…………………………………………………………………………………...7 4.1PWM控制………………………………………………………………………………..7 4.2总体软件流程图…………………………………………………………………………7 4.3。小车循迹流程图……………………………………………………………………….8 4.4中断程序流程图………………………………………………………………………….8 4.5单片机测序………………………………………………………………………………
5、9 5.参考资料……………………………………………………………………………………9 自动循迹小车 摘要; 3.3电源模块 两节3.7伏点离子电池和7808的稳压芯片。VI是7.4输入端,VO是5输出。 3.4.1电机 电机型号:GA12YN20 该款电机适用条件: 直径:12mm, 机身不含轴长度:26mm 电压工作范围: DC1.5- 12.0V 6V的空载转速有: 120
6、rpm
轴长:10mm
4.软件设计
4.1 PWM控制
是经过设计编程ENA,ENB等于0或1的占空比来调速。
4.2总软件流程图
4.3小车循迹流程图
4.4中断程序流程图
4.5程序
#include
7、P1^3; sbit IN1=P2^0; sbit IN2=P2^1; sbit IN3=P2^2; sbit IN4=P2^3; sbit ENA=P2^4; sbit ENB=P2^5; //************初始化定时器,中断************** void init() { TMOD=0x01; TH0=0XF8; TL0=0X30; EA=1; ET0=1; TR0=1; } //***********中断函数+脉宽调制************* void time
8、r() interrupt 1
{
if (t
9、urn_left1() { zkb1=25; zkb2=0; } //**************左走函数2***************// void turn_left2() { zkb1=25; zkb2=0; } //**************右走函数1***************// void turn_right1() { zkb1=0; zkb2=25; } //**************右走函数2***************// void turn_right2() { zkb1=0; zkb2=2
10、5; } //**************循迹函数***************// void xunji() { unsigned char flag; if ((RSEN1==0)&&(RSEN2==0)&&(LSEN1==0)&&(LSEN2==0)) {flag=0;} //**************直走***************// else if ((RSEN1==1)&&(RSEN2==0)&&(LSEN1==0)&&(LSEN2==0)) {flag=1;} //**************右走函数1***************//
11、 else if ((RSEN2==1)&&(RSEN1==0)&&(LSEN1==0)&&(LSEN2==0)) {flag=2;} //**************右走函数2***************// else if ((LSEN1==1)&&(LSEN2==0)&&(RSEN1==0)&&(RSEN2==0)) {flag=3;} //**************左走函数1***************// else if ((LSEN2==1)&&(LSEN1==0)&&(RSEN1==0)&&(RSEN2==0)) {flag=4;}
12、 //**************左走函数2***************// else if ((RSEN1==1)&&(RSEN2==1)&&(LSEN1==1)&&(LSEN2==1)) {flag=5;} //**************直走***************// switch (flag) { case 0:qianjin(); break; case 1: turn_right1(); break; case 2:turn_right2(); break ; case 3:turn_left
13、1(); break; case 4:turn_left2(); break ; case 5:qianjin(); break; default :break; } } //**********主函数*********// void main() { init(); zkb1=15; zkb2=15; while(1) { IN1=0; IN2=1;//*******给电机加启动*****// IN3=0; IN4=1; ENA=1; ENB=1; while (1) { xunji();//***********循迹************// } } } 5.参考资料 教科书,百度。






