该智能车采用红外传感器对赛道进行道路检测,单片机根据采集到的信号的不同状态判断小车当前状态,通过电机驱动芯片L298N发出控制命令,控制电机的工作状态以实现对小车姿态的控制。
本模型车的电路系统包括电源管理模块、单片机模块、传感器模块、电机驱动模块。其中采用AT89C52作为单片机控制芯片(5V),同时需要6V电源电机(L298N)和舵机、传感器、红外对管和电压比较器模块和7805稳压模块。
从而实现将红外采集模块中的红外发射接收对管检测路面上面的轨迹,并将轨迹信息送到单片机中去,单片机采用模糊推理求出转向的角度和行走速度,然后去控制行走部分,最终实现智能小车在规定路面上的轨迹行驶。
Altium Designer画的原理图和PCB图如下:(51hei附件中可下载工程文件)
单片机源程序如下:
- #include <STC12C5Axx.h>
- sbit IN3=P1^0;
- sbit IN4=P1^1;
- sbit IN1=P1^2;
- //sbit ENA=P1^3;
- //sbit ENB=P1^4;
- sbit IN2=P1^5;
- sbit D4=P0^4;
- sbit D1=P0^1;
- sbit D2=P0^2;
- sbit D3=P0^3;
- sbit D0=P0^0;
- sbit D5=P0^5;
- void qian() //前进
- {
- IN1=1;
- IN2=0;
- IN3=1;
- IN4=0;
- }
- void you() //YOU
- {
- IN1=1;
- IN2=0;
- IN3=0;
- IN4=1;
- }
- void zuo() //ZUO
- {
- IN1=0;
- IN2=1;
- IN3=1;
- IN4=0;
- }
- void PWMinit()
- {
- CMOD=0X02;//"时钟源为1/2; "
- CL=CH=0X00;
- CCAPM0=0X42;
- CCAP0L=0X00;
- CCAP0H=0x00;
- CCAPM1=0x42;
- CCAP1H=0x00;
- CCAP1L=0x00;
- CR=1;
- }
- void PWMtiaojie(unsigned int num,int cex) //NUM"越大越快,调节范围为55~99",cex"电机0,电机1"
- {
- double i=256*(100-num)/100;
- switch(cex)
- {
- case 0: CCAP0L=i; CCAP0H=i; CCAPM0=0x42; break;
- case 1: CCAP1L=i; CCAP1H=i; CCAPM1=0x42; break;
- }
- }
- void main()
- {
- PWMinit();
- while(1)
- {
- if(D1==1&&D3==1&&D2==1&&D0==1)
- {
- PWMtiaojie(25,0);
- PWMtiaojie(25,1);
- qian();
- }
- if(D2==0||D3==0)
- {
- PWMtiaojie(1,0);
- PWMtiaojie(1,1);
- you();
- }
- if(D1==0||D0==0)
- {
- PWMtiaojie(1,1);
- PWMtiaojie(1,0);
- zuo();
- }
- }
- }
复制代码
所有资料51hei提供下载:
循迹小车硬件部分.rar
(1.27 MB, 下载次数: 233)
循迹小车程序部分.rar
(4.41 KB, 下载次数: 162)
|