有段时间没来这里写东西。最近稍微有些忙,工程硕士报名了,又有一部分时间给它了。
言归正传,之前一直在学习PID算法,最近再用FPGA来实现PID控制,目前进行的2个实践一个,一个是温
度控制,和无刷直流电机的控制。
温度控制是用单闭环的PID算法控制。
无刷电机控制是用双闭环PI算法,也就是在电机控制里经常提到的电流环和速度环。
最近抽空初步完成了PID算法的FPGA实现。
增量式的PID控制理论,这里就不说了,博客里有具体公式。
整个算法过程说直白点就是公式的硬件实现,用到了altera提供的IP核,整个的设计要注意的时钟的选
取,流水线的应用。
先上rtl级视图
ek1,ek2,ek3 在之前的数据处理模块里做了延迟处理,同时刻下为ek,(ek-1)e(k-2),控制系数和差值
都是10位有符号数,后4位为定点小数位,作为温度测量值和输出pwm控制数据精度尚可满足要求。
算法实现是用增量式PID算法,需要位置式输出,所以最后输出前做了累加处理。
这个PID算法是用来处理温度,温度反馈值是由ds18b20 测出,由于测温设备的控制时延大概在1s一次,但
PID算法时延只需要几个时钟周期在微秒级别,所以在这里做了个时能信号ds_en,ds18b20 测完一次温度值后
时能拉高,累加器输出,保证整个数据变化流。
下图是资源消耗图
功能仿真图
仿真做的比较简单,只取了几个简单的数值,第一次做算法类处理,望有经验的看客多多提出建议。
用户377235 2016-4-4 17:50
你这篇文章也太简单了吧,图片还不清晰,大概只有你自己能看明白,别人几乎获取不到有价值的信息
用户377235 2014-4-12 22:36
用户432610 2013-9-28 15:10