library to use pid easier
Diff: PID_lib.cpp
- Revision:
- 2:77ef3d60d8d9
- Parent:
- 1:ebb9cfc0cff5
- Child:
- 3:80e7ed9fdb02
--- a/PID_lib.cpp Sun Oct 16 10:07:21 2022 +0000 +++ b/PID_lib.cpp Sun Oct 16 11:14:26 2022 +0000 @@ -1,28 +1,12 @@ #include "PID_lib.h" -#include "mbed.h" + -PID_lib::PID_lib(PinName direksi1, PinName direksi2, PinName pulseWidth, float rpm) : dir1(direksi1), dir2(direksi2), pwm(pulseWidth), rpm(rpm){ +PID_lib::PID_lib(PinName direksi1, PinName direksi2, PinName pulseWidth) : dir1(direksi1), dir2(direksi2), pwm(pulseWidth){ rpm = rpm; dir1 = 0; dir2 = 0; pwm = 0; -// float kpA = 0.007770; -// float kiA = 0.003297; -// float kdA = 0.000015; -// -// float kpB = 0.03134; -// float kiB = 0.003605; -// float kdB = 0.001002; -// -// float kpC = 0.02040; -// float kiC = 0.003292; -// float kdC = 0.000015; -// -// float kpD = 0.02031; -// float kiD = 0.002760; -// float kdD = 3.943e-04; - float ppr = 540.0f; float phi = 3.14285714; @@ -36,14 +20,14 @@ -void pid_pwm(float target, float kp_,float ki_,float kd_){ +void PID_lib::pid_pwm(float target, float kp_,float ki_,float kd_, float rpm){ tim = t; dt = tim - lastime; rpmFilt = 0.03046875*rpm + 0.03046875*rpmn1 + 0.93906251*rpmFiltn1;//10hz filter //error computing start - e = sp - rpmFilt; + e = target - rpmFilt; eI += e; eD = e - laste; //error computing end @@ -90,10 +74,10 @@ //pwm saturasi end //motor start - pwm = fabs(pwmLebih1); + pwm = fabs(pwmLebih); //motor end lastPid = pidPwm; - pc.printf("%f\n", pwmLebih); + printf("%f\n", pwmLebih); }