|
![](static/image/common/ico_lz.png)
楼主 |
发表于 2005-6-23 17:02:21
|
显示全部楼层
3楼,你在广东什么地方?
我在广州
离散PID的基本算法:
// x = 系统输入值, u = 控制量, y = 系统输出值,error = 误差,
// prev_error = 上一拍误差, integral = 误差积分值, deriv = 误差微分值;
// 可以用u控制PWM的输出
signed int x, u, y, error, prev_error, integral, deriv;
// kp = 比例增益, ki = 积分增益, kd = 微分增益;
// 调整kp, ki, kd的值使系统响应满足要求
unsigned int kp, ki, kd;
//每拍通过以下程序段计算控制量u
error = x - y; //计算误差, y的值取自ADC
integral += error; //计算误差积分值
deriv = (error - prev_error); //计算误差微分值
u = kp * (error + ki * integral + kd * deriv); //计算控制量
prev_error = error; //保留误差值供下一次计算使用
实现起来很简单吧?
-----此内容被lei_yong于2005-06-23,17:03:50编辑过 |
|