基于PWM的电机驱动程序设计
- 格式:doc
- 大小:42.00 KB
- 文档页数:5
PID算法介绍:本次设计主要研究的是PID控制技术在运动控制领域中的应用,纵所周知运动控制系统最主要的控制对象是电机,在不同的生产过程中,电机的运行状态要满足生产要求,其中电机速度的控制在占有至关重要的作用,因此本次设计主要是利用PID 控制技术对直流电机转速的控制。
其设计思路为:以AT89S51单片机为控制核心,产生占空比受PID算法控制的PWM脉冲实现对直流电机转速的控制。
同时利用光电传感器将电机速度转换成脉冲频率反馈到单片机中,构成转速闭环控制系统,达到转速无静差调节的目的。
在系统中采128×64LCD显示器作为显示部件,通过4×4键盘设置P、I、D、V四个参数和正反转控制,启动后通过显示部件了解电机当前的转速和运行时间。
因此该系统在硬件方面包括:电源模块、电机驱动模块、控制模块、速度检测模块、人机交互模块。
软件部分采用C语言进行程序设计,其优点为:可移植性强、算法容易实现、修改及调试方便、易读等。
本次设计系统的主要特点:(1)优化的软件算法,智能化的自动控制,误差补偿;(2)使用光电传感器将电机转速转换为脉冲频率,比较精确的反映出电机的转速,从而与设定值进行比较产生偏差,实现比例、积分、微分的控制,达到转速无静差调节的目的;(3)使用光电耦合器将主电路和控制电路利用光隔开,使系统更加安全可靠;(4)128×64LCD显示模块提供一个人机对话界面,并实时显示电机运行速度和运行时间;(5)利用Proteus软件进行系统整体仿真,从而进一步验证电路和程序的正确性,避免不必要的损失;(6)采用数字PID算法,利用软件实现控制,具有更改灵活,节约硬件等优点;(7)系统性能指标:超调量≤8%;调节时间≤4s;转速误差≤±1r/min。
1PID算法及PWM控制技术简介1.1PID算法控制算法是微机化控制系统的一个重要组成部分,整个系统的控制功能主要由控制算法来实现。
毕业设计论文题目S7-200PLC控制的PWM直流电机学生姓名:专业班级:指导教师:设计总说明随着PLC技术的发展,以及其性价比的提高,利用PLC控制直流电动机已经越来越普遍,采用先进的PWM控制技术则可构成直流电动机无级调速系统,同时起、停时直流系统无冲击,而且具有启动功耗小,运行稳定等特点。
本文介绍了24伏29瓦直流电动机PWM调速硬件系统,编写了用S7-200 PLC实现24伏29瓦直流电动机PWM的控制程序,程序包括控制系统的指令的初始化、转速检测、调速三部分。
与相应的硬件电路配合,实现了对24伏29瓦直流电动机的PWM控制。
该控制系统功能包括电机的PWM调速、转速检测、电机转速的调节。
PWM调速是用S7-200 PLC内部自带的PWM高速脉冲输出功能指令,通过对其占空比的设置来改变脉冲宽度和周期,实现控制任务;速度检测和调速是通过硬件与S7-200 PLC的高速计数器配合和PWM 的设置来实现的,所有程序都己编译通过,经过实验验证,工作状态良好。
文中对直流电动机结构、工作原理、PWM调速系统的构成、S7-200 PLC 的部分指令以及用S7-200 PLC实现PWM调速做了简单介绍。
关键词:直流电动机;PWM调速;S7-200 PLC;转速检测;单闭环目录1设计内容及要求 (6)1.1 (6)1.2 (10)1.3 ................................................................................................. 错误!未定义书签。
2 系统的总体设计............................................................................. 错误!未定义书签。
2.1直流电动机的结构及工作原理............................................ 错误!未定义书签。
一、概述PLCPWM (Pulse Width Modulation) 脉冲输出程序是一种用于数字信号与脉冲信号转换的程序。
它在工业控制领域得到广泛应用,可以控制各种电磁阀、电机、灯光等设备,实现精密的调节和控制。
本文将对PLCPWM脉冲输出程序的设计进行详细介绍。
二、PLCPWM脉冲输出程序设计原理PLCPWM脉冲输出程序的设计原理是通过控制器对数字信号进行模拟处理,将其转换为一系列脉冲信号输出。
在PLC(可编程逻辑控制器)系统中,通常采用定时器或计数器实现脉冲输出程序的设计。
三、PLCPWM脉冲输出程序设计步骤1. 确定输出控制对象:首先需要确定要控制的对象,例如电机、阀门等设备。
2. 确定输出脉冲频率和占空比:根据控制对象的特性和控制需求,确定脉冲信号的频率和占空比。
频率和占空比的选择对于控制对象的运行效果有重要影响。
3. 编写PLCPWM脉冲输出程序:根据确定的频率和占空比,编写PLCPWM脉冲输出程序,并将其加载到PLC系统中。
4. 联调和调试:完成程序加载后,需要对输出效果进行联调和调试,确保输出脉冲信号符合设计要求。
四、PLCPWM脉冲输出程序设计实例以控制一个电机为例,进行PLCPWM脉冲输出程序的设计实例说明:1. 确定输出控制对象:电机2. 确定输出脉冲频率和占空比:假设电机的控制需求为100Hz的频率和50的占空比。
3. 编写PLCPWM脉冲输出程序:根据选定的频率和占空比,编写PLCPWM脉冲输出程序。
4. 联调和调试:加载程序到PLC系统中,进行联调和调试,观察电机的运行效果。
五、PLCPWM脉冲输出程序设计注意事项1. 频率和占空比的选择需根据控制对象的特性和控制需求来确定,需充分考虑控制对象的响应速度和稳定性。
2. 在编写PLCPWM脉冲输出程序时,需注意程序的逻辑正确性和稳定性,确保输出信号的准确性和稳定性。
3. 在联调和调试过程中,需要详细记录调试过程和结果,及时发现问题并进行调整。
单片机pwm控制步进电机原理单片机(Microcontroller)是一种集成了处理器、存储器和输入输出接口的微型计算机系统,它在现代电子技术中有着广泛的应用。
而步进电机(Stepper Motor)是一种特殊的电机,通过控制电流的方向和大小,可以使电机按照一定的步进角度进行旋转。
那么,如何利用单片机的PWM(Pulse Width Modulation)功能来控制步进电机呢?本文将从基本原理、控制方法以及相关应用方面进行介绍和分析。
我们来了解一下PWM的基本原理。
PWM是一种用脉冲信号来模拟模拟量的技术,通过改变脉冲信号的占空比(High电平的时间占整个周期的比例),可以实现对电压、电流等模拟量的精确控制。
在单片机中,PWM信号一般通过定时器/计数器模块来生成,通过改变定时器的计数值和比较值,可以控制PWM信号的频率和占空比。
接下来,我们介绍如何利用单片机的PWM功能来控制步进电机。
步进电机一般需要控制电流的方向和大小,以实现旋转。
通过控制步进电机的控制信号,我们可以实现电机的正转、反转、停止等动作。
而单片机的PWM功能可以通过改变输出的脉冲信号的频率和占空比,来控制步进电机的转速和转向。
在具体的控制步骤中,首先需要通过单片机的IO口来控制步进电机的驱动器。
驱动器一般包括多个MOS管和电流检测电阻,通过控制MOS管的导通和断开,可以实现电机的正转和反转。
而电流检测电阻可以用于检测步进电机的电流,以保护电机不被过载。
我们需要配置单片机的定时器/计数器模块,来生成PWM信号。
定时器/计数器模块一般有多个通道,每个通道可以独立生成一个PWM信号。
通过改变定时器的计数值和比较值,可以调整PWM 信号的频率和占空比。
需要注意的是,步进电机的驱动器一般有两个输入端口,一个用于控制正转,一个用于控制反转。
因此,我们需要至少两个PWM信号来控制步进电机的转向。
我们需要在单片机的程序中编写相应的控制算法。
通过改变PWM 信号的频率和占空比,可以实现步进电机的转速和转向控制。
基于单片机的直流电机PWM调速控制系统的设计第一章:前言1.1前言:直流电机的定义:将直流电能转换成机械能(直流电动机)或将机械能转换成直流电能(直流发电机)的旋转电机。
近年来,随着科技的进步,直流电机得到了越来越广泛的应用,直流具有优良的调速特性,调速平滑,方便,调速范围广,过载能力强,能承受频繁的冲击负载,可实现频繁的无极快速起动、制动和反转,需要满足生产过程自动化系统各种不同的特殊要求,从而对直流电机提出了较高的要求,改变电枢回路电阻调速、改变电压调速等技术已远远不能满足现代科技的要求,这是通过PWM方式控制直流电机调速的方法就应运而生。
采取传统的调速系统主要有以下的缺陷:模拟电路容易随时间飘移,会产生一些不必要的热损耗,以及对噪声敏感等。
而用PWM技术后,避免上述的缺点,实现了数字式控制模拟信号,可以大幅度减低成本和功耗。
并且PWM调速系统开关频率较高,仅靠电枢电感的滤波作用就可以获得平滑的直流电流,低速特性好;同时,开关频率高,快响应特性好,动态抗干扰能力强,可获很宽的频带;开关元件只需工作在开关状态,主电路损耗小,装置的效率高,具有节约空间、经济好等特点。
随着我国经济和文化事业的发展,在很多场合,都要求有直流电机PWM调速系统来进行调速,诸如汽车行业中的各种风扇、刮水器、喷水泵、熄火器、反视镜、宾馆中的自动门、自动门锁、自动窗帘、自动给水系统、柔巾机、导弹、火炮、人造卫星、宇宙飞船、舰艇、飞机、坦克、火箭、雷达、战车等场合。
1.2本设计任务:任务: 单片机为控制核心的直流电机PWM调速控制系统设计的主要内容以及技术参数:功能主要包括:1)直流电机的正转;2)直流电机的反转;3)直流电机的加速;4)直流电机的减速;5)直流电机的转速在数码管上显示;6)直流电机的启动;7)直流电机的停止;第二章:总体设计方案总体设计方案的硬件部分详细框图如图一所示。
示数码管显PWM单片机按键控制电机驱动基于单片机的直流电机PWM调速控制系统的设计键盘向单片机输入相应控制指令,由单片机通过P1.0与P1.1其中一口输出与转速相应的PWM脉冲,另一口输出低电平,经过信号放大、光耦传递,驱动H型桥式电动机控制电路,实现电动机转向与转速的控制。
PWM控制技术的原理和程序设计PWM(Pulse Width Modulation)控制技术是一种通过改变方波脉冲的宽度来控制电路或设备的技术。
它通常被用于控制电机的速度、电子设备的亮度调节、音频的合成以及电源的调整等应用中。
PWM控制技术的原理是基于调制的整个周期中,方波的高电平时间(即脉冲宽度)与频率的比例关系来实现对电路或设备的控制。
当脉冲宽度为周期的一定比例时,控制电路或设备会按照一定的方式响应,例如电机运动的速度或电子设备的亮度。
1.初始化控制器:首先需要初始化控制器,包括选择合适的计时器和设置计时器的频率,以及将相关引脚配置为PWM输出。
2.设置频率与分辨率:根据实际需求设置PWM的频率和分辨率。
频率决定了周期的长度,而分辨率决定了脉冲宽度的精度。
3.计算脉冲宽度:根据需要控制的电路或设备,计算脉冲宽度的值。
这可以通过设定一个数值来代表脉冲宽度的百分比,然后根据设定的分辨率计算出实际的脉冲宽度。
4.控制输出:通过设置计时器的比较匹配值来控制PWM输出。
比较匹配值决定了方波高电平的结束时间,从而决定了脉冲宽度。
5.循环运行:将上述步骤放入一个循环中,不断更新脉冲宽度并输出PWM信号。
这样可以实现对控制电路或设备的持续控制。
需要注意的是,在实际的 PWM 程序设计中,还需要考虑到不同平台和编程语言之间的差异。
例如,在 Arduino 平台上,可以使用`analogWrite(`函数来实现 PWM 输出;而在其他平台上,可能需要使用特定的库或编程接口来控制 PWM 输出。
总结起来,PWM控制技术的原理是通过改变方波脉冲的宽度来控制电路或设备。
程序设计中,需要初始化控制器、设置频率和分辨率、计算脉冲宽度、控制输出,并将这些步骤放入一个循环中。
这样就可以实现对电路或设备的持续控制。
脉宽调制(PWM)实现步进电机的细分驱动技术作者:时念科吴美莲来源:《硅谷》2011年第17期摘要:步进电机作为一种控制电机,其控制精度(分辨率)取决于步距角的大小,单纯地靠机械手段降低其步距角是有限的。
常采用细分驱动技术。
着重介绍脉宽调制(PWM)实现的步进电机细分驱动技术,该技术不仅可以提高步進电机的分辨率,还可以克服步进电机在低速时易出现的低频振动现象。
关键词:步进电机;步距角;矩角特性;脉宽调制(PWM);细分驱动中图分类号:TP275 文献标识码:A 文章编号:1671-7597(2011)0910039-010 前言步进电机作为控制电机,在机电一体化系统的执行装置中有独特的应用,该电机的控制精度(分辨率)取决于其步距角α的大小,步距角越小,分辨率也越高。
由于步距角α=3600/KMZ,(其中K为供电方式,三拍供电:K=1;六拍供电:K=2;M为定子相数;Z 为转子齿数)。
受机械加工技术的限制,定子的相数和转子的齿数都是有限的,所以步进电机的步距角就不可能无限小,一般为几分到几十度。
另外,步进电机在低速运转时易出现低频振动现象,其振动频率与负载情况和驱动器性能有关,共振时易造成设备损坏等严重情况,并伴有刺耳的啸叫声。
为改善步进电机的运行质量和提高分辨率,常采用在电机上加阻尼器或在驱动器上采用细分技术,本文就步进电机的细分驱动技术作简单介绍。
1 步进电机的细分驱动技术原理步进电机细分驱动控制就是通过脉宽调制(PWM),对步进电机的驱动脉冲进行细分,将一个脉冲驱动信号细分为若干个小的脉冲,这样各相绕组中电流就按设定的规律阶梯上升和下降,从而获得相电流从最小到最大的多个中间稳定状态,各相的合成磁场也就有多个稳定的中间状态,转子就按这些中间状态以微步距转动。
1.1 首先介绍步进电机的静态特性——距角特性静态特性是指步进电机绕组电流为恒定值,转子静止不转时表现出的机械特性,也叫矩——角特性。
空载时,当且仅当某相通电并保持,此时,转子相应的齿与该相定子对齐,这时转子不输出电磁转矩。
1 绪论1.1 课题的研究背景和意义直流电动机是最早出现的电动机,也是最早能实现调速的电动机。
长期以来,直流电动机一直占据着调速控制的统治地位。
由于它具有良好的线性调速特性,简单的控制性能,高的效率,优异的动态特性;尽管近年来不断受到其他电动机(如交流变频电机、步进电机等)的挑战,但到目前为止,它仍然是大多数调速控制电动机的优先选择。
近年来,直流电动机的结构和控制方式都发生了很大变化。
随着计算机进入控制领域以及新型的电力电子功率元件的不断出现,使采用全控型的开关功率元件进行脉宽调制 (PulseWidthModulation,简称PWM)控制方式已成为绝对主流。
这种控制方式很容易在单片机控制中实现,从而为直流电动机控制数字化提供了契机。
五十多年来,直流电气传动经历了重大的变革。
首先,实现了整流器件的更新换代,从50年代的使用己久的直流发电机一电动机组(简称G-M系统)及水银整流装置,到60年代的晶闸管电动机调速系统(简称V-M系统),使得变流技术产生了根本的变革。
再到脉宽调制 (PulsewidthModulation)变换器的产生,不仅在经济性和可靠性上有所提高,而且在技术性能上也显示了很大的优越性,使电气传动完成了一次大的飞跃。
另外,集成运算放大器和众多的电子模块的出现,不断促进了控制系统结构的变化。
随着计算机技术和通信技术的发展,数字信号处理器单片机应用于控制系统,控制电路己实现高集成化,小型化,高可靠性及低成本。
以上技术的应用,使系统的性能指标大幅度提高,应用范围不断扩大。
由于系统的调速精度高,调速范围广,所以,在对调速性能要求较高的场合,一般都采用直流电气传动。
技术迅速发展,走向成熟化、完善化、系统化、标准化,在可逆、宽调速、高精度的电气传动领域中一直居于垄断地位[1]。
目前,国内各大专院校、科研单位和厂家也都在开发直流数字调速装置。
姚勇涛等人提出直流电动机及系统的参数辨识的方法。
该方法依据系统或环节的输入输出特性,应用最小二乘法,即可获得系统或环节的内部参数,所获的参数具有较高的精度,方法简便易行。
PWM控制直流电机实验报告PWM 控制直流电机实验一、实验目的1、熟悉PWM调制的原理和运用。
2、熟悉直流电机的工作原理。
3、能够读懂和编写直流电机的控制程序。
二、实验原理:运动控制系统是以机械运动的驱动设备──电机为控制对象,以控制器为核心,以电力电子器件及功率变换装置为执行机构,在自动控制理论的指导下组成的电气传动自动控制系统。
这类系统控制电机的转矩、转速和转角,将电能转换为机械能,实现运动控制的运动要求。
可以看出,控制技术的发展是通过电机实现系统的要求,电机的进步带来了对驱动和控制的要求。
电机的发展和控制、驱动技术的不断成熟,使运动控制经历了不同的发展阶段。
1、直流电机的工作原理:直流电机的原理图图中,固定部分有磁铁,这里称作主磁极;固定部分还有电刷。
转动部分有环形铁心和绕在环形铁心上的绕组。
(其中2个小圆圈是为了方便表示该位置上的导体电势或电流的方向而设置的)。
上图表示一台最简单的两极直流电机模型,它的固定部分(定子)上,装设了一对直流励磁的静止的主磁极N和S,在旋转部分(转子)上装设电枢铁心。
定子与转子之间有一气隙。
在电枢铁心上放置了由A和X两根导体连成的电枢线圈,线圈的首端和末端分别连到两个圆弧形的铜片上,此铜片称为换向片。
换向片之间互相绝缘,由换向片构成的整体称为换向器。
换向器固定在转轴上,换向片与转轴之间亦互相绝缘。
在换向片上放置着一对固定不动的电刷B1和B2,当电枢旋转时,电枢线圈通过换向片和电刷与外电路接通。
当给电刷加一直流电压,绕组线圈中就有电流流过,由电磁力定律可知for(i=5000;i>0;i--);}②键盘中断处理子程序:采用中断方式,按下键,完成延时去抖动、键码识别、按键功能执行。
要实现按住加/减速键不放时恒加或恒减速直到放开停止,就需在判断是否松开该按键时,每进行一次增加/减少一定的占空比。
③显示子程序:利用数组方式定义显示缓存区,缓存区有8位,分别存放各个数码管要显示的值。
//===================================================================== ==========================================// 功能说明://1、上电(或LPC2378复位)后会显示第0幅画面(或LPC2378复位前的显示界面),点击触摸屏任意位置后进入菜单界面。
//2、进入菜单界面界面后,点击图片x的提示后调出所对应的图片//3、在显示图片状态下,点击任意位置将出现返回框,再点击一下,返回框消失//4、在显示图片状态下,点击返回框将回到菜单界面////彩屏的硬件要求,请参照hw.c//===================================================================== ==========================================#include "nxp/iolpc2378.h"#include "type.h"#include "irq.h"#include "target.h"#include "intrinsics.h"#include "hw.h"#include "hmi.h"#define uint unsigned intvoid delay(uint dc){for(;dc>0;dc--);}//延时程序#define keyctl 0x20061000/************************** 字符显示**************************/void PageMenu(void){PutString(18,50,0x13,"PWM电机调速系统");DelayMS(200);PutString(48,104,0x13,"当前状态:");DelayMS(200);PutString(210,184,0x12,"设计人:王凯");DelayMS(200);}void HighSpeed(void){PutString(18,50,0x13,"PWM电机调速系统");DelayMS(200);PutString(48,104,0x13,"当前状态:高速");DelayMS(200);PutString(210,184,0x12,"设计人:王凯");}void LowSpeed(void){PutString(18,50,0x13,"PWM电机调速系统");DelayMS(200);PutString(48,104,0x13,"当前状态:低速");DelayMS(200);PutString(210,184,0x12,"设计人:王凯");}void MidSpeed(void){PutString(18,50,0x13,"PWM电机调速系统");DelayMS(200);PutString(48,104,0x13,"当前状态:中速");DelayMS(200);PutString(210,184,0x12,"设计人:王凯");}void Stop(void){PutString(18,50,0x13,"PWM电机调速系统");DelayMS(200);PutString(48,104,0x13,"当前状态:停机");DelayMS(200);PutString(210,184,0x12,"设计人:王凯");}/****************************************************************************** 函数功能:PWM1.1单边沿输出。
测试点:EXT2_20。
指标测试:频率:20KHz;分辨率(位数):9位。
speed=2******************************************************************************* /int spwm11(unsigned int speed){PINSEL3 = 1<<5; // 设置P1.18为PWM1.1输出PWM1TC = 0X00; // PWM1定时计数器初值:0PWM1PR = 0x01; // PWM1预分频设置:预分频系数=2。
PWM1MR0 = Fpclk /400; // PWM频率设置:20KHz。
PWM1MR1 = PWM1MR0 / speed; // PWM占空比设置:PWM1LER = 0x03; // 数据更新锁存:PWM0 & PWM1.1PWM1PCR = 0x0200; // PWM1.1输出使能PWM1TCR = 0x09; // PWM & 计数器使能控制:使能return 1 ;}/****************************************************************************** 函数功能:主函数******************************************************************************* /void main (void){TargetResetInit(); //初始化SCS_bit.GPIOM=1;FIO0DIR &= ~keyctl; // 键盘端口设置:输入模式FIO3DIR = 0X07800000; // P3.23-3.26设为输出模式FIO3SET = 0X07800000; // P3.23-3.26初态设置:LED关UART2_Init();DelayMS(100); //用于做其他处理或延时,使得彩屏终端上电完毕SetColor(0xffd0,0x0eff); // 白底蓝字WaitNoBusy();DelayMS(500);PageMenu();DelayMS(500);while(1){if(FIO0PIN_bit.P0_17==0) // KEY1按下判跳{DelayMS(10); // 消抖延时while(FIO0PIN_bit.P0_17==0) // 判低跳转{ClearScreen(); // 清屏(调色板设置后必须清屏)HighSpeed();FIO3PIN ^= 1<<23;// FIO3CLR=0x04000000; //开LED1灯// delay(0x1000); //延时10ms// FIO3SET=0x07800000; //关LED2、LED3、LED4spwm11(2);while(FIO0PIN_bit.P0_17==0); // 等待KEY1释放-结构体(成员)位判跳}}else if(FIO0PIN_bit.P0_18==0) // KEY2按下判跳{DelayMS(10); // 消抖延时while(FIO0PIN_bit.P0_18==0) // 判低跳转{ClearScreen(); // 清屏(调色板设置后必须清屏)MidSpeed();FIO3PIN ^= 1<<24;// FIO3CLR=0x02000000; //开LED2灯// delay(0x1000); //延时10ms// FIO3SET=0x05800000; //关LED1、LED3、LED4spwm11(4);while(FIO0PIN_bit.P0_18==0); // 等待KEY2释放-结构体(成员)位判跳}}else if(FIO0PIN_bit.P0_12==0) // KEY3按下判跳{DelayMS(10); // 消抖延时while(FIO0PIN_bit.P0_12==0) // 判低跳转{ClearScreen(); // 清屏(调色板设置后必须清屏)LowSpeed();FIO3PIN ^= 1<<25;// FIO3CLR=0x01000000; //开LED3灯// DelayMS(0x1000); //延时10ms// FIO3SET=0x06800000; //关LED1、LED2、LED4spwm11(6);while(!(FIO0PIN & 0x00001000)); // 等待KEY1释放-逻辑运算判跳}}else if(FIO0PIN_bit.P0_29==0) // KEY4按下判跳{DelayMS(10); // 消抖延时while(FIO0PIN_bit.P0_29==0) // 判低跳转{FIO3PIN ^= 1<<26;// FIO3CLR=0x00800000; //开LED4灯// delay(0x1000); //延时10ms// FIO3SET=0x07000000; //关LED1、LED2、LED3// 清屏(调色板设置后必须清屏)ClearScreen();Stop();spwm11(PWM1MR0);while(!(FIO0PIN & 0x20000000)); // 等待KEY1释放-逻辑运算判跳}}}}/****************************************************************************** ***************************** End Of File******************************************************************************* *************************/。