一个双直流电机的智能小车.docx
- 文档编号:8838125
- 上传时间:2023-02-02
- 格式:DOCX
- 页数:15
- 大小:284.84KB
一个双直流电机的智能小车.docx
《一个双直流电机的智能小车.docx》由会员分享,可在线阅读,更多相关《一个双直流电机的智能小车.docx(15页珍藏版)》请在冰豆网上搜索。
一个双直流电机的智能小车
1.设计要求
设计一个双直流电机的智能小车。
采用AT89C51单片机为控制核心,在最小系统的基础上,通过对遥控控制按键的检测,控制步进电机的转动,使智能小车可以在遥控信号的控制下,实现合理的行走。
(1)智能小车可实现无线遥控的功能;
(2)智能小车可实现左、右转弯控制;
(3)智能小车行走前进、后退控制;
2.设计方案和论证
2.1总体设计思路
本次我制作的基于AT89C51单片机的智能遥控小车是一辆能够用焊制的遥控器遥控小车进行前进、后退以及左右转弯的智能小车。
小车使用编解码芯片(pt2262-ir/pt2272-M4)焊制的无线遥控系统控制小车。
概括来说,本实验就是用遥控器接收控制信号,用单片机控制直流电机输出相应的电平控制车辆的前行或者后退,用PWM输出端口控制小车的转向,进而实现小车的智能遥控功
2.2总体方案
整个系统中,微控制器采用了Microchip公司的PIC16F877,软件设计中涉及PORTB用作普通数字I/O脚和PORTC端口的CCP模块的PWM脉宽调制输出功能。
本实验用单片机PORTB(1-4)接收来遥控解码芯片解码的数字电位信号,遥控小车的走向,在AT89C51单片机的处理下做出不同的反应,通过RC4-RC7控制小车前进后退。
如图2—1所示,是本次设计智能小车的电路框图。
以AT89C51为电路的中央处理器,来处理传感器采集来的数据,处理完毕之后以便去控制电机驱动电路来驱动电机。
电源部分是为整个电路模块提供电源,以便能正常工作。
图2—1电路框图
3.设计原理及电路图
3.1硬件设计
本设计通过小车这个载体再结合由AT89C51为核心的控制板可通过单片机电路、电机驱动电路、无线遥控电路等实现基本功能。
总原理图如图3—1
图3—1
(1)单片机电路
a.最小应用系统电路如图3—2
图3—2
b.单片机最小系统电路介绍
51单片机最小系统复位电路的极性电容C1的大小直接影响单片机的复位时间,一般采用10~30uF,51单片机最小系统容值越大需要的复位时间越短。
51单片机最小系统晶振Y1也可以采用6MHz或者11.0592MHz,在正常工作的情况下可以采用更高频率的晶振,51单片机最小系统晶振的振荡频率直接影响单片机的处理速度,频率越大处理速度越快。
51单片机最小系统起振电容C2、C3一般采用15~33pF,并且电容离晶振越近越好,晶振离单片机越近越好
P0口为开漏输出,作为输出口时需加上拉电阻,阻值一般为10k。
其他接口内部有上拉电阻,作为输出口时不需外加上拉电阻。
设置为定时器模式时,加1计数器是对内部机器周期计数(1个机器周期等于12个振荡周期,即计数频率为晶振频率的1/12)。
计数值N乘以机器周期Tcy就是定时时间t。
设置为计数器模式时,外部事件计数脉冲由T0或T1引脚输入到计数器。
在每个机器周期的S5P2期间采样T0、T1引脚电平。
当某周期采样到一高电平输入,而下一周期又采样到一低电平时,则计数器加1,更新的计数值在下一个机器周期的S3P1期间装入计数器。
由于检测一个从1到0的下降沿需要2个机器周期,因此要求被采样的电平至少要维持一个机器周期。
当晶振频率为12MHz时,最高计数频率不超过1/2MHz,即计数脉冲的周期要大于2ms
P1口是一个内部提供上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4TTL门电流。
P1口管脚写入1后,被内部上拉为高,可用作输入,P1口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。
在FLASH编程和校验时,P1口作为第八位地址接收。
P2口为一个内部上拉电阻的8位双向I/O口,P2口缓冲器可接收,输出4个TTL门电流,当P2口被写“1”时,其管脚被内部上拉电阻拉高,且作为输入。
并因此作为输入时,P2口的管脚被外部拉低,将输出电流。
这是由于内部上拉的缘故。
P2口当用于外部程序存储器或16位地址外部数据存储器进行存取时,P2口输出地址的高八位。
在给出地址“1”时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,P2口输出其特殊功能寄存器的内容。
P2口在FLASH编程和校验时接收高八位地址信号和控制信号。
P3口管脚是8个带内部上拉电阻的双向I/O口,可接收输出4个TTL门电流。
当P3口写入“1”后,它们被内部上拉为高电平,并用作输入。
作为输入,由于外部下拉为低电平,P3口将输出电流(ILL)这是由于上拉的缘故。
P3口也可作为AT89C51的一些特殊功能口:
P3.0RXD(串行输入口)P3.1TXD(串行输出口)P3.2/INT0(外部中断0)
P3.3/INT1(外部中断1)P3.4T0(记时器0外部输入)P3.5T1(记时器1外部输入)
P3.6/WR(外部数据存储器写选通)P3.7/RD(外部数据存储器读选通)
P3口同时为闪烁编程和编程校验接收一些控制信号。
(2)电机驱动电路
a.L298芯片驱动:
(引脚图3—3和电路图3—4)
图3—3
图3—4
b.L298简介:
1和15和8引脚直接接地,4管脚VS接2.5到46V的电压,它是用来驱动电机的,9引脚是用来接4.5到7V的电压的,它是用来驱动L298芯片的,L298需要从外部接两个电压,一个是给电机的,另一个给L298芯片的,6和11引脚是它的使能端,一个使能端控制一个电机,至于那个控制那个你自己焊接,你可以把它理解为总开关,只有当它们都是高电平的时候两个电机才有可能工作。
5,7,10,12是298的信号输入端和单片机的IO口相连,2,3,13,14是输出端,输入5和7控制输出2和3,输入的10,12控制输出的13,14。
c.L298N型驱动器的原理及应用
L298是SGS公司的产品,比较常见的是15脚Multiwatt封装的L298N,内部同样包含4通道逻辑驱动电路。
可以方便的驱动两个直流电机,或一个两相步进电机。
L298N芯片可以驱动两个二相电机,也可以驱动一个四相电机,输出电压最高可达50V,可以直接通过电源来调节输出电压;可以直接用单片机的IO口提供信号;而且电路简单,使用比较方便。
L298N可接受标准TTL逻辑电平信号VSS,VSS可接4.5~7V电压。
4脚VS接电源电压,VS电压范围VIH为+2.5~46V。
输出电流可达2.5A,可驱动电感性负载。
1脚和15脚下管的发射极分别单独引出以便接入电流采样电阻,形成电流传感信号。
L298可驱动2个电动机,OUT1,OUT2和OUT3,OUT4之间可分别接电动机,本实验装置我选用驱动两台电动机。
5,7,10,12脚接输入控制电平,控制电机的正反转。
EnA,EnB接控制使能端,控制电机的停。
(3)无线遥控电路(此模块在仿真图中没有,是装在遥控器中的芯片)
a.遥控电路的选择
方案一:
采用红外发射、接收头,以及编码芯片PT2262、解码芯片PT2272组成红外的遥控模块,但是此红外遥控模块发射和接收之间的距离短,而且不能在有障碍物的情况下实现遥控,遥控性能差。
方案二:
采用RF无线发射模块F05V、无线接收模块J04V,以及编码芯片PT2262、解码芯片PT2272组成的无线遥控模块,此遥控模块在开阔地参考距离大于150米,而且能够在有障碍物的情况下实现遥控,能够达到此无线遥控小车的性能要求。
综上所述,选用方案二。
b.遥控模块遥控模块遥控模块遥控模块发射使用pt2262-ir发射专用芯片,发射模块只有在按键按下的时候才供电,因此耗电量极低,适合用电池。
接收使用的是pt2272(sc2272为功能相同的替代品)用irm38b(只要是中心频率为38kHZ的就行)接收信号。
在通常使用中,我们一般采用8位地址码和4位数据码,这时编码电路PT2262和解码PT2272的第1~8脚为地址设定脚,有三种状态可供选择:
悬空、接正电源、接地三种状态,3的8次方为6561,所以地址编码不重复度为6561组,只有发射端PT2262和接收端PT2272的地址编码完全相同,才能配对使用,遥控模块的生产厂家为了便于生产管理,出厂时遥控模块的PT2262和PT2272的八位地址编码端全部悬空,这样用户可以很方便选择各种编码状态,用户如果想改变地址编码,只要将PT2262和PT2272的1~8脚设置相同即可,例如将发射机的PT2262的第1脚接地第5脚接正电源,其它引脚悬空,那么接收机的PT2272只要也第1脚接地第5脚接正电源,其它引脚悬空就能实现配对接收。
当两者地址编码完全一致时,接收机对应的D1~D4端输出约4V互锁高电平控制信号,同时VT端也输出解码有效高电平信号。
无线发射头F05器件说明●F05VJ05V工作电压不得超过3.5V,否则将烧坏芯片。
●F05V无数据输入时休眠电流1μA。
但与F05V接口的电路不发送数据输入时必须处于低电平状态。
●F05VJ05V最佳的安装是直插在印制板上,也可以将F05V覆铜面朝下贴在印制板上。
天线要朝上。
●F05V属于微功率发射模块,可以通过FCC认证,适合短距离无线数据传输。
●F05V和J05V天线匹配是否良好直接影响到收发距离。
发射电路和接收电路如下:
发射电路图3—5
接收电路图3—6
3.2软件设计
在进行微机控制系统设计时,除了系统硬件设计外,大量的工作就是如何根据每个生产对象的实际需要设计应用程序。
因此,软件设计在微机控制系统设计中占重要地位。
对于本系统,软件更为重要。
本系统软件采用模块化结构,由主程序﹑定时子程序﹑中断子程序、显示子程序﹑算法子程序构成。
keil与protues仿真分析其设计结果。
程序流程图如下:
流程图3—7
4.器件清单
元件
序号
型号
主要参数
数量(个)
备注
1
AT89C51
4Kbcode,12MHz,2x16-bitTimer
1
无
2
L298
额定电流1A、Vss=+5V
Vs=+12V
1
Vs接2.5到46V
Vss接4.5到7V
3
CAP
30P
7
无
4
CRYSTAL
12KHZ
1
无
5
RES
1K,4、5K,100K,
各1,1,5个
无
6
DIODE
无
8
无
7
MOTOR
12V、120hms
2
无
8
BUTTON,SWITCH
无
6
无
9
VSOURCE
12V
1
无
5.器件识别与检测
(1)MCS-51单片机是在一块芯片中集成了CPU、RAM、ROM、定时器/计数器和多功能I/O等一台计算机所需要的基本功能部件。
如果按功能划分,它由如下功能部件组成,即微处理器(CPU)、数据存储器(RAM)、程序存储器(ROM/EPROM)、并行I/O口、串行口、定时器/计数器、中断系统及特殊功能寄存器(SFR)。
单片机是靠程序运行的,并且可以修改。
通过不同的程序实现不同的功能,尤其是特殊的独特的一些功能,通过使用单片机编写的程序可以实现高智能,高效率,以及高可靠性!
因此我们采用单片机作为计算器的主要功能部件,可以进行很快地实现运算功能。
51系列单片机8031、8051及89c51/89s51均采用40Pin封装的双列直接DIP结构。
它们的引脚配置:
40个引脚中,正电源和地线两根,外置石英振荡器的时钟线两根,4组8位共32个I/O口,中断口线与P3口线复用。
(2)L298是SGS公司的产品,L298N为15个管角的单块集成电路,高电压,高电流,四通道驱动,设计用L298N来接收DTL或者TTL逻辑电平,驱动感性负载(比如继电器,直流和步进马达)和开关电源晶体管。
内部包含4通道逻辑驱动电路,其额定工作电流为1A,最大可达1.5A,Vss电压最小4.5V,最大可达36V;Vs电压最大值也是36V。
L298N可直接对电机进行控制,无须隔离电路,可以驱动双电机。
根据L298N芯片的特点以及SPCE061A自身的特点,把IOA4~IOA7作为输出口,分别与L298N的IN1~IN4相接,其VS、VSS分别接+12V、+5V电源,其输出口OUT1~OUT2接转向电机,OUT3~OUT4接驱动电机,根据设计要求,结合所编好的程序,根据所发语音命令,接收信号,便可给[P_IOA_DATA]传送数据,从而控制转向电机和驱动电机。
6.控制系统实现(软件编程与调试)
6.1软件编程:
主程序设计:
#include
#include
sbiten1=P1^0;//电机驱动-左电机是否供电
sbiten2=P1^1;//电机驱动-右电机是否供电
sbits1=P1^2;//电机驱动-左电机转动方向
sbits2=P1^3;//电机驱动-左电机转动方向
sbits3=P1^4;//电机驱动-右电机转动方向
sbits4=P1^5;//电机驱动-右电机转动方向
sbity1=P0^3;//遥控器按键-前进
sbity2=P0^4;//遥控器按键-后退
sbity3=P0^5;//遥控器按键-左转
sbity4=P0^6;//遥控器按键-右转
sbitstart=P0^7;//单片机控制是否启动
unsignedchart=0,m1=0,m2=0,key=0,a=0,aut=0;
voidmotor(unsignedcharindex,charspeed)//电机设定函数
{
if(speed>=-100&&speed<=100)
{
if(index==1)
{
m1=abs(speed);
if(speed<0)
{
s1=0;
s2=1;
}
else
{
s1=1;
s2=0;
}
}
if(index==2)
{
m2=abs(speed);
if(speed<0)
{
s3=0;
s4=1;
}
else
{
s3=1;
s4=0;
}
}
}
}
voidstop(void)//停止函数
{
motor(1,0);
motor(2,0);
}
voidadvance(void)//前进函数
{
motor(1,50);
motor(2,50);
}
voidretreat(void)//后退函数
{
motor(1,-50);
motor(2,-50);
}
voidleft(void)//左转函数
{
motor(1,-50);
motor(2,50);
}
voidright(void)//右转函数
{
motor(1,50);
motor(2,-50);
}
/*voiddelay(unsignedintj)//延时函数
{
for(j;j>0;j--);
}*/
voidmain()
{
TMOD=0x02;
TH0=0x9B;
TL0=0x9B;
EA=1;
ET0=1;
TR0=1;
while(start==0)//主循环
{
if(y3==1&&y4==1&&a!
=1)//左右键同时按下,切换模式
{
a=1;
aut=!
aut;
}
if((y3==0||y4==0)&&a==1)
a=0;
if(y1==1)//前进
advance();
if(y2==1)//后退
retreat();
if(y3==1)//左转
left();
if(y4==1)//右转
right();
if(y1==0&&y2==0&&y3==0&&y4==0)
stop();
}
}
voidtimer0()interrupt1
{
if(t if(t t++; if(t>=100)t=0; } 6.2软件调试 软件调试一般分为以下四个阶段: 1、编写程序并查错;2、在kelic语言的编译系统中编译源程序3、对程序进行编译连接,并及时发现程序中存在的错误;4、改正错误。 在本次调试中出现的问题有: 1、在程序中有的函数名未定义; 2、在抄录程序时,少录入一些字符,如: “;”、“{”、“-”等符号,而出现错误; 3、有一些函数名录入时少写一个字母或顺序颠倒; 4、没有注意函数名的调用及定义; 5、芯片引脚定义出错而导致没有实验现象。 在软件调试过程中,对出现的错误进行了认真的分析和修改,多次调试成功后,能够很好的达到既定的设计效果。 6.3硬件调试 1、逻辑错误: 它是由设计错误或加工过程中的工艺性错误所造成的。 这类错误包括错线、开路、短路等。 2、元器件失效: 有两方面的原因: 一是器件本身已损坏或性能不符合要求;二是组装错误造成元件失效,如电解电容、集成电路安装方向错误等。 3、可靠性差: 因其可靠性差的原因很多,如金属化孔、接插件接触不良会造成系统时好时坏,经不起振动;走线和布局不合理也会引起系统可靠性差。 4、电源故障: 若样机由电源故障,则加电后很容易造成器件损坏。 电源故障包括电压值不符合设计要求,电源引线和插座不对,功率不足,负载能力差等。 调试方法: 包括多级调试和联机调试。 在调试过程中要针对可能出现的故障认真分析,直至检查出原因并排除。 本次硬件调试过程中,对所出现的问题进行了认真的分析和改正,最后能够很好的达到设计要求的效果。 7.设计心得 本课设提出了一种经济实用的智能小车设计方法,给出了从硬件电路设计到软件设计的一系列步骤。 采用了直流电机作为执行元件,AT89S51单片机作为主控芯片,完成了智能小车功能的实现 通过这次课程设计使我懂得了理论与实际相结合是很重要的,进一步了解单片机的结构、电路设计及控制功能。 起初,找了很多资料,也参考了同学的程序,其中每一个子程序模块都认真去读,去分析,还了解了c语言在单片机编程中的一些特点,包括函数的声明和调用等。 确定基本设计方案、对所用芯片功能进行查找、调试、上机仿真等例如驱动芯片L298的功能。 在整个设计的过程中遇到的问题主要有以下三点,首先: 基础知识掌握的不牢固,主要表现在一些常用的电路的形式和功能不清楚,对书本上的内容理解不够透彻。 第二: 对一些常用的应用软件缺少应用,在画电路图和系统的仿真的时候,对这些软件的操作不熟练,浪费了很多时间。 第三: 相关知识掌握的不够全面,缺少系统设计的经验。 通过设计诱发了我学习单片机的兴趣。 我将继续努力下去。 8.参考文献 【1】李朝青.单片微机原理及接口技术(第三版)。 [M]北京航空航天大学出版社 【2】阎石.数字电子技术基础(清华大学电子学教研组编第五版)高等教育出版社 【3】康华光.电子技术基础(第五版)高等教育出版社 【4】林志琦.单片机原理接口及应用(C语言版).北京: 中国水利水电出版社,2007【5】杨加国单片机原理与应用及C51程序设计清华大学出版社 【6】丁元杰.单片微机原理及应用(第三版).北京: 机械工业出版社,2005,忽略此处..
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 一个 直流电机 智能 小车