循迹小车课程设计.docx
《循迹小车课程设计.docx》由会员分享,可在线阅读,更多相关《循迹小车课程设计.docx(17页珍藏版)》请在冰豆网上搜索。
循迹小车课程设计
一、课设题目:
循迹小车
二、课设要求:
1、小车能识别黑色轨迹自主行走;
2、小车速度可调;
3、设计电路,编写程序,软件硬件仿真、调试。
三、任务时间表:
1、六用7-10号完成方案的大体框架,确定大致元器件,完成电路图绘制,进行编程,仿真;
2、六月13-14号焊接硬件;
3、六月15-17号调试修改。
四、框架图:
五、小车各模块电路图及说明:
1、电机驱动控制部分:
采用专门的电机控制芯片L298。
特点:
(1)工作电压高,最高工作电压可达46V;输出电流大,瞬间峰值电流可达3A,持续工作电流为2A。
(1)内含两个H桥的高电压大电流全桥式驱动器,可以用来驱动直流电动机和步进电动机、继电器、线圈等感性负载。
(2)采用标准TTL逻辑电平信号控制;具有两个使能控制端,在不受输入信号影响的情况下允许或禁止器件工作。
(3)有一个逻辑电源输入端,使内部逻辑电路部分在低电压下工作;可以外接检测电阻,将变化量反馈给控制电路。
引脚图和引脚功能表:
L298管脚图
它可同时对两个电机进行驱动控制,电路简单,控制效果好,干扰小,因此我们采用此方案,电路图如下:
2、传感器探测部分:
采用光电传感器ST188。
特点:
1、采用高发射功率红外光电二极管和高灵敏度光电晶体管组成。
2、检测距离可调整范围大,4—13mm可用。
3、采用非接触检测方式。
应用范围
1、IC卡电度表脉冲数据采样。
2、集中抄表系统数据采集。
3、传真机纸张检测。
4、与方向判别电路ST288A结合使用可判别被测物的运动方向及正反转测量、行程测量等。
外形尺寸:
ST188引脚图(单位mm)
3、中央处理模块:
STC89C51单片机。
硬件结构:
STC89C51单片机是把那些作为控制应用所必需的基本内容都集成在一个尺寸有限的集成电路芯片上。
如果按功能划分,它由如下功能部件组成,即微处理器、数据存储器、程序存储器、并行I/O口、串行口、定时器/计数器、中断系统及特殊功能寄存器。
它们都是通过片内单一总线连接而成,其基本结构依旧是CPU加上外围芯片的传统结构模式。
但对各种功能部件的控制是采用特殊功能寄存器的集中控制方式。
1、微处理器
该单片机中有一个8位的微处理器,与通用的微处理器基本相同,同样包括了运算器和控制器两大部分,只是增加了面向控制的处理功能,不仅可处理数据,还可以进行位变量的处理。
2、数据存储器
片内为128个字节,片外最多可外扩至64k字节,用来存储程序在运行期间的工作变量、运算的中间结果、数据暂存和缓冲、标志位等,所以称为数据存储器。
3、程序存储器
由于受集成度限制,片内只读存储器一般容量较小,如果片内的只读存储器的容量不够,则需用扩展片外的只读存储器,片外最多可外扩至64k字节。
4、中断系统
具有5个中断源,2级中断优先权。
5、定时器/计数器
片内有2个16位的定时器/计数器,具有四种工作方式。
6、串行口
1个全双工的串行口,具有四种工作方式。
可用来进行串行通讯,扩展并行I/O口,甚至与多个单片机相连构成多机系统,从而使单片机的功能更强且应用更广。
7、P0、P1、P2、P3口
为4个并行8位I/O口。
8、特殊功能寄存器
共有21个,用于对片内的个功能的部件进行管理、控制、监视。
实际上是一些控制寄存器和状态寄存器,是一个具有特殊功能的RAM区。
由上可见,STC89C51单片机的硬件结构具有功能部件种类全,功能强等特点。
特别值得一提的是该单片机CPU中的位处理器,它实际上是一个完整的1位微计算机,这个一位微计算机有自己的CPU、位寄存器、I/O口和指令集。
1位机在开关决策、逻辑电路仿真、过程控制方面非常有效;而8位机在数据采集,运算处理方面有明显的长处。
MCS-51单片机中8位机和1位机的硬件资源复合在一起,二者相辅相承,它是单片机技术上的一个突破,这也是MCS-51单片机在设计的精美之处。
80C51复位系统图
4、调速系统:
脉宽调速系统(PWM)。
PWM调速系统有下列优点:
(1)由于PWM调速系统的开关频率较高,仅靠电枢电感的滤波作用就可以获得脉动很小的直流电流,电枢电流容易连续,系统的低速运行平稳,调速范围较宽,可达1:
10000左右。
在相同的平均电流下,电动机的损耗和发热都比较小。
(2)同样由于开关频率高,若与快速响应的电机相配合,系统可以获得很宽的频带,因此快速响应性能好,动态抗扰能力强。
(3)由于电力电子器件只工作在开关状态,主电路损耗较小,装置效率较高。
根据以上综合比较,以及本设计中受控电机的容量和直流电机调速的发展方向,本设计采用了H型单极型可逆PWM变换器进行调速。
脉宽调速系统的主电路采用脉宽调制式变换器,简称PWM变换器。
脉宽调速也可通过单片机控制继电器的闭合来实现,但是驱动能力有限。
为顺利实现电动小汽车的前行与倒车,本设计采用了可逆PWM变换器。
可逆PWM变换器主电路的结构式有H型、T型等类型。
我们在设计中采用了常用的双极式H型变换器,它是由4个三极电力晶体管和4个续流二极管组成的桥式电路。
六、总电路原理图:
七、软件设计:
系统软件主要由传感器检测和电机控制处理主程序以及表示检测结果的子程序组成,程序流程框图如下图所示。
程序设计流程图
程序内容:
#include
#defineucharunsignedchar
#defineuintunsignedint
sbitIN10=P2^0;
sbitIN11=P2^1;
sbitENA1=P2^2;
sbitIN21=P2^5;
sbitIN20=P2^6;
sbitENA2=P2^7;
sbitS1=P1^0;
sbitS2=P1^1;
sbitS3=P1^2;
sbitS4=P1^3;
ucharlukou=0;
bitLF=0;
bitRF=0;
dataintN=0,M=0;
unsignedcharzuo,you;
voiddelay(uintk);
voidT_Init();
voidturn_left();
voidturn_right();
voidfront();
voidstop();
/******************************************************/
voidT_Init()//定时器初始化
{
TMOD=0x01;
TH0=(65536-100)/256;
TL0=(65536-100)%256;
EA=1;
ET0=1;//定时器0工作在方式116位定时方式
//开中断
TR0=1;
}
/***************************PWM方波*****************************/
voidexter0()interrupt1
{
TH0=(65536-100)/256;
TL0=(65536-100)%256;
TR0=0;
N++;M++;
if(N>=100)
N=0;
if(N{
ENA1=1;
}
if(N>zuo)
{
ENA1=0;
}
if(M>=100)
M=0;
if(M{
ENA2=1;
}
if(M>you)
{
ENA2=0;
}
TR0=1;
}
/*****************************左转子函数*************************
voidturn_left()
{
IN10=0;IN11=1;//左轮反转
//IN20=1;IN21=0;//右轮正转
}
/**********************右转子函数********************************
voidturn_right()
{
IN10=1;IN11=0;//左轮正转
IN20=0;IN21=1;//右轮反转
}
/************************前进子函数******************************
voidfront()
{
IN10=1;IN11=0;//左轮正转
IN20=1;IN21=0;//右轮正转
}
/**************************停止子函数***************************
voidstop()
{
IN10=0;IN11=0;//左轮停转
IN20=0;IN21=0;//右轮停转
}
/************************延时函数***************************/
voiddelay(uintk)
{
uinti,j;
for(i=0;i{
for(j=0;j<1000;j++)
{;}
}
}
voidmain()
{
T_Init();
zuo=25;
you=25;
P1=0x0e;
P2=0x0f;
delay(500);
P2=0xf0;
delay(500);*/
P1=0xff;
RF=0;
LF=0;
while
(1)
{
P3=P1;
you=100;zuo=0;
delay(300);
you=0;zuo=100;
delay(300);
ce();
if(P1==0xff&&(RF==0)&&(LF==0))//正中间,高速前行
{
//调用高速前行函数1
you=100;zuo=0;
RF=0;LF=0;
}
if(P1==0xfd)//
{
//调用中速左转函数2
you=95;zuo=65;
RF=0;LF=1;
}
if(P1==0xfc)
{
//调用高速前行函数3
you=95;zuo=50;
RF=0;LF=1;
}
if(P1==0xfe)
{
//调用高速前行函数4
you=85;zuo=10;
RF=0;LF=1;
}
if(P1==0xff&&(LF==1))//出轨判断
{
//调用低速左转函数5
you=80;zuo=10;
RF=0;LF=1;
}
if(P1==0xfb)
{
//调用中速右转函数6
you=65;zuo=95;
RF=1;LF=0;
}
if(P1==0xf3)//
{
//调用低速左转函数7
you=50;zuo=95;
RF=1;LF=0;
}
if(P1==0xf7)//
{
//调用中速左转函数8
you=35;zuo=85;
RF=1;LF=0;
}
if(P1==0xff&&(RF==1))//出轨判断
{
//调用高速左转函数9
you=10;zuo=80;
RF=1;LF=0;
}
P2=0x0f;
delay(300);
P2=0xf0;
delay(300);
P1=0x0f;
ce();
delay(300);
P1=0x0e;
ce();
delay(100);
P1=0x0d;
ce();
delay(100);
P1=0x0c;
ce();
delay(100);
P1=0x07;
ce();
delay(100);
ce();
delay(100);
}
}
八、心得体会:
邹舟:
这次课程设计,不仅锻炼了我单片机硬件设计的能力,也进一步掌握了C51语言的编程,让我对自动控制领的相关理论有了更深刻的认识从通过理论设计,到仿真软件仿真,再到确定具体方案,再到安装实际电路,最后到调试电路、成型。
整个过程都需要我充分利用所学的知识进行思考、借鉴。
可以说,本次制作是针对前面所学的知识进行的一次比较综合的检验。
实习中,正确的思路是很重要的,只有你的设计思路是正确的,那你的设计才有可能成功。
因此我们在设计前必须做好充分的准备,认真查找详细的资料,为我们设计的成功打下坚实的基础。
刘征:
安装、焊接过程则是一个考验人耐心的过程,对电路的安装、焊接、分析、调试要一步一步来,不能急躁。
因为是在仿真软件上较理论上还是存在一定的差距,仿真能出来结果的在实际电路不一定就能出来,这就需要我们有耐心,寻找一个比较正确的调试方法。
高洋:
在这次设计与制作中,电机的控制采用了模拟PWM波来控制,PWM调速的基本原理和思想是通过反复循环改变ON/OFF的时间分配。
但小车无法借助循环处理实现PWM,需要通过中断处理方式实现。
设计靠的是STC89C51的两个定时器模拟实现的,需要对定时器设定中断周期,也就是PWM的频率。
PWM的频率即时达到数十千赫兹也能满足平滑控制的要求,但会产生一个很大的弊端,就是中断次数过多,导致CPU大部分时间都在处理中断,实时检测和控制不能很快的响应和处理。
而且电机也存在一个变化速率匹配的问题,所以需要通过不断的尝试,适当地改变上述设定值以便得到最佳的效果。
杨保毅:
这的课程设计,熟练地掌握课本上的理论知识是前提。
这样才能对试验中出现的问题进行一定的分析和解决。
1.对初步设计的电路在仿真时能实现基本功能的基础上要进一步改进,比如我们在12V与地2000uF电容,在电机正负极加电容;2.在测试时先是单个模块测试,然后集成测试;3.不要在连线时开电源,防止短路,我测试时因此烧坏了一个芯片;4.软件编写要尽可能及时检测到信号并做出反应。
总的来说这次制件虽然很累,但非常充实。