PID控制PWM调节直流电机速度(12v)
- 格式:doc
- 大小:1.55 MB
- 文档页数:43
本次设计主要研究的是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算法控制算法是微机化控制系统的一个重要组成部分,整个系统的控制功能主要由控制算法来实现。
目前提出的控制算法有很多。
所谓PID指的是Proportion-Integral-Differential。
翻译成中文是比例-积分-微分。
记住两句话:1、PID是经典控制(使用年代久远)2、PID是误差控制()对直流电机速度进行定速控制:1、L293作为电机驱动;2、光电传感器-作为输出反馈;3、PWM做为输入控制。
PID怎么对误差控制,听我细细道来:所谓“误差”就是命令与输出的差值。
比如你希望控制转速为4转/s(PWM波占空比=80%),而事实上控制转速只有3.5转/s,则误差: e=0.5转,如果实际转速为4.5转,则误差e=-0.5转(注意正负号)。
该误差值送到PID控制器,作为PID控制器的输入。
PID控制器的输出为:误差乘比例系数Kp+Ki*误差积分+Kd*误差微分。
Kp*e + Ki*∫edt + Kd*(de/dt)(式中的t为时间,即对时间积分、微分)上式为三项求和(希望你能看懂),PID结果后送入电机驱动器。
从上式看出,如果没有误差,即e=0,则Kp*e=0;Kd*(de/dt)=0;而Ki*∫edt 不一定为0。
三项之和不一定为0。
总之,如果“误差”存在,PID就会对电机驱动作调整,直到误差=0。
评价一个控制系统是否优越,有三个指标:快、稳、准。
所谓快,就是要使压力能快速地达到“命令值”(不知道你的系统要求多少时间)所谓稳,就是要压力稳定不波动或波动量小(不知道你的系统允许多大波动)所谓准,就是要求“命令值”与“输出值”之间的误差e小(不知道你的系统允许多大误差)对于你的系统来说,要求“快”的话,可以增大Kp、Ki值要求“准”的话,可以增大Ki 值要求“稳”的话,可以增大Kd值,可以减少压力波动仔细分析可以得知:这三个指标是相互矛盾的。
如果太“快”,可能导致不“稳”;如果太“稳”,可能导致不“快”;只要系统稳定且存在积分Ki,该系统在静态是没有误差的(会存在动态误差);所谓动态误差,指当“命令值”不为恒值时,“输出值”跟不上“命令值”而存在的误差。
调速原理对于星形连接的三相无刷直流电机,在理想条件下,任何时刻只有两相定子绕组通电。
令加在两相通电绕组上的平均电压为Vd,则电压平衡方程式为[31]:(3.1)可以得到转速为:(3.2)式中:Em为电机各相反电动势;Im为各相相电流;n为无刷直流电机转速;R为回路等效电阻,包括电机两相电阻和管压降的等效电阻。
由式(3.2)可知,无刷直流电机的转速调节可以通过改变外施平均电压Vd来实现。
3-4-2电枢电压的调节方法改变电枢电压是直流调速的主要方法。
本系统采用PWM(脉宽调制)调速方式,通过调节逆变器功率器件的PWM触发信号的占空比来改变外施的平均电压Vd,从而实现无刷直流电机的调速。
PWM技术可分为单极性PWM控制和双极性PWM控制。
单极性PWM控制的控制信号如图3.4所示,在每个60°电角度的区域内,一个功率开关器件一直处于开通状态,另一个处于PWM状态;双极性PWM控制的控制信号如图3.5所示,在每个60°电角度区域内,两个工作的功率管器件或者都开通,或者都关断。
图3.4单极性PWM控制各触发信号图3.5双极性PWM控制各触发信号Fig.3.4Trigger signal of single polarity PWM Fig.3.5Trigger signal of double polarity PWM一般情况来说,采用单极性PWM控制的电流波动最大值只有采用双极性PWM控制的电流波动最大值的一半[32][33],因此为了减小电流脉动和功率管的开关损耗,本电机控制系统采用单极性的PWM控制技术。
3-4-3 PWM波的产生在传统的单片机控制系统中,PWM波的产生需要专门的发生电路和时间延时(死区)电路,增加了CPU的开销,并降低了系统的稳定性。
而TMS320F2812的PWM电路设计可以减少产生PWM波形的CPU开销和减少用户的工作量,同时能尽量减小功率开关器件的损耗,降低电动机转矩脉动性。
毕业设计论文PWM 控制直流机电调速脉宽调制(PWM)控制技术,是利用半导体开关器件的导通和关断,把直流电压变成电压脉冲序列,并控制电压脉冲的宽度和脉冲序列的周期以达到变压变频目的的一种控制技术。
PWM 控制技术广泛地应用于开关稳压电源,不间断电源(UPS),以及交直流电动机传动等领。
本文阐述了 PWM 变频调速系统的基本原理和特点,并在此基础上给出了一种基于 Mitel SA866DE 三相 PWM 波形发生器和绝缘栅双极功率晶体管(IGBT)的变频调速设计方案。
直流电动机具有优良的调速特性,调速平滑、方便, 调速范围广;过载能力大,能承受频繁的冲击负载,可实现频繁的无级快速起动、制动和反转;能满足生产过程自动化系统各种不同的特殊运行要求,在许多需要调速或者快速正反向的电力拖动系统领域中得到了广泛的应用。
直流电动机的转速调节主要有三种方法:调节电枢供电的电压、减弱励磁磁通和改变电枢回路电阻。
针对三种调速方法,都有各自的特点,也存在一定的缺陷。
例如改变电枢回路电阻调速只能实现有级调速,减弱磁通虽然能够平滑调速,但这种方法的调速范围不大,普通都是配合变压调速使用。
所以,在直流调速系统中,都是以变压调速为主。
其中,在变压调速系统中,大体上又可分为可控整流式调速系统和直流PWM 调速系统两种。
直流 PWM 调速系统与可控整流式调速系统相比有下列优点:由于PWM 调速系统的开关频率较高 ,仅靠电枢电感的滤波作用就可获得平稳的直流电流 , 低速特性好,稳速精度高,调速范围宽,可达1:10000 摆布;同样,由于开关频率高, 快速响应特性好,动态抗干扰能力强,可以获得很宽的频带;开关器件只工作在开关状态,主电路损耗小,装置效率高;直流电源采用不控整流时,电网功率因数比相控整流器高。
正因为直流 PWM 调速系统有以上的优点,并且随着电力电子器件开关性能的不断提高,直流脉宽调制( PWM) 技术得到了飞速的发展。
#include<reg51.h>#define uchar unsigned char#define uint unsigned int#define ufloat unsigned floatsbit PWM=P1^2;sbit DIN=P1^0;sbit CLK=P1^1;uint num;float count=0;uint cnt,n=0;uint out;uint PWMTime;uchar code table[] = { 0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F,0x77,0x7C,0x39,0x5E,0x7B,0x71,0x00,0x4 0 };float Kp=5,Ki=2,Kd=0.5; //PID三个参数初值uint speedset=15;//预设为r/s,pid计算用r/min提高精度,显示用r/sfloat currentspeed;//设定转速当前转速float e,e1,e2,uk,uk1,duk;void timer(){TMOD=0x11;//定时器0工作方式1.16位,定时器1工作方式1,16位定时;TH0=(65536-50000)/256;//50ms初值TL0=(65536-50000)%256;TH1=(65536-2000)/256;TL1=(65536-2000)%256;TR1=1; //启动定时器1ET1=1; //定时器1中断使能IT0=1;//外部中断下降沿触发TR0=1; //定时器启动标志ET0=1; //定时器中断使能EX0=1; //外部中断使能EA=1; //全局中断}/***********************串行显示*************/void sent(uchar dat){uchar i = 0;for (i; i < 8; i++)DIN = dat & 0x80;CLK = 0; ; CLK = 1;dat <<= 1;}}void display(float speed)//前三位当前值,后三位目标值{int g, s, b,speed1=0;//目标值speed=(int)((speed/60)+0.5);//四舍五入speed1=speed+speed1;//将speed化为int型b = speed1 / 100;s = speed1 % 100 / 10;g = speed1 % 100 % 10;sent(table[b]);sent(table[s]);sent(table[g]);sent(0); sent(0);//预期值sent(table[speedset/100]);sent(table[speedset%100/10]);sent(table[speedset%100%10]);}/************************PID控制算法*************/ unsigned int PID(){//pid计算单位为r/mine=speedset*60-currentspeed;//设置速度-实际速度,两者的差值//对应于增量式PID的公式Δuk=uk-u(k-1)duk=(Kp*(e-e1)+Ki*e+Kd*(e-2*e1+e2));//调节PIDuk=uk1+duk;//uk=u(k-1)+Δukout=(int)(uk/60);//取整后输出if(out>250) //设置最大限制out=250;else if(out<0)//设置最小限制out=0;uk1=uk; //为下一次增量做准备e2=e1;e1=e;PWMTime=out; //out对应于PWM高电平的时间return(0);}void PWMOUT(){//PWM=1;if(cnt<PWMTime)//若小于PWM的设定时间,则输出高电平PWM=1;else //否则输出低电平PWM=0;if(cnt>250) //超过限制清零cnt=0;}void Timer0_isr() interrupt 1 //定时器0中断{num++;TH0=(65536-50000)/256;TL0=(65536-50000)%256;if(num==20){currentspeed=count/12;currentspeed=currentspeed*60;//1s的转速display(currentspeed);count=0;num=0;}}void Timer1() interrupt 3{TH1=(65536-2000)/256;TL1=(65536-2000)%256;//2ms初值重置cnt++; //每次定时器溢出加1n++;if(n==500){PID(); //每1秒做一次PID运算n=0;}}void key_int() interrupt 0 //外部中断P3.2口{count=count+1;}void main(){timer();//定时器初始化while(1){PWMOUT();}}//绝对式#include <intrins.h>#define uchar unsigned char#define uint unsigned intsbit PWM=P1^7;sbit DIN=P1^0;sbit CLK=P1^1;uint AA,count=0;uchar code table[] = { 0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F,0x77,0x7C,0x39,0x5E,0x7B,0x71,0x00,0x4 0 };float pid_p=300,pid_i=0.1,pid_d=5; //PID三个参数初值uint speedset=30,currentspeed;//设定转速当前转速unsigned char pid_val_mid;//pid_val_mid脉冲宽度uint lastError=0;uint sumError=0;//sum偏差和void timer(){TMOD=0x11;//定时器0工作方式1.16位,定时器1工作方式1,16位定时;TH0=0x4b;//50ms初值TL0=0xfe;TH1=0xfc;//1msPWM控制TL1=0x66;TR1=1; //启动定时器1ET1=1; //定时器1中断使能IT0=1;//外部中断下降沿触发TR0=1; //定时器启动标志ET0=1; //定时器中断使能EX0=1; //外部中断使能EA=1; //全局中断}/***********************串行显示*************/void sent(uchar dat){uchar i = 0;for (i; i< 8; i++){DIN = dat& 0x80;CLK = 0; ; CLK = 1;dat<<= 1;}}void display(uint num)//前三位当前值,后三位目标值{int g, s, b;//目标值num=num+1;b = num / 100;s = num % 100 / 10;g = num % 100 % 10;sent(table[b]);sent(table[s]);sent(table[g]);sent(0); sent(0);//预期值sent(table[speedset/100]);sent(table[speedset%100/10]);sent(table[speedset%100%10]);}/************************PID控制算法*************/ unsigned int PID(){unsigned int dError=0,Error=0,B;Error=speedset-currentspeed;//当前误差sumError=Error+lastError;//误差和dError=Error-lastError;//误差偏差lastError=Error;B=pid_p*Error+pid_i*sumError+pid_d*dError;if(B>100) pid_val_mid=20;if(B<0) pid_val_mid=0;if(B>=0&&B<=100)pid_val_mid=B;return(0);}void Timer0_isr() interrupt 1 //定时器0中断{AA++;TH0=0x4b;TL0=0xfe;if(AA==5){currentspeed=count/3;display(currentspeed);count=0;AA=0;PID();}}void Timer1() interrupt 3{static int c=0;TH1=0xff;TL1=0x66;//1ms初值重置c++; //每次定时器溢出加1//PID();if(c<=pid_val_mid) PWM=1;if(c>pid_val_mid) PWM=0;if(c>=65) c=0;}void key_int() interrupt 0 //外部中断P32口{count++;}void main(){timer();//定时器初始化while(1){}}。
数字PID算法与PWM在直流电机调速中的应用摘要详细论述数字PID算法与其在直流电机调速中的应用,PID控制是一种相当成熟的控制方法,原理简单,控制效果好,容易实现,所以广泛的应用于各种工程当中。
介绍数字PID算法配合PWM脉宽调制技术实现对直流电机的平滑调速。
关键词数字PID;PWM脉宽调制;A VR单片机0引言在转速算法设计中可供选择的算法有经典PID算法,神经网络算法,前馈控制算法。
PID算法的优点是算法理论成熟,不要求有精确的被控对象数学模型。
所以采用PID算法可以极大地减少建模工作,而将工作重点转移到PID控制参数的整定上来。
并且有非常成熟的参数整定方法可用。
PID控制算法的性能稳定可靠,开发风险小。
由于计算机技术和微处理器的飞速发展,现代控制越来越倾向于采用数字化的方式来实现,数字PID算法配合PWM脉宽调制技术可以实现对直流电机进行平滑调速,本文采用A VR单片机输出PWM波,直接对直流电机进行速度控制。
1数字PID算法系统框图:模拟PID调节器:;(1)数字PID调节器:数字PID调节器就是通过微处理器,这里采用A VR单片机对测速传感器采集的信息量进行量化处理,采样频率满足香农采样定理:,即:,对(1)进行量化(也可采用Z变换,这里用时域量化更容易说明问题)得:(2)K为采样的次数,Tsam为单片机采样周期,Kp,Ki,Kd,分别为比例,积分,微分的调节系数,这三个系数和PID调节器的性能指标息息相关,比例系数越大,响应速度越快,但比例系数太大将会影响被控过程的稳定性;积分时间越小,积分作用就越明显,加快偏差的调节速度,但如果积分时间过小,将会产生振荡,影响控制质量;微分调节是具有预测性质的调节部分,它通过检测量的变化率来施加控制,在数字PD中,它根据微处理器前后两次对偏差信号抽样值的差来产生相应的控制信号,在较小的微分时间下,可以加快响应速度,减小超调量,可以提高控制品质,但在较大的微分时间常数下,会对噪声进行放大,产生振荡,影响控制质量,所以如何选择这三个参数要综合被控对象的特性和控制目的、要求来考虑。
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算法控制算法是微机化控制系统的一个重要组成部分,整个系统的控制功能主要由控制算法来实现。
直流无刷电机 pid调速毕业设计_基于单片机和PID算法的直流电机调速设计(原创)导读:就爱阅读网友为您分享以下“毕业设计_基于单片机和PID算法的直流电机调速设计(原创)”的资讯,希望对您有所帮助,感谢您对92to 的支持!摘要在运动控制系统中,电机转速控制占有至关重要的作用,其控制算法和手段有很多,模拟PID控制是最早发展起来的控制策略之一,长期以来形成了典型的结构,并且参数整定方便,能够满足一般控制的要求,但由于在模拟PID控制系统中,参数一旦整定好后,在整个控制过程中都是固定不变的,而在实际中,由于现场的系统参数、温度等条件发生变化,使系统很难达到最佳的控制效果,因此采用模拟PID控制器难以获得满意的控制效果。
随着计算机技术与智能控制理论的发展,数字PID技术渐渐发展起来,它不仅能够实现模拟PID所完成的控制任务,而且具备控制算法灵活、可靠性高等优点,应用面越来越广。
本设计以上面提到的数字PID为基本控制算法,以AT89S51单片机为控制核心,产生占空比受数字PID算法控制的PWM脉冲实现对直流电机转速的控制。
同时利用光电传感器将电机速度转换成脉冲频率反馈到单片机中,实现转速闭环控制,达到转速无静差调节的目的。
在系统中采数码管显示器作为显示部件,通过2×2键盘设置P、I、D、V四个参数,启动后可以通过显示部件了解电机当前的转速。
该系统控制精度高,具有很强的抗干扰能力。
关键词:数字PID;PWM脉冲;占空比;无静差调节AbstractIn the motion control system,the control of electromotor's rotate speed is of great importance,there are a lot of speed control arithmetics andmethods ,the analog PID control is one of the earliest developed control policies which has formed typical structure ,its parametric setting is convenient and it's easy to meet normal control's demand,but as the whole control process is fixed once the parameter has been set while practically the changes of those conditions like the system parameters and temperature of the environment prohibit the system from reaching its best control effect,so the analog PID controller barely has satisfied effect.With the development of computer technology and intelligent control theory ,the digital PID technology is thriving which can achieve the analog PID's control tasks and consists of many advantages like flexible control arithmetics and high reliability,it is widely used now.This design is based on the digital PID mentioned above as basic control arithmetic and AT89S51 SCM as control core,the system produces PWM impulse whose duty ratio is controlled by digital PID arithmetic to make sure the running of direct current machine's rotate speed.Meanwhile,the design uses photoelectric sensor to transduce the electromotor speed into impulse frequencyand feed it back to SCM,this process implements rotate speed's closed loop control to attain the purpose of rotate speed's astatic modulation.In this system, the 128×64LCD is used as display unit , the 4×4 keyboard sets those four parameters P、I、D、V and obverse and reverse control,after starting up,the display unit shows the electromotor's current rotate speed and runtime.The system has great control precision and anti-jamming capability.Keywords:digital PID;PWM impulse;dutyfactor;astatic modulation前言21世纪,科学技术日新月异,科技的进步带动了控制技术的发展,现代控制设备的性能和结构发生了翻天覆地的变化。
直流电机调速pwm的原理
直流电机调速PWM(脉宽调制)的原理是通过改变电机供电
电压的占空比来实现电机的转速调节。
PWM调速技术通过以
一定的周期(周期时间T)将电源电压以脉冲的形式施加给电机,其中脉冲的宽度(脉宽)决定了每个周期内电源对电机的供电时间比例。
在PWM调速中,周期时间(T)和脉宽时间(Ton)与占空
比(Duty Cycle)之间的关系可以表示为:
占空比(D)= Ton / T
通过改变占空比D的大小,可以控制每个周期中电机所接收
到的有效电压信号的时间比例。
当占空比D变小时,电机接
收到的有效电压时间减少,电机的平均输入功率减小,从而降低转速;反之,当占空比D增大时,电机接收到的有效电压
时间增加,电机的平均输入功率增加,从而提高转速。
实现PWM调速的关键是通过开关器件控制电源电压的开关状
态来实现脉冲信号的生成和调节。
常见的开关器件包括晶体管和MOS管。
通过控制开关器件的导通和截止,可以控制电源
电压的施加和切断。
同时,PWM调速还需要一个控制电路来根据需要改变占空比。
控制电路通常是由微处理器、单片机或专用的PWM芯片来实现,它可以根据不同的控制需求,调整占空比大小,并将相应的控制信号发送给开关器件。
总体而言,直流电机调速PWM的原理是通过改变电机供电电压的占空比来控制电机的转速。
通过控制器件的开关状态和相应的控制电路,可以实现对占空比的调节,从而完成电机的调速操作。