《电力拖动自动控制系统设计.doc》由会员分享,可在线阅读,更多相关《电力拖动自动控制系统设计.doc(24页珍藏版)》请在三一办公上搜索。
1、摘要近年来,随着科技的进步,直流电机得到了越来越广泛的的应用,直流具有优良的调速特性,调速平滑,方便,调速范围广,过载能力强,能承受频繁的冲击负载,可实现频繁的无极快速启动,制动,和反转,为了满足生产过程自动化系统各种不同的特殊要求,对直流电机调速提出了较高的要求,改变电枢回路电阻调速,改变电压调速等技术已远远不能满足实际应用的要求,通过PWM方式控制直流电机调速的方法就应运而生。本次课程设计主要研究了利用STC 89C52单片机控制PWM信号从而实现对电压改变最后控制直流电机进行调速,并且通过单元模块电路分析了整个系统的工作原理。以C语言进行软件编程,通过软件编程对PWM信号占空比进行调节,
2、单片机根据程序进行操作,进一步控制H桥电路的输入信号,而测速系统把电机转速反馈给单片机通过按键控制其转速,LCD把转速显示出来,从而实现电动机的调速、变向等功能,这种设计方法的电路简单,具有操作简单,非常实用前景和价值。关键词:直流电机;STC89C52;PWM调速;L298;LCD1602目 录1.直流电机调速系统总体设计1 1.1 系统总体框图设计1 1.2 PWM调速原理1 1.3 PWM调速方法32.硬件设计3 2.1硬件列表3 2.2 单片机系统的设计4 2.2.1 STC89C52的简介4 2.3 电机驱动模块5 2.3.1H型全桥式驱动电路和L298N简绍5 2.4 液晶显示模块
3、7 2.5 独立键盘控制模块83.系统软件程序设计9 3.1 软件流程图9 3.2 定时器中断程序流程图10 3.3 独立键盘控制流程图114. 系统功能设计和实现125.系统仿真调试136.课程设计的心得体会14参考文献15附录1C语言程序设计161.直流电机调速系统总体设计 1.1 系统总体设计框图设计方案说明:直流电机PWM调速系统以STC89C52单片机为控制核心,由命令输入模块、测速模块、LCD显示模块及电机驱动模块组成。采用带中断的独立键盘作为命令的输入,单片机在程序控制下,定时不断给L298直流电机驱动芯片发送PWM波形,测速系统把反馈数据给单片机,完成电机正、反转和急停控制;同
4、时单片机不停的将测得的转速送到LCD完成显示。直流电机调速系统总体框图见图1-1图1-1 系统总体框图1.2 PWM调速原理所谓脉冲宽度调制是指用改变电机电枢电压接通与断开的时间的占空比来控制电机转速的方法,称为脉冲宽度调制(PWM)。对于直流电机调速系统,使用FPGA进行调速是极为方便的。其方法是通过改变电机电枢电压导通时间与通电时间的比值,即占空比,来控制电机速度。PWM调速原理如图1-2所示:Tt1t2图1-2 PWM调速原理在脉冲作用下,当电机通电时,速度增加,电机断电时,速度逐渐减少。只要按一定规律,改变通、断电时间,即可让电机转速得到控制。设电机永远接通电源时,其转速最大为 ,设占
5、空比为 ,则电机的平均速度为 (1-1) 式中: 电机的平均速度电机全通时间的速度(最大)占空平均速度与占空比的函数曲线,如图1-3(a)所示:占空比(D)电压(V)0Tt1t2通电断电时间(t)平均速度(Vd)Vmax100.5(a)(b)图1-3 平均速度与占空比的关系 由图1-3(b)所示可以看出,与占空比并不是完全线性关系(图中实线),当系统4允许时,可以将其近似的看成线性关系(途中虚线)。因此也就可以看成电机电枢电压与占空比成正比,改变占空比的大小即可控制电机的速度。由以上叙述可知:电机的转速电枢电压成比例,而电机电枢电压与控制波形的占空比成正比,因此电机的速度与占空比成比例,占空比
6、越大,电机转得越快,当占空比时,电机转速最大。占空比D表示了在一个周期T里开关管导通的时间与周期的比值。D的变化范围为0D1。当电源电压U不变的情况下,输出电压的平均值U取决于占空比D的大小,改变D值也就改变了输出电压的平均值,从而达到控制电动机转速的目的,即实现PWM调速。在PWM调速时,占空比D是一个重要参数。改变占空比的方法有定宽调频法、调宽调频法和定频调宽法等。常用的定频调宽法,同时改变t1和t2,但周期T(或频率)保持不变。1.3 PWM调速方法采用定时器做为脉宽调制的定时方法。如果采用软件延时方法,在精度上不及定时器,特别是在引入中断后,将有一定的误差。图1-4 PWM脉宽调制流程
7、图1-4 PWM脉冲调制的控制流程图2.硬件设计 2.1 硬件列表表2-1 硬件列表元件数量STC89C52控制模块1L298电机驱动模块1LCD1602液晶显示模块1独立键盘控制模块4测速系统模块1杜邦线若干 2.2 单片机系统的设计图2.1直流电机调速系统2.2.1 STC89C52的简介在常用的89系列的单片机中,51系列只有4K字节的系统可编程Flash存储器,128字节RAM。STC89C52是一种低功耗,高性能CMOS8位控制器,具有8K在系统可编程Flash存储器。使用Atmel公司高密度非易失性存储器制造,与工业80C51产品指令和引脚完全兼容。片上Flash允许程序存储器在系
8、统可编程,亦适于常规编程器。在单芯片上,拥有灵巧的8位CPU和在系统可编程Flash,它是一种低功耗,高性能CMOS 8位微控制器,操作方便,引脚也充足,而且STC89C52,支持ISP串口下载,使得STC89C52在众多嵌入式控制应用系统中得到广泛应用。图2-2 STC89C52管脚图 图2-2单片机引脚图STC89C52主要功能特性如下:1. 兼容MCS51指令系统;2. 8K可反复擦写(大于1000次)Flash ROM;3. 32个双向I/O口;4. 256x8bit内部RAM;5. 3个16位可编程定时器、计数器中断;6. 时钟频率0-24MHz7. 2个串行中断,可编程UART串行
9、通道;8. 2个外部中断源,共8个中断源;9. 低功耗空闲和掉电模式;2.3单机驱动模块 2.3.1H型全桥式驱动电路和L298N简绍直流电机驱动电路使用最广泛的就是H型全桥式驱动电路,这种驱动电路可以很方便实现直流电机的四象限运行,分别对应正转、正转制动、反转、反转制动。它的基本原理图如图所示。MNET1NET0NET0NET1V3V1V4V2VCC图2-3 H型桥式驱动电路 H型全桥式驱动电路的4只三极管都工作在斩波状态,V1、V4为一组,V2、V3为另一组,两组的状态互补,一组导通则另一组必须关断。当V1、V4导通时,V2、V3关断,电机两端加正向电压,可以实现电机的正转或反转制动;当V
10、2、V3导通时,V1、V4关断,电机两端为反向电压,电机反转或正转制动。在直流电机运转的过程中,我们要不断地使电机在四个象限之间切换,即在正转和反转之间切换,也就是在V1、V4导通且V2、V3关断,到V1、V4关断且V2、V3导通,这两种状态之间转换。在这种情况下,理论上要求两组控制信号完全互补,但是,由于实际的开关器件都存在开通和关断时间,绝对的互补控制逻辑必然导致上下桥臂直通短路,比如在上桥臂关断的过程中,下桥臂导通了。为了避免直通短路且保证各个开关管动作之间的同步性,两组控制信号在理论上要求互为倒相的逻辑关系,而实际上却必须相差一个足够的死区时间,这个矫正过程既可以通过硬件实现,即在上下
11、桥臂的两组控制信号之间增加延时。L298的逻辑功能当使能端为高电平时,输入端IN1为PWM信号,IN2为低电平信号,电机正转;输入端IN1为低电平信号,IN2为PWM信号时,电机反转;IN1与IN2相同时,电机快速停止。当使能端为低电平时,电动机停止转动。详细逻辑表如下:表2-2 L298的逻辑功能IN1IN2ENA电机状态XX0停止101正转011反转000停止110停止2.4液晶显示模块 显示模块采用的是LCD1602(1) LCD1602液晶的结构图如下。图2-4LCD1602液晶的结构图 LCD1602主要技术参数:显示容量:16X2个字符芯片 工作电压:4.5-5.5V 工作电流:2
12、.0mA(5.0V) 模块最佳工作电压:5.0V 1602液晶模块内部的字符发生存储器(CGROM)已经存储了160个不同的点阵字符图形,这些字符有:阿拉伯数字,英文字母的大小写,常用的符号等。 (2)LCD1602液晶主要接口 第1脚:VSS为地电源 第2脚:VDD接5V正电源 第3脚:VL为液晶显示器对比度调整端,接正电源时对比度最弱,接地时对比度最高,对比度过高会残生“鬼影”,使用时可以通过一个10K的电位器调整对比度。 第4脚:RS为寄存器悬着,高电平时玄正数据寄存器,低电平时选择指令寄存器。 第5脚:R/W为读写信号线,高电平时进行读操作,低电平时进行写操作。当RS和R/W共同为低电
13、平时可以写入指令或者显示地址,当RS为低电平R/W为高电平时可以读忙信号,当RS为高电平R/W为低电平时可以写入数据。 第6脚:E端为使能端,当E端由高电平跳变成低电平时,液晶模块执行命令。 第7-14脚:D0-D7为8位双向数据线。 第15脚:背光源正极。 第16脚:背光源负极。 (3)单片机与LCD的连接(E,RW,RS)控制引脚接P3口,8个数据信号接P1口。VSS接单片机地,VCC接单片机的电源VCC。单片机与LCD连接图如下: 图2-5单片机与LCD连接图2.5独立式键盘控制模块 独立式键盘的按键相互独立,每个按键接一根I/O口线,一根I/O口线上的按键工作状态不会影响其他I/O口线
14、的工作状态。因此,通过检测I/O口线的电平状态,即可判断键盘上哪个键被按下,独立式键盘如下图: 图2-6独立式键盘3.系统软件程序设计 3.1主程序流程图:主程序描述:首先运行主程序函数main;进行LCD1602液晶显示屏初始化,并显示静态部分;定时器的初始化,设置定时器工作方式1,开启T1中断,定时50ms;然后进行按键扫描,有正、反转、急停按键,加速,减速按键,如果按键按下则相应调节PWM波的占空比,调节转速并在LCD1602液晶显示屏上输出显示。开始是否加速LCD1602液晶初始化定时器初始化按键扫描是否加速加速处理减速处理是是否否显示转速LCD1602静态显示图3-1主程序流程图3.
15、2定时器中断程序流程图定时器1设置为工作方式1,定时初值为50ms,每50ms产生一次中断,程序处理PWM的延时占空比及转速显示。启动定时器工作方式开启中断 时间设置50ms计数到达20次进入中断重置时间50ms结束输出转速是否图3-2定时器中断程序流程图3.3独立键盘控制流程图按键输入模块共有3个按键,K1的功能是正转、反转、急停一键多功能,K2是控制PWM波的占空比,使电机转速上升,K3使电机转速下降。扫描按键KEY1是否按下KEY2是否按下KEY3是否按下急停反转正转电机加速电机减速是否否是是否图3-3独立键盘控制流程图4.系统功能设计和实现(1)按键设置因学习板只有4个按键,为了实现直
16、流电机的多功能设置,所以将K1按键设置为正转,反转,停止按键,通过判断K1按下的次数来实现电机的状态改变。(2)状态显示及测速因考虑到LCD1602显示容量较小,所以将显示状态设置为1个字符,即正转对应C,反转对应R,停止对应S。而测速时,则是利用T2计数器计数1S内接收到的带测速码盘的直流电机发出的脉冲。(3)测量马达的反电动势系数直流力矩电动机无论空载或负载运行时,它的电枢电压平衡方程式为:V=E(反)+IR式中V-外施电枢电压I—电枢电流R—电枢电阻E(反)—反电势可见,当直流力矩电动机运转时,无论它空载或负载,只要知道它的电枢电阻、电枢电压、电枢电流
17、、转速,就可计算出它的反电势系数,其计算公式为:Ke=(U-IR)/n式中Ke-反电势系数IR-电枢电阻压降n-转速根据测量得到数据记录如表4-1所示: 表4-1电机反电动势系数数据记录表空载电压U/V电枢电压U/V电枢电流I/mA电枢电阻R电机转速r/min反电动势系数Ke51.6429114900.0026851.7929.5115280.002695 52.2630117200.002605根据上述数据可得,电机反电动势系数:Ke=(0.00268+0.002695+0.002605)/3=0.00266测量电机的力矩系数根据下列公式:可知KT=9.55*Ke=9.55*0.00266=
18、0.0254035.系统仿真调试系统采用protus仿真,电机的驱动和速度的采集由单片机完成,并将单片机的硬件电路在Proteus中仿真实现,再通过虚拟串口实现单片机与上位机的通信。P0口与LCD1602液晶相连,用于显示转速。6. 心得体会:本学期的课程设计是一单片机控制电动机启停正反转,学生组队完成(包括设计总体方案、硬件电路、软件设计、调试、测量参数等)。我认为,在这学期的实验中,在收获知识的同时,还收获了成熟,在此过程中,我们通过查找大量资料,请教老师,以及不懈的努力,不仅培养了独立思考,动手操作的能力,在各种其他能力上也都有了提高。更重要的是,我们学会了很多学习的方法。而这是日后最实
19、用的。要面对社会的挑战,只有不断的学习、实践,再学习、再实践。与队友的合作是一件快乐的事情,只有彼此都付出,彼此都努力才能将作品做的更完美。而团队合作也是当今社会提倡的。以后不管有多苦,我们都能变苦为乐,找寻有趣的事情,发现其中珍贵的事情。就像我们在课程设计之后变的更加成熟,会面对需要面对。参考文献:1 电力拖动自动控制系统:运动控制系统/阮毅,陈伯时主编.4版.北京:机械工业出版社,2009.8(2011.1重印)2卢春华,姚海燕,张莉:基于单片机的直流电机调速系统设计J.硅谷.2009(20):98-1203单片微机原理及应用/丁元杰主编第3版.北京:机械工业出版社,2005.7(2010
20、.1重印)附录1:#include #define uchar unsigned char#define uint unsigned intsbit led=P26;sbit lcden=P22; sbit lcdrs=P20;sbit lcdrw=P21;sbit ENA=P13; sbit IN1=P11; sbit IN2=P12; sbit key1=P32; /正转,反转,急停(一键多功能)sbit key2=P33; /加速按键sbit key3=P34; /减速按键bit flag;uchar code table=0123456789;uchar code table1=Spe
21、ed:;uchar code table2=Star:;uchar code table3=r/min;uint num,count,times=0,cycle=10,c=0;float rpm,v;/*延时函数(1ms)*/void delay (uint z)uint x,y;for(x=z;x0;x-)for(y=110;y0;y-);/*LCD写命令函数*/void write_com(uchar com)lcdrs=0;lcdrw=0;P0=com;delay(5);lcden=1;delay(5);lcden=0;/*LCD写数据函数*/void write_data(uchar
22、date)lcdrs=1;lcdrw=0;P0=date;delay(1);lcden=1;delay(1);lcden=0;/*LCD初始化函数*/void init1602()lcden=0;led=1;write_com(0x38);write_com(0x0c);write_com(0x06);write_com(0x01);/*LCD静态显示函数*/void display1()write_com(0x80);for(num=0;num6;num+)write_data(table1num);write_com(0x80+0x0a);for(num=0;num5;num+)write
23、_data(table3num);write_com(0x80+0x40);for(num=0;num2)c=0;/*加速(改变PWM波的占空比)*/void add() if(key2=0)delay(10);if(key2=0)while(!key2);cycle+=2;if(cycle=48)cycle=50;/*减速(改变PWM波的占空比)*/void dec() if(key3=0)delay(10);if(key3=0)while(!key3);cycle-=2;if(cycle=2) /防止减到0 cycle=2;/*主函数*/void main() init1602(); di
24、splay1();time_init();ENA=0;while(1)keyscan();if(c=0)IN1=0;IN2=0;write_com(0x80+0x45);write_data(0);if(c=1)IN1=0;IN2=1;write_com(0x80+0x45);write_data(+);if(c=2)IN1=1;IN2=0;write_com(0x80+0x45);write_data(-);add();dec(); display(zhuansu);/*定时器0的中断函数*/void timer0() interrupt 1 using 1times+;if(times=50) times=0;/*定时器1的中断函数*/void timer1() interrupt 3 using 1count+;if(count=20)flag=1;count=0;zhuansu=(TH2*256+TL2)*0.17964;TL2=0;TH2=0;TH1=(65536-46083)/256; /重装TL1=(65536-46083)%256; /重装