单片机控制直流电机.docx

上传人:b****3 文档编号:3894919 上传时间:2022-11-26 格式:DOCX 页数:16 大小:267.92KB
下载 相关 举报
单片机控制直流电机.docx_第1页
第1页 / 共16页
单片机控制直流电机.docx_第2页
第2页 / 共16页
单片机控制直流电机.docx_第3页
第3页 / 共16页
单片机控制直流电机.docx_第4页
第4页 / 共16页
单片机控制直流电机.docx_第5页
第5页 / 共16页
点击查看更多>>
下载资源
资源描述

单片机控制直流电机.docx

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

单片机控制直流电机.docx

单片机控制直流电机

 

毕业设计

(2015届)

 

题目:

单片机控制直流电机

 

完成日期:

2015年6月5日

 

摘要

近年来由于微型机的快速发展,国外交直流系统数字化已经达到实用阶段。

由于以微处理器为核心的数字控制系统硬件电路的标准化程度高,制作成本低,且不受器件温度漂移的影响。

其控制软件能够进行逻辑判断和复杂运算,可以实现不同于一般线性调节的最优化、自适应、非线性、智能化等控制规律。

所以微机数字控制系统在各个方面的性能都远远优于模拟控制系统且应用越来越广泛。

本文介绍的是用一台直流电动机,MCS-51单片机构成的数字化直流调速系统。

特点是用单片机取代模拟触发器、电流调节器、速度调节器及逻辑切换等硬件设备。

最后进行软件编程、调试。

实时控制结果表明,本数字化直流调速系统实现了电流和转速双闭环的恒速调节,并具有结构简单,控制精度高,成本低,易推广等特点,而且各项性能指标优于模拟直流调速系统,从而能够实际的应用到生产生活中,满足现代生产的需要。

 

关键词:

单片机电机控制

 

 

目录

引言…………………………………………………………………………………………………………1

1、设计思路………………………………………………………………………………………………1

2、控制直流电机部分的硬件设计…………………………………………………………………2

2.1直流电机组成原理…………………………………………………………………………………2

2.2直流电机调速方案的设计………………………………………………………………………2

2.3直流电机测速方案的设计………………………………………………………………………3

2.4PWM产生与控制部分方案的设计………………………………………………………………3

2.5LCD显示部分方案的设计…………………………………………………………………………3

3、各硬件部分的链接与接口………………………………………………………………………3

3.1单片机与直流电机接口部分……………………………………………………………………3

3.2单片机与LCD显示模块通信接口部分…………………………………………………………4

3.3各部分硬件结合原理及构造……………………………………………………………………5

4、软件程序设计………………………………………………………………………………………6

5、系统各部分软件设计的思路……………………………………………………………………8

结论………………………………………………………………………………………………………9

致谢辞………………………………………………………………………………………………………10

附录………………………………………………………………………………………………………10

 

引言

直流电机因具有良好的线性调速特性、效率高、控制简单、调速性能好及体积小等优点得到了广泛使用。

常规电机调速控制方法中,电机不稳定工作,损耗较大,尤其在低电压轻负荷时情况更为严重,且工作频率受电源频率的限制,难以满足高精度的调速要求,不利于广泛推广。

如何才能使电路具有成本低,控制精度高、调试修改参数方便,且能方便和灵活的适用于大功率、可靠性高的直流电机控制系统中,是我们研究的目的。

1、设计思路

直流电机调速性能好,可靠性高,机械特性强,在自动控制中的应用极为广泛。

直流电机的调速系统多种多样,但系统复杂,控制精度和成品价格难以兼顾。

本文使用价格低廉、应用广泛的MCS-51系列单片机为控制芯片,以PI调节控制算法为基础,完成对直流电机转速的调节,达到了控制性能好,成本低的目的。

根据本次课程设计的具体要求为,使用LCD显示出直流电机的转速,我们由题目可以分析出,这个题目实际是由多个部分组成的。

