利用DSP2812编写直流电机PID调速程序(C语言)

2019-07-15 18:39发布

本人现在已经通过DSP2812中SCIA接收上位机发送的数据来控制电机的转速,采用CAP3来捕获光电编码器来测量电机的转速,现在想在程序里面添加PID调节电机的转速,主要通过PID输出调整PWM波形的占空比来调节电机的转速,请各位大神赐教
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
16条回答
MMMEEELLL
1楼-- · 2019-07-16 16:48
 精彩回答 2  元偷偷看……
MMMEEELLL
2楼-- · 2019-07-16 22:22
1406093611 发表于 2017-9-12 11:32
你可以单独建一个PID源文件,PID主要用于反馈回来的电机实际转速的参数进行矫正,比如在这里,DSP从上位机接收到了电机转速的目标值,而实际的转速值与设定的目标值不一致,就可以通过PID控制让实际转速达到目标值。PID程序放在哪里不重要,重要的是你要调用PID的子程序来实现参数的控制,将PID处理过的数据,转变为控制 ...

你好,想向你请教一下,PID的输出与PWM占空比的关系,如果用PID的输出调节PWM占空比是不是就把PID的输出直接加到PWM占空比上,还是要经过一定的比例关系再加到PWM占空比上?
1406093611
3楼-- · 2019-07-17 01:53
MMMEEELLL 发表于 2017-9-12 20:47
你好,想向你请教一下,PID的输出与PWM占空比的关系,如果用PID的输出调节PWM占空比是不是就把PID的输出直接加到PWM占空比上,还是要经过一定的比例关系再加到PWM占空比上?

你好,由于白天上班,所以QQ不好回复,请谅解。
PID和PWM的关系是这样的:PID和PWM是独立的,但是PID可以影响PWM占空比的输出,也就是说,PID调整后会产生一个值,那么这个值是一个参考值,你在程序用的时候是需要判断这个参考值在什么范围内,然后在相应的范围内再给出对应的PWM占空比,这是一种PID与PWM的处理方式。

PID就是(比例+积分+微分)P+I+D,实际使用中可以是PI控制,也可以是PD控制,也可以是PID控制,需要根据实际情况做相应的调整。

楼主现在应该分清楚PID只是一种算法,它服务于其他控制类函数,比如就是PWM控制。

给楼主总结一下:1、PID和PWM是独立的个体,不是把PID的处理后的调整值直接作为PWM的占空比,除非你用PID处理后的值是整数并且在PWM占空比精度范围内,那就直接作为PWM占空比是可以的。2、PID处理就包括了比例、积分、微分,是将实际值进行比例积分微分运算后去快速地尽可能地稳定在设定值附近。
SXST_T
4楼-- · 2019-07-17 04:00
这应该挺简单的吧。。。。。PID主要是在固定的时间内,通过负反馈调节当前输出,即目标速度=当前速度+增量;即可达到直流电机线性输出的效果。光编当前速度你已经有了,目标速度有了,解决增量问题需要调节比例、积分、微分值就可以实现了。附上贴,原理一样的,如果适用,麻烦点一下标准答案,谢谢【教程】如何在STM32上实现增量式PID转
http://bbs.elecfans.com/jishu_484125_1_1.html
(出处: 中国电子技术论坛)
SXST_T
5楼-- · 2019-07-17 04:34
对了,关于什么时候调节的问题,可以做一个100MS的定时器,定时器去读出速度,然后进行PID调节,编码器测速也很好做,用M/T法测速直接就可以用了
MMMEEELLL
6楼-- · 2019-07-17 06:34
 精彩回答 2  元偷偷看……

一周热门 更多>