常熟理工学院
课 程 设 计
题目 基于单片机的直流电机调速系统设计
班 级 ZB02131 学 号 ZB0213109 学 生 姓 名 季顺祥
目 录
摘要.......................................................................1 1总体方案设...............................................................1 2. 硬件电路设计 ............................................................. 2
2.1 单片机最小系统的设计 ................................................ 2
2.1.1 单片机AT89S52 ................................................. 2 2.1.2 复位电路及时钟电路 ............................................. 3 2.2 直流电机驱动电路设计 ................................................ 4 2.3 显示模块设计 ........................................................ 5 2.4 键盘电路设计 ........................................................ 6 3. 软件编程 ................................................................. 6
3.1 PWM波软件设计 ....................................................... 7 3.2 数码管显示设计 ...................................................... 8 4. 系统调试与分析 ........................................................... 8 5. 总结与展望..............................................................10 参考文献 ................................................................... 10 附录1 总体电路图 .......................................................... 11 附录2源程序 ............................................................... 11
基于单片机的直流电机调速系统设计
摘要
本文设计的是基于单片机的直流电机调速系统设计,本系统设计以AT89C51单片机为核心,分成两个模块,一是直流电机控制系统:此系统采用PWM使直流电机以5个弹跳按钮作为输入达到控制直流电机的停止、加速、减速、正转、反转;另一个是转速显示系统:此系统主要实现对转速的计数,并用LED数码管将其结果显示。其中采用采用PWM可以较为简单的对直流电机转速的控制;LED数码管可以准确的将转数显示出来,在实际应用中很方便。
直流电动机具有优良的调速特性,调速平滑,方便,调速范围广,过载能力大,能承受频繁的冲击负载,可实现频繁的无级快速起动、制动和反转;能满足生产过程中自动化系统各种不同的特殊运行要求。电动机调速系统采用微机实现自动控制,是电气传动发展的主要方向之一。采用微机控制后,整个调速系统体积小、结构简单、可靠性高、操作维护方便,电动机稳态运转时转速精度可达到较高水平,静动态各项指标均能较好地满足工业生产中高性能电气传动的要求。
本文介绍了基于单片机的直流电机PWM调速的基本方法,直流电机调速的相关知识以及PWM调速的基本原理和实现方法。重点介绍了基于MCS一51单片机的用软件产生PWM信号以及信号占空比调节的方法。对于直流电机速度控制系统的实现提供了一种有效的途径。
1. 总体方案设计
89C51单片机为核心的直流电机控制系统控制简图如图1所示,由软件转换成PWM 信号,并由P3.0、P3.1输出,经驱动电路输出给电机,从而控制电机得电与失电。软件采用定时中断进行设计。单片机上电后,系统进入准备状态。当按动启动按钮后,根据P3.0为高电平实现电机正转,P3.1为高电平时实现电机反转。根据不同的加减速按钮,调整P3.0/ P3.1输出高低电平时的预定值,从而可以控制P3.0/ P3.1输出高低电平时的占空比,进而控制电压的大小。控制程序应用于电机的加减速。
在电动机驱动信号方面,我们采用了占空比可调的周期矩形信号控制。脉冲频率对电动机转速有影响,脉冲频率高连续性好,但带带负载能力差脉冲频率低则反之。经实验发现,脉冲频率在40Hz以上,电动机转动平稳,但加负载后,速度下降明显,低速时甚至会停转;脉冲频率在10Hz以下,电动机转动有明显跳动现象。实验证明,脉冲频率在15Hz-30Hz时效果最佳。而具体采用的频率可根据个别电动机性能在此范围内调节。通过 P3.0输入高电平信号P3.1输入低电平与P3.0输入低电平P3.1输入信号分别实现电动机的正转与反转功能。通过对信号占空比的调整来对直流电机进行调节。
第 1 页
基于单片机的直流电机调速系统设计
输入模块 AT89C51 显示模块 电源模块 驱动模块 图1 系统硬件框图
2. 硬件电路设计
由单片机硬件设计原理可知:
(1)尽可能采用功能强的芯片,以简化电路;
(2)留有余地。在设计硬件电路时,要考虑到将来修改、扩展的方便。
2.1 单片机最小系统的设计
单片机最小系统:所谓最小系统就是指由单片机和一些基本的外围电路所组成的一个可以工作的单片机系统。一般来说,它包括单片机,晶振电路和复位电路。
2.1.1 单片机AT89C51
AT89C51 8位单片机是MSC-51®系列产品的升级版,有世界著名半导体公司ATMEL在购买MSC-51®设计结构后,利用自身优势技术——(掉电不丢数据)闪存生产技术对旧技术进行改进和扩展,同时使用新的半导体生产工艺,最终得到成型产品。与此同时,世界上其他的著名公司也通过基本的51内核,结合公司自身技术进行改进生产,推广一批如51F020等高性能单片机。
AT89C51片内集成256字节程序运行空间、8K字节Flash存储空间,支持最大64K外部存储扩展。根据不同的运行速度和功耗的要求,时钟频率可以设置在0-33M之间。片内资源有4组I/O控制端口、3个定时器、8个中断、软件设置低能耗模式、看门狗和断电保护。可以在4V到5.5V宽电压范围内正常工作。不断发展的半导体工艺也让该单片机的功耗不断降低。同时,该单片机支持计算机并口下载,简单的数字芯片就可以制成下载线,仅仅几块钱的价格让该型号单片机畅销10年不衰。根据不同场合的要求,这款单片机提供了多种封装,本次设计根据最小系统有时需要更换单片机的具体情况,使用双列直插DIP-40的封装。 AT89C51引脚图如图2所示。
第 2 页
基于单片机的直流电机调速系统设计
图2 AT89C51引脚图
2.1.2 复位电路及时钟电路
复位电路和时钟电路是维持单片机最小系统运行的基本模块。复位电路通常分为两种:上电复位和手动复位,如图3,图4所示。
图3 上电复位 图4 手动复位 有时系统在运行过程中出现程序跑飞的情况,在程序开发过程中,经常需要手动复位。所以本次设计选用手动复位。
高频率的时钟有利于程序更快的运行,也有可以实现更高的信号采样率,从而实现更多的功能。但是告诉对系统要求较高,而且功耗大,运行环境苛刻。考虑到单片机本身用在控制,并非高速信号采样处理,所以选取合适的频率即可。合适频率的晶振对于选频信号强度准确度都有好处,本次设计选取12MHz无源晶振接入XTAL1和XTAL2引脚。并联2个30pF陶瓷电容帮助起振。
最小系统如图5所示。
第 3 页
基于单片机的直流电机调速系统设计
图5 最小系统
2.2 直流电机驱动电路设计
由于单片机P3口输出的电压最高才有5V,难以直接驱动直流电机。所以我们需要使用恒压恒流桥式2A驱动芯片L298N来驱动电机。L298N可接受标准TTL逻辑电平信号VSS,VSS可接4.5~7V电压。4脚VS接电源电压,VS电压范围VIH为+2.5~46V。输出电流可达2.5A,可驱动电感性负载。1脚和15脚下管的发射极分别单独引出以便接入电流采样电阻,形成电流传感信号。L298可驱动2个电动机,OUT1,OUT2和OUT3,OUT4之间可分别接电动机,本实验装置我们选用驱动一台电动机。5,7,10,12脚接输入控制电平,控制电机的正反转。EnA,EnB接控制使能端,控制电机的停转。同时需要加四个二极管在电机的两端,防止电机反转的时候产生强大的冲击电流烧坏电机。具体驱动电路如图6所示。
第 4 页
基于单片机的直流电机调速系统设计
图6 驱动电路
2.3 显示模块设计
在本设计课题中采用的是7段4位共阳极LED数码管,它的引脚图如图7所示。
图7 7段4位共阳极LED数码管引脚图
7SEG-MPX-CA7段LED数码管是利用7个LED(发光二极管)外加一个小数点的LED组合而成的显示设备,7段数码管分共阴和共阳两种显示方式,本设计中采用共阳极显示器。共阳极显示器的发光二极管的阳极连接在一起,当公共阳极接电源+5V时,当某个发光二极管的阴极接低电平时,发光二极管被点亮,相应的段被显示。通常将控制发光二极管发光的8位字节数据编码称为LED显示的段选码,要构成多位LED显示时,除需要段选线外,还需要位选线,以确定段选码对应的显示位
位选线控制第几个LED显示。段选线控制显示字形。
第 5 页
基于单片机的直流电机调速系统设计
2.4 键盘电路设计
正转、反转、急停、加速、减速五个开关分别与单片机的P1.0,P1.1,P1.2,P1.3,P1.4相连,然后再与地相连。急停实现直流电机的停转,正转实现直流电机的正转,反转实现直流电机的反转,加速实现直流电机的加速,减速实现直流电机的减速,其电路如图10所示。
图8 按键电路
3. 软件编程
在单片机系统的程序的设计开发中,单片机就如同整个系统的交通中枢,而程序就是组成交通中枢的条条大道,各个部分的模块化的程序就是整个系统的组成成份。软件编写的好坏,语句运用的是否简洁直接关系单片机的工作效率。在各个模块化的程序中尽量用最少的语句作最多的事情,不让语句出现歧义,这样就可以使整个程序可以在系统中更好的运行,使单片机工作效率大大的提高。
该课题的软件设计采用了模块化设计的思想即将程序划分为若干个相对独立的功能模块,画出每一个功能模块的详细流程图,并根据流程图编写程序,最后按照软件设计的总体结构框图,将各模块连接成一个完整的主程序。
在主程序的设计中要合理地调用各模块程序。模块化设计的优点是:无论是硬件还是软件,每一个模块都相对独立,故能独立地进行设计、研制、调试和修
第 6 页
基于单片机的直流电机调速系统设计
改,从而使复杂的工作得以简化。模块之间的相互独立也有助于研制任务的分解和设计人员之间的分工合作,这样可提高工作效率和仪表的研制速度。
本利用P3口,编制程序输出一串脉冲,经放大后驱动直流电机,改变输出脉冲的电平的持续时间,达到使电机正转、反转、加速、减速、停转等目的[10-11]。由软件编程从P3.0/P3.1管脚产生PWM 信号,经驱动电路输出给电机,从而控制电机得电与失电。软件采用延时法进行设计。单片机上电后,系统进入准备状态。 当按动启动按钮后,根据P3.0为高电平时实现电机正转,P3.1为高电平时实现电 机反转。根据不同的加减速按钮,调整P3.0/ P3.1输出高低电平时的占空比,从而可以控制P3.0/ P3.1输出高低电平时的有效值,进而控制电机的加减速。
其总体流程图如图9所示
是否有键按下 LED显示占空比 开始 键盘扫面 N
Y
正转 反转 急停 加速 减速 图9 软件总体流程图
3.1 PWM波软件设计
通过控制总中断使能EA控制电机的开关,同时使能对红外对接头输出的方波在单位时间内脉冲个数的计数。其中定时器T0,T1分别对脉冲的宽度、红外对接头输出的脉冲数对应的1秒时间定时。对脉冲宽度的调整是通过改变高电平的定时长度,由变量high控制。变量swap、 sub_speed 、add_speed分别实现电机的转向、加速、减速。
程序流程图如图10所示。
第 7 页
基于单片机的直流电机调速系统设计
开始 数据初始化 Add/Sub/Swap是否按下 Y 调整PWM波占空比/转向 Close是否按下 Y 电机停止转动 结束
图10 PWM流程图
N N 3.2 数码管显示设计
检测按键,将转速通过数码管显示出来,并根据数据的变化,变化显示。 流程图如图11。
4. 系统调试与分析
系统的硬件、软件独调和系统调试是系统最后的步骤也是系统特别重要的环节,因为设计和开发出的系统是否成功,功能是否完善只有在这里才能显现出来。所以为了保证设计系统能够正常工作,必须对软件和硬件部分的每一个部分进行调试和分析。本章详细的介绍了软件调试和软硬联调的过程,并对调试结果进行了介绍和分析。
第 8 页
基于单片机的直流电机调速系统设计
结束 图11 数码管显示流程图
数据显示 Y 按键释放检测 是否有键按下 Y N N 数据初始化 开始 本次设计采用的是keil仿真器进行软件调试,此系统可以开发应用软件,以及对硬件电路进行诊断、调试等。它的具体功能是可以进行CPU仿真,可以单步、跟踪、断点和全速运行,而且,程序的编译过程中,可以对设计软件进行自诊断,并自动给出故障原因。同时用户调试程序时,可以通过窗口观察寄存器的工作状况,以便及时发现和排除编程中可能出现的错误。
软件的调试是利用keil软件,模块化调试,通过观察存储单元数据的变化,查找并解决程序的语法和逻辑错误,具体的调试步骤如下:
1. 把系统的各个模块在仿真软件中逐个调试,如信号灯模块、显示模块等。 2. 对各个需要赋值模块调试时,赋入初值,单步调试,观察数据窗口,看输出结果是否为设计时想要的结果。
3. 把各个模块组合起来,全速运行,看程序是否能流畅的,是否能实现设计的系统的所有功能。
第 9 页
基于单片机的直流电机调速系统设计
5. 总结与展望
该课题的主要任务是设计一个以89C52单片机为核心的直流电机调速系统。通过联调,实验验证了系统的可行,能满足设计要求,达到设计的指标,最后实现了对转速的控制和LED显示转速。这个开发过程主要包括了硬件电路仿真设计和软件编程两个部分。从确定课设题目,到查阅质料确定总体方案设计,硬件电路仿真的设计,硬件电路的优化,软件的设计,软件的优化,检验仿真电路,调试软件程序,到最后的软硬件联调,其中的每一个过程都是精心设计、仔细完成的。
经过一个礼拜的努力,通过此次课程设计的训练,我深刻的体会到单片机技术是一门工程特点和实践性很强的学科。刚刚拿到题目时我觉得很难,根本无从下手,但是经过老师的指导以及多方面查询资料,我终于得出了方案,完成了这次课程设计。
这次课程设计给我们提供了一个应用自己所学知识的机会,从到图书馆查找资料到对仪器的设计、调试,再到最后的成型,都对我所学的知识进行了检验。不仅使学过的知识得到了巩固与复习,同时也锻炼了我们使用仪器和计算机辅助软件的技能。但更重要的是把理论知识与实际联系在了一起,加强了思考问题的的完整性和可行性,锻炼了我的思考能力和动手能力。使学习变成了一种乐趣,使知识形象具体地被掌握。同时也为作好毕业设计做好准备工作。
在这里首先要感谢我的老师。老师平日里工作繁多,但在我做课程设计的时期,一直关心我的论文进展,从设计草案的确定和修改,中期检查,后期详细设计等整个过程中都给予了我很大的关心。
参考文献
[1] 刘复华. 单片机及其应用系统. 北京:清华大学出版社,1992 [2] 周坚. 单片机C语言轻松入门.北京:航空航天大学出版社,2006 [3] 侯玉宝,陈忠平. 基于Proteus51系列单片机设计与仿真. 北京:电子工业出版社,2008
[4] 戴佳,苗龙,陈斌. 51单片机应用系统开发典型实例. 北京:中国电力出版社,2005
[5] 张琛.直流无刷电动机原理及应用[M],北京:北京机械工业出版社,1996.
[6] 袁淑芬.实现直流无刷电动机调速控制的一种新型方法[J],长春理工大学学报,2009,Vol.25,NO.1:113-115.
第 10 页
基于单片机的直流电机调速系统设计
附录1 总体电路图
附录2 源程序
#include
#define unchar unsigned char #define unint unsigned int
unsigned char code dispcode[]= {0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8, 0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x84,0xff,0xbf}; //显示代码 unsigned char dispbitcode[]={0xfe,0xfd,0xfb,0xf7}; //位选口 unsigned char dispbuf[4]={0,0,0,0}; unsigned char dispbitcnt; unint mstcnt; unint i;
unint count=0; unchar tp=0;
sbit P3_0=P3^0; sbit P3_1=P3^1; sbit P3_7=P3^1;
void ledshow(); void keyscan(); void delay();
第 11 页
基于单片机的直流电机调速系统设计
void just(); void turn();
void motorstop(); void speedup(); void speeddown();
void main(void) {
P3_0=1; P3_1=0;
dispbuf[0]=16; TMOD=0x02;
TH0=0x06; // 定时时间250us TL0=0x06; TR0=1; ET0=1; EA=1; while(1) { ledshow();//数码管显示 keyscan();//键盘扫描 } }
void delay()//延时10ms程序 {
unsigned char i,j; for(i=20;i>0;i--) for(j=248;j>0;j--); }
void keyscan()//键盘扫描程序 { unchar temp=0; P1=0xff; if((P1&0x1f)!=0x1f)//选低5位 { delay(); if((P1&0x1f)!=0x1f) { temp=P1&0x1f;//屏蔽高3位 switch(temp) { case 0x1e:
第 12 页
基于单片机的直流电机调速系统设计
just();break; //正转 case 0x1d: turn();break;//反转 case 0x1b: motorstop();break; //停止 case 0x17: speedup();break; //加速 case 0x0f: speeddown();break;//减速 } } } while((P1&0x1f)!=0x1f); }
void ledshow()//数码管显示程序 {
P2=0x01;P0=dispcode[dispbuf[0]]; for(i=0;i<700;i++);
P2=0x02;P0=dispcode[dispbuf[1]]; for(i=0;i<700;i++);
P2=0x04;P0=dispcode[dispbuf[2]]; for(i=0;i<700;i++);
P2=0x08;P0=dispcode[dispbuf[3]]; for(i=0;i<700;i++); dispbuf[1]=tp/100; dispbuf[2]=(tp%100)/10; dispbuf[3]=tp%10; }
void t0(void) interrupt 1 using 0//中断服务程序 {
if(count>100) count=0; if(count>tp) P3_7=0; else P3_7=1;
第 13 页
基于单片机的直流电机调速系统设计
count++; }
void just() //正转 { P3_0=1; P3_1=0; dispbuf[0]=16; }
void turn() //反转 { P3_0=0; P3_1=1; dispbuf[0]=17; }
void motorstop() //停止 { tp=0; }
void speedup() { if(tp>99) tp=100; else tp++; }
void speeddown() { if(tp<1) tp=0; else tp--; }
第 14 页
因篇幅问题不能全部显示,请点此查看更多更全内容
怀疑对方AI换脸可以让对方摁鼻子 真人摁下去鼻子会变形
女子野生动物园下车狼悄悄靠近 后车司机按喇叭提醒
睡前玩8分钟手机身体兴奋1小时 还可能让你“变丑”
惊蛰为啥吃梨?倒春寒来不来就看惊蛰
男子高速犯困开智能驾驶出事故 60万刚买的奔驰严重损毁