既第一个部分应该为,用单片机控制直流电机的转速,并且系统应提供直流电机驱动、测速电路,使用单片机驱动直流电机,测量直流电机的转速,控制直流电机稳定运行在一个范围内。

其二,可以分析出第二个部分应该为,使用LCD显示系统显示出直流电机的具体转速,并且单片机控制的电机实际转速与液晶显示器显示出的转速应该时时对应。

其三,这个硬件系统的隐含意义是,本系统应该具有数模和模数转换的部分,因为这个模数转换部分在这个系统中是不可缺少的,单片机控制的直流电机转速,在实际中无论是对电机控制的信号,还是电机输出的信号都应该是数字信号,因为只有数字信号才能被单片机所识别,而最重要的是,单片机控制的直流电机输出的转速的信号只有是数字信号时才能被液晶显示LCD模块所识别,并最终准确的显示出直流电机的转速。

设计原理方框图如图1-1所示,以AT89C51单片机为控制核心,包括测速电路、PWM波形发生器和PWM功放电路以及LCD显示部分。

图1-1硬件方框设计原理图

2、控制直流电机部分的硬件设计

2.1直流电机组成原理

直流电动机结构由定子和转子两大部分组成。

直流电机运行时静止不动的部分称为定子,定子的主要作用是产生磁场,由机座、主磁极、换向极、端盖、轴承和电刷装置等组成。

运行时转动的部分称为转子,其主要作用是产生电磁转矩和感应电动势,是直流电机进行能量转换的枢纽,所以通常又称为电枢,由转轴、电枢铁心、电枢绕组、换向器和风扇等组成。

直流电动机的结构是由直流电源、直流电机、控制开关和调速器组成。

直流发电机的工作原理就是把电枢线圈中感应的交变电动势,靠换向器配合电刷的换向作用,使之从电刷端引出时变为直流电动势的原理。

感应电动势的方向按右手定则确定其工作原理不外乎就是用直流电源作为能量来驱动电机旋转。

通过对三极管的截止与导通进行控制,使其起到开、关和调速的作用。

具体的操作为当直流电动机接上直流电源时,使用电位器旋转按钮控制三极管集极的电压。

直流电机控制原理如图2-1。

图2-1直流电机控制原理

(1)当三极管的集极电压小于死区电压时三极管截止,则电动机不转动;

(2)当集极电压大于死区电压而小于饱和电压时三极管处于放大状态,随着集极电压改变,从而改变了直流电动机两端的压降也就改变了电机的转速。

具体原理为集极的电压大小不一样,三极管的电压放大倍数也不一样从而起到调速作用改变直流电动机的旋转速度。

2.2直流电机调速方案的设计

直流电动机的转速控制方法可以分为2大类:

对励磁磁通进行控制的励磁控制法和对电枢电压进行控制的电枢电压法。

其中励磁控制法在低速时受磁饱和的限制,在高速时受换向火花和换向器件结构强度的限制。

并且励磁线圈电感较大,动态性能响应较差,所以这种控制方法用的很少,多使用电枢控制法。

本设计将采用电枢控制方法对电动机的速度和转向进行控制。

直流电机转速调节:

某些场合往往要求直流电机的转速在一定范围内可调节,例如,电车、机床等,调节范围根据负载的要求而定。

调速可以有三种方法:

(1)改变电机两端电压;

(2)改变磁通;(3)在电枢回路中,串联调节电阻。

采用第一种方法:

通过改变施加于电机两端的电压大小达到调节直流电机转速的目的。

2.3直流电机测速方案的设计

测速电路由附在电机转子上的光电编码盘及施密特整形电路组成。

电脉冲的频率与电机的转速成固定的比例关系,光码盘输出的电脉冲信号经放大整形为标准的TTL电平,输入到单片机的两个外部中断:

