直流电机转速测量与控制.docx
- 文档编号:11419699
- 上传时间:2023-02-28
- 格式:DOCX
- 页数:34
- 大小:857.60KB
直流电机转速测量与控制.docx
《直流电机转速测量与控制.docx》由会员分享,可在线阅读,更多相关《直流电机转速测量与控制.docx(34页珍藏版)》请在冰豆网上搜索。
直流电机转速测量与控制
山东大学威海分校
机电工程学院
课程设计
课程名称单片机原理与应用
课题名称直流电动机转速测量与控制系统
专业
班级
学号
姓名
任课教师
2010年06月14日
设计内容与设计要求
设计内容:
直流电机200W,电压:
24V,调速范围-30%。
设计要求:
画出控制系统结构图;闭环转速测控系统的具体设计,包括所选传感器、执行器和控制器的类型、原理、输入输出接口和工作电路等;系统流程图及控制算法;控制系统界面的软件设计,包括程序流程图和实现代码;控制算法的实现,包括程序流程图和实现代码或仿真代码。
目录-3-
第1章前言-4-
第2章基本原理-5-
第3章功能说明-5-
第4章硬件电路的设计方案-7-
4.1转速传感器KMI15应用电路51单片机部分-8-
4.2转速测量部分-8-
4.3测速调速电路51单片机部分-11-
4.4直流电机测速调速电路转换显示部分-12-
第5章系统程序流程图-13-
5.1系统流程图-13-
5.2转速测量程序流程图-14-
5.3显示程序流程图-15-
5.4测速调速控制程序流程图-16-
第6章控制算法实现-17-
第7章硬件测试-18-
第8章软件仿真-19-
8.1Keil仿真-19-
8.2算法控制仿真-24-
第9总结与体会-25-
参考文献-26-
附录-27-
附录一单片机程序清单-27-
附录二控制算法程序清单-33-
附录三元件清单-35-
第1章前言
单片机作为嵌入式微控制器在工业测控系统,智能仪器和家用电气中得到广泛应用。
虽然单片机的品种很多,但80C51系列单片机仍不失为单片机中的主流机型。
本课程一80C51系列以及派生系列单片机芯片为主介绍单片机的原理与应用,与其特点是由浅入深,注重接口技术和应用。
近年来,微型计算机的发展速度足以让世人惊叹,以计算机为主导的信息技术作为一种崭新的生产力,正在向社会的各个领域渗透,也使机电一体化的进程大大加快。
机电一体化是当今制造技术和产品发展的主要倾向,也是我国机电工业发展的必由之路。
可以认为,它是用系统工程学的观点和方法,研究在机电系统和产品中如何将机械、计算机、信息处理和自动控制技术综合应用,以求机电系统和产品达到最佳的组合。
机电一体化产品所需要的是嵌入式微机,而单片机具有体积小、集成度高、功能强等特点,适于嵌入式应用。
智能仪器、家用电器、数控机床、工业控制等机电设备和产品中竟相使用单片机。
就目前而言,单片机的发展势头依然不减,各种型号和功能更强的单片机和超级接口芯片不断出现,进一步向高层次发展的重要标志就是构成多机系统和分布式网络。
世界上单片机芯片的产量以每年27%的速度递增,到本世纪初已达30亿片,而我国的年需求量也超过了亿片的数量,这表明单片机有着广阔的应用前景。
本课程设计主要针对目前我国早期应用比较广泛的“80C51”单片机进行系统的讲解和分析。
为使用和开发各类机电一体化设备和仪表建立基础。
第2章基本原理
直流电动机具有良好的起动、制动性能,适宜在大范围内平滑调速,在许多需要调速或者快速正反向的电力拖动系统中得到了广泛的应用。
从控制的角度来看,直流调速还是交流拖动机的基础。
早期直流电动机的控制均以模拟电路为基础,采用运算放大器、非线性集成电路以及少量的数字电路组成,控制系统的硬件部分非常复杂,功能单一,而且系统非常不灵活、调试困难,阻碍了直流电动机控制技术的发展和应用范围的推广。
随着单片机技术的日新月异,使得许多控制功能计算法可以采用软件技术来完成,为直流电机的控制提供了更大的灵活性,并使系统能达到更高的性能。
采用单片机构成控制系统,可以节约人力资源和降低系统成本,从而有效地提高工作效率。
本设计就基于直流电动机在51单片机中的应用,设计出大功率直流电动机转速的测量与控制。
第3章功能说明
单片机控制直流电机的基本方法是通过改变直流电机电枢电压的接通时间与通电周期的比值(即占空比)来控制电机速度,这种方法成为脉冲宽度调制(pulsewidthmodulation),简称PWM。
通过控制脉冲占空比来改变电机的电枢电压,改变占空比的方法有三种:
1)定宽调频法,这种方法是不改变高电平的维持时间,仅改变低电平的维持时间,这样调制电压频率也随之改变;
2)调宽调频法,他要求不改变低电平的维持时间,仅改变高电平的维持时间,这也调制电压频率也被改变;
3)定频调宽法,这种方法是同时改变高低电平的维持时间,而两个维持时间的总和不变,即调制电压频率不变。
由于前两种方法都改变了调制电压频率,当调制电压频率与电机电压频率接近时,将会引起系统振荡,造成系统工作的不稳定,因而在实际应用当中,常使用定宽调频法。
测量直流电动机转速的传感器有磁电式和光电式,霍尔传感器由于体积小、无触点、动态特性好、使用寿命长等特点,在测量转动物体旋转速度领域得到了广泛应用。
目前,转速传感器正朝着高灵敏度、高可靠性和全集成化的方向发展。
典型产品有飞利浦(Philips)公司生产的KMI15/16系列磁阻式集成转速传感器,包括KMI15-1、KMI15-2、KMI15-4、KMI16-1等型号。
其性能优良,安全性好,稳定性强,是分立式转速传感器理想的升级换代产品。
本例采用飞利浦(Philips)公司生产的KMI15-1传感器,它主要包括以下六部分:
①磁敏电阻传感器;②前置放大器A1;③施密特触发器;④开关控制电路源;⑤恒流源;⑥电压控制器。
它是由4只磁敏电阻构成的一个桥路,需固定在靠近齿轮的地方,当齿轮转动时,由于气隙处的磁力线发生变化,磁路中磁阻也随之改变,在传感器上就产生了电信号。
该传感器具有很强的方向性,他对与之连接的传动物体十分敏感,而对该物体的震动或者抖动量很不敏感,这正是测量转速所需要的。
传感器产生的电信号频率和转动速度呈正比,根据单位时间间隔内的脉冲数,即可求得被测电机的转速。
KMI15/16旋转速度传感器与霍尔传感器或电磁式传感器相比,具有多种优点,如可以完成“静止”状态下速度的测量,并且结构简单、价格低廉、信噪比高等,在汽车电子、工业测量、仪器仪表及国防等领域应用广泛。
电机驱动需要较高的电压和电流,一般需要根据电机的具体参数设计合适的驱动电路。
目前市场上有很多性能优良的电机专用驱动芯片,本例就采用电机驱动芯片ULN2003用于直流电机的驱动控制。
电机采用24V,200W,最大转速200r/s。
ULN2003是耐高压、大电流达林顿系列,由七个硅NPN达林顿管组成。
该电路的特点如下:
ULN2003的每一对达林顿都串联一个2.7KΩ的基极电阻,在5V的工作电压下他能与TTL和CMOS电路直接相连,可以直接处理原先需要标准逻辑缓冲器来处理的数据。
ULN2003工作电压高,工作电流大,灌电流可达500mA,并且能够在关态时承受50V的电压,输出还可以在高负载电流并行运行。
ULN2003采用DIP-16或SOP-16塑
料封装,其内部结构如图3-1所示。
图3-1ULN2003内部结构图
ULN2003的引脚说明如下:
IN1-IN7:
七个输入端,输入信号支持TTL,CMOS电平。
OUT1-OUT7:
七个输出端。
COM:
公共端,一般用于测试芯片用,当芯片连接完毕,公共端的电压足可以点亮一个发光管。
GND:
信号地端。
第4章硬件电路的设计方案
整个系统硬件可以分为三个部分:
51单片机部分,转速测量部分,转速显示部分和转速调整控制部分。
KMI15-1输出脉冲信号到单片机测量电机转速,LED显示模块由MAX7219驱动控制,直流电机的控制由51单片机输出PWM脉冲信号送入芯片ULN2003驱动直流电机。
4.1转速传感器KMI15应用电路51单片机部分
图4-1转速传感器KMI15应用电路51单片机部分
如图4-1所示,51单片机利用定时器T0实现定时1s,在此期间计数器T1对传感器输出频率信号计数,既可以测得信号频率。
根据所测频率的数值判断电机的对应转速,51单片机的两个ID端口P2.2、P2.6连接绿色和红色发光管,用于对电机转速是否超出设定的最大值与最小值的指示标志。
4.2转速测量部分
基于KMI15的转速传感器的前端电路如图4-2所示,整个电路包括三个部分:
电源过压保护、输出低通滤波器电路、比较电路。
图4-2基于KMI15的转速传感器前端电路图
图4-2中,二极管D1作为电路反极性保护和反向过压保护;二极管D2作电路正向过压保护,但要求有一定过载能力。
RL为115Ω负载电阻,将磁阻信号转换成电压电平。
R3、C6构成输入信号低通滤波电路,其截至频率为10kHz。
R5、R6确定一个分压值,作为比较器的阈值,R9、R10和R7组成反馈和R4来确定迟滞电压,来保证工作特性不受外界因素干扰,最终转速传感器通过LM393比较器输出端输出标准TTL电平信号,该信号频率与转速成正比,该信号送入51点偏激的T1计数器输入端用于测量转速。
测速过程中KMI15-1传感器的输出端接到51单片机的T1端口。
图4-3转速测量、单片机部分电路图
4.3测速调速电路51单片机部分
图4-4直流电机测速调速电路51单片机部分
51单片机P0口的P0.0输出电机驱动信号,P0.0通过NPN三极管连接到直流电机驱动器ULN2003的输入通道IN1。
P0.0可以通过上拉电阻连接到ULN2003的输入通道IN1,改变P0.0输出周期性脉冲的高电平宽度,即可实现对电机的调速控制。
4.4直流电机测速调速电路转换显示部分
图4-5直流电机测速调速电路转速显示部分
图4-5中所示的显示电路部分包涵三个LED数码管,数码管驱动器件采用串行接口的MAX7219,数码管亮度决定于MAX7219的V+和ISET之间的电阻数值,在本电路当中选择47KΩ,一般来说可以选择10KΩ以上的电阻。
51单片机的P1口的P1.0、P1.1、P1.2分别作为单片机与MAX7219串行通信接口的数据输入线、时钟信号线、数据加载线(片选线)。
基于这三条通信线,51单片机即可实现对8位数码管驱动芯片MAX7219的操作。
MAX7219的数据输出端DOUT用于多片MAX7219级联使用时连接下一片MAX7219的数据输入端DIN;数码管工作段电流决定于MAX7219的V+端与ISET端接入的电阻大小,一般选择的范围为10KΩ以上。
为了能够稳定地显示数据,需要在MAX7219的电源输入端加滤波电容,这是由于MAX7219工作时对输入电源会产生很大的干扰,可以造成MAX7219本身工作的不稳定以及数据的接收误码。
图4-5所示的数码管为八位共阴数码管,它们的公共段可以分别接到数码管芯片MAX7219的位控制端口DIG0-DIG2,实现8位数码管的位控制。
第5章系统程序流程图
根据设计要求和设计思路,进行模块设计。
包括系统流程图,转速测量程序流程图,显示程序流程图,测速调速控制程序流程图。
5.1系统流程图
图5-1系统流程图
图5-1所示为系统流程图,系统经初始化之后,调用测速调速程序,之后调用显示子程序动态显示电动机转速。
5.2转速测量程序流程图
图5-2基于KMI15转速测量程序流程图
定时计数器T0、T1配合,实现转速测量的程序流程如图5-2所示,T0用于产生1s定时,在此期间T1计传感器部分送来的转速频率脉冲,完成后对转速进行分析,根据转速值进行相应的程序处理。
默认转速最大值为200r/s,最小转速为140r/s,如果超过200或低于140,则红色发光管告警。
如果测量速度在两者之间时,绿色发光管点亮。
定时器0定时参数为50ms,20次定时实现1s,1s定时开始对T1输入端计数,20次定时时间到,T1停止计数,从而得到比较精确的电机转速。
根据实际情况即可转换为实际的电机转速。
5.3显示程序流程图
图5-351单片机基于MAX7219驱动8位数码管流程图
51单片机基于MAX7219驱动8位数码管流程图如图5-3所示。
51单片机通过MAX7219数码管驱动芯片实现8位数码管显示的程序中,主要的工作集中在51单片机模拟MAX7219串口操作时序,实现对MAX7219工作方式的正确配置以及3个显示数据的正确写入。
5.4测速调速控制程序流程图
图5-4基于单片机的直流电机测速调速程序流程图
基于51单片机的直流电机测速调速系统程序流程如图5-4所示。
其中,定时器T0用于1s定时,同时T1用于1s内脉冲计数,从而达到电机测速的目的。
该程序设计重点在定、时器中断,定时器0中断服务程序当中包括电机测速部分、电机转速显示部分、电机转速调整部分。
电机转速调整部分只需要对转速和设定转速值进行比较,根据比较结果调整P0.0输出周期脉冲的高电平宽度即可调整电机转速。
第6章控制算法实现
图6-1电机速度控制算法流程图
图6-1为电机速度控制算法流程图,电机控制信号输出端P0.0初始输出低电平,将测得的电机转速值与设定的值比较,当测速大于设定的最高速度时,减小P0.0脉冲的高电平宽度,减小电机速度;当测速小于设定的最小值(即最大值的70%)时,增大P0.0脉冲的高电平宽度,增大电机速度;当测速在设定的最大值与最小值之间时候,正确显示速度。
第7章硬件测试
图7-1转速传感器前端电路
图7-251单片机、速度测量、控制及显示部分
图7-3硬件电路整体仿真图
图7-1、图7-2、图7-3为用Multisim软件仿真的结果。
由于Multisim资源库中没有原本设计中用到的MAX7219、ULN2003、KMI15器件,在仿真过程中电路作了较大改动。
用Proteus仿真的硬件电路与用Multisim所作的硬件电路图有较大的区别。
基于原来设计的电路图的软件部分已经写好、调试好,但放在Multisim仿真的硬件电路中不适合,因为硬件部分作了较大改动。
再改软件来适合Multisim仿真的硬件电路比较麻烦,由于时间原因就没有改,所以真正的硬件仿真效果图并没有做出来。
第8章软件仿真
8.1Keil仿真
先新建一个工程,并保存在所建工程弹出的对话框中选择80-51处理器。
新建一个文档以编辑程序,将所设计的程序输入到新建文档中,并保存文档.asm(汇编源文件)。
将所保存的文档添加到工程中去,再进行工程配置,点击Project菜单下的OptionsforTarget,在弹出的对话框中设晶振为12MHZ,将CreateHEXFile打上勾,再编译文件。
图8-1P2.2口初始状态
图8-2中断调试时P2.2口状态
P2.2设置为红色报警信号,从图8-1、图8-2可以看出,初始状态下P2.2是1,当运行到中断时,P2.2变为0,也即当测速小于140r/s时,红色指示灯亮。
图8-3P1.2口初始状态
图8-4中断调试时P1.2口状态
P1.2为MAX7219数据加载口,从图8-3、图8-4可以看出进入中断后P1.2口的电平从1变为0,也即数据被加载进入MAX7219。
图8-5初始化时P0.0口的状态
图8-6中断调试时P0.0口的状态
P0.0口为电机控制信号的输出端,从图8-5、图8-6可以看出,调试中断时P0.0口的高低电平变化,则当P0.0为0时候,有信号输出。
图8-7
图8-8
从图8-7、8-8可以看出定时器T0进入中断时各个端口数值的变化。
8.2算法控制仿真
图8-9
图8-10
图8-9、图8-10为电机转速控制算法仿真波形图,从图中可以看出,初始状态时电机转速从0迅速升高到最大值200r/s。
之后电机转速在最大值200,最小值140之间徘徊。
如果高于最大值,会被迅速拉低,如果低于最小值,会被迅速拉高,知道转速被控制在最大值与最小值之间。
第9章总结与体会
课程设计是培养学生综合运用所学知识,发现,提出,分析和解决实际问题,锻炼实践能力的重要环节,是对学生实际工作能力的具体训练和考察过程.随着科学技术发展的日新日异,单片机已经成为当今计算机应用中空前活跃的领域,在生活中可以说得是无处不在。
因此作为二十一世纪的大学来说掌握单片机的开发技术是十分重要的。
回顾起此次单片机课程设计,至今我仍感慨颇多,的确,从开始设计方案到最终确定方案,从器件的选用到最后的确定,从理论到实践,在两个多星期的日子里,可以说得是苦多于甜,但是可以学到很多很多的的东西,同时不仅可以巩固了以前所学过的知识,而且学到了很多在书本上所没有学到过的知识。
通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。
在设计的过程中遇到问题,可以说得是困难重重,这毕竟第一次做的,难免会遇到过各种各样的问题,同时在设计的过程中发现了自己的不足之处,对以前所学过的知识理解得不够深刻,掌握得不够牢固,比如说三极管NPN管脚不懂怎么放置,不懂分得二极管的正负极,对单片机汇编语言掌握得不好……通过这次课程设计之后,一定把以前所学过的知识重新温故。
这次的课程设计终于顺利完成了,在设计中遇到了很多编程问题,最后在同学的帮助下,终于迎刃而解。
同事,在其他同学身上我学到了很多东西,学会了怎样编程、怎样调试以及怎样用Multisim和Proteus画硬件电路图。
虽然学习的还不是很深入,Keil、Multisim和Proteus软件还没有掌握,只是懂得了一些,在以后的学习应用当中我一定会更加积极、主动、深入的学习这几款软件。
在此对帮助过我的同学们表示衷心的感谢!
参考文献
1、曹立军.《单片机原理与应用》.西安电子科技大学出版社,2009
2、张迎新.《单片微型计算机原理、应用及接口技术》.国防工业出版社,1993
3、房小翠.《编单片机实用系统设计技术》.国防工业出版社,1999
4、何立民.《编单片机应用系统设计》.北航出版社,2005
5、雷伏容.《51单片机常用模块设计查询手册》.清华大学出版社,2010
6、刘国荣.《单片微型计算机技术》.机械工业出版社,1996
7、吴炳胜.《8051单片机原理与应用技术》.冶金工业出版社,2003
附录
附录一单片机程序清单
/*//////////////////////////////////////////////////////////////////////
程序功能为电机控制信号输出端口P0.0初始输出低电平,将测得的电机转速值与设定的值比较,
当测速大于设定的最高速度时,减小P0.0脉冲的高电平宽度,减小电机速度;当测速小于设定
的最小值(即最大值的70%)时,增大P0.0脉冲的高电平宽度,增大电机速度;当测速在设定的
最大值与最小值之间时候,正确显示速度。
*///////////////////////////////////////////////////////////////////////
#include
#include
#defineucharunsignedchar
#defineuintunsignedint//数码管显示数据单元
ucharbit100;
ucharbit10;
ucharbit1;
uchardig1;
uchardig2;
uchardig3;
ucharcout;//1s定时控制参数
ucharcnt1;
ucharcnt2;//延时参数单元
ucharrvalue;//电机转速单元
ucharHvalue;//电机最高允许转速
ucharLvalue;//电机最低允许转速
sbitP00=P0^0;
sbitDIN=P1^0;//串行数据输入端
sbitCLK=P1^1;//串行时钟
sbitLOAD=P1^2;//数据加载控制
sbitGREEN=P2^6;//转速正常指示灯
sbitRED=P2^2;//转速超出设定范围报
voidsendcode0(ucharcode0);
voidsendword(ucharaddr,ucharnum);
voiddelay(ucharcnt)
{
for(cnt;cnt>0;cnt--);
//while(cnt--);
}
///发送一个字节的数据到MAX7219
voidsendcode0(ucharcode0)
{
uchari,temp;
_nop_();
for(i=0;i<8;i++)
{
temp=code0&0x80;
code0=code0<<1;
if(code0)//发送1
{
DIN=1;
CLK=0;
CLK=1;
}
else
{
DIN=0;
CLK=0;
CLK=1;
}
}
}
voidsendword(ucharaddr,ucharnum)
{
LOAD=0;//MAX7219准备接受16位数据
_nop_();
sendcode0(addr);//MAX7219接收8位寄存器地址
_nop_();
sendcode0(num);//MAX7219接收8位寄存器数据
_nop_();
LOAD=1;//MAX7219锁存进相应寄存器
}
////数码管驱动MAX7219初始化程序
voidstart(void)
{
sendword(0x0b,0x02);//设置扫描界限
sendword(0x09,0xff);//设置译码模式
sendword(0x0a,0x0a);//设置亮度
sendword(0x0c,0x01);//设置为正常工作模式
}
//////转速显示程序
voiddisplay(void)
{
sendword(dig3,bit100);//发送数码管百位显示码到MAX7219;
sendword(dig2,bit10);//发送数码管十位显示码到MAX7219;
sendword(dig1,bit1);//发送数码管个位显示码到MAX7219;
}
///主函数
voidmain()
{
SP=0x70;
cout=0x14;
cnt1=0x00;
cnt2=0x00;
Hvalue=0xc8;//最大转速设置为200r/s
Lvalue=0x8c;//最小转速设置为140r/s
TH1=0x00;
TL1=0x00;
TH0=0x3c;//50ms定时参数设定
TL0=0xbb;
TMOD=0x51;
//////MAX7219初始化
start();
dig1=0x01;
dig2=0x02;
dig3=0x03;
display();
EA=1;//中断设置
ET0=1;
ET1=1;
TR0=1;//启动T0计时,T1计数
T
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 直流电机 转速 测量 控制
