资源描述
XX大学
课 程 设 计
(论文)
题目 直流电机控制系统设计
班 级
学 号
学 生 姓 名
指 导 教 师
沈阳航空航天大学
课 程 设 计 任 务 书
课 程 名 称 专业基础课程设计
院(系) 自动化学院 专业 测控技术和仪器
班级 学号 姓名
课程设计题目 直流电机控制系统设计
课程设计时间: 7 月 9 日至 7 月 20 日
课程设计内容及要求:
1.内容
利用51单片机开发板设计并制作一个直流电机控制系统。系统能够实时控制电机正转、反转、开启、停止、加速、减速等。
2.要求
(1) 掌握直流电机工作原理及编程方法。
(2) 掌握直流电机驱动电路设计方法。
(3) 制订设计方案,绘制系统工作框图,给出系统电路原理图。
(4) 用汇编或C语言进行程序设计和调试。
(5)完成系统硬件电路设计。
(6)撰写一篇7000字左右课程设计汇报。
指导老师 年 月 日
负责老师 年 月 日
学生签字 年 月 日
目 录
0 序言 1
1 总体方案设计 2
1.1 系统方案 2
1.2 系统组成 2
1.3 电路工作原理 2
1.4 方案选择 3
2 硬件电路设计 3
2.1 系统分析和硬件设计 3
2.2 单片机AT89C52 3
2.3 复位电路和时钟电路 4
2.4 直流电机驱动电路设计 4
2.5 键盘电路设计 4
3 软件设计 5
3.1 应用软件编制和调试 5
3.2 程序总体设计 5
3.3 仿真图形 7
4 调试分析 9
5 结论及深入设想 9
参考文件 10
课设体会 11
附录1 电路原理图 12
附录2 程序清单 13
直流电机调速系统设计
XXX XX大学自动化学院
摘要:本篇论文介绍了基于单片机直流电机PWN调速基础措施,直流电机调速相关知识和PWM调速基础原理和实现方法。关键介绍了基于MCS-51单片机用软件产生PWM信号和信号占空比调整方法。对于直流电机速度控制系统实现提供了一个有效路径。
直流电动机含有优良调速特征,调速平滑,方便,调速范围广,过载能力大,能承受频繁冲击负载,可实现频繁无级快速起动、制动和反转;能满足生产过程中自动化系统多种不一样特殊运行要求。电动机调速系统采取微机实现自动控制,是电气传动发展关键方向之一。采取微机控制后,整个调速系统体积小,结构简单、可靠性高、操作维护方便,电动机稳态运转时转速精度可达成较高水平,静动态各项指标均能很好地满足工业生产中高性能电气传动要求。
关键词:单片机最小系统 ;PWM ;直流电机调速;
0 序言
电动机作为最关键机电能量转换装置, 其应用范围已遍布国民经济各个领域和大家日常生活。不管是在工农业生产,交通运输,国防,航空航天,医疗卫生,商务和办公设备中,还是在日常生活家用电器和消费电子产品(如电冰箱,空调,DVD等)中,全部大量使用着多种多样电动机。据资料显示,在 全部动力资源中,百分之九十以上来自电动机。一样,中国生产电能中有百分之六十是用于电动机。电动机和人生活息息相关,密不可分。电气时代,电动机调速控制通常采取模拟法,对电动机简单控制应用比较多。简单控制是指对电动机进行开启,制动,正反转控制和次序控制。然而多年来,伴随技术发展和进步,和市场对产品功效和性能要求不停提升,直流电动机应用愈加广泛,尤其是在智能机器人中应用。直流电动机起动和调速性能、过载能力强等特点显得十分关键,为了能够适应发展要求,单闭环直流电动机调速控制系统得到了很大发展。而作为单片嵌入式系统关键—单片机,正朝着多功效、多选择、高速度、低功耗、低价格、大存放容量和强I/O功效等方向发展。伴随计算机档次不停提升,功效不停完善,单片机已越来越广泛地应用在多种领域控制、自动化、智能化等方面,尤其是在直流电动机调速控制系统中。这是因为单片机含有很多优点:体积小,功效全,抗干扰能力强,可靠性高,结构合理,指令丰富,控制功效强,造价低等。所以选择单片机作为控制系统关键以提升整个系统可靠性和可行性。
1 总体方案设计
1.1 系统方案
针对本课题设计任务,进行分析得到:此次课程设计以AT89C52单片机为关键,以5个弹跳按钮作为输入端,达成控制直流电机正转、反转、停止、加速、减速。在设计中,采取PWM技术对电机进行控制。
1.2 系统组成
该直流电机控制系统设计,在总体上大致可分为以下5个部分组成:输入模块,AT89C52单片机,电源模块,驱动模块,直流电机。
系统原理框图图1所表示。
AT89C52
输入模块
电源模块
驱动模块
直流电机
图1 系统原理框图
1.3 电路工作原理
依据励磁方法不一样,直流电机分为自励和她励两种类型。不一样励磁方法直流电机机械特征曲线有所不一样。对于直流电机来说,认为机械特征方程式为:
n=UN/(KeφN)-(Rad+Ra)/(KeKtφ2N)T=n-△n (公式 1-1)
式中UN ,φN ----------额定电枢电压、额定磁通量;
Ke ,Kt---和电机相关常数;
Rad ,Ra-----电枢外加电阻、电枢内电阻;
n ,△n—理想空载转速、转速降。
分析 公式 1-1 可得,当分别改变UN 、φN 和Rad时,能够得到不一样转速n,从而实现对速度调整。因为φ=T,当改变励磁电流If时,能够改变磁通量φ大小,从而达成变磁通调速目标。但因为励磁线圈发烧和电动机磁饱和限制,电动机励磁电流If和磁通量φ只能在低于其额定值范围内调整,故只能弱磁调速。而对于调整电枢外加电阻Rad时,会使机械特征变软,造成电机带负载能力减弱。
PWM是经过控制固定电压直流电源开关频率,从而改变负载两端电压,进而达成控制要求一个电压调整方法。PWM能够应用在很多方面,如电机调速、温度控制、压力控制等。在PWM驱动控制调整系统中,按一个固定频率来接通和断开电源,并依据需要改变一个周期内“接通”和“断开”时间长短。经过改变直流电机电枢上电压“占空比”来改变平均电压大小,从而控制电动机转速。所以,PWM又被称为“开关驱动装置”。在脉冲作用下,当电机通电时,速度增加;电机断电时,速度逐步降低。只要按一定规律,改变通、断电时间,即可让电机转速得到控制。当我们改变占空比时,能够得到不一样电机平均速度,从而达成调速目标。
1.4 方案选择
方案一:采取电阻网络或数字电位器调整电动机分压,从而达成调速目标。不过电阻网络智能实现有级调速,而数字电阻元器件价格比较昂贵。更关键问题在于通常电动机电阻很小,但电流很大,分压不仅会降低效率,而且实现起来很困难。
方案二:采取继电器对电动机开或关进行控制,经过开关切换对电机速度进行调整。这个方案优点是电路较为简单,缺点是继电器响应时间慢、机械结构轻易损坏、寿命较短、可靠性不高。
方案三:采取驱动芯片L298驱动直流电机,L298含有驱动能力强,外围电路简单等优点。
综合各方面原因,采取了方案三。
2 硬件电路设计
2.1 系统分析和硬件设计
键盘向单片机数日对应控制指令,由单片机经过P3.0和P3.1其中一口输出和转速对应PWM脉冲,另一口输出低电平,经过信号放大,驱动电动机来控制电路,实现电动机转向和转速控制。
2.2 单片机AT89C52
采取AT89C52是MSC-51系列单片机升级版,由世界著名半导体企业ATMEL在购置MSC-51设计结构后,利用本身优势技术———闪存生产技术对旧技术进行改善和扩展,同时使用新半导体生产工艺,最终得到成型产品。和此同时,世界上其它著名企业也经过基础51内核,结合企业本身技术进行改善生产,推广了一批如51F020等高性能单片机。
AT89C52片内集成256字节程序运行空间,8K字节Flash存放空间,支持最大64k外部存放扩展。依据不一样运行速度和功耗要求,时钟频率能够设置在0-33M之间。片内资源有4组I/O控制端口、3个定时器、8个中止、软件设置低耗能模式、看门狗和断电保护。能够在4V到5.5V宽电压范围内正常工作。不停发展半导体工艺也让该单片机功耗不停降低。同时,该单片机支持计算机并口下载,简单数字芯片就能够制成下载线,仅仅几块钱价格让该型号单片机畅销不衰。依据不一样场所要求,这款单片机提供了多个封装,此次设计依据最小系统有时需要更换单片机具体情况,使用双列直插PID-40封装。
2.3 复位电路和时钟电路
复位电路和时钟电路是维持单片机最小系统运行基础模块,复位电路通常分为两种:上电复位和手动复位。
有时系统在运行过程中出现程序跑飞情况,在程序开发过程中,常常需要手动复位,所以此次设计选择手动复位。
2.4 直流电机驱动电路设计
因为单片机P3口输出电压最高才有5V,难以直接驱动直流电机。所以我们需要使用恒压恒流桥式2A驱动芯片L298来驱动电机。L298可接收标准TTL逻辑电平信号,可接4.5~7V电压。4脚接电源电压,电压范围+2.5~46V。输出电流可达2.5A,可驱动电感性负载。1脚和15脚下管发射极分别单独引出方便接入电流采样电阻,形成电流传感信号。L298可驱动2个电动机,OUT1,OUT2和OUT3,OUT4之间可分别接电动机。本设计我们选择驱动一台电动机。5,7,10,12脚接输入控制电平,控制电机正反转。同时需要加四个二极管在电机两端,预防电机反转时候产生强大冲击电流烧坏电机。具体驱动电路以下:
图2 驱动电路
2.5 键盘电路设计
正转、反转、停止、加速、减速五个开关分别和单片机P1.0,P1.1,P1.2,P1.3,P1.4相连,然后再和地相连。正转实现直流电机正转,反转实现直流电机反转,停止实现直流电机停转,加速实现直流电机加速,减速实现直流电机减速,具体键盘电路以下:
图3 键盘电路
3 软件设计
3.1 应用软件编制和调试
使用Keil软件编程时,项目开发步骤和其它软件开发项目标步骤较为相同。
(1)创建一个项目,从器件库中选择目标器件,配置工具设置;
(2)用C语言或会变语言创建源程序;
(3)用项目管理器生成应用;
(4)修改源程序中错误;
(5)测试,连接应用。
3.2 程序总体设计
利用P3口,编制程序输出一串脉冲,经放大后驱动直流电机,改变输出脉冲电平连续时间,达成使电机正转、反转、停止、加速、减速等目标。由软件编程从P3.0/P3.1管脚产生PWM信号,经驱动电路输出给电机,从而控制电机得电和失电。软件采取延时法进行设计。单片机上电后,系统进入准备状态。按动正转按钮后,依据P3.0为高电平时实现电机正转,P3.1为高电平时实现电机反转。依据不一样加减速按钮,调整P3.0/P3.1输出高低电平时有效值,进而控制电机加减速。其主程序步骤图2所表示:
停止
键盘扫描
是否有键按下
开始
正转
反转
加速
减速
N
Y
图4 主程序步骤图
3.3 仿真图形
按下“正转”按钮,直流电机运行效果图所表示:
图5 电机正转
按下“加速”按钮,直流电机正向加速,运行效果图所表示:
图6 电机正转加速
按下“减速”按钮,直流电机正向减速,运行效果图所表示:
图7 电机正转减速
按下“停止”按钮,直流电机停止运转,运行效果图所表示:
图8 电机停转
按下“反转”按钮,直流电机开始反转,运行效果图所表示:
图9 电机反转
4 调试分析
在调试时,因为子程序有很多,有时没法将每一个子模块全部运行到,自然也无法立即发觉其中疏漏。为了处理这个问题,愈加好地查找错误,我处理方法是将各个模块分别进行调试。比如在调试某一模块时,先将其它模块用“//”临时屏蔽掉,直到各个子模块全部健康运行后,再整体调试,这么我们愈加轻易找犯错误,增加效率。软件调试需要不停在单片机上实施看输出结果,假如每次全部在硬件上操作比较麻烦,所以我使用了“Proteus”仿真软件,将我们电路硬件搭建出来,在这个平台上调试软件,而且达成了比很好效果。
5 结论及深入设想
依据试验结果,本设计基础完成了设计要求,系统能够实现正转、反转、加速、减速、停止能功效。不过因为我对数码管等显示模块掌握度不够,系统还不能显示出电机转速,假如能够再多给我部分时间,我一定能设法用LCD或数码管显示出电机转速。。
参考文件
[1] 王鉴光.电动机控制系统.北京:北京机械工业出版社,1994
[2] 刘小春,首桁.无刷直流电动机单片机控制.自动化技术和应用,
[3] 王小明.电动机单片机控制.北京:北京航空航天大学出版社,
[4] 张堔.直流无刷电动机原理及应用.北京:北京机械工业出版社,1996
[5] 孙涵芳,徐爱卿.MCS-51/96系列单片机原理及应用.北京:北京航空航天大学出版社,1977
[6] 何立民.单片机应用技术选编.北京: 北京航空航天大学出版社,
[7] 史国生.交直流调速系统.北京:化学工业出版社,
[8] 杨兴姚.电动机调速原理及系统.北京:北京水利电力出版社,
课设体会
经过此次课程设计,我从直流电机调速系统设计和搭建中深深体会到软件对于一个系统来说是多么关键。软件能够说是一个系统灵魂,在工作中指导硬件根据指定方案运行。对于刚学汇编很快我来说,编制一个完整系统软件可谓无任何经验可言。在设计过程中,我们关键学习体会了单个模块搭建和编程,比如键盘子程序, 中止子程序等等。在这个系统搭建过程中,不仅要将这些子模块有机结合在一起,还要让它们很好协调起来,根据我们思绪运行,能够说是比较困难。
因为我缺乏经验,所以常常犯下很多低级错误。单片机编程是不能想当然,我最轻易犯错误就是不经论证就去根据自己认为可行思绪去进行,往往造成系统不能正常工作。比如我原来在编制显示子程序时,只记得将对应段码和位码相对照,却忘记了实际硬件是共阴极还是共阳极;还有显示间隔时间问题,我本认为长短无所谓,但结果是假如间隔大于10ms就会产生闪烁感,造成没有静态效果,而间隔太短话必需在显示下一个之前,将前一个位选清除,不然就轻易产生“串位”,造成显示不正常;在键盘扫描子程序中,当有键按下做对应操作,必需当按键释放时才能继续扫描,不然将造成一次按下实施数次错误情况… …即使碰到了很多困难,不过在老师帮助下,我还是完成了这次课程设计。经过此次课程设计,我深入了解了系统搭建过程和系统软件编程步骤,为以后学习打下良好基础。
在这里我要感谢我指导老师XX老师。X老师工作很忙,但还是在我做课程设计时间里一直关心我进展,从设计方案确实定和修改,仿真检验,及以后具体设计等过程中全部给了我很大支持和关注。此次课程设计让我把理论应用到了实践,同时经过课程设计,也加深了我对专业理论知识了解和掌握。在处理问题过程中,我查阅了大量专业书籍,取得了很多专业知识,拓展了视野,提升了我理论水平和实际动手能力,并让我学会了处理问题方法,激发了我探索精神。这么课程设计是很好锻炼机会,课程设计使我深入了解到了实践能力对于工科学生关键性,增强了我们实践动手能力,也为我接下来大四毕业设计提供了宝贵经验。
[7月 19日完成]
附录1 电路原理图
附录2 程序清单
#include<at89x51.h>
#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;
void ledshow();
void keyscan();
void delay();
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;
TL0=0x06;
TR0=1;
ET0=1;
EA=1;
while(1)
{
ledshow();//数码管显示
keyscan();//键盘扫描
}
}
//延时10ms程序
void delay()
{
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)
{
delay();
if((P1&0x1f)!=0x1f)
{
temp=P1&0x1f;
switch(temp)
{
case 0x1e:
just();break;
case 0x1d:
turn();break;
case 0x1b:
motorstop();break;
case 0x17:
speedup();break;
case 0x0f:
speeddown();break;
}
}
}
while((P1&0x1f)!=0x1f);
}
//数码管显示程序
void ledshow()
{
//P0=dispcode[dispbuf[dispbitcnt]];
//P2=dispbitcode[dispbitcnt];
//dispbitcnt++;
//if(dispbitcnt==4)
{
//dispbitcnt=0;
}
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
{
mstcnt++;
if(mstcnt==8)
{
mstcnt=0;
P0=dispcode[dispbuf[dispbitcnt]];
P2=dispbitcode[dispbitcnt];
dispbitcnt++;
if(dispbitcnt==4)
{
dispbitcnt=0;
}
}
if(count>100)
count=0;
if(count>tp)
P3_7=0;
else P3_7=1;
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--;
}
展开阅读全文