INT0和INT1,利用单片机内部定时器/计数器T0和T1,以及内部一个寄存器作软计数器,循环地捕捉相邻两次速度脉冲,并由这两次触发所记录的时间差算出其转速,再将这个转速与预置转速进行比较,得出差值,单片机通过对这个差值进行PI运算,得出控制增量,在P010~P013引脚送出控制信号改变PWM波形发生电路的占空比,最终达到控制电机转速的目的。

2.4PWM产生与控制部分方案的设计

PWM波形发生电路

由于测速中占用了两个定时器T0和T1,如果再将PWM波形产生交给AT89C51则会加大软件的任务,并且影响整个系统的控制效果。

因此这里考虑单独设计一个PWM波形发生电路,单片机对它只提供控制参数以改变其占空比。

2.5LCD显示部分方案的设计

课设所用LCD模块概述

模块SMC1602B由一块点阵液晶屏和控制器HD44780及其辅助电路组成。

本系统设计采用OCMJ中文模块系统LCD液晶作为下位机的显示模块。

该模块内含GB231216×16点阵国标一级简体汉字和ASCII8×8(半高)及8×16(全高)点阵形英文字库,用户输入区位码或ASCII码可实现文本显示。

OCMJ中文液晶显示模块采用ASK/ANSWER握手方式。

3、各硬件部分的连接与接口

3.1单片机与直流电机接口部分

电机控制系统组成框图见图3-1。

图3-1电机控制系统组成原理图

根据以上电机的各部分电路的构造原理,我们接下来再考虑电机与单片机接口的通信连接。

在构思设计的同时也要考虑硬件的最大利用率,本次课设可以先在电脑上进行模拟仿真这样就能提高设计的效率以及电路的可行性。

而且在仿真的过程中非常方便进行电路修改又可以达到很好的效果。

因此通过使用Protues对硬件电路精心设计并对该电路进行仿真调试,用脉冲形式代替光电耦合管测取转速,再与单片机进行通信连接,可如下图3-2所示。

图3-2光电耦合器与电机连接

3.2单片机与LCD显示模块通信接口部分

本次课程设计只用到了串行方式进行转速显示。

但是在与单片机相连接线的时候依然把其他的数据引脚连接在单片机的P1端口,具体的接线法可以在P2端口体现如图3-3所示。

仿真的接线法在仿真软件中能够很好的模拟出来,而课设所用的实验箱却是天皇教仪内部已经有固定的焊接点。

对系统进行调试时只有接P1口就行具体接法为引脚CS连接P1.0、引脚STD连接单片机的P1.1、引脚SCLK连接P1.2、引脚PSB连接P1.3、引脚RES连接P1.4。

图3-3显示器引脚与单片机连接

3.3各部分硬件结合原理及构造

各部分硬件连接按照以下原理图3-4。

图3-4硬件连接原理图

其实际的连接接口图如下图3-5。

图3-5各部分硬件结合电路图

4、软件程序设计

设计过程中,只有知道现有的硬件连接才能进行软件设计与调试。

没有硬件的程序是毫无意义的。

因此为了达到课程设计所需的要求,又根据硬件的条件及接线法进行了如下图所示的编写程序步骤。

图4-1主程序流程

图4-2中断程序

图4-3中断程序

图4-4PI算法调用程序图

图4-5中断程序

图4-6软件总体设计流程图

5、系统各部分软件设计的思路

PWM软件实现方式:

方案一:

采用定时器做为脉宽控制的定时方式,这一方式产生的脉冲宽度极其精确,误差只在几个us。

方案二:

采用软件延时方式,这一方式在精度上不及方案一,特别是在引入中断后,将有一定的误差。

但是基于不占用定时器资源,且对于直流电机,采用软件延时所产生的定时误差在允许范围,故采用方案二。

①PWM脉宽控制:

本设计中采用软件延时方式对脉冲宽度进行控制,延时程序函数如下:

voiddelay(unsignedchardlylevel){

inti=50*dlylevel;

while(--i);}

