单片机的直流电机速控制Word文档格式.docx

上传人:b****5 文档编号:20658361 上传时间:2023-01-24 格式:DOCX 页数:15 大小:681.75KB
下载 相关 举报
单片机的直流电机速控制Word文档格式.docx_第1页
第1页 / 共15页
单片机的直流电机速控制Word文档格式.docx_第2页
第2页 / 共15页
单片机的直流电机速控制Word文档格式.docx_第3页
第3页 / 共15页
单片机的直流电机速控制Word文档格式.docx_第4页
第4页 / 共15页
单片机的直流电机速控制Word文档格式.docx_第5页
第5页 / 共15页
点击查看更多>>
下载资源
资源描述

单片机的直流电机速控制Word文档格式.docx

《单片机的直流电机速控制Word文档格式.docx》由会员分享,可在线阅读,更多相关《单片机的直流电机速控制Word文档格式.docx(15页珍藏版)》请在冰豆网上搜索。

单片机的直流电机速控制Word文档格式.docx

随着社会的发展,各种智能化的产品日益走入寻常百姓家。

为了实现产品的便携性、低成品以及对电源的限制,小型直流电机应用相当广泛。

对直流电机的速度调节,我们可以采用多种办法,本文在给出直流电机调整和PWM实现方法的基础上,提供一种用单片机软件实现PWM调速的方法。

对基于MCS-51系列单片机实现直流电机调速系统进行研究和设计,能够在不同的按钮作用下分别实现直流电机的停止、加速、减速、正转、反转控制;

能够实现基于MCS-51系列单片机的直流电机PWM的调速设计。

本文研究的是基于MCS-51系列单片机的直流电机PWM调速系统属于微机控制领域,通过对单片机的学习和研究对自己以后从事硬件产品的开发有一定的实际指导意义。

1.用单片机控制直流电机转速的基本理论

1.1直流电机调速原理

根据励磁方式不同,直流电机分为自励和他励两种类型。

不同励磁方式的直流电机机械特性曲线有所不同。

对于直流电机来说,人为机械特性方程式为:

式中Un,N——额定电枢电压、额定磁通量;

Ke,Kt与电机有关的常数;

Ed,%——电枢外加电阻、电枢内电阻;

n0,n――理想空载转速、转速降。

分析(1-1)式可得•当分别改变Un、'

N和Rad时,可以得到不同的转速n,从而实现对速度的调节。

由于=T,当改变励磁电流If时,可以改变磁通量的大小,从而达到变磁通调速的目的。

如图1-1所示。

理想空载转速n随电枢电压升降而发生相应的升降变化。

不同电枢电压的机械特性曲线相互平行,说明硬度不随电枢电压的变化而改变,电机带负载能力恒定。

当我们平滑调节他励直流电机电枢两端电压时,可实现电机的无级调速。

基于以上特性,改变电枢电压,实现对直流电机速度调节的方法被

1.2PWM基本原理及设计方案

1.2.1PWM基本原理

PWM是通过控制固定电压的直流电源开关频率,从而改变负载两端的电压,进而达到控制要求的一种电压调整方法。

PWM可以应用在许多方面,如电机调

速、温度控制、压力控制等。

在PWM驱动控制的调整系统中,按一个固定的频率来接通和断开电源,并根据需要改变一个周期内接通”和断开”时间的长短。

通过改变直流电机电枢上电压的占空比”来改变平均电压的大小,从而控制电动机的转速。

因此,PWM又被称为开关驱动装置”在脉冲作用下,当电机通电时,速度增加;

电机断电时,速度逐渐减少。

只要按一定规律,改变通、断电的时间,即可让电机转速得到控制。

设电机始终接通电源时,电机转速最大为Vmax,设占空比为D=ti/T,则电机的平均速度为:

Vd=Vmax*D(1-2)

式中,Vd――电机的平均速度;

Vmax电机全通电时的速度(最大);

D=ti/T占空比。

由公式(1-2)可见,当我们改变占空比时D=ti/T,就可以得到不同的电机平均速度,从而达到调速的目的。

严格地讲,平均速度Vd与占空比D=ti/T并

不是严格的线性关系,在一般的应用中,可以将其近似地看成线性关系。

1.2.2设计方案

本文主要介绍利用单片机对PWM信号的软件实现方法。

MCS—51系列典型产品AT89S52具有两个定时器To和T,。

通过控制定时器初值T。

和T,,从而可以实现从S52的任意输出口输出不同占空比的脉冲波形。

由于PWM信号软件实现的核心是单片机内部的定时器,而不同单片机的定时器具有不同的特点,即使是同一台单片机由于选用的晶振不同,选择的定时器工作方式不同,其定时器的定时初值与定时时间的关系也不同。

因此,首先必须明确定时器的定时初值与定时时间的关系。

如果单片机的时钟频率为f,定时器/计数器为N位,则定时器初值

与定时时间的关系为:

nN

'

