经过几个星期的修改代码,单轴PID调节有点意思了。
硬件:
树莓派3b
mpu6050
pca9685
无刷电机 X 2
```
struct PID
{
float kp; //< proportional gain调整比例参数
float ki; //< integral gain调整积分参数
float kd; //< derivative gain调整微分参数
float pregyro;
//float desired; //< set point 期望值
float integ; //< integral积分参数
float iLimit; //< integral limit积分限制范围
float deriv; //< derivative微分参数
float preerror; //< previous error 上一次误差
float output;
float error; //< error 误差
float lastoutput;
} ;
PID Roll_Suit;
PID调节算法:measured是MPU6050的测量值, desired,是期望,这里期望是0.1, inital_Error是误差值0.38。
float Pid_Calc(PID &pidsuite,float measured,float desired,float Inital_Error)
{
pidsuite.error = desired - measured + Inital_Error ;//偏差:期望-测量值
pidsuite.error = pidsuite.error;
pidsuite.integ +