单片机控制直流电机分解.docx
《单片机控制直流电机分解.docx》由会员分享,可在线阅读,更多相关《单片机控制直流电机分解.docx(13页珍藏版)》请在冰豆网上搜索。
单片机控制直流电机分解
1.设计思路
1.1方案对比
1.1.1电机调速控制模块:
方案一:
采用电阻网络或数字电位器调整电动机的分压,从而达到调速的目的。
但是电阻网络只能实现有级调速,而数字电阻的元器件价格比较昂贵。
更主要的问题在于一般电动机的电阻很小,但电流很大;分压不仅会降低效率,而且实现很困难。
方案二:
采用继电器对电动机的开或关进行控制,通过开关的切换对小车的速度进行调整。
这个方案的优点是电路较为简单,缺点是继电器的响应时间慢、机械结构易损坏、寿命较短、可靠性不高。
方案三:
采用由达林顿管组成的H型PWMfe路。
用单片机控制达林顿管使之工作在占空比可调的开关状态,精确调整电动机转速。
这种电路由于工作在管子的饱和截止模式下,效率非常高;H型电路保证了可以简单地实现转速和方向的控制;电子开关的速度很快,稳定性也极佳,是一种广泛采用的PWM调速技术。
兼于方案三调速特性优良、调整平滑、调速范围广、过载能力大,因
此本设计采用方案三。
1.2.1PWM调速工作方式:
方案一:
双极性工作制。
双极性工作制是在一个脉冲周期内,单片机两控制口各输出一个控制信号,两信号高低电平相反,两信号的高电平时差决定电动机的转向和转速。
方案二:
单极性工作制。
单极性工作制是单片机控制口一端置低电平,另一端输出pwM信号,两口的输出切换和对pw啲占空比调节决定电动机的转向和转速。
由于单极性工作制电压波开中的交流成分比双极性工作制的小,其电流的最大波动也比双极性工作制的小,所以我们采用了单极性工作制。
1.2.2pWM调脉宽方式:
调脉宽的方式有三种:
定频调宽、定宽调频和调宽调频。
我们采用了定频调宽方式,因为采用这种方式,电动机在运转时比较稳定;并且在采用单片机产生pWM脉冲的软件实现上比较方便。
1.2.3pWM软件实现方式:
方案一:
采用定时器做为脉宽控制的定时方式,这一方式产生的脉冲宽度极其精确,误差只在几个us。
方案二:
采用软件延时方式,这一方式在精度上不及方案一,特别是在引入中断后,将有一定的误差。
但是基于不占用定时器资源,且对于直流电机,采用软件延时所产生的定时误差在允许范围,故采用方案二。
2.机控制直流电机部分的硬件设计
2.1直流电机组成原理
直流电动机结构由定子和转子两大部分组成。
直流电机运行时静止不
动的部分称为定子,定子的主要作用是产生磁场,由机座、主磁极、换向
极、端盖、轴承和电刷装置等组成。
运行时转动的部分称为转子,其主要作用是产生电磁转矩和感应电动势,是直流电机进行能量转换的枢纽,所以通常又称为电枢,由转轴、电枢铁心、电枢绕组、换向器和风扇等组成。
直流电动机的结构是由直流电源、直流电机、控制开关和调速器组成。
直流发电机的工作原理就是把电枢线圈中感应的交变电动势,靠换向器配合电刷的换向作用,使之从电刷端引出时变为直流电动势的原理。
感应电动势的方向按右手定则确定其工作原理不外乎就是用直流电源作为能量来驱动电机旋转。
通过对三极管的截止与导通进行控制,使其起到开、关和调速的作用。
具体的操作为当直流电动机接上直流电源时,使用电位器旋转按钮控制三极管集极的电压。
如直流电机
控制原理图2-3
图2-3直流电机控制原理
1、当三极管的集极电压小于死区电压时三极管截止,则电动机不转动;
2、当集极电压大于死区电压而小于饱和电压时三极管处于放大状态,随着
集极电压改变,从而改变了直流电动机两端的压降也就改变了电机的转速。
具体原理为集极的电压大小不一样,三极管的电压放大倍数也不一样从而起到调速作用改变直流电动机的旋转速度。
2.2直流电机调速方案的设计
直流电动机的转速控制方法可以分为2大类:
对励磁磁通进行控制的励磁控制法和对电枢电压进行控制的电枢电压法。
其中励磁控制法在低速时受磁饱和的限制,在高速时受换向火花和换向器件结构强度的限制。
并且励磁线圈电感较大,动态性能响应较差,所以这种控制方法用的很少,多使用电枢控制法。
本设计将采用电枢控制方法对电动机的速度和转向进行控制。
电机调速控制模块的方案假设:
直流电机转速调节:
某些场合往往要求直流电机的转速在一定范围内可调节,例如,电车、机床等,调节范围根据负载的要求而定。
调速可以有三种方法:
(1)改变电机两端电压;
(2)改变磁通;(3)在电枢回路中,串联调节电阻。
采用第一种方法:
通过改变施加于电机两端的电压大小达到调节直流电机转速的目的。
2.3直流电机测速方案的设计测速电路由附在电机转子上的光电编码盘及施密特整形电路组成。
电脉冲的频率与电机的转速成固定的比例关系,光码盘输出的电脉冲信号经放大整形为标准的TTL电平,输入到单片机的两个外部中断:
INTO和INT1,利用单片机内部定时器/计数器TO和T1,以及内部一个寄存器作软计数器,循环地捕捉相邻两次速度脉冲,并由这两次触发所记录的时间差算出其转速,再将这个转速与预置转速进行比较,得出差值,单片机通过对这个差值进行PI运算,得出控制增量,在P010〜P013引脚送出控制信号改变PW波形发生电路的占空比,最终达到控制电机转速的目的。
2.4PWM产生与控制部分方案的设计
1.PWM波形发生电路
由于测速中占用了两个定时器TO和T1,如果再将PWM波形产生交给AT89C51则会加大软件的任务,并且影响整个系统的控制效果。
因此这里考虑单独设计一个PWM波形发生电路,单片机对它只提供控制参数以改变其占空比。
2.5LCD显示部分方案的设计
1.课设所用LCD模块概述
模块SMC1602B由一块点阵液晶屏和控制器HD44780及其辅助电路组成。
本系统设计
采用OCMJ中文模块系统LCD液晶作为下位机的显示模块。
该模块内含GB231216X16点
阵国标一级简体汉字和ASCII8X8(半高)及8X16(全高)点阵形英文字库,用户输入区位码或ASCII码可实现文本显示。
OCMJ中文液晶显示模块采用ASK/ANSWER握手方式。
3.各硬件部分的连接与接口
3.1单片机与直流电机接口部分
电机控制系统组成框图见图3-1
励磁电路
图3-1电机控制系统组成原理图
图3-3触发电路原理
根据以上电机的各部分电路的构造原理,我们接下来再考虑电机与单片机接口的通信连接。
在构思设计的同时也要考虑硬件的最大利用率,本次课设可以先
在电脑上进行模拟仿真这样就能提高设计的效率以及电路的可行性。
而且在仿真
的过程中非常方便进行电路修改又可以达到很好的效果。
因此通过使用Protues
对硬件电路精心设计并对该电路进行仿真调试,用脉冲形式代替光电耦合管测取
转速,再与单片机进行通信连接,可如下图3-4所示。
图3-4光电耦合器与电机连接
3.2各硬件部分的连接与接口
本次课程设计只用到了串行方式进行转速显示。
但是在与单片机相连接线的
时候依然把其他的数据引脚连接在单片机的P1端口,具体的接线法可以在P2
端口体现如图3.5所示。
仿真的接线法在仿真软件中能够很好的模拟出来,而课
设所用的实验箱却是天皇教仪内部已经有固定的焊接点。
对系统进行调试时只有接P1口就行具体接法为引脚CS连接P1.0、引脚STD连接单片机的P1.1、引脚SCLK连接P1.2、弓I脚PSB连接P1.3、弓I脚RES连接P1.4。
图3-5显示器引脚与单片机连接
3.3各部分硬件结合原理及构造
各部分硬件连接按照以下原理图3-6
图3-6硬件连接原理图其实际的连接接口图如下图3-7
图3-7各部分硬件结合电路图
设计过程中,只有知道现有的硬件连接才能进行软件设计与调试。
没有硬件
的程序是毫无意义的。
因此为了达到课程设计所需的要求,又根据硬件的条件及接线法进行了如图4-6所示的编写程序步骤。
4.软件程序设计
4.1主程序流程
读取継值
*_开外部中断
光电耦合测取速度
BCD码转换
LCD显示速度
图4.1软件总体设计流程图
4.2系统各部件软件
PWM软件实现方式:
方案一:
采用定时器做为脉宽控制的定时方式,这一方式产生的脉冲宽度极其精确,误差只在几个us。
方案二:
采用软件延时方式,这一方式在精度上不及方案一,特别是在引入中断后,将有一定的误差。
但是基于不占用定时器资源,且对于直流电机,采用软件延时所产生的定时误差在允许范围,故采用方案二。
1PWM脉宽控制:
本设计中采用软件延时方式对脉冲宽度进行控制,延时程序函数如下:
voiddelay(unsignedchardlylevel){
inti=50*dlylevel;
while(--i);}
此函数为带参数DLYLEVEL,约产生DLYLEVEL*400us的延时,因此一个脉冲周期可以由高电平持续时间系数hit和低电平持续时间系数lit组成,本设计中采用的脉冲频率为25Hz,可得hlt+llt=100,占空比为hlt/(hlt+llt),因此要实现定频调宽的调速方式,只需通过程序改变全局变量hlt,llt的值,该子程序流程图如图四。
2中断处理子程序:
采用中断方式,按下键,单片机P3.2脚产生一负跳沿,
响应该中断处理程序,完成延时去抖动、键码识别、按键功能执行。
调速档、持续加/减速:
调速档通过(0-6)共七档固定占空比,即相应档位相应改变hlt,llt的值,以实现调速档位的实现。
而要实现按住加/减速键不放时恒加或恒减速直到放开停止,就需在判断是否松开该按键时,每进行一次增加/减少1%占空比(即hlt++/--;llt--/++),其程序流程图如图五。
3显示子程序:
利用数组方式定义显示缓存区,缓存区有8位,分别存放各个LED管要显示的值。
显示子程序为一带参子程序,参数为显示缓存的数组名,通过for(i=0;i<8;i++)方式对每位加上位选码,送到P0口并进行一两毫秒延时。
该显示子程序只对各个LED管分别点亮一次,因此在运行过程中,每秒执行的次数不应低于每秒24次
5.课设总结
AT89C51单片机功能强大,方便今后的功能扩展。
通过各种方案的讨论及尝试,再经过多次的整体软硬件结合调试,不断地对系统进行优化。
同时对电动机控制不是一个简单的电子控制问题,它涉及很多方面的知识。
相信单片机在今后的自动控制领域中将有更广阔的应用前景。
相信该系统能成功运用于直流电机转速系统的实时监控,简化控制逻辑系统,而且成本低廉、功能完整、抗干扰性能好。
能成功应用于直流电机转速调节、监控、保护场合,并且监控界面友好,使用方便。
能够对直流电机实行实时监控,不仅大大改善了高速运行时的稳定性,而且还实现了保护功能。
通过实验总结出要自己去摸索实践掌握相关知识。
这样知识才能掌握的牢固,才是真正的学到了。
开始感觉这个课设很难,原因在于自己当初并没有仔细分析各个元器件的工作原理。
比如电位器控制三极管的作用。
刚开始只想到它的开关作用,后来再回去查了查资料才发现自己少想了它还有放大的作用,通过改变集极的电压就可以改变集电极与发射极电压的放大倍数进而改变直流电动机的旋转速度。
对于LCD的相关知识,更是掌握的很差。
我虚心的请教同学,去帮助解决。
经历过程序的几次调试失败之后才明白什么地方出来问题。
在调试过程中我还遇到BCD码的转换问题,刚开始只能显示十六进制,后来向同学请教之后才发现自己对汇编程序中的一个指令字没理解透ADDC。
起初只考虑到加法没想到其还有带进位位相加的作用,又经过几个几番自己的推敲才知道怎么回事了。
真是太大意啊!
但能自己解决问题是最关键的。
经历本次课程设计之后我有很多的收获:
我明白有好的理论不代表能高效的用在实践上,只有通过自己的理解并付诸实践才能掌握,遇到困能时要虚心学习,更要靠自己去努力解决。
因为以后可能没人像在学校老师帮助,只有独自完成。
而且答案可能不只有一种,有了解决的方案时要考虑还有没有其他方案更简便,想得到好的结果,就要反复推敲和实践,想解决问题就必须要能专研,吃苦,有耐心、勤奋、与人团结合作等综合素质。
参考文献
[1]冯文旭,单片机原理及应用,高等教育出版社,2008-08-01
[2]史步海,特种电动机调整控制技术及应用,华南理工,2010-03-01
[3]谭浩强,C程序设计,清华大学出版社,2010年6月1日
[4]胡幸鸣,电机及拖动基础,机械工业出版社,2010-3-1
[5]郭天祥,AltiumDesigner6.9PCB设计教程
附录I
单片机程序如下:
LENEQU30H
GAODATA31HDIDATA32H
GORDBIT20HORG0000H
;高电平比例初值存放单元
;高电平存放单元
;低电平存放单元
;高电平或低电平位判断存放单元
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:
JNBG0RDQVT1;判断高低电平位是否为0,为0转
DJNZGAO,DVT2;判断高电平是否已完
CLRP2.1;置P2.1为低电平
CLRGORD;置高低电平位为0
MOVGAO,LEN;
MOVA,#100
SUBBA,GAOMOVDI,A;求低电平比例值
AJMPDVT2
DVT1:
DJNZDI,DVT2;判断低电平是否已完SETBP2.1;置P2.1为高电平SETBGORD;置高低电平位为1MOVGAO,LEN
DVT2:
POPA;恢复现场
POPPSW
RETI;返回中断
中断程序
JI_SHU1DATA42HJI_SHU2DATA43HTIMERDATA44HORG0000H
AJMPMAINORG0013HAJMPINT1ORG001BH
AJMPTIMER1ORG0030HMAIN:
MOVSP,#60H
MOVJI_SHU1,#00H
MOVJI_SHU2,#00H
MOVTIMER,#20
MOVTMOD,#10H
MOVTH1,#3CH
MOVTL1,#0B0HSETBIT1SETBET1SETBEASETBEX1SETBTR1LOOP:
AJMPLOOPINT1:
PUSHPSW
INCJI_SHU1
MOVA,JI_SHU1CJNEA,#00,INT11INCJI_SHU2
;中断计数值低位存放单元
;中断计数值高位存放单元
;定时循环次数存放单元
;计数单元清零
;置定时循环次数20次
;置定时器1为定时工作方式1
;置定时初值,定时时间为50ms
;置中断1为边沿触发方式;开定时开中断
;等待中断
;中断计数值低位加1
;判断是否溢出
;中断计数值高位加1
INT11:
POPPSW
;中断返回
RETI
DJNZTIMER,TIMER11;判断定时时间1秒是否已到
CLREX1;关中断1,停止计数
;调用相关的子程序
MOVTIMER,#20;重赋定时循环次数
MOVJI_SHU1,#00H;中断计数单元情零
MOVJI_SHU2,#00H
SETBEX1;重新开中断1
TIMER11:
SETBTR1;重新开定时器1
RETI