单片机直流电机控制实验.docx
- 文档编号:24760882
- 上传时间:2023-06-01
- 格式:DOCX
- 页数:33
- 大小:230.96KB
单片机直流电机控制实验.docx
《单片机直流电机控制实验.docx》由会员分享,可在线阅读,更多相关《单片机直流电机控制实验.docx(33页珍藏版)》请在冰豆网上搜索。
单片机直流电机控制实验
直流电机控制实验
摘要:
直流电动机在交通、机械、纺织、航空等领域中已经得到广泛的应用。
而以往直流电动机的控制只是简单的控制,很难进行调速,不能实现智能化。
如今,直流电动机的调速控制已经离不开单片机的控制,单片机应用技术的飞速发展促进了自动控制技术的发展,使人类社会步入了自动化时代,单片机应用技术与其他学科领域交叉融合,促进了学科发展和专业更新,引发了新兴交叉学科与技术的不断涌现。
现代科学技术的飞速发展,改变了世界,也改变了人类的生活。
由于单片机的体积小、重量轻、功能强、抗干扰能力强、控制灵活、应用方便、价格低廉等特点,计算机性能的不断提高,单片机的应用也更加广泛特别是在各种领域的控制、自动化等方面。
关键词:
STC89C52PWM电机控制
DCmotorcontrolexperiment
Summary:
DCmotorsintransportation,machinery,textiles,aviationandotherfieldshasbeenwidelyused.TheconventionalDCmotorcontrolsimplycontrol,difficulttocontrol,notintelligent.Today,theDCmotorspeedcontrolhasbeeninseparablefromthecontrolofthemicrocontroller,therapiddevelopmentofmicrocomputerapplicationtechnologytopromotethedevelopmentofautomaticcontroltechnology,thehumansocietyenteredtheeraofautomation,microcomputerapplicationtechnologyandotherdisciplinesintersect,promotionoftheacademicdevelopmentandprofessionalupdate,sparkednewinterdisciplinaryandemergingtechnologies.Therapiddevelopmentofmodernscienceandtechnology,haschangedtheworld,butalsochangethewaypeoplelive.Asthedevicesmallsize,lightweight,powerful,stronganti-interferenceability,flexiblecontrol,easytouse,lowcostcharacteristics,computerperformancecontinuestoimprove,SCMapplicationsaremorewidelyespeciallycontrolinvariousareasofautomationandsoon.
Keywords:
STC89C52PWMmotorcontrol
第1章引言1
1.1电机的研究意义1
1.2设计方案1
第2章供电模块的设计2
2.1集成直流稳压电源芯片LM7805的介绍2
2.2供电模块的构成2
第3章主控制模块的设计3
3.189C52单片机的介绍3
3.289C52的主要特性和结构特点3
3.389C52的IO口介绍4
第4章键盘输入模块的设计5
4.1键盘的电路及原理5
第5章显示模块的设计6
5.1数码管及二极管的电路及原理6
5.2PWM简介6
第6章直流电机控制模块的设计7
6.1直流电机的介绍7
6.2数模转换器DAC08327
第7章课程设计总结9
致谢10
参考文献11
附录12
主程序12
子程序18
第1章引言
1.1电机的研究意义
电气传动是现代最主要的机电能量变化形式之一,在当今社会中广泛使用着各式各样的电气传动系统。
直流调速系统因其变流方式及控制方法简单,调速性能好,长期以来在调速传动中占统治地位。
而现在随着微电子技术的发展,微机功能的不断提高以及电力电子、计算机控制技术的发展,电气传动领域出现了以微机为核心的数字控制系统。
计算机的发展可以使复杂的控制规律较方便的实现,以计算机为核心的数字控制技术成为自控领域的主流,也给直流电气传动的发展注入了新的活力,使电气传动进入了更新的发展阶段。
与传统控制系统相比,计算机控制具有很多独特的优点。
长期以来,直流电动机因其转速调节比较灵活,方法简单,易于大范围平滑调速,控制性能好等特点,一直在传动领域占有统治地位。
它广泛应用于数控机床、工业机器人等工厂自动化设备中。
随着现代化生产规模的不断扩大,各个行业对直流电机的需求愈益增大,并对其性能提出了更高的要求。
为此,研究并制造高性能、高可靠性的直流电机控制系统有着十分重要的现实意义。
1.2设计方案
本论文设计的系统以单片机为控制核心,通过键盘设置各段运行参数,也可通过电脑设置下载到单片机。
单片机输出二进制控制量,经D/A转换电路将对应模拟电压送到直流放大器的输入端。
放大器根据输入的模拟电压而输出对应的电压来控制直流电机的转速。
显示部分显示各段设定的转速值。
单片机主要完成参数设置、参数显示和控制输出等功能。
第2章供电模块的设计
2.1集成直流稳压电源芯片LM7805的介绍
LM7805是目前市场上非常常见的三端稳压器件。
一般使用的是TO-220封装,能提供DC5V的输出电压,应用范围广,内含过流和过载保护电路。
带散热片时能持续提供1A的电流,如果使用外围器件,它还能提供不同的电压和电流。
7805的主要特点有:
输出电流大,一般可以达到1A;输出电压稳定,基本能一直维持在5V;具有各种保护功能,过热保护、短路保护、输出晶体管SOA保护。
7805还具有非常广的输入范围从5V~18V。
工作结的温度范围更是可以从0~125℃无论多恶劣的环境7805也能轻松胜任。
这么全面的一个芯片实在是堪称全能,而且价格非常便宜。
对于这么优秀的稳压电源芯片,我们还有什么理由不去选用它呢。
7805管脚及外形如图2.1所示。
图2.17805管脚
2.2供电模块的构成
整个电源供电模块由一片7805和4个电容构成。
这是一个输出正5V直流电压的稳压电源电路。
IC采用集成稳压器7805,C1、C2为输入端滤波电容,C3、C4为输出端滤波电容。
如图2.2所示,7805的1脚接正9V的输入,2脚接地,3脚为输出。
在1脚和2脚间接两个滤波电容。
3脚和2脚间也接两个滤波电容。
图2.2供电模块电路
第3章主控制模块的设计
3.189C52单片机的介绍
89C52是一种带8K字节闪烁可编程可擦除只读存储器(FPEROM—FalshProgrammableandErasableReadOnlyMemory)的低电压,高性能CMOS8位微处理器,俗称单片机。
89C2051是一种带2K字节闪烁可编程可擦除只读存储器的单片机。
单片机的可擦除只读存储器可以反复擦除100次。
该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。
由于将多功能8位CPU和闪烁存储器组合在单个芯片中,ATMEL的89C52是一种高效微控制器,89C2051是它的一种精简版本。
89C单片机为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。
3.289C52的主要特性和结构特点
89C52的主要特性有:
1.与MCS-51兼容;2.有8K字节可编程闪烁存储器;3.寿命长1000写/擦循环.数据保留时间可以达到10年;4.三级程序存储器锁定5.具有128*8位内部RAM;5.32可编程I/O线和两个16位定时器/计数器还有5个中断源;6.可编程串行通道,低功耗的闲置和掉电模式,片内振荡器和时钟电路。
图3.1AT89C52
3.389C52的IO口介绍
P0口:
P0口为一个8位漏级开路双向I/O口,每脚可吸收8TTL门电流。
当P1口的管脚第一次写1时,被定义为高阻输入。
P0能够用于外部程序数据存储器,它可以被定义为数据/地址的第八位。
在FIASH编程时,P0口作为原码输入口,当FIASH进行校验时,P0输出原码,此时P0外部必须被拉高。
P1口:
P1口是一个内部提供上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4TTL
门电流。
P1口管脚写入1后,被内部上拉为高,可用作输入,P1口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。
在FLASH编程和校验时,P1口作为第八位地址接收。
P2口:
P2口为一个内部上拉电阻的8位双向I/O口,P2口缓冲器可接收,输出4个TTL
门电流,当P2口被写“1”时,其管脚被内部上拉电阻拉高,且作为输入。
并因此作为输入时,P2口的管脚被外部拉低,将输出电流。
这是由于内部上拉的缘故。
P2口当用于外部程序存储器或16位地址外部数据存储器进行存取时,P2口输出地址的高八位。
在给出地址“1”时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,P2口输出其特殊功能寄存器的内容。
P2口在FLASH编程和校验时接收高八位地址信号和控制信号。
P3口:
P3口管脚是8个带内部上拉电阻的双向I/O口,可接收输出4个TTL门电流。
当P3口写入“1”后,它们被内部上拉为高电平,并用作输入。
作为输入,由于外部下拉为低电平,P3口将输出电流(ILL)这是由于上拉的缘故。
第4章键盘输入模块的设计
4.1键盘的电路及原理
本设计采用了4x4的行列式键盘。
行列式键盘的接法比独立式键盘的接法复杂,编程实现上也会比较复杂。
但是,在占用相同的I/O端口的情况下,行列式键盘的接法会比独立式接法允许的按键数量多。
图4.1中硬件采用中断方式工作,用一个8位I/O口构成4×4键盘。
具体做法如下将P1.3~P1.0设为列输入线,P1.7~P1.4设为行输出线,并使I/O
输出信号P1.7~P1.4为0000。
若有键按下,与门的输出端变为低电平,向CPU申请中断,表
示键盘中有键按下。
CPU执行中断程序对键盘进行扫描,判断键值。
CPU在中断程序中先将P1.3~P1.0的数值读入以此判断出列值。
然后再分别令P1.7~P1.4逐行输出低电平,并再次扫描P1.3~P1.0,以确定行值。
如此就完成了键盘的输入扫描。
图4.1键盘输入电路
第5章显示模块的设计
5.1数码管及二极管的电路及原理
为了让使用者能直观地知道系统的运行状态,显示设备是必不可少的。
这里采用了两个七段数码管和七个发光二极管对系统运行过程的状态及结果进行显示。
没有按键按下的时候,数码管将不显示。
而发光二极管将轮流点亮形成漂亮的跑马灯。
由于红色发光二极管的一般工作电流为20mA,压降1.7V。
而单片机的管脚最大输出电流一般只有10mA。
为了保护单片机使其温度及功耗不会过高,因此在二极管和单片机之间要接一个74HC573锁存器进行锁存,然后再驱动二极管。
发光二极管的反向击穿电压约5伏。
它的正向伏安特性曲线很陡,使用时必须串联限流电阻以控制通过管子的电流。
限流电阻R可用下式计算:
R=(E-UF)/IF
式中E为电源电压,UF为LED的正向压降,IF为LED的一般工作流。
5.2PWM简介
PWM(脉冲宽度调制)是按一个固定的频率来接通和断开电源,并且根据需要改变一个周期内“接通”和“断开”时间的长短。
通过改变直流电机电枢上电压的“占空比”来达到改变平均电压大小的目的,从而来控制电动机的转速。
也正因为如此,PWM又被称为“开关驱动装置”。
PWM控制电路:
图5.1PWM控制电路
图5.2PWM控制流程图
第6章直流电机控制模块的设计
6.1直流电机的介绍
定义输出或输入为直流电能的旋转电机,称为直流电机,它是能实现直流电能和机械能互相转换的电机。
直流电机是电机的主要类型之一。
直流电动机以其良好的启动性和调速性能著称,直流发电机供电质量较好,常常作为励磁电源。
与交流电机相比直流电机的结构较复杂,成本较高,可靠性较差,使它的应用受到限制。
近年来,与电力电子装置结合而具有直流电机性能的电机不断涌现,使直流电机有被取代的趋势。
尽管如此,直流电机仍有一定的理论意义和实用价值。
直流电机的结构由定子和转子两大部分组成。
直流电机运行时静止不动的部分称为定子,定子的主要作用是产生磁场,由机座、主磁极、换向极、端盖、轴承和电刷装置等组成。
运行时转动的部分称为转子,其主要作用是产生电磁转矩和感应电动势,是直流电机进行能量转换的枢纽,所以通常又称为电枢,由转轴、电枢铁心、电枢绕组、换向器和风扇等组成。
6.2数模转换器DAC0832
DAC0832是采用CMOS工艺制成的单片直流输出型8位数/模转换器。
一个8位D/A转换器有8个输入端(其中每个输入端是8位二进制数的一位),有一个模拟输出端。
输入可有28=256个不同的二进制组态,输出为256个电压之一,即输出电压不是整个电压范围内任意值,而只能是256个可能值。
D0~D7:
数字信号输入端。
ILE:
输入寄存器允许,高电平有效。
CS:
片选信号,低电平有效。
WR1:
写信号1,低电平有效。
XFER:
传送控制信号,低电平有效。
WR2:
写信号2,低电平有效。
IOUT1、IOUT2:
DAC电流输出端。
Rfb:
是集成在片内的外接运放的反馈电阻。
Vref:
基准电压(-10~10V)。
Vcc:
是源电压(+5~+15V)。
AGND:
模拟地NGND:
数字地,可与AGND接在一起使用。
第7章课程设计总结
通过本次课程设计,使我学到了许多书本上无法学到的知识,也使我深刻体会到单片机技术应用领域的广泛。
不仅让我对学过的单片机知识有了很多的巩固,同时也对单片机这一门课程产生了更大的兴趣。
在本次课程设计过程中,我学会了在网络上查找有关本设计的各硬件的资源,其中包括:
直流电机PWM调速、AT89C52单片机、L289引脚图及其引脚功能等,LED数码管显示,为本次课程设计提供了一定的资料。
在做课程设计的初期阶段,难度很大,没有头绪。
通过求助于杨老师、理清了思路。
同时,在图书馆里、网上查阅资料,攻克了课程设计中的道道难题。
无论是在硬件还是软件设计上,我都遇到了不少的问题,在克服困难的过程中,我学到了许多,特别是在课堂上学不到的东西如(PWM)。
致谢
非常感谢杨老师给我的指导,从最初的定题,到资料收集,到写作、修改,到课程的定稿,他给了我耐心的指导和无私的帮助。
为了指导我们的课程设计,他放弃了自己的休息时间,他的这种无私奉献的敬业精神令人钦佩,在此我向他表示我诚挚的谢意。
同时,也感谢身边的同学和朋友给我的支持和帮助
参考文献
[1]. 教材:
《单片机原理与应用及C51程序设计第3版》 谢维成、杨加国 主编
清华大学出版社
[2]. 参考书:
《通用单片机系统综合实训平台》
《金鹏字符液晶显示模块使用说明书》
附录
程序:
#include
#include<12864.c>
#defineucharunsignedchar
#defineuintunsignedint
#defineCIRCLE25//速度可调节的档位设置
ucharcount=1,last=10;
uchartemp,key;
uinttime,speed;
bitPWM,flag=0;
ucharkt=0;
sbitMoto1=P3^0;
sbitMoto2=P3^1;
voidmDelay(uintDelay)//延时
{
uinti;
for(;Delay>0;Delay--)
for(i=0;i<110;i++);
}
voidTimer0(void)interrupt1//定时器0溢出中断服务子程序,用于产生PWM波
{
count++;
if(count>CIRCLE)
{
count=1;
}
if(count<=last)
PWM=0;
else
PWM=1;
TH0=0xFC;
TL0=0x66;
}
voidINT_0(void)interrupt0//外部中断0中断服务子程序,用于记录测速器模块产生的脉冲数目
{
EX0=0;//禁止外部中断0中断
time++;
EX0=1;//允许外部中断0中断
}
voidTimer1(void)interrupt3//定时器1溢出中断服务子程序,用于获取速度值
{
TH1=0x4C;//重装定时初值
TL1=0x00;//50ms定时
time=time*300;//防止个位被去除
speed=(time/3)*20;//速度:
r/s
speed=speed/300;
time=0;
}
voidINT_Init()//系统初始化函数,初始化定时器T0、T1和外部中断0
{
TMOD=0x10;//选择T1工作于方式1
TH1=0x4C;
TL1=0x00;//50ms定时
ET1=1;//允许T1中断
TR1=1;//启动T1中断
ET0=1;//允许T0中断
TH0=0xFC;
TL0=0x66;
TR0=1;//启动T0中断
IT0=1;//下降沿触发
EX0=1;//允许外部中断0中断
EA=1;//开所有中断
LCD12864_Init();
LCD12864_Clear();
Display();
}
/**********************************************************/
//键扫描子程序
voidkeyscan(void)
{
P1=0xF0;//行线为输入,列线为输出,并置列线输出全为0
temp=P1;//读P1口
temp=temp&0xF0;
temp=~((temp>>4)|0xF0);
if(temp==1)
key=0;
elseif(temp==2)
key=1;
elseif(temp==4)
key=2;
elseif(temp==8)
key=3;
P1=0x0F;//列线为输入,行线为输出,并置行线输出全为0
temp=P1;//读P1口
temp=temp&0x0F;
temp=~(temp|0xF0);
if(temp==1)
key=key+0;
elseif(temp==2)
key=key+4;
elseif(temp==4)
key=key+8;
elseif(temp==8)
key=key+12;
while(temp)
{
P1=0x0F;
temp=P1;
temp=temp&0x0F;
temp=~(temp|0xF0);
}
}
/*************************************************************/
//判断键是否按下
voidkeydown(void)
{
P1=0xF0;
mDelay(5);
if(P1!
=0xF0)
{
keyscan();
switch(mm[key])
{
case0:
kt=1;
break;
case2:
last--;
if(last<1)
last=25;
break;
case4:
flag=0;
break;
case5:
kt=0;
break;
case6:
flag=1;
break;
case8:
last++;
if(last>=25)
last=1;
break;
default:
break;
}
}
}
voidmain(void)//主函数
{
INT_Init();
while
(1)
{
keydown();
display(key,speed);
if(kt)
{
if(flag)//正传
{
Moto1=PWM;
Moto2=0;
}
if(!
flag)//反传
{
Moto2=PWM;
Moto1=0;
}
}
else
{
Moto2=0;
Moto1=0;
}
}
}
子程序:
#defineucharunsignedchar
#defineuintunsignedint
sbitLCD_E=P2^4;//定义管脚
sbitLCD_RW=P2^3;
sbitLCD_RS=P2^2;
sbitLCD_CS2=P2^1;
sbitLCD_CS1=P2^0;
#defineData_PortP0
ucharcodemm[]={1,2,3,11,4,5,6,12,7,8,9,13,15,0,16,14};
ucharcodeDot[][32]=//数据表
{
//-0-直--
{0x00,0x04,0x04,0xE4,0xA4,0xA4,0xA4,0xBF,0xA4,0xA4,0xA4,0xF4,0x26,0x04,0x00,0x00,
0xC0,0xC0,0xC0,0xFF,0xCA,0xCA,0xCA,0xCA,0xCA,0xCA,0xCA,0xFF,0xC0,0xE0,0xC0,0x80},
//-1-流--
{0x10,0x22,0x64,0x0C,0x80,0x44,0x44,0x64,0x55,0x4E,0x44,0x54,0x66,0xC4,0x00,0x00,
0x84,0x84,0xFE,0x81,0x80,0x80,0xC0,0xBF,0x80,0xFF,0x80,0xBF,0xC0,0xC0,0xF0,0x80},
//-2-电--
{0x00,0xF8,0x48,0x48,0x48,0x48,0xFF,0x48,0x48,0x48,0x48,0xFC,0x08,0x00,0x00,0x00,
0x80,0x87,0x82,0x82,0x82,0x82,0xBF,0xC2,0xC2,0xC2,0xC2,0xC7,0xC0,0xF0,0x80,0x80},
//-3-机--
{0x10,0x1
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 单片机 直流电机 控制 实验