library to use pid easier
Diff: PID_lib.cpp
- Revision:
- 4:344e46625032
- Parent:
- 3:80e7ed9fdb02
- Child:
- 5:ae183f132d39
diff -r 80e7ed9fdb02 -r 344e46625032 PID_lib.cpp --- a/PID_lib.cpp Thu Oct 20 07:36:28 2022 +0000 +++ b/PID_lib.cpp Thu Dec 15 00:58:59 2022 +0000 @@ -2,7 +2,8 @@ PID_lib::PID_lib(PinName direksi1, PinName direksi2, PinName pulseWidth) : dir1(direksi1), dir2(direksi2), pwm(pulseWidth){ - ppr = 540.0f; + // ppr = 540.0f; + ppr = 1000.0f; dir1 = 0; dir2 = 0; @@ -11,8 +12,21 @@ float ppr = 540.0f; float phi = 3.14285714; + // t.start(); -// t.reset(); +// tr.reset(); +} + +void PID_lib::manualPwm(int dir ,float speed_){ + if(dir == 1){ + dir1 = 0; + dir2 = 1; + pwm = speed_; + }else if(dir == 0){ + dir1 = 1; + dir2 = 0; + pwm = speed_; + } } void PID_lib::stop(){ @@ -25,6 +39,9 @@ eI = 0; eD = 0; pidPwm = 0; + pwm = 0; + dir1 = 0; + dir2 = 0; } // kp ki kd untuk sp 50 tuning manual lagi stelah tuning matlab @@ -139,3 +156,17 @@ // pc.printf("%f;%1lu\n",pidPwm,t1.read_high_resolution_us()); } +void PID_lib::record_data(int dir_,float speed_, float freq_rec, float t_r){ + rpm_rec = freq_rec/ppr*60; + if(dir_ == 1){ + pwm = speed_; + dir1 = 1; + dir2 = 0; + }else if(dir_ == 0){ + pwm = speed_; + dir1 = 1; + dir2 = 0; + } + printf("%f;%.2f;%llu\n",speed_,rpm_rec,t_r); +} +