Software > Software

PID algorithm

**[email protected]**:

Error = target_pos - current_pos; //calculate error

previos_error=error;

P = Error * Kp; //error times proportional constant gives P

I = I + (Ki*Error); //calculates the integral value

D = kd * (Error - previos_error); //stores change in error to derivate

Correction = P + I + D;

pwm = 175;

RPM_of_Lm = pwm - (Correction); // calculate pwm for motors

RPM_of_Rm = pwm + (Correction);

now is this controller right???

**jkerns**:

You have two error terms one Error and one error. That is a problem.

You set the value for the previous error right after you calculate the Error - too late - you need to do that BEFORE you change the value of Error.

But you are getting closer.

**[email protected]**:

is the term correction right????

will it work properly...?

**jkerns**:

If you fix the errors noted above it should work (you will have to tune the gains of course - I would set Ki and kd = 0 and just work with Kp to start. Set the intital value to 10 - if that doesn't work try 1 (if it's turning too much) or 100 (not turning enough) once you get close you can change it by double or half instead of by 10 or 1/10)

**[email protected]**:

thanxx .. alot for your help....!

i am fixing the issues with the driver circuit ....

i would probably finish the driver problem in some days and than start tuning part.....

Navigation

[0] Message Index

[*] Previous page

Go to full version