此函数为带参数DLYLEVEL,约产生DLYLEVEL*400us的延时,因此一个脉冲周期可以由高电平持续时间系数hlt和低电平持续时间系数llt组成,本设计中采用的脉冲频率为25Hz,可得hlt+llt=100,占空比为hlt/(hlt+llt),因此要实现定频调宽的调速方式,只需通过程序改变全局变量hlt,llt的值,该子程序流程图如图四。

②中断处理子程序:

采用中断方式,按下键,单片机P3.2脚产生一负跳沿,响应该中断处理程序,完成延时去抖动、键码识别、按键功能执行。

调速档、持续加/减速:

调速档通过(0-6)共七档固定占空比,即相应档位相应改变hlt,llt的值,以实现调速档位的实现。

而要实现按住加/减速键不放时恒加或恒减速直到放开停止,就需在判断是否松开该按键时,每进行一次增加/减少1%占空比(即hlt++/--;llt--/++),其程序流程图如图五。

③显示子程序:

利用数组方式定义显示缓存区,缓存区有8位,分别存放各个LED管要显示的值。

显示子程序为一带参子程序,参数为显示缓存的数组名,通过for(i=0;i<8;i++)方式对每位加上位选码,送到P0口并进行一两毫秒延时。

该显示子程序只对各个LED管分别点亮一次,因此在运行过程中,每秒执行的次数不应低于每秒24次。

 

结论

AT89C51单片机功能强大,方便今后的功能扩展。

通过各种方案的讨论及尝试,再经过多次的整体软硬件结合调试,不断地对系统进行优化。

同时对电动机控制不是一个简单的电子控制问题,它涉及很多方面的知识。

相信单片机在今后的自动控制领域中将有更广阔的应用前景。

相信该系统能成功运用于直流电机转速系统的实时监控,简化控制逻辑系统,而且成本低廉、功能完整、抗干扰性能好。

能成功应用于直流电机转速调节、监控、保护场合,并且监控界面友好,使用方便。

能够对直流电机实行实时监控,不仅大大改善了高速运行时的稳定性,而且还实现了保护功能。

通过实验总结出要自己去摸索实践掌握相关知识。

这样知识才能掌握的牢固,才是真正的学到了。

开始感觉这个课设很难,原因在于自己当初并没有仔细分析各个元器件的工作原理。

比如电位器控制三极管的作用。

刚开始只想到它的开关作用,后来再回去查了查资料才发现自己少想了它还有放大的作用,通过改变集极的电压就可以改变集电极与发射极电压的放大倍数进而改变直流电动机的旋转速度。

对于LCD的相关知识,更是掌握的很差。

我虚心的请教同学,去帮助解决。

经历过程序的几次调试失败之后才明白什么地方出来问题。

在调试过程中我还遇到BCD码的转换问题,刚开始只能显示十六进制,后来向同学请教之后才发现自己对汇编程序中的一个指令字没理解透ADDC。

起初只考虑到加法没想到其还有带进位位相加的作用,又经过几个几番自己的推敲才知道怎么回事了。

真是太大意啊!

但能自己解决问题是最关键的。

经历本次课程设计之后我有很多的收获:

我明白有好的理论不代表能高效的用在实践上,只有通过自己的理解并付诸实践才能掌握,遇到困能时要虚心学习,更要靠自己去努力解决。

因为以后可能没人像在学校老师帮助,只有独自完成。

而且答案可能不只有一种,有了解决的方案时要考虑还有没有其他方案更简便,想得到好的结果,就要反复推敲和实践,想解决问题就必须要能专研,吃苦,有耐心、勤奋、与人团结合作等综合素质。

 

致谢辞

经过一个学期的紧张准备,本次毕业设计在我的导师的悉心指导下顺利完成了,由于时间仓促,难免有许多疏漏之处。

在这里,我要感谢老师,老师在我做毕业设计的每个阶段都给予了我悉心的指导。

除了敬佩老师的专业水平外,他的教学态度和科研精神也是我永远学习的榜样,并将对我今后的学习和工作产生积极的影响。

