123下一页

[经验] 手把手教你玩转直流电机PID双环控制

  [复制链接]

技术员

发表于 2016-1-28 18:26:58   14651 查看 51 回复 显示全部楼层 倒序浏览
分享
手把手教你玩转直流电机PID双环控制

1.速度闭环控制
我们一般在速度闭环控制系统里面,使用增量式PI控制。而在我们的微处理器里面,因为控制器是通过软件实现其控制算法的,所以必须对模拟调节器进行离散化处理,这样它只需根据采样时刻的偏差值计算控制量。因此,我们需要使用离散的差分方程代替连续的微分方程。

假定采样时间很短时(我们的代码中是10ms),可做如下处理:

用一介差分代替一介微分;

用累加代替积分。

根据增量式离散PID公式

Pwm+=Kp[e(k)-e(k-1)]+Ki*e(k)+Kd[e(k)-2e(k-1)+e(k-2)]

e(k):本次偏差

e(k-1):上一次的偏差

e(k-2):上上次的偏差

Pwm代表增量输出

在我们的速度控制闭环系统里面只使用PI控制,因此对PID控制器可简化为以下公式:

Pwm+=Kp[e(k)-e(k-1)]+Ki*e(k)


具体通过C语言实现的代码如下:

int Incremental_PI (int Encoder,int Target)

{

float Kp=100,Ki=100; //PI参数由电机的种类和负载决定

static int Bias,Pwm,Last_bias;

Bias=Encoder-Target; //计算偏差

Pwm+=Kp*(Bias-Last_bias)+Ki*Bias; //增量式PI控制器

Last_bias=Bias; //保存上一次偏差

return Pwm; //增量输出

}

入口参数为编码器的速度测量值和速度控制的目标值,返回值为电机控制PWM

第一行代码为PI参数的定义,PI参数在不同的系统中不一样,我们的代码中的PID参数,仅针对平衡小车之家的电机空载时调试得到。

第二行是相关内部变量的定义。

第三行是求出速度偏差,由测量值减去目标值。

第四行使用增量PI控制器求出电机PWM

第五行保存上一次偏差,便于下次调用。

最后一行是返回。

10ms定时中断里面调用该函数实现我们的控制目标:

Moto1=Incremental_PI(Encoder,Target_velocity);

Set_Pwm(Moto1); //===赋值给对应MCUPWM寄存器

具体请结合完整代码理解,我们的代码基于STM32F103C8控制器,但是把基于C语言的PID控制器部分剥离,并放在control.c里面,故对STM32不熟悉的同学依然可以使用记事本打开这个文件观看。
2.位置闭环控制
根据位置式离散PID公式

Pwm=Kp*e(k)+Ki*∑e(k)+Kd[e(k)-e(k-1)]

e(k):本次偏差

e(k-1):上一次的偏差

∑e(k)e(k)以及之前的偏差的累积和;其中k1,2,,k;

Pwm代表输出

在我们的位置控制闭环系统里面只使用PI控制,因此对PID控制器可简化为以下公式:

Pwm=Kp*e(k)+Ki*∑e(k)


具体通过C语言实现的代码如下:

int Position_PI (int Encoder,int Target)

{

float Kp=15,Ki=0.01;

static int Bias,Pwm,Integral_bias;

Bias=Encoder-Target; //计算偏差

Integral_bias+=Bias; //求出偏差的积分

Pwm=Kp*Bias+Ki*Integral_bias; //位置式PI控制器

return Pwm; //增量输出

}

入口参数为编码器的位置测量值和位置控制的目标值,返回值为电机控制PWM

第一行代码为PI参数的定义,PI参数在不同的系统中不一样,我们的代码中的PID参数,仅针对平衡小车之家的电机空载时调试得到。

第二行是相关内部变量的定义。

第三行是求出速度偏差,由测量值减去目标值。

第四行通过累加求出偏差的积分。

第五行使用位置式PI控制器求出电机PWM

最后一行是返回。

10ms定时中断里面调用该函数实现我们的控制目标:

Moto1=Position_PI(Encoder,Target_position);

Set_Pwm(Moto1); //===赋值给PWM寄存器

具体请结合完整代码理解。

3.速度位置双环控制
速度位置双环控制由以上两个控制器进行嵌套,具体原理不再细讲,只对核心代码进行讲解:

Encoder=Read_Encoder(2);

Position+=Encoder;

Moto1=Position_PI(Position,Target_position);

Moto1=Incremental_PI(Encoder,-Moto1);

第一行是通过M法测速获得电机速度。

