电气工程学院 单片机课程设计报告 班 级:电134 姓 名:王*旭 学 号:1312021108 设计题目:直流电机调速系统设计 设计时间:12.22~12.28 评定成绩: 评定教师: 摘要: 近年来,随着科技的进步,电力电子技术得到了迅速的发展,直流电机得到了越来越广泛的应用。直流它具有优良的调速特性,调速平滑、方便,调速范围广;需要能满足生产过程自动化系统各种不同的特殊运行要求,从而对直流电机的调速提出了较高的要求,改变电枢回路电阻调速,改变电枢电压调速等技术已远远不能满足要求,这时通过PWM方式控制直流电机调速的放大应运而生。 本课程设计主要是通过按键调整PWM信号实现直流电机的调速。并实现电路仿真。设计中,采用了AT89C51单片机作为整个控制系统的控制电路的核心部分,配以各种显示、驱动模块,实现对电动机转速的计算和显示。 目录 设计要求 ……………………………………………………… 4 总体方案 ……………………………………………………… 5 硬件设计 ……………………………………………………… 7 软件设计 ……………………………………………………… 8 调试过程 ……………………………………………………… 11 设计总结 ……………………………………………………… 13 其他 ……………………………………………………… 14 直流电机调速控制 实现具有电机速度设定、控制及显示的调速系统,功能及指标如下: 要求电机能进行速度设定,速度调控以及正反转功能 数码管的显示要准确,不可出现异常符号 本设计方案中采用键盘输入,要求绘图连线准确,按键无异常响应 程序应尽可能的模块化,对每个模块的功能及作用进行标注 绘图的功能要全面,连线尽量少交叉,整体美观。 2.1 文献综述 直流电机的调速方法 - 电枢回路串电阻调速:调速平滑性差,低速时损耗大、效率低,串入电阻值越大稳定性越差
- 降低电源电压调速:调速平滑性好,调速前后机械斜率不变稳定性好调速范围广,调速损耗小调速经济性好。
- 改变励磁磁通调速:调节平滑,励磁电流小能量损耗小经济性好,转速稳定。
芯片选择:DA芯片、mc1413芯片、uln2003芯片等等 分析:在直流电机调速方法中,从性能上选择,应选降低电枢电压调速和改变励磁磁通调速。但从实行的难易程度上看应选择降低电源电压调速。 在芯片的选择上,DA芯片、mc1413芯片和uln2003芯片。前者为数字模拟量转换芯片,后两者功能均为放大电压和电流。这三个芯片均可以设计直流电机的调速控制。从成本上考虑,DA芯片价格超后者,后两者功能都较为相似,但ULN2003便宜少许所以选择ULN2003芯片。 2.2 方案设计 本方案基于性价比高的原则来设计。通过按键控制PWM信号占空比控制输入电压的幅值来控制直流电机的转速。使用ULN2003芯片来驱动电机。
按键:按键分为停止键,1~10档位调节,正转反转调节及每个档位上的转速微调 数码管显示转速:由占空比计算得转速并加以显示在数码管上 PWM信号:PWM信号占空比控制输入电压的幅值 ULN2003驱动电路:ULN2003 放大信号 通过H桥电路来驱动电机可正反转 直流电机:被控制对象 单片机:用于接收按键值处理并发出相应的PWM信号以及显示转速在数码管上 三、硬件设计 3.1 电路原理图 3.2 器件选择 考虑单片机无法驱动直流电机所以用了ULN2003这个放大电压的芯片,因为ULN2003最高输出电压为50V完全可以满足所选择电机。且在设计中需要正反转,所以电路选择了H桥电路通过切换输出PWM信号的端口可实现电机的正反转。
F0为输出高电平还是低电平的标志位 JG为定义的数组 JG与JG+1里面分别存储了PWM信号高电平与低电平的次数 FLAG 正反转标志位 IS_BUFF数码管缓冲显示单元首地址 键盘主要是用线反转法,先给列线全赋0,行线全赋1.有行按下,对应行为0,。同理再给列线全赋1,行线全赋0。哪一列为0则为该列按下。由此可得是哪一个键按下 ULN2003:
ULN2003 的每一对达林顿都串联一个2.7K 的基极电阻,在5V 的工作电压下它能与TTL 和CMOS 电路直接相连,可以直接处理原先需要标准逻辑缓冲器来处理的数据。ULN2003 工作电压高,工作电流大,灌电流可达500mA,并且能够在关态时承受50V 的电压,输出还可以在高负载电流并行运行。ULN2003 采用DIP—16 或SOP—16 塑料封装。 它是双列16脚封装,NPN晶体管矩阵,最大驱动电压=50V,电流=500mA,输入电压=5V,适用于TTL COMS,由达林顿管组成驱动电路。 ULN是集成达林顿管IC,内部还集成了一个消线圈反电动势的二极管,它的输出端允许通过电流为200mA,饱和压降VCE 约1V左右,耐压BVCEO 约为36V。用户输出口的外接负载可根据以上参数估算。采用集电极开路输出,输出电流大,故可直接驱动继电器或固体继电器,也可直接驱动低压灯泡。通常单片机驱动ULN2003时,上拉2K的电阻较为合适,同时,COM引脚应该悬空或接电源。 五、调试过程 5.1 软硬件调试 用Proteus跟Keil联调。将Proteus跟Keil设置好以后,先运行写的程序,没有错误后进入DEBUG模式,点击运行Proteus做出响应。 遇到的问题: 在仿真过程中我发现按键电机转速并未有变化。在进行联调后,按下按键,单步运行发现键盘程序始终在按键扫描部分跳转,修改了程序,解决了问题。 5.2 运行效果
电机停转
电机正60转
电机反转150转 六、设计总结 通过本次设计,加强了我对知识的掌握,使我对设计过程有了全面的了解。为了完成这次设计,我查阅了相关资料,学会了许多知识,培养了我独立解决问题的能力。同时在对电路设计的过程中,巩固了我的专业知识,使我受益匪浅。 这次的设计也有不足之处。在测量转速上,我并未用反馈的方法来显示转速,而是通过计算得到转速。这使得转速与真实值有一定的偏差。这主要是因为我一开始所做的准备工作不充分。并未注意到这一部分。这是本次设计给我教训,在以后的工作中一定要对课题做好充分的了解以及准备工作。 参考文献 【1】张毅刚,单片机原理及其应用,高等教育出版社 【2】张毅刚,基于Proteus的单片机课程的基础实验与课程设计,人民邮电出版社 【3】羌予践,电机与电力拖动基础教程,电子工业出版社 【4】谷腰欣司,直流电动机实际应用技巧,科学出版社
单片机源程序如下:
- FLAG BIT 00H ;正反转标志位
- DIS_BUFF EQU 30H ;数码管缓冲显示单元首地址
- JG EQU 40H ;PWM信号占空比数值 & 数码管位选循环次数存储地址
- ORG 0000H
- LJMP MAIN
- ORG 000BH
- LJMP IT0P
- ORG 0100H
- MAIN:MOV SP,#60H
- MOV TMOD,#02H ;T0 方式2
- MOV TL0,#0FEH
- MOV TH0,#0FEH
- MOV JG,#0 ;占空比为0%
- MOV JG+1,#1
- MOV JG+3,#1 ;数码管位选循环1次
- MOV R5,JG
- SETB P2.5 ;输出PWM信号(p2.5为信号输出,将p2.5给p2.7为正转,将p2.5给p2.6为反转)
- SETB F0
- SETB ET0
- SETB EA
- SETB TR0
- LOOP:
- LCALL KEY ;按键扫描
- LCALL DISPLAY;数码管动态显示
- LJMP LOOP
- IT0P:DJNZ R5,PWM0
- JB F0,S_LOW
- SETB P2.5
- SETB F0
- MOV R5,JG
- PWM0:JB FLAG,PWM1;置1为反转,置0为正转
- JB P2.5,S1
- CLR P2.7
- RETI
- S1: SETB P2.7
- RETI
- PWM1:JB P2.5,S2
- CLR P2.6
- RETI
- S2: SETB P2.6
- RETI
-
- S_LOW:CLR P2.5
- CLR F0
- MOV R5,JG+1
-
- EXIT:RETI
- KEY: MOV P1,#0FH ;列线(p1.4~p1.7)为0,行线(p1.0~p1.3)为1
- MOV A,P1
- CJNE A,#0FH,T;检测是否有行按下
- RET
- T: LCALL DELAY ;延时消抖
- CJNE A,#0FH,H0;是否真的有按键按下
- LJMP LOOP
- H0: JB P1.0,H1 ;检测哪一行按下(为0)
- MOV R3,#0
- LJMP L_SCAN
- H1: JB P1.1,H2
- MOV R3,#4
- LJMP L_SCAN
- H2: JB P1.2,H3
- MOV R3,#8
- LJMP L_SCAN
- H3: JB P1.3,L_SCAN
- MOV R3,#12
- L_SCAN:MOV P1,#0F0H;列线(p1.4~p1.7)为1,行线(p1.0~p1.3)为0
- L0: JB P1.4,L1 ;检测哪一行按下(为0)
- MOV R2,#0
- LJMP JS
- L1: JB P1.5,L2
- MOV R2,#1
- LJMP JS
- L2: JB P1.6,L3
- MOV R2,#2
- LJMP JS
- L3: JB P1.7,JS
- MOV R2,#3
- JS: MOV A,R3 ;计算行列值
- ADD A,R2
-
- KEY0:CJNE A,#0,KEY1;关闭电机
- CLR TR0
- SETB P2.5
- MOV JG+3,#1
- MOV DIS_BUFF,#0H
- SETB P2.7
- SETB P2.6
- LJMP LOOP
- KEY1:CJNE A,#1,KEY2;一档30转
- SETB TR0
- MOV JG,#208 ;PWM占空比
- MOV JG+1,#30
- LJMP SCREEN
- KEY2:CJNE A,#2,KEY3;二挡60转
- SETB TR0
- MOV JG,#178
- MOV JG+1,#60
- LJMP SCREEN
- KEY3:CJNE A,#3,KEY4;三挡90转
- SETB TR0
- MOV JG,#148
- MOV JG+1,#90
- LJMP SCREEN
- KEY4:CJNE A,#4,KEY5;四挡110转
- SETB TR0
- MOV JG,#128
- MOV JG+1,#110
- LJMP SCREEN
- KEY5:CJNE A,#5,KEY6;五档130转
- SETB TR0
- MOV JG,#108
- MOV JG+1,#130
- LJMP SCREEN
- KEY6:CJNE A,#6,KEY7;六档150转
- SETB TR0
- MOV JG,#88
- MOV JG+1,#150
- LJMP SCREEN
- KEY7:CJNE A,#7,KEY8;七档170转
- SETB TR0
- MOV JG,#68
- MOV JG+1,#170
- LJMP SCREEN
- KEY8:CJNE A,#8,KEY9;八档190转
- SETB TR0
- MOV JG,#48
- MOV JG+1,#190
- LJMP SCREEN
- KEY9:CJNE A,#9,KEY10;九档210转
- SETB TR0
- MOV JG,#28
- MOV JG+1,#210
- LJMP SCREEN
- KEY10:CJNE A,#10,KEY11;满转(由于关闭T0,手动装入数值显示)
- CLR TR0
- CLR P2.5
- MOV JG+3,#3
- JNB FLAG,MINUS1 ;检测正反转
- MOV JG+3,#4
- MOV DIS_BUFF+3,#0AH
- MINUS1:
- MOV DIS_BUFF,#8H
- MOV DIS_BUFF+1,#3H
- MOV DIS_BUFF+2,#2H
- JB FLAG,PWM3
- CLR P2.7
-
- LJMP LOOP
- PWM3: CLR P2.6
- LJMP LOOP
- KEY11:CJNE A,#11,KEY12
-
- CLR FLAG ;标志位置0 正传
- MOV A,#00H
- LJMP KEY0
- KEY12:CJNE A,#12,KEY13
- SETB FLAG ;标志位置1 反转
- MOV A,#00H
- LJMP KEY0
- KEY13:CJNE A,#13,KEY14 ;微调占空比 增加转速
- CLR C
- SETB TR0
- MOV A,JG+1
- SUBB A,#239
- MOV A,#10
- JNC KEY10
- MOV R0,#JG+1
- INC @R0
- MOV R0,#JG
- DEC @R0
-
- LJMP SCREEN
- KEY14:CJNE A,#14,KEY15 ;微调占空比 减少转速
- CLR C
- SETB TR0
- MOV A,JG+1
- SUBB A,#1
- MOV A,#11
- JC KEY11
- MOV R0,#JG
- INC @R0
- MOV R0,#JG+1
- DEC @R0
-
- LJMP SCREEN
- KEY15:LJMP LOOP
-
- SCREEN:
- MOV A,JG+1 ;计算转速
- MOV B,#64H
- DIV AB
- MOV DIS_BUFF+2,A
- MOV A,B
- MOV B,#0AH
- DIV AB
- MOV DIS_BUFF+1,A
- MOV DIS_BUFF,B
- MOV R1,#33H
-
- LOOP0: MOV DIS_BUFF+3,#00H;计算位选循环次数
- CJNE @R1,#00H,FZ
- DEC R1
- CJNE R1,#2FH,LOOP0
- FZ: JB FLAG,MINUS
- MOV A,R1
- SUBB A,#2FH
- MOV JG+3,A
- LJMP LOOP
- MINUS: INC R1 ;显示负号
- MOV @R1,#0AH
- MOV A,R1
- SUBB A,#2FH
-
- MOV JG+3,A
- LJMP LOOP
- DISPLAY:MOV R1,#DIS_BUFF ;动态显示程序
- MOV R4,JG+3
- MOV B,#10H
- ……………………
- …………限于本文篇幅 余下代码请从51黑下载附件…………
复制代码
所有资料51hei提供下载:
直流电机.rar
(144.85 KB, 下载次数: 112)
|