还剩23页未读,继续阅读
本资源只提供10页预览,全部文档请下载后查看!喜欢就下载吧,查找使用更方便
文本内容:
摘要近年来,随着科技的进步,直流电机得到了越来越广泛的的应用,直流具有优良的调速特性,调速平滑,方便,调速范围广,过载能力强,能承受频繁的冲击负载,可实现频繁的无极快速启动,制动,和反转,为了满足生产过程自动化系统各种不同的特殊要求,对直流电机调速提出了较高的要求,改变电枢回路电阻调速,改变电压调速等技术已远远不能满足实际应用的要求,通过PWM方式控制直流电机调速的方法就应运而生本次课程设计主要研究了利用STC__C52单片机控制PWM__从而实现对电压改变最后控制直流电机进行调速,并且通过单元模块电路分析了整个系统的工作原理以C语言进行软件编程,通过软件编程对PWM__占空比进行调节,单片机根据程序进行操作,进一步控制H桥电路的输入__,而测速系统把电机转速反馈给单片机通过按键控制其转速,LCD把转速显示出来,从而实现电动机的调速、变向等功能,这种设计方法的电路简单,具有操作简单,非常实用前景和价值关键词直流电机;STC__C52;PWM调速;L298;LCD1602目录
1.直流电机调速系统总体设计……………………………………………
11.1系统总体框图设计………………………………………………………
11.2PWM调速原理……………………………………………………………
11.3PWM调速方法……………………………………………………………
32.硬件设计……………………………………………………………………
32.1硬件列表…………………………………………………………………
32.2单片机系统的设计………………………………………………………4…………………………………………………………
42.3电机驱动模块……………………………………………………………5H型全桥式驱动电路和L298N简绍…………………………………
52.4液晶显示模块……………………………………………………………
72.5__键盘控制模块………………………………………………………
83.系统软件程序设计………………………………………………………
93.1软件流程图………………………………………………………………
93.2定时器中断程序流程图…………………………………………………
103.3__键盘控制流程图……………………………………………………
114.系统功能设计和实现……………………………………………………
125.系统仿真调试……………………………………………………………
136.课程设计的心得体会…………………………………………………14____……………………………………………………………………15附录1C语言程序设计………………………………………………………………
161.直流电机调速系统总体设计
1.1系统总体设计框图设计方案说明直流电机PWM调速系统以STC__C52单片机为控制核心,由命令输入模块、测速模块、LCD显示模块及电机驱动模块组成采用带中断的__键盘作为命令的输入,单片机在程序控制下,定时不断给L298直流电机驱动芯片发送PWM波形,测速系统把反馈数据给单片机,完成电机正、反转和急停控制;同时单片机不停的将测得的转速送到LCD完成显示直流电机调速系统总体框图见图1-1图1-1系统总体框图
1.2PWM调速原理所谓脉冲宽度调制是指用改变电机电枢电压接通与断开的时间的占空比来控制电机转速的方法,称为脉冲宽度调制PWM对于直流电机调速系统,使用FPGA进行调速是极为方便的其方法是通过改变电机电枢电压导通时间与通电时间的比值,即占空比,来控制电机速度PWM调速原理如图1-2所示图1-2PWM调速原理在脉冲作用下,当电机通电时,速度增加,电机断电时,速度逐渐减少只要按一定规律,改变通、断电时间,即可让电机转速得到控制设电机永远接通电源时,其转速最大为,设占空比为,则电机的平均速度为(1-1)式中—电机的平均速度—电机全通时间的速度(最大)—占空平均速度与占空比的函数曲线,如图1-3a所示图1-3平均速度与占空比的关系由图1-3b所示可以看出,与占空比并不是完全线性关系(图中实线),当系统4允许时,可以将其近似的看成线性关系(途中虚线)因此也就可以看成电机电枢电压与占空比成正比,改变占空比的大小即可控制电机的速度由以上叙述可知电机的转速电枢电压成比例,而电机电枢电压与控制波形的占空比成正比,因此电机的速度与占空比成比例,占空比越大,电机转得越快,当占空比时,电机转速最大占空比D表示了在一个周期T里开关管导通的时间与周期的比值D的变化范围为0≤D≤1当电源电压U不变的情况下,输出电压的平均值U取决于占空比D的大小,改变D值也就改变了输出电压的平均值,从而达到控制电动机转速的目的,即实现PWM调速在PWM调速时,占空比D是一个重要参数改变占空比的方法有定宽调频法、调宽调频法和定频调宽法等常用的定频调宽法,同时改变t1和t2,但周期T(或频率)保持不变
1.3PWM调速方法采用定时器做为脉宽调制的定时方法如果采用软件延时方法,在精度上不及定时器,特别是在引入中断后,将有一定的误差图1-4PWM脉宽调制流程图1-4PWM脉冲调制的控制流程图
2.硬件设计
2.1硬件列表表2-1硬件列表元件数量STC__C52控制模块1L298电机驱动模块1LCD1602液晶显示模块1__键盘控制模块4测速系统模块1杜邦线若干
2.2单片机系统的设计图
2.1直流电机调速系统在常用的__系列的单片机中,51系列只有4K字节的系统可编程Flash存储器,128字节RAMSTC__C52是一种低功耗,高性能CMOS8位控制器,具有8K在系统可编程Flash存储器使用Atmel公司高密度非易失性存储器制造,与工业80C51产品指令和引脚完全兼容片上Flash允许程序存储器在系统可编程,亦适于常规编程器在单芯片上,拥有灵巧的8位CPU和在系统可编程Flash,它是一种低功耗,高性能CMOS8位微控制器,操作方便,引脚也充足,而且STC__C52,支持ISP串口下载,使得STC__C52在众多嵌入式控制应用系统中得到广泛应用图2-2STC__C52管脚图图2-2单片机引脚图STC__C52主要功能特性如下
1.兼容MCS51指令系统;
2.8K可反复擦写(大于1000次)FlashROM;
3.32个双向I/O口;
4.256x8bit内部RAM;
5.3个16位可编程定时器、计数器中断;
6.时钟频率0-24MHz
7.2个串行中断,可编程UART串行通道;
8.2个外部中断源,共8个中断源;
9.低功耗空闲和掉电模式;
2.3单机驱动模块H型全桥式驱动电路和L298N简绍直流电机驱动电路使用最广泛的就是H型全桥式驱动电路,这种驱动电路可以很方便实现直流电机的四象限运行,分别对应正转、正转制动、反转、反转制动它的基本原理图如图所示图2-3H型桥式驱动电路H型全桥式驱动电路的4只三极管都工作在斩波状态,V
1、V4为一组,V
2、V3为另一组,两组的状态互补,一组导通则另一组必须关断当V
1、V4导通时,V
2、V3关断,电机两端加正向电压,可以实现电机的正转或反转制动;当V
2、V3导通时,V
1、V4关断,电机两端为反向电压,电机反转或正转制动在直流电机运转的过程中,我们要不断地使电机在四个象限之间切换,即在正转和反转之间切换,也就是在V
1、V4导通且V
2、V3关断,到V
1、V4关断且V
2、V3导通,这两种状态之间转换在这种情况下,理论上要求两组控制__完全互补,但是,由于实际的开关器件都存在开通和关断时间,绝对的互补控制逻辑必然导致上下桥臂直通短路,比如在上桥臂关断的过程中,下桥臂导通了为了避免直通短路且保证各个开关管动作之间的同步性,两组控制__在理论上要求互为倒相的逻辑关系,而实际上却必须相差一个足够的死区时间,这个矫正过程既可以通过硬件实现,即在上下桥臂的两组控制__之间增加延时L298的逻辑功能当使能端为高电平时,输入端IN1为PWM__,IN2为低电平__,电机正转;输入端IN1为低电平__,IN2为PWM__时,电机反转;IN1与IN2相同时,电机快速停止当使能端为低电平时,电动机停止转动详细逻辑表如下表2-2L298的逻辑功能IN1IN2ENA电机状态XX0停止101正转011反转000停止110停止
2.4液晶显示模块显示模块采用的是LCD16021LCD1602液晶的结构图如下图2-4LCD1602液晶的结构图LCD1602主要技术参数显示容量16X2个字符芯片工作电压
4.5-
5.5V工作电流
2.0__(
5.0V)模块最佳工作电压
5.0V1602液晶模块内部的字符发生存储器(CGROM)已经存储了160个不同的点阵字符图形,这些字符有___数字,英文字母的大小写,常用的符号等
(2)LCD1602液晶主要接口第1脚VSS为地电源第2脚VDD接5V正电源第3脚VL为液晶显示器对比度调整端,接正电源时对比度最弱,接地时对比度最高,对比度过高会残生“鬼影”,使用时可以通过一个10K的电位器调整对比度第4脚RS为寄存器悬着,高电平时玄正数据寄存器,低电平时选择指令寄存器第5脚R/W为读写__线,高电平时进行读操作,低电平时进行写操作当RS和R/W共同为低电平时可以写入指令或者显示地址,当RS为低电平R/W为高电平时可以读忙__,当RS为高电平R/W为低电平时可以写入数据第6脚E端为使能端,当E端由高电平跳变成低电平时,液晶模块执行命令第7-14脚D0-D7为8位双向数据线第15脚背光源正极第16脚背光源负极
(3)单片机与LCD的连接(E,RWRS)控制引脚接P3口,8个数据__接P1口VSS接单片机地,VCC接单片机的电源VCC单片机与LCD连接图如下图2-5单片机与LCD连接图
2.5__式键盘控制模块__式键盘的按键相互__,每个按键接一根I/O口线,一根I/O口线上的按键工作状态不会影响其他I/O口线的工作状态因此,通过检测I/O口线的电平状态,即可判断键盘上哪个键被按下,__式键盘如下图图2-6__式键盘
3.系统软件程序设计
3.1主程序流程图主程序描述首先运行主程序函数__in;进行LCD1602液晶显示屏初始化,并显示静态部分;定时器的初始化,设置定时器工作方式1,开启T1中断,定时50ms;然后进行按键扫描,有正、反转、急停按键,加速,减速按键,如果按键按下则相应调节PWM波的占空比,调节转速并在LCD1602液晶显示屏上输出显示图3-1主程序流程图
3.2定时器中断程序流程图定时器1设置为工作方式1,定时初值为50ms,每50ms产生一次中断,程序处理PWM的延时占空比及转速显示图3-2定时器中断程序流程图
3.3__键盘控制流程图按键输入模块共有3个按键,K1的功能是正转、反转、急停一键多功能,K2是控制PWM波的占空比,使电机转速上升,K3使电机转速下降图3-3__键盘控制流程图
4.系统功能设计和实现
(1)按键设置 因学习板只有4个按键,为了实现直流电机的多功能设置,所以将K1按键设置为正转,反转,停止按键,通过判断K1按下的次数来实现电机的状态改变
(2)状态显示及测速因考虑到LCD1602显示容量较小,所以将显示状态设置为1个字符,即正转对应C,反转对应R,停止对应S而测速时,则是利用T2计数器计数1S内接收到的带测速码盘的直流电机发出的脉冲
(3)测量马达的反电动势系数直流力矩电动机无论空载或负载运行时,它的电枢电压平衡方程式为 V=E反+IR式中V-外施电枢电压I#8212;电枢电流R#8212;电枢电阻E(反)#8212;反电势可见,当直流力矩电动机运转时,无论它空载或负载,只要知道它的电枢电阻、电枢电压、电枢电流、转速,就可计算出它的反电势系数,其计算公式为 Ke= U-IR/n式中Ke-反电势系数IR-电枢电阻压降n-转速根据测量得到数据记录如表4-1所示表4-1电机反电动势系数数据记录表空载电压U/V电枢电压U/V电枢电流I/__电枢电阻R电机转速r/min反电动势系数Ke
51.
6429114900.
0026851.
7929.
5115280.
00269552.
2630117200.002605根据上述数据可得,电机反电动势系数Ke=(
0.00268+
0.002695+
0.002605)/3=
0.00266测量电机的力矩系数根据下列公式 可知KT=
9.55*Ke=
9.55*
0.00266=
0.
0254035.系统仿真调试系统采用protus仿真,电机的驱动和速度的采集由单片机完成,并将单片机的硬件电路在Proteus中仿真实现,再通过虚拟串口实现单片机与上位机的通信P0口与LCD1602液晶相连,用于显示转速
6.心得体会本学期的课程设计是一单片机控制电动机启停正反转,学生组队完成(包括设计总体方案、硬件电路、软件设计、调试、测量参数等)我认为,在这学期的实验中,在收获知识的同时,还收获了成熟,在此过程中,我们通过查找大量资料,请教老师,以及不懈的努力,不仅培养了__思考,动手操作的能力,在各种其他能力上也都有了提高更重要的是,我们学会了很多学习的方法而这是日后最实用的要面对社会的挑战,只有不断的学习、实践,再学习、再实践与队友的合作是一件快乐的事情,只有彼此都付出,彼此都努力才能将作品做的更__而团队合作也是当今社会提倡的以后不管有多苦,我们都能变苦为乐,找寻有趣的事情,发现其中珍贵的事情就像我们在课程设计之后变的更加成熟,会面对需要面对____
[1]电力拖动自动控制系统运动控制系统/阮毅,陈伯时主编.——4版.——北京机械工业出版社,
2009.8(
2011.1重印)
[2]卢春华,姚海燕,张莉基于单片机的直流电机调速系统设计[J].硅谷.2009
(20)98-120
[3]单片微机原理及应用/__杰主编——第3版.北京机械工业出版社,
2005.7(
2010.1重印)附录1#includereg
52.h#defineucharunsignedchar#defineuintunsignedint__itled=P2^6;__itlcden=P2^2;__itlcdrs=P2^0;__itlcdrw=P2^1;__itENA=P1^3;__itIN1=P1^1;__itIN2=P1^2;__itkey1=P3^2;//正转,反转,急停(一键多功能)__itkey2=P3^3;//加速按键__itkey3=P3^4;//减速按键bitflag;ucharcodetable[]={01234567__};ucharcodetable1[]={Speed:};ucharcodetable2[]={Star:};ucharcodetable3[]={r/min};uintnumcounttimes=0cycle=10c=0;floatrpmv;/*******************************延时函数(1ms)*******************************/voiddelayuintz{uintxy;forx=z;x0;x--fory=110;y0;y--;}/******************************LCD写命令函数*******************************/voidwrite_comucharcom{lcdrs=0;lcdrw=0;P0=com;delay5;lcden=1;delay5;lcden=0;}/******************************LCD写数据函数*******************************/voidwrite_datauchardate{lcdrs=1;lcdrw=0;P0=date;delay1;lcden=1;delay1;lcden=0;}/******************************LCD初始化函数*******************************/voidinit1602{lcden=0;led=1;write_com0x38;write_com0x0c;write_com0x06;write_com0x01;}/******************************LCD静态显示函数*******************************/voiddisplay1{write_com0x80;fornum=0;num6;num++{write_datatable1[num];}write_com0x80+0x0a;fornum=0;num5;num++{write_datatable3[num];}write_com0x80+0x40;fornum=0;num5;num++{write_datatable2[num];}}/******************************LCD动态显示函数(显示转速)*******************************/voiddisplayuintzhuansu{write_com0x80+0x06;write_datatable[zhuansu/1000];write_datatable[zhuansu%1000/100];write_datatable[zhuansu%1000%100/10];write_datatable[zhuansu%10];}/******************************定时器的初始化函数*******************************/voidtime_init{TMOD=0x12;//定时器T1工作计时模式1,定时器T0工作于计时模式2,自动重装C_T2=1;//定时器T2工作在计数模式TH0=0;//200usTL0=0x38;//200usTH2=0;//定时器T2高8位赋初值0TL2=0;//定时器T2低8位赋初值0TH1=65536-46083/256;//定时器T1,每50ms产生一次中断TL1=65536-46083%256;//定时器T1,每50ms产生一次中断EA=1;//开总中断ET0=1;//定时器T0中断允许ET1=1;//定时器T1中断允许TR0=1;//定时器T0启动TR1=1;//定时器T1启动TR2=1;//定时器T2启动}/******************************按键扫描*******************************/voidkeyscan{ifkey1==0{delay10;ifkey1==0{while!key1;c++;ifc2{c=0;}}}}/******************************加速(改变PWM波的占空比)*******************************/voidadd{ifkey2==0{delay10;ifkey2==0{while!key2;cycle+=2;ifcycle=48{cycle=50;}}}}/******************************减速(改变PWM波的占空比)*******************************/voiddec{ifkey3==0{delay10;ifkey3==0{while!key3;cycle-=2;ifcycle=2//防止减到0{cycle=2;}}}}/******************************主函数*******************************/void__in{init1602;display1;time_init;ENA=0;while1{keyscan;ifc==0{IN1=0;IN2=0;write_com0x80+0x45;write_data0;}ifc==1{IN1=0;IN2=1;write_com0x80+0x45;write_data+;}ifc==2{IN1=1;IN2=0;write_com0x80+0x45;write_data-;}add;dec;displayzhuansu;}}/******************************定时器0的中断函数*******************************/voidtimer0interrupt1using1{times++;iftimes=cycleENA=1;elseENA=0;iftimes=50times=0;}/******************************定时器1的中断函数*******************************/voidtimer1interrupt3using1{count++;ifcount==20{flag=1;count=0;zhuansu=TH2*256+TL2*
0.17964;TL2=0;TH2=0;}TH1=65536-46083/256;//重装TL1=65536-46083%256;//重装}Tt1t2占空比(D)电压(V)0Tt1t2通电断电时间(t)平均速度(Vd)V__x
100.5abMNET1NET0NET0NET1V3V1V4V2VCC开始是否加速LCD1602液晶初始化定时器初始化按键扫描是否加速加速处理减速处理是是否否显示转速LCD1602静态显示启动定时器工作方式开启中断时间设置50ms计数到达20次进入中断重置时间50ms结束输出转速是否扫描按键KEY1是否按下KEY2是否按下KEY3是否按下急停反转正转电机加速电机减速是否否是是否。