如何用C51实现PID算法.docVIP

  • 3
  • 0
  • 约3.04千字
  • 约 8页
  • 2023-08-21 发布于浙江
  • 举报
用C51实现PID算法 关于PID的算法实现,很多书上都讲了。 但是,最近真正要用PID算法的时候,发现书上的代码在我们51上来实现还不是那么容易的事情。简单的说来,就是不能直接调用。仔细分析你可以发现,教材上的、网上现行的PID实现的C语言代码几乎都是用浮点型的数据来做的,可以想象,如果我们的计算使用浮点数据,那我们的51单片机来运行的话会有多痛苦。 所以,本人自己琢磨着弄了一个整型变量来实现了PID算法,由于是用整型数来做的,所以也不是很精确,但是对于很多的使用场合,这个精度也够了。关于系数和采样电压全部是放大10倍处理的。所以精度不是很高,但是也不是那么低,大部分的场合都够用了。实在觉得精度不够,可以再放大10倍或者100倍处理,但是要注意不超出整个数据类型的范围就可以了。 做的是带死区控制的PID算法。 具体的参考代码参见下面: ty pedef struct PIDValue { uint32 Ek_U int32[3]; //差值保存,给定和反馈的差值 uint8 EkF lag_U int8[3]; //符号,1则对应的Ek[i]为负数,0为对应的Ek[i]为正数 uint8 KP_U int8; uint8 KI_U int8; uint8 KD_U int8; uint8 B_U int8; //死区电压 uint8 KP; //显示修

文档评论(0)

1亿VIP精品文档

相关文档