资源描述
. . . .
单片机项目报告
智能小车控制
班级:自动化21091
XX:邸维汉 刘会丽 石钱坤
学号:1020103304
2010103215
2010103122
目录
一、 前言
二、 方案设计与论证
1) 控制器模块选取
2) 电机模块选取
3) 电机驱动器模块选取
4) 电源模块选取
三、 硬件设计
1) 主控系统
2) 电机模块
3) 电机驱动模块
4) 电源模块
5) 按键模块
四、 软件设计
1) 直行设计
2) 转弯设计
3) 调速设计
五、 调试中存在的问题
六、 参考文献
一、前言:
随着汽车工业的迅速发展,关于汽车的研究也就越来越受人关注。全国电子大赛和省电子大赛几乎每次都有智能小车这方面的题目,全国各高校也都很重视该题目的研究。可见其研究意义很大。本设计就是在这样的背景下提出的,指导教师已经有充分的准备。本题目是结合科研项目而确定的设计类课题。我们设计的智能电动小车该具有圆形运行、三角形运行、矩形运行和三者一起运行的功能。都是运行一循环自动停车。
根据题目的要求,确定如下方案:在现有玩具电动车的基础上,加了四个按键,实现对电动车的运行轨迹的启动,并将按键的状态传送至单片机进行处理,然后由单片机根据所检测的各种按键状态实现对电动车的智能控制。
这种方案能实现对电动车的运动状态进行实时控制,控制灵活、可靠,精度高,可满足对系统的各项要求。本设计采用STC89C52单片机。以STC89C52为控制核心,利用按键的动作,控制电动小汽车的轨迹。实现四种运行轨迹。STC89C52是一款八位单片机,它的易用性和多功能性受到了广大使用者的好评。
二、方案设计与论证
1) 控制器模块选取
我们采用STC公司的STC89S52单片机作为主控制器,STC公司的单片机部资源比起ATMEL公司的单片机来要丰富的多,它在5V供电情况下,最多支持80M晶振、且部有512B的RAM数据存储器、片含8k空间的可反复擦些1000次的Flash只读存储器、1K的EEPROM、8个中断源、4个优先级、3个定时器、32个IO口、片机自带看门狗、双数据指针等。但是不兼容Atmel。
从方便使用的角度考虑,我们选择了此方案
2) 电机模块选取
采用普通直流电机。直流电机运转平稳,精度有一定的保证。直流电机控制的精确度虽然没有步进电机那样高,但完全可以满足本题目的要求。通过单片机的PWM输出同样可以控制直流电机的旋转速度,实现电动车的速度控制。并且直流电机相对于步进电机价格经济。
3) 电机驱动器模块选取
采用电机驱动芯片L298N。L298N为单块集成电路,高电压,高电流,四通道驱动,可直接的对电机进行控制,无须隔离电路。通过单片机的I/O输入改变芯片控制端的电平,即可以对电机进行正反转,停止的操作,非常方便,亦能满足直流减速电机的大电流要求。调试时在依照芯片手册,用程序输入对应的码值,能够实现对应的动作。
4) 电源模块选取
在本系统中,需要用到的电源有单片机的5V,L298N芯片的电源5V和电机的电源7-15V。所以需要对电源的提供必须正确和稳定可靠。用9V的锌电源给前、后轮电机供电,然后使用7805稳压管来把高电压稳成5V分别给单片机和电机驱动芯片供电。因此为了方便,这里我们采用12V电源给电机供电,再用7805转换成5V电源给单片机使用。
三、硬件设计
小车采用四轮驱动,一侧的前后两个车轮共用一个电机驱动,另外两个前后轮共用一个驱动,调节左右车轮转速从而达到控制转向的目的。
按键模块
单片机最小系统
L298N
电源模块
电机模块
系统结构框图
实物连接:
3.2、电机驱动模块
L298N驱动直流电机,它靠两个引脚控制一个电机的运动。小车采用四轮驱动,小车两侧的电机短接起来各接到L298N的一个输出端。通过调制两边轮子的转速或正反转来达到控制小车转向的目的。芯片引脚和功能如图1,驱动电路如图2。
EN A(B)
IN1(IN3)
IN2(IN4)
电机运行情况
H
H
L
正转
H
L
H
反转
H
同IN2(IN4)
同IN2(IN4)
快速停止
L
X
X
停止
将L298N的IN0、1、2、3,接到P1.0到P1.3上,ENA、ENB接到P3.2、P3.3。
3.3、电机模块
电机模块采用4块电机同时驱动,这里将同一侧电机短接接到L298N的一个输出端。
3.4、电源模块
采用两片7805电压稳压5V后给单片机系统和其他芯片供电供电,但缺点是压降过大,消耗的功率过大,发热量过大。
3.5、 按键模块
本系统添加4个按键,用来选择控制小车。并接于P2.0到P2.3口上。
四、软件设计
是否有键按下?
开始
检测按下哪个键?
运行三角形
运行圆形
运行矩形
N
Y
总体流程图
运行以上3个轨迹
S1按下
S2按下
S3按下
S4按下
4.1、小车直行设计:
若要求小车直走,这需要给4个电机正转命令。根据L298N芯片手册
EN A(B)
IN1(IN3)
IN2(IN4)
电机运行情况
H
H
L
正转
H
L
H
反转
H
同IN2(IN4)
同IN2(IN4)
快速停止
L
X
X
停止
这里将P1=0xfa。
4.2、小车转弯设计:
若要求小车转弯,需要给一侧电机正转,一侧电机反转或者不旋转。这样将P1=0xf8或者P1=0xf9.
4.3、小车调速设计:
若要求车调速,只需用PWM来控制L298N的ENA和ENB就可以对小车进行调速。这里我使用定时器T0的工作模式2自动重装。并赋初值 TH0=0xf6;TL0=0xf6;
U
产生高频脉冲。
C语言源代码实现:
#include<reg51.h>
T
#define uchar unsigned char
#define uint unsigned int
void trigon(uint ,uint ,uint ,uint ,uint ,uint);
void round(uint ,uint);
void rectangle(uint, uint, uint, uint, uint ,uint, uint, uint);
void delay(uint k);
void PWMA(uchar n);
void PWMB(uchar n);
uchar keys();
sbit P3_2=P3^2;
sbit P3_3=P3^3;
void main()
{
uchar key;
TMOD=0x12;
EA=1;
ET0=1;
ET1=1;
TH0=0xf6;
TL0=0xf6;
TH1=(65536-50000)/256;
TL1=(65536-50000)%256;
TR0=1;
TR1=1;
P2=0XFF;
while(1)
{
jump=0;
key=keys();
// c稳定运行 d转向 e稳定运行 f转向 g稳定运行 h转向
if(key==0xfe)// c d e f g h
trigon(30,5,30,10,30,16);
if(key==0xfd)
round(13,70);
// c稳定运行 d转向 e稳定运行 f转向 g稳定运行 h转向 i稳定运行 j转向
if(key==0xfb)// c d e f g h i j
rectangle(30,4,30,4,30,4,30,16);
if(key==0xf8)
{
trigon(30,5,30,10,30,16);
jump=0;
delay(1000);
round(13,70);
jump=0;
delay(1000);
rectangle(30,4,30,4,30,4,30,16);
}
}
}
void timer0() interrupt 1
{
num0++;
}
void timer1() interrupt 3
{
num1++;
TH1=(65536-50000)/256;
TL1=(65536-50000)%256;
}
void trigon(uint c,uint d,uint e,uint f,uint g,uint h)
{
uint aa,bb,cc,dd,ee;
aa=c+d;
bb=aa+e;
cc=bb+f;
dd=cc+g;
ee=dd+h;
delay(3000);
num1=0;
num0=0;
while(!jump&& key!=0)
{
if(num1<c&&num1>=1) // 正转稳定运行
{
P1=0xfa;
PWMB(70);
PWMA(70);
}
if((num1>c+1)&&num1<=aa)// 转向
{
P1=0xf8;
PWMB(50);
PWMA(80);
}
if(num1>(aa+1)&&num1<=bb)//正转稳定
{
P1=0xfa;
PWMB(70);
PWMA(70);
}
if(num1>(bb+1)&&num1<=cc)//转向
{
P1=0xf8;
PWMB(60);
PWMA(65);
}
if(num1>(cc+1)&&num1<=dd)// 正转稳定运行
{
P1=0xfa;
PWMB(70);
PWMA(70);
}
if(num1>(dd+1)&&num1<=ee)//转向
{
P1=0xf8;
PWMB(65);
PWMA(35);
}
if(num1>ee) //停止
{
num1=0;
num0=0;
P1=0xf0;
jump=1;
P3_2=0;
P3_3=0;
key=0;
}
}
}
void PWMA(uchar n)
{
if(num0<n)
P3_2=1;
else
P3_2=0;
if(num0>=100)
num0=0;
}
五、 调试中出现的问题
1. 转向时间需要慢慢调,时间长,旋转弧度大;时间短,旋转弧度小。
2. 直行时,由于每个电机的性能不一样,导致两侧占空比一样时,小车会存在转弯,这样需要微调占空比。
六、 参考文献
[1] 楼然苗,光飞. 51系列单片机设计实例.航空航天大学
[2] 何希才. 常用集成电路应用实例.电子工业
[3] 王静霞 单片机应用技术(C语言版) 电子工业
15 / 15
展开阅读全文