2 #include "controllers.h"
6 * Very simple PID regulator.
7 * Now only with P-part so that the error doesnt go to zero.
8 * TODO: add anti-wind up and I and D parts
10 void pos_pid(struct rpi_state* state){
12 duty_tmp = PID_P*(state->desired_pos - (int32_t)state->spi_dat->pozice);
13 if (duty_tmp>MAX_DUTY){
15 }else if (duty_tmp<-MAX_DUTY){
16 state->duty=-MAX_DUTY;
18 state->duty = duty_tmp;
24 * Very simple PID regulator.
27 void spd_pid(struct rpi_state* state){
30 error=state->desired_spd - state->speed;
31 state->spd_err_sum+=error;
32 duty_tmp = PID_P_S*error+PID_I_S*state->spd_err_sum;
33 if (duty_tmp>MAX_DUTY){
35 }else if (duty_tmp<-MAX_DUTY){
36 state->duty=-MAX_DUTY;
38 state->duty = duty_tmp;