伺服电机PID是什么意思

伺服电机PID是什么意思,第1张

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语言控制的无刷电机程序。等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/10209515.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-06
下一篇 2023-05-06

发表评论

登录后才能评论

评论列表(0条)

保存