本模型车的电路系统包括电源管理模块、单片机模块、传感器模块、电机驱动模块.
在整个系统中,由电源管理模块实现对其他各模块的电源管理。其中,对单片机、光电管提供5V电压,对电机提供6V电压
路径识别电路由3对光电发送与接收管组成。由于路面存在黑色引导线,落在黑线区域内的光电接收管接收到反射的光线的强度与白色的路面不同,进而在光电接收管两端产生不同的电压值,由此判断路线的走向。传感器模块将当前采集到的一组电压值传递给单片机,进而根据一定得算法对舵机进行控制,使小车自动寻线行走。
单片机模块是智能车的核心部分,主要完成对外围各个模块的管理,实现对外围模块的信号发送,以及对传感器模块的信号采集,并根据软件算法对所采集的信号进行处理,发送信号给执行模块进行任务执行,还对各种突发事件进行监控和处理,保证整个系统的正常运作。
电机驱动采用L293驱动芯片,该芯片支持2路电机驱动同时支持PWM调速
一 单片机最小系统
小车采用STC公司的STC89C52RC单片机作为控制芯片,图3-1是其最小系统电路。主要包括:时钟电路、电源电路、复位电路。其中各个部分的功能如下:
1、时钟电路:给单片机提供一个外接的12MHz的石英晶振。
2、电源电路:给单片机提供5V电源。
3、复位电路:在电压达到正常值时给单片机一个复位信号。
二 光电传感器
光电寻线方案一般由多对红外收发管组成,通过检测接收到的反射光强,判断黑白线。原理图由红外对管和电压比较器两部分组成,红外对管输出的模拟电压通过电压比较器转换成数字电平输出到单片机
代源码
#include “reg52.h”
#define uint unsigned int
#define uchar unsigned char
sbit K1=P2^0;
sbit K2=P2^1;
sbit K3=P2^2;
sbit K4=P2^3;
sbit LED1=P1^0;
sbit LED2=P1^1;
sbit LED3=P1^2;
sbit LED4=P1^3;
sbit PWM1=P3^2;
sbit PWM2=P3^3;
uchar PWM1_Cycle=0,PWM2_Cycle=0;//PWM占空比
void delay(uint z)
{
uint x,y;
for(x=z;x>0;x–)
for(y=110;y>0;y–);
}
void PWM_Init()
{
TMOD = 0x11 ;
TH0=(65535-100)/256;//定时5us
TL0=(65535-100)%256;
TH1=(65535-100)/256;//定时10us
TL1=(65535-100)%256;
ET0=1;
ET1=1;
TR0=1;
TR1=0;
EA=1;//开中断
}
小车前进
void Advance()
{
P0=0x50;
}
小车后退
void Retreat()
{
P0=0xa0;
}
小车左转
void Turn_left1()
{
P0=0x10;
delay(500);
P0=0;
}
小车右转
void Turn_right1()
{
P0=0x40;
delay(500);
P0=0;
}
void main()
{
PWM_Init();
PWM1_Cycle=30;//初始速度,可改变其大小是速度使变化
while(1)
{
if(K11)
{
Turn_right1();
}
else if(K21)
{
Advance();
}
else if(K41)
{
Turn_left1();
}
else
Advance();
}
else if(K41)
{
Turn_left1();
}
else
Advance();
}
}
*函数功能:产生占空比可调的PWM波
*参数:PWM1_Cycle
void PWM1_Produce() interrupt 1
{
static unsigned int t1 ; //tt用来保存当前时间在一秒中的比例位置
t1++;
TH0=(65535-100)/256;//定时100us
TL0=(65535-100)%256;
if(t1100)
{
t1=0;
PWM1=1;
}
if(PWM1_Cyclet1)
{
PWM1=0;
}
}
*函数功能:产生占空比可调的PWM波
*参数:PWM1_Cycle
void PWM2_Produce() interrupt 3
{
static unsigned int t2 ; //tt用来保存当前时间在一秒中的比例位置
t2++;
TH1=(65535-100)/256;//定时100us
TL1=(65535-100)%256;
if(t2100)
{
t2=0;
PWM2=1;
}
if(PWM2_Cyclet2)
{
PWM2=0;
}
}