同时,要感谢大学三年来所有的老师,为我自动化的专业知识打下了坚实的基础,感谢我所有的同学,正是因为有了他们的支持与帮助我才顺利的完成了毕业设计。

 

附录

单片机程序如下:

LENEQU30H;高电平比例初值存放单元

GAODATA31H;高电平存放单元

DIDATA32H;低电平存放单元

GORDBIT20H;高电平或低电平位判断存放单元

ORG0000H

AJMPMAIN

ORG000BH

AJMPDVT0

ORG0030H

MAIN:

MOVLEN,#10

SETBP2.0

CLRP2.2

SETBGORD;置高低电平判断位为1

MOVGAO,LEN;置高电平初值

MOVA,#100;置周期总长值

SUBBA,GAO;求低电平比例值

MOVDI,A;存低电平比例值

MOVTMOD,#01H;置定时器0为定时工作方式1

MOVTH0,#0FEH;赋定时器初值

MOVTL0,#0CH

SETBET0;开定时器0

SETBEA

SETBTR0

LOOP:

AJMPLOOP;等待

DVT0:

PUSHPSW;保护现场

PUSHA

MOVTH0,#0FEH;重新赋初值

MOVTL0,#0CH

MOVA,LEN

CJNEA,#0,PD1;判断高电平比例初值是否为0

CLRP2.1

AJMPDVT2

PD1:

CJNEA,#100,PD2;判断高电平比例初值是否为100

SETBP2.1

AJMPDVT2

PD2:

JNBGORD,DVT1;判断高低电平位是否为0,为0转

DJNZGAO,DVT2;判断高电平是否已完

CLRP2.1;置P2.1为低电平

CLRGORD;置高低电平位为0

MOVGAO,LEN;

MOVA,#100

SUBBA,GAO

MOVDI,A;求低电平比例值

AJMPDVT2

DVT1:

DJNZDI,DVT2;判断低电平是否已完

SETBP2.1;置P2.1为高电平

SETBGORD;置高低电平位为1

MOVGAO,LEN

DVT2:

POPA;恢复现场

POPPSW

RETI;返回中断

中断程序

JI_SHU1DATA42H;中断计数值低位存放单元

JI_SHU2DATA43H;中断计数值高位存放单元

TIMERDATA44H;定时循环次数存放单元

ORG0000H

AJMPMAIN

ORG0013H

AJMPINT1

ORG001BH

AJMPTIMER1

ORG0030H

MAIN:

MOVSP,#60H

MOVJI_SHU1,#00H;计数单元清零

MOVJI_SHU2,#00H

MOVTIMER,#20;置定时循环次数20次

MOVTMOD,#10H;置定时器1为定时工作方式1

MOVTH1,#3CH;置定时初值,定时时间为50ms

MOVTL1,#0B0H

SETBIT1;置中断1为边沿触发方式

SETBET1;开定时开中断

SETBEA

SETBEX1

SETBTR1

LOOP:

AJMPLOOP;等待中断

INT1:

PUSHPSW

INCJI_SHU1;中断计数值低位加1

MOVA,JI_SHU1

CJNEA,#00,INT11;判断是否溢出

INCJI_SHU2;中断计数值高位加1

INT11:

POPPSW;中断返回

RETI

TIMER1:

CLRTR1;关定时器1

MOVTH1,#3CH;重新赋定时器1的初值

MOVTL1,#0B0H

DJNZTIMER,TIMER11;判断定时时间1秒是否已到

CLREX1;关中断1,停止计数

;调用相关的子程序

MOVTIMER,#20;重赋定时循环次数

MOVJI_SHU1,#00H;中断计数单元情零

MOVJI_SHU2,#00H

SETBEX1;重新开中断1

TIMER11:

SETBTR1;重新开定时器1

RETI

 

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

当前位置:首页 > 工程科技 > 能源化工

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

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