基于单片机控制的直流电机调速系统设计.docx
《基于单片机控制的直流电机调速系统设计.docx》由会员分享,可在线阅读,更多相关《基于单片机控制的直流电机调速系统设计.docx(31页珍藏版)》请在冰豆网上搜索。
基于单片机控制的直流电机调速系统设计
苏州市职业大学
毕业设计(论文)说明书
设计(论文)题目基于单片机控制的直流电机调速系统设计
系电子信息工程系
专业班级09电气自动化技术2班
姓名石贵江
学号*********
指导教师淮文军
2012年5月19
摘要
主要通过PWM信号对直流电转速进行控制。
首先预设电机转速,单片机将此转速按照固定的比例转化为一定占空比的脉冲信号输出到直流电机驱动模块。
与直流电机同轴的光电旋转编码器采集脉冲信号,将此脉冲信号输入到单片机,单片机对脉冲信号分析处理得到电机实时转速,将此转速与预设转速进行比较得出差值。
将差值转化为一定占空比,此占空比与预设转速占空比的和的脉冲继续输出到直流电机驱动模块,循环次过程。
该系统用STC89C52RC型号单片机为主控芯片,L298N芯片为直流电机驱动,LCD1602液晶显示屏显示实时转速。
本系统硬件电路设计可靠,抗干扰能力强,调速快、波动范围1%。
关键词:
单片机,电机驱动,液晶显示,转速设定
ABSTRACT
ThespeedofDCmotorsismainlycontrolledbyPWMsignalsinmyGraduationproject.Firstapresetspeedwillbetransferredtosingle-chipcomputer.Thenthespeedwillbefixedintoacertainproportionofthedutycycleofthepulsesignalbysingle-chipcomputer.ThesignalistransferredtoDCmotordrivermodule.AxisphotoelectricrotaryencoderwithDCmotorscollectionpulse,thepulseinputsignaltoasingle-chip,chipforpulsesignalanalysisandprocessingtobemotorspeedinrealtime,comparethisspeedwiththepresetspeedonbusinessvalue.Turningdifferenceintocertaindutycycle,thisdutywithpresetspeeddutycycleandthepulsecontinuestooutputtoDCmotordrivingmodule,cyclicprocess.TheSTC89C52RCSCMforsystemcontrolchip,L298NICforDCmotordrive,LCD1602LCDscreendisplayspeedinrealtime.Thisreliablesystemhardwarecircuitdesign,stronganti-jammingability,fastspeed,lessvolatile.
Keyword:
SCM,motors,LCDdisplay,setspeed
第一章绪论
1.1设计背景
直流电机广泛应用于各种便携式的电子设备或器具中,如录音机、VCD机、电唱机、电动按摩器及各种玩具,也广泛应用于汽车、摩托车、电动自行车、蓄电池车、船舶、航空、机械等行业,在一些高精尖产品中也有广泛应用,如录像机、复印机、照相机、手机、精密机床、银行点钞机、捆钞机等。
在舞台灯光方面,永磁直流电机,特别是小型永磁直流齿轮电机的用量非常大。
计算机行业中的打印机、扫描仪、硬盘驱动器、光盘驱动器、刻录机、冷却风扇等都要用到大量的永磁直流电机。
直流电动机分为有换向器和无换向器两大类。
直流电动机调速系统最早采用恒定直流电压给直流电动机供电,通过改变电枢回路中的电阻来实现调速。
这种方法简单易行、设备制造方便、价格低廉;但缺点是效率低、机械特性软,不能得到较宽和平滑的调速性能。
该法只适用在一些小功率且调速范围要求不大的场合。
脉冲宽度调制(PWM)是英文“PulseWidthModulation”的缩写,简称脉宽调制。
它是利用微处理器的数字输出来对模拟电路进行控制的一种非常有效的技术,广泛应用于测量,通信,功率控制与变换等许多领域。
一种模拟控制方式,根据相应载荷的变化来调制晶体管栅极或基极的偏置,来实现开关稳压电源输出晶体管或晶体管导通时间的改变,这种方式能使电源的输出电压在工作条件变化时保持恒定。
本文通过基于单片机实现PWM,由于其输出电压无法直接驱动本设计所使用的直流电机,所以设计加入了直流电机驱动模块,使电机调速更准确快速。
1.2设计要求
(1)输入转速范围0n/min~600n/min;
(2)直流电机,普通直流电机,额定电压12V;
(3)直流电机驱动模块,能够驱动额定电压36V以下的直流电机
(4)光电旋转编码器,与直流电机同轴,能够准确采集到与电机转速成正比的脉冲信号;
(5)单片机,能够对按键输入转速并进行处理并输出一定的脉冲信号启动电机,能够对编码器输入的脉冲信号进行处理并转化为相应的转速,并与输入转速进行比较并调整偏差,偏差调节后继续输出一定的脉冲信号控制电机,循环操作。
1.3设计内容
本设计将设定的转速通过STC89S52单片机转换为特定占空比的脉冲信号到L298N电机驱动芯片,L298N将此脉冲信号放大驱动24V直流电机,电机按一定转速启动。
通过与电机同轴的光电旋转编码器采集电机转速,并输出固定比例的脉冲信号反馈到单片机I、O输入端口。
单片机将此脉冲信号转化为电机转速,再对次转速进行的数据处理输出一定占空比脉冲信号给L298N驱动芯片,循环以上操作,最终电机转速会在设定转速左右波动。
调速时,与单片机相连的LCD1602液晶显示屏会显示设定转速与直流电机实时转速,SET+←+→+↑+↓+EXIT按键设定转速。
第二章基于单片机控制的直流电机调速系统方案的比较择
2.1调速方案一
如图2-1所示,该方案是通过设定转速与实时转速相比较,并根据大小关系在设定转速转化而来的占空比
基础上,逐个加减一个单位占空比,最终调速到设定转速。
“设定转速改变时执行一次”部分可使电机转速快速到达设定转速附近,有利于快速调速。
电机调速过程中与单片机相连的LCD1602显示实时转速与设定转速。
图2-1方案一
2.2调速方案二
如图2-2所示,该方案是通过设定转速
与实时转速
相减,得到两者代数差值
,将
按比例关系转化为差值占空比
。
设定转速按比例关系转化而来的占空比
与
之和得到实时占空比
。
再将此占空比的的脉冲信号加到驱动电路上驱动直流电机。
循环往复,得到设定转速。
同样,电机调速过程中与单片机相连的LCD1602显示实时转速与设定转速。
图2-2方案二
2.3方案选择
分析发现方案一较方案二有以下缺陷:
1.占用单片机资源较多,导致单片机处理其它操作的速度变慢;
2.由于调速是通过逐个加减单位占空比方式进行调速,调速速度较慢,且波动较大,抗干扰能力不强;
稳定性较高。
所以从快速性和稳定性两方面考虑,本设计选择方案二。
第三章基于单片机的直流电机调速系统设计
3.1总体设计
图3-1
系统设计分为五个部分,包括按键输入部分、单片机CPU部分、直流电机驱动部分、直流电机与同轴光电编码器部分、液晶显示屏部分。
按键部分可输入0-9的数字,SET+EXIT键确定转速输入(转速0r/min~600r/min);单片机CPU部分处理转速输入,脉冲信号输入输出,并控制液晶显示屏显示字符;直流电机驱动部分采用L298N芯片,接收单片机脉冲信号并驱动24V直流电机;液晶显示屏部分采用LCD1602,可显示设定转速与实时转速。
总体结构如图3-1。
3.2元件简介
3.2.1STC89C52RC单片机
STC89C52RC单片机是宏晶科技推出的新一代高速、低功耗、超强抗干扰的单片机,指令代码完全兼容传统8051单片机,12时钟、机器周期和6时钟、机器周期可以任意选择。
⑴主要特性如下:
增强型8051单片机,6时钟、机器周期和12时钟、机器周期可以任意选择,指令代码完全兼容传统8051
工作电压:
5.5V~3.3V(5V单片机)、3.8V~2.0V(3V单片机)
工作频率范围:
0~40MHz,相当于普通8051的0~80MHz,实际工作频率可达48MHz
用户应用程序空间为8K字节
片上集成512字节RAM
通用I/O口(32个),复位后为:
P1、P2、P3、P4是准双向口、弱上拉,P0口是漏极开路输出,作为总线扩展用时,不用加上拉电阻,作为I、O口用时,需加上拉电阻。
ISP(在系统可编程)、IAP(在应用可编程),无需专用编程器,无需专用仿真器,可通过串口(RxD、P3.0、TxD、P3.1)直接下载用户程序,数秒即可完成一片
具有EEPROM功能
具有看门狗功能
共3个16位定时器、计数器。
即定时器T0、T1、T2
外部中断4路,下降沿中断或低电平触发电路,PowerDown模式可由外部中断低电平触发中断方式唤醒
通用异步串行口(UART),还可用定时器软件实现多个UART
工作温度范围:
-40~+85℃(工业级)、0~75℃(商业级)
PDIP封装
⑵STC89C52RC单片机的工作模式
掉电模式:
典型功耗<0.1μA,可由外部中断唤醒,中断返回后,继续执行原程序
空闲模式:
典型功耗2mA
正常工作模式:
典型功耗4Ma~7mA
掉电模式可由外部中断唤醒,适用于水表、气表等电池供电系统及便携设备
图3-2STC89C52RC引脚图
3.2.2L298N芯片
L298简介:
L298N为SGS-THOMSONMicroelectronics所出产的双全桥步进电机专用驱动芯片(DualFull-BridgeDriver),内部包4信道逻辑驱动电路,是一种二相和四相步进电机的专用驱动器,可同时驱动2个二相或1个四相步进电机,内含二个H-Bridge的高电压、大电流双全桥式驱动器,接收标准TTL逻辑准位信号,可驱动46V、2A以下的步进电机,且可以直接透过电源来调节输出电压;此芯片可直接由单片机的IO端口来提供模拟时序信号。
L298N实物图、引脚图、原理图如图3-3(a)、(b)、(c)。
图3-3(a)图3-3(b)
图3-3(c)
3.2.3S38-J3V100光电旋转编码器
技术参数
特点:
通用型,体积小,多种输出方式可选,使用寿命长,低价格等;
应用范围:
纺织行业、包装机械、工业流水线等工业自动化控制;
外形尺寸:
外径Φ38mm,厚度为34mm,轴径6mm(D径口);
分辨率:
可达400P/R;
电源电压:
DC5V;
防护等级:
IP50&IP65;
线长:
1000mm;
重量:
约120g。
S38-J3V100为电缆线测出,A+B+Z三相输出,采用电压输出方式,每转每相脉冲为100。
本设计只采集其中A相脉冲,即电机每转一圈,编码器输出一百个脉冲。
其实物图如3-4所示
图3-4光电旋转编码器
3.2.4LCD1602液晶显示屏
1602液晶也叫1602字符型液晶它是一种专门用来显示字母、数字、符号等的点阵型液晶模块它有若干个5X7或者5X11等点阵字符位组成,每个点阵字符位都可以显示一个字符。
每位之间有一个点距的间隔每行之间也有也有间隔起到了字符间距和行间距的作用,正因为如此所以他不能显示图形
(用自定义CGRAM,显示效果也不好)
1602LCD是指显示的内容为16X2,即可以显示两行,每行16个字符液晶模块(显示字符和数字)。
目前市面上字符液晶绝大多数是基于HD44780液晶芯片的,控制原理是完全相同的,因此基于HD44780写的控制程序可以很方便地应用于市面上大部分的字符型液晶。
其实物图如图3-5。
图3-5LCD1602正反面
1602LCD的特性
⏹+5V电压,对比度可调
⏹内含复位电路
⏹提供各种控制命令,如:
清屏、字符闪烁、光标闪烁、显示移位等多种功能
⏹有80字节显示数据存储器DDRAM
⏹内建有160个5X7点阵的字型的字符发生器CGROM
⏹8个可由用户自定义的5X7的字符发生器CGRAM
本设计采用16X2双行显示模式,不显光标。
3.2.5直流电机
本设计使用通用24V直流电机,最高转速600n/min
3.4电路设计
3.4.1CPU单元原理图
如图3-5:
图3-6CPU控制器原理图
单片机使用5V电源供电,晶振为12MHz。
双列24个引脚分别引出并接到排针上方便引出接线。
由原理图可知,单片机所有I/O引脚接上拉电阻,所以接受信号低电平有效,可有效避免干扰输入。
3.4.2按键单元原理图
如图3-6:
本设计使用SW8,SW12,SW16,SW20,SW9,SW13,SW17,SW21,分别对应按键为SET,左移,EXIT,加1,右移光标,减1键。
当按键按下时,则向对应端口输入低电平信号。
图3-74*4矩阵键盘
3.4.3L298N驱动部分原理图
如图3-7:
图3-8L298N驱动原理图
电路中为保护L298N芯片不被电机产生的感应电压击穿或烧坏,以并联的方式接入八个续流二极管到电机两端,并与其形成回路,使其产生的高电动势在回路以续电流方式消耗,从而起到保护电路中的L298N芯片不被损坏。
该驱动模块可同时驱动两个直流电机进行不同动作。
本设计只用其中一路。
从P1端输入单片机控制信号,电机接在电机接线端子1、2端口。
该模块可实现电机正反转及调速;启动性能好,启动转矩大;工作电压可达到36V,4A。
其功能对应如下表
信号
电机运行状态
1高电平,2高电平,3低电平
正转
1低电平,2高电平,3高电平
反转
1高电平,2低电平,3低电平
不转
1低电平,2低电平,3高电平
不转
3.4.4液晶接口电路
如图3-8:
图3-9LCD1602原理图
液晶显示屏显示两行,上行显示设定转速,下行显示实时转速。
3.5电路板焊接
本设计单片机与L298N驱动部分需焊接,LCD1602与单片机采用插槽插线连接,电机用导线接到驱动的电机接线端子,编码器使用插线插入CPU板的插槽上。
连接个单元,用万用表测试各个连线是否有短路,虚焊,断路情况,即使排除。
3.6单片机程序编写及烧录
3.6.1程序设计软件简介
本设计使用的编程语言为单片机汇编语言,编译软件为KeiluVision3
(1)KeiluVision3简介
KeilSoftware公司推出的uVision3是一款可用于多种8051MCU的集成开发环境(IDE),该IDE同时也是PK51及其它开发套件的一个重要组件。
除增加了源代码、功能导航器、模板编辑以及改进的搜索功能外,uVision3还提供了一个配置向导功能,加速了启动代码和配置文件的生成。
此外其内置的仿真器可模拟目标MCU,包括指令集、片上外围设备及外部信号等。
uVision3提供逻辑分析器,可监控基于MCUI、O引脚和外设状态变化下的程序变量。
uVision3提供对多种最新的8051类微处理器的支持,包括AnalogDevices的ADuC83x和ADuC84x,以及Infineon的XC866等。
KeilC51V8.05为最新汉化版,全中文环境,支持PA51中文单片机汇编,可实现全中文编程、动态子程序库调用、自动汉字字模生成、自动图像数据生成等诸多强大功能。
(2)KeiluVision3使用
KeiluVision3创建一个工程的一般步骤为(假如电脑上已经安装KeiluVision3软件,如尚未安装,则按安装说明正确安装):
第一步:
双击打开KeiluVision3开发软件;
第二步:
单击菜单栏“Project”下拉菜单找到“NewProject”,在对话框中输入项目名“基于单片机的直流电机调速系统”及要存储的路径;
第三步:
选择单片机类型,本设计使用STC89C52RC(如找不到则需另外下载STC类型单片机的补丁);
第四步:
单击“File”下拉菜单找到“New”,新建文本框,输入单片机汇编语言,输入完毕后保存文件,命名为基于单片机的直流电机调速系统程序,格式为ASM;
第五步:
鼠标右击“ProjectWorkspace”区域的“SourceGroup1”,在弹出的菜单中选择AddFilesToGroup‘SourceGroup1’,选中上面一步保存的文件,确定;
第六步:
鼠标右击“ProjectWorkspace”区域的“Target1”在弹出的菜单中选中“OptionForTarget1”,在弹出的对话框中将“Target”中“Xtal(MHz)”改为12MHz,将“Output”中“CreateExecutable”栏“CreateHEXFi”勾选,以便将编写的程序转换成单片机的机器语言,方便将程序烧写入单片机中
第七步:
单击“Project”找到“BuildTarget”,或者直接按下F7键,编译程序,会产生一个以项目名命名的格式为HEX的文件,此文件是单片机可以识别执行的文件。
3.6.2基于单片机控制的直流调速系统程序设计
本程序使用的编程语言为C51,是C语言在8051系列单片机上的实现,使用特定的编译器,抛弃C语言中不适合51的一些特性,而加入对51单片机的“本地化”适应。
程序流程图如图3-10:
图3-10程序流程图
程序说明如下:
启动调速系统,CPU内部初始化系统全局变量并对相应定时器计数器赋值。
初始化屏显,使LCD1602显示为两行,第一行为“SET_N:
000n/M”即设定速度为000转/分钟,第二行显示“NOW_N:
000n/M”即实时转速为000转每分钟。
进入循环扫描模式。
扫描设定速度,如设定速度改变则改变屏显显示当前设定转速,如当前屏显的设定转速为0n/min,想要设定转速为311n/MIN,则,首先按下SET键,进入按键输入模式,单击↑按钮增加百位数数值,单击三次则屏显设定转速变为“300”;单击→按钮一次,右移一位到十位,单击↑按钮一次,则屏显设定转速变为“310”;再次单击→一次,右移一位到个位,单击↑一次,则屏显设定转速变为“311”。
如不按下SET键则跳过屏显设定转速变更,进入实时转速扫描。
本设计使用定时器0作为脉冲输入采集端口,采集旋转编码器输出的脉冲信号;使用定时器1作为中端源,每过250
系统内部的一个计数器就会加1,同时判断此计数器是否等于1000,等于一千则到0.25s,采集定时器0此时段接收到的脉冲数,其值的240倍则为一分钟收到的总脉冲数,再除以100即为实时转速,采集计算完毕,清空定时器0,计数器
。
可变占空比脉冲输出部分也是通过定时器1中断实现,其利用另一个系统内部计数器
记录中断次数,脉冲一个周期的中断次数定为
次即0.05
高电平时间定为
,当
小于等于
时脉冲输出端口输出高电平,大于
小于时输出低电平,等于
时清空
,此时一个周期的脉冲输出完毕,这种利用一个定时器中断源同时实现转速采集,可变占空比脉冲输出的方法可有效节省系统空间。
循环比较设定转速与实时转速,得出差值,根据此差值按照比例关系转化为
,则占空比为
,当设定转速大于或小于实时转速时,占空比会迅速按照此关系增加或减少直到等于设定转速。
3.6.3单片机程序烧录
本设计使用STC_ISP_V479,该软件为STC单片机专用烧录工具,可使用USB串口直接下载HEX文件到单片机。
第四章基于单片机控制的直流电机调速系统性能测试
4.1调速系统调试步骤
(1)单击按钮SET进入速度设定模式;
(2)进入速度设定模式后默认起始调速位为个位,可单击←或→键移动调速位置,可调位有个位、十位、百位;
(3)单击↑或↓键加减当前调速位的数值;
(4)单击EXIT键退出速度设定模式,完成速度设定。
接通+5V直流电压电源端,+24V直流电压电源端
分时输入几组电机转速。
记录数据如下表
4.2调速系统数据记录及性能分析
本设计测试数据如下各表所示。
表一:
转速从0r/min增加到100r/min(0r/min→100r/min)时测试数据
时间(s)
0
1
2
3
4
5
6
7
8
转速(r/min)
0
98
103
99
100
101
98
102
99
表二:
转速从0r/min→200r/min时测试数据
时间(s)
0
1
2
3
4
5
6
7
8
转速(r/min)
0
198
199
201
204
199
196
204
203
表三:
转速从0r/min→300r/min时测试数据
时间(s)
0
1
2
3
4
5
6
7
8
转速(r/min)
0
167
297
303
302
300
297
303
299
表四:
转速从0r/min→400r/min时测试数据
时间(s)
0
1
2
3
4
5
6
7
8
转速(r/min)
0
330
398
400
403
396
403
398
401
表五:
转速从0r/min→500r/min时测试数据
时间(s)
0
1
2
3
4
5
6
7
8
转速(r/min)
0
478
511
508
506
511
503
513
503
表六:
转速从100r/min→500r/min时测试数据
时间(s)
0
1
2
3
4
5
6
7
8
转速(r/min)
103
508
499
504
501
499
506
494
501
表七:
转速从500r/min→100r/min时测试数据
时间(s)
0
1
2
3
4
5
6
7
8
转速(r/min)
501
300
139
95
99
103
102
98
101
以上数据用曲线描述如下:
图3-11(a)0r/min→100r/min曲线图
图3-11(b)0r/min→200r/min曲线图
图3-11(c)0r/min→300r/min曲线图
图3-11(d)0r/min→400r/min曲线图
图3-11(e)0r/min→500r/min曲线图
图3-11(f)100r/min→500r/min曲线图
图3-11(g)500n/min→100r/min曲线图
对比以上图表看出本设计调速系统有以下几个