(2飞(1-3)

式中,T定时器定时初值;

N――一个机器周期的时钟数。

N随着机型的不同而不同。

在应用中,应根据具体的机型给出相应的值。

这样,我们可以通过设定不同的定时初值,

从而改变占空比D=t1/T,进而达到控制电机转速的目的。

2•硬件电路的设计

本设计以AT89S52单片机为核心,以5个弹跳按钮作为输入达到控制直流电机的停止、加速、减速、正转、反转,以四位共阳数码管显示电机速度大小。

在设计中,采用PWM技术对电机进行控制,通过对占空比的计算达到精确调速的

目的。

2.1系统分析与硬件设计模块

键盘向单片机输入相应控制指令,由单片机通过P3.0与P3.1其中一口输出与转速相应的PWM脉冲,另一口输出低电平,经过信号放大、驱动电动机控制电路,实现电动机转向与转速的控制,电动机正转,反转,加速,减速、急停。

总体设计方案的硬件部分详细框图如图2-1所示:

图2-1系统硬件框图

系统整体硬件电路图如图2-2示:

7SEG-MPMCA豳共阳頓码曾

 

图2-2系统硬件电路图

2.2设计该系统所需部分器件

AT89S52单片机、直流电机、L298N、12MHZ晶振、四位共阳数码管、电容、电阻、弹跳开关等。

2.3直流电机的功能简介

直流电动机具有优良的调速特性,调速平滑、方便,调速范围广;

过载能力大,能承受频繁的冲击负载,可实现频繁的无级快速起动、停止和反转;

能满足生产过程自动化系统各种不同的特殊运行要求。

电动机调速系统采用微机实现自

动控制,是电气传动发展的主要方向之一。

采用微机控制后,整个调速系统实现自动化,结构简单,可靠性高,操作维护方便,电动机稳态运转时转速精度可达到较高水平,静动态各项指标均能较好地满足工业生产中高性能电气传动的要求。

由于单片机性能优越,具有较佳的性能价格比,所以单片机在工业过程及设备控制中得到日益广泛的应用。

2.4直流电机调速控制系统模块

采用单片机构成的直流电动机数字PWM调速系统,其控制核心主要由单片机的最小系统、电源模块(12v5v)、电机驱动电路、按键(加速、减速、急停、正转、反转)、显示模块(四位数码管)、直流电机组成。

系统采用L298N芯片作为PWM驱动直流电动机的供电主回路。

单片机通过软件处理输出PWM信号,实现了直流电动机的速度控制,在运行中获得了良好的动静态性能。

由于系统性价比高,结构简单,具有实用价值和推广价值。

在介绍了基于单片机用PWM实现直流电机调整的基本方法,直流电机调速的相关知识,及PWM调整的基本原理和实现方法。

重点介绍了基于AT89S52单片机的用软件产生PWM信号的途径,并介绍了一种独特的通过软件定时中断实现PWM信号占空比调节的方法。

对于直流电机速度控制系统的实现提供了一种有效的途径。

(1)键盘识别:

通过P1口的低电平输入识别不同的按键。

(2)通过对单片机程序烧录实现对直流电机的停止、加速、减速、正转、反转控制。

(3)数码管显示:

通过P0口、P2口控制数码管来显示直流电机的速度。

(4)由于单片机的驱动能力不强,驱动直流电机需要很强的电流所以必须有外围的驱动电路,因此本设计采用L298芯片放大单片机微弱的电流。

控制原理:

89S52单片机为核心的直流电机控制系统控制简图如图2-1所示,由软件转换成PWM信号,并由P3.0、P3.1输出,经驱动电路输出给电机,从而控制电机得电与失电。

软件采用定时中断进行设计。

单片机上电后,系统进入准备状态。

当按动启动按钮后,根据P3.0为高电平实现电机正转,P3.伪高电平时实现电机反转。

根据不同的加减速按钮,调整P3.0/P3.1输出高低电平时的预定

值,从而可以控制P3.0/P3.1输出高低电平时的占空比,进而控制电压的大小。

2.5显示设计模块

7段LED数码管是利用7个LED外加一个小数点的LED组合而成的显示设备,可以显示0~9等10个数字和小数点,使用非常广泛。

本次课设使用的是四位共阳数码管,内部的4个数码管共用a-dp这8根数据线,为人们的使用提供了方便,因为里面有4个数码管,所以它有4个公共端,即片选信号线,共有12个引脚。

具体原理图如图示:

kiciErcviTirciErTtvfriTciErcvA.iTtiErcr

00006606

117421IQ5J

四位数码管内SP驗理图

图2-3四位共阳数码管内部原理图

图2-4四位共阳数码管外观图

用Proteus仿真该控制系统时,四位共阳数码管显示电机反转图形如下所示:

本次设计显示模块采用的是SM410564四位共阳数码管显示,因为单片机的输出端口输出的电流小,点亮数码管的能力不大,所以需要采用三极管放大输出电流,此次三极管采用的是C9013具体放大电路如图示:

图2-6放大电路

3.系统软件的设计

利用P3口,编制程序输出一串脉冲,经放大后驱动直流电机,改变输出脉冲的电平的持续时间,达到使电机正转、反转、加速、减速、停转等目的。

由软件编程从P3.0/P3.1管脚产生PWM信号,经驱动电路输出给电机,从而控制电机得电与失电。

软件采用延时法进行设计。

单片机上电后,系统进入准备状态。

当按动启动按钮后,根据P3.0为高电平时实现电机正转,P3.1为高电平时实现电机反转。

根据不同的加减速按钮,调整P3.0/P3.1输出高低电平时的占空比,从而

可以控制P3.0/P3.1输出高低电平时的有效值,进而控制电机的加减速。

其总体流程图如图3-1示:

图3-1总体程序流程图

4.系统调试和结果分析

4.1仿真图形

初始状态,直流电机有如图示4-1运行效果

按下急停键,直流电机有图4-2的停止运行结果

图4-2电机停转

按下加速键,直流电机有图4-3的正向加速运行结果

按下减速键,直流电机有图4-4正向减速运行结果

图4-4电机正转减速

按下反转键,直流电机有图4-5反向加速运行结果

图4-5电机反转加速

5纟吉论和总结

经过将近两周的努力,最终完成了该课程设计。

在Protuse和Keilc中仿真

了出来,基本上实现了直流电机的停止、加速、减速和转向控制以及数码管显示。

通过这次课程设计,我的学习能力和解决问题的信心都得到了提高。

在课程

设计的过程中,我遇到了很多困难,但在查阅了很多有关书籍、还有向老师和同学请教后终于得到了解决。

通过这次课程设计,我不仅对理论有了更深一步的认识,还培养了自学能力和解决问题的能力,更重要的是,培养了克服困难的勇气和信心。

我们的课程设计之所以能基本完成,要深深地感谢我的指导老师的悉心指导和帮助。

参考文献

[1]郭天祥.51单片机C语言教程-入门、提高、开发、拓展全攻略北京:

电子工业出版社,2008

[2]陈忠平.基于Proteus的AVR单片机C语言程序设计与仿真北京:

电子工业出版社,2011

[3]刘复华.单片机及其应用系统.北京:

清华大学出版社,1992

[4]马淑华.单片机原理与接口技术.北京:

北京邮电大学出版社,2005

附程序清单

#include<

reg51.h>

#defineuncharunsignedchar

#defineunintunsignedint

unsignedcharcodedispcode[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x84,0xff,0xbf};

unsignedchardispbitcode[]={0xfe,0xfd,0xfb,0xf7};

unsignedchardispbuf[4]={0,0,0,0};

unsignedchardispbitcnt;

unintmstcnt;

uninti;

unintcount=0;

unchartp=0;

voidledshow();

voidkeyscan();

voiddelay();

voidjust();

voidturn();

voidmotorstop();

voidspeedup();

voidspeeddown();

voidmain(void)

{

P3_0=1;

P3_1=0;

dispbuf[0]=16;

TMOD=0x02

TH0=0x06;

TL0=0x06;

TR0=1;

ET0=1;

EA=1;

while

(1)

ledshow();

keyscan();

}

voiddelay()

unsignedchari,j;

for(i=20;

i>

0;

i--)

for(j=248;

j>

j--);

voidkeyscan()

unchartemp=0;

P1=0xff;

if((P1&

0x1f)!

=0x1f)

delay();

{temp=P1&

0x1f;

switch(temp)

case0x1e:

just();

break;

case0x1d:

turn();

case0x1b:

motorstop();

case0x17:

speedup();

case0x0f:

speeddown();

while((P1&

=0x1f);

voidledshow()

/*

P0=dispcode[dispbuf[dispbitcnt]];

P2=dispbitcode[dispbitcnt];

dispbitcnt++;

if(dispbitcnt==4)

dispbitcnt=0;

*/

P2=0x01;

P0=dispcode[dispbuf[0]];

for(i=0;

i<

700;

i++);

P2=0x02;

P0=dispcode[dispbuf[1]];

P2=0x04;

P0=dispcode[dispbuf[2]];

P2=0x08;

P0=dispcode[dispbuf[3]];

dispbuf[1]=tp/100;

dispbuf[2]=(tp%100)/10;

dispbuf[3]=tp%10;

voidt0(void)interrupt1using0

mstcnt++;

if(mstcnt==8)

mstcnt=0;

P2=dispbitcode[dispbitcnt];

if(count>

100)count=0;

tp)

P3_7=0;

elseP3_7=1;

count++;

voidjust()

voidturn()

P3_0=0;

P3_1=1;

dispbuf[0]=17;

}voidmotorstop(){tp=0;

voidspeedup()

if(tp>

99)

tp=100;

elsetp++;

voidspeeddown()

if(tp<

1)

tp=0;

elsetp--;

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 工作范文 > 其它

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1