PID是伺服电机的一种控制技术。
当今的闭环自动控制技术都是基于反馈的概念以减少不确定性。反馈理论的要素包括三个部分:测量、比较和执行。测量关心的是被控变量的实际值,与期望值相比较,用这个偏差来纠正系统的响应,执行调节控制。在工程实际中,应用最为广泛的调节器控制规律为比例、积分、微分控制,简称PID控制,又称PID调节。
PID(比例(proportion)、积分(integration)、微分(differentiation))控制器作为最早实用化的控制器已有近百年历史,现在仍然是应用最广泛的工业控制器。PID控制器简单易懂,使用中不需精确的系统模型等先决条件,因而成为应用最为广泛的控制器。
这个问题要想说完整,可能能写一本书。
直流调速可以用硬件做,也可以用软件做。
用硬件做,就是最经典的双闭环调速模式,即速度反馈和电流反馈调速。说的直白点,就是速度慢了加点速,速度快了减点速;电流同样。具体的实现方法无非是把速度信号(通过码盘)和电流信号(通过采样电阻或霍尔传感器)采集回来,转成电压信号,叠加到控制信号中。
如果用软件做,就是常说的数字PID。最最基本的原理就是把速度值采回来,给CPU,CPU把这个采集回来的实际速度和设定速度做比较,慢了,就通过控制信号让电机加点速,快了,就通过控制信号让电机减点速,这就是P(比例)。这个和硬件调速的原理差不多。但这种方法只是理论上的,实际去做时,就会发现电机很难稳定在你想要的速度上,所以就加入了I和D(积分、微分)。按照PID算法,结合所用电机的特性,试验出适合自己控制对象的PID算法中的各参数值,就是PID控制。
就说这么多吧,建议你找本电机控制的书看看,这类书很多的。
#include<c8051f120h>
#define uint unsigned int
#define uchar unsigned char
uchar num1 = 0;
uint v_set = 40;
xdata uint pcacap2;
xdata uchar dutycycle;
uint A=10;//float D=004;float C=5;
//int xdata e0=0,e1=0,e2=0;
float xdata PWM=0;
bit isnewdata;
bit DIRECTON;
#define POSITIVE DIRECTON = 1
#define NEGATIVE DIRECTON = 0
void Oscillator_Init()
{
SFRPAGE = CONFIG_PAGE;
OSCICN = 0x83;
}
void Port_IO_Init()
{
SFRPAGE = 0x0F;
XBR0 = 0xF7;
XBR2 = 0x40;
}
void PCA_Init()
{
SFRPAGE=0x00;
PCA0CPM0=0x02;
PCA0CPM1=0x02;
PCA0CPM2=0x21;
PCA0CPL2=0x00;
PCA0CPH2=0x00;
PCA0MD=0x00;
PCA0CN=0x40;
EIE1|=0x08;
}
void PWM_set(uchar low)
{//占空比设置,高电平占空比为(256-low)/256
SFRPAGE = PCA0_PAGE;
if (DIRECTON == 1) {PCA0CPH0 = low;PCA0CPM1 = 0x02;PCA0CPM0 = 0x42;}
else {PCA0CPH1 = low;PCA0CPM0 = 0x02;PCA0CPM1 = 0x42;}
}
void PCA_ISR(void) interrupt 9 using 1 {
static xdata uint tmpcnt=0;
static xdata uint PCA0CP2=0;
xdata uint tmpcnt2;
if(CCF2){
tmpcnt2 = PCA0CPH2;
tmpcnt2 = tmpcnt2<<8;
PCA0CP2 = tmpcnt2 + PCA0CPL2;
pcacap2 = PCA0CP2-tmpcnt;
tmpcnt = PCA0CP2;
CCF2=0;
}
}
PID_SC(uint v)
{
int Uk_z;int e;
e = v - v_set;
//e1 = v1 - v_set;
//e2 = v2 - v_set;
//v2 = v1;
//v1 = v;
Uk_z = Ae;/+ De0 + C(e0 - 2e1 + e2);/
//Uk0 = Uk1 + Uk_z;
//Uk1 = Uk0;
//PWM = PWM - 256;
dutycycle = 00256 Uk_z;
}
void main()
{
//Oscillator_Init();
WDTCN = 0x07;
WDTCN = 0xDE;
WDTCN = 0xAD;
Port_IO_Init();
EA=1;
num1=0;
isnewdata=0;
PCA_Init();
POSITIVE;
while(1){PID_SC(pcacap2);PWM_set(dutycycle);}
}
编码器和pid有关系。通过编码器反馈电机的速度,PID的位置环准确控制滑块移动的位置和速度之间的关系。编码器(encoder)是将信号(如比特流)或数据进行编制、转换为可用以通讯、传输和存储的信号形式的设备,编码器把角位移或直线位移转换成电信号,前者称为码盘,后者称为码尺。
以上就是关于伺服电机PID是什么意思全部的内容,包括:伺服电机PID是什么意思、请各位大侠帮忙说明一下(PID控制)怎样用PID控制直流伺服电机啊、请问各位高手,我要编一个C语言控制的无刷电机程序。等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)