第二行是通过累加求出速度的积分,也就是电机的位置信息。

第三行是位置外环控制器,求出控制输出量,作为速度内环的控制目标值。

第四行是速度内环。

因为双环控制过程较复杂,故给出其控制原理图如下:


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

实习生

发表于 2016-1-29 22:07:07   来自发烧友APP
666
回复

点赞 举报

技术员

发表于 2016-1-30 10:08:08   来自发烧友APP
可以的!楼主辛苦了!
回复

点赞 举报

实习生

发表于 2016-1-30 22:45:36   来自发烧友APP
厉害
回复

点赞 举报

技术员

发表于 2016-1-31 13:11:13   来自发烧友APP
不错不错
回复

点赞 举报

实习生

发表于 2016-2-1 20:39:49  
不错,不错,学习了
回复

举报

技术员

发表于 2016-2-3 00:26:59   来自发烧友APP
这个可以做四轴
回复

点赞 举报

实习生

发表于 2016-2-12 14:15:31   来自发烧友APP
没看懂
回复

点赞 举报

技术员

发表于 2016-2-14 21:47:28  
好东西,学习了,谢谢!
回复

举报

实习生

发表于 2016-2-15 16:53:35  
看一看。都是有贡献的亲们。
回复

点赞 举报

实习生

发表于 2016-9-1 11:37:45  
可以。
回复

举报

实习生

发表于 2016-9-26 13:08:35  
好东西,下载啦先,
回复

举报

发表于 2016-10-14 09:11:06  
楼主666
回复

举报

技术员

发表于 2016-10-14 09:42:34  
谢谢谢谢谢谢谢谢谢谢
回复

点赞 举报

发表于 2016-11-23 16:45:18  
先收藏了 ,谢谢楼主分享
回复

点赞 举报

工程师

发表于 2016-11-28 19:52:38  
THANK YOU VERY MUCH !!!!!!!!!!!!!!!!!!!!!!!!!
回复

举报

发表于 2016-11-28 22:57:44  
谢谢
回复

举报

发表于 2016-11-28 23:01:21  
谢谢
回复

举报

等待验证会员

发表于 2016-12-1 11:57:23   来自手机
我们研究三相正弦永磁同步电机驱动器 产品应用在数控机床 和电动汽车上 现在在搞其他项目需要经费 需要代码的可以联系我15933076701  qq470921443
回复

点赞 举报

高级工程师

发表于 2016-12-1 22:48:22   来自手机
学习了,,谢谢了,,,,
回复

举报

123下一页
高级模式
您需要登录后才可以回帖 登录 | 注册

关闭

站长推荐 上一条 /7 下一条

快速回复 返回顶部 返回列表
-

推荐专区

技术干货集中营

专家问答

用户帮助┃咨询与建议┃版主议事

工程师杂谈

工程师创意

工程师职场

论坛电子赛事

社区活动专版

发烧友活动

-

嵌入式论坛

ARM技术论坛

Android论坛

Linux论坛

单片机/MCU论坛

FPGA|CPLD|ASIC论坛

DSP论坛

嵌入式系统论坛

-

电源技术论坛

电源技术论坛

无线充电技术

-

硬件设计论坛

PCB设计论坛

电路设计论坛

电子元器件论坛

控制|传感

总线技术|接口技术

-

测试测量论坛

LabVIEW论坛

Matlab论坛

测试测量技术专区

仪器仪表技术专区

-

EDA设计论坛

multisim论坛

PADS技术论坛

Protel|AD|DXP论坛

Allegro论坛

proteus论坛|仿真论坛

EasyEDA-中国人自已的EDA工具

Orcad论坛

-

综合技术与应用

电机控制

智能电网

光电及显示

参考设计中心

汽车电子技术论坛

医疗电子论坛

-

开源硬件

-

无线通信论坛

无线通信技术专区

天线|RF射频|微波|雷达技术

-

IC设计论坛

芯片测试与失效分析

Mixed Signal/SOC[数模混合芯片设计]

Analog/RF IC设计

设计与制造封装测试

-

厂商专区

TI论坛

TI Deyisupport社区

-

检测技术与质量

电磁兼容(EMC)设计与整改

安规知识论坛

检测与认证

-

消费电子论坛

手机技术论坛

平板电脑/mid论坛

音视/视频/机顶盒论坛

-

电子论坛综合区

聚丰众筹官方社区

新人报道区

聚丰供应链

-

论坛服务区

-

供求信息发布

供需广告

招聘┃求职发布区

电子展览展会专区