library to use pid easier

Committer:
fachrizi_kiki
Date:
Thu Oct 20 07:36:28 2022 +0000
Revision:
3:80e7ed9fdb02
Parent:
2:77ef3d60d8d9
Child:
4:344e46625032
update timer

Who changed what in which revision?

UserRevisionLine numberNew contents of line
fachrizi_kiki 2:77ef3d60d8d9 1 #ifndef PID_lib_H
fachrizi_kiki 2:77ef3d60d8d9 2 #define PID_lib_H
fachrizi_kiki 0:e14308f43fdf 3
fachrizi_kiki 2:77ef3d60d8d9 4 /**
fachrizi_kiki 2:77ef3d60d8d9 5 * Includes
fachrizi_kiki 2:77ef3d60d8d9 6 */
fachrizi_kiki 0:e14308f43fdf 7 #include "mbed.h"
fachrizi_kiki 0:e14308f43fdf 8
fachrizi_kiki 2:77ef3d60d8d9 9 /**
fachrizi_kiki 2:77ef3d60d8d9 10 * Proportional-integral-derivative controller.
fachrizi_kiki 2:77ef3d60d8d9 11 */
fachrizi_kiki 1:ebb9cfc0cff5 12 class PID_lib {
fachrizi_kiki 2:77ef3d60d8d9 13
fachrizi_kiki 1:ebb9cfc0cff5 14 public:
fachrizi_kiki 2:77ef3d60d8d9 15
fachrizi_kiki 1:ebb9cfc0cff5 16 /*
fachrizi_kiki 1:ebb9cfc0cff5 17 initialization
fachrizi_kiki 1:ebb9cfc0cff5 18
fachrizi_kiki 1:ebb9cfc0cff5 19 --------------
fachrizi_kiki 1:ebb9cfc0cff5 20
fachrizi_kiki 1:ebb9cfc0cff5 21 inisialisasi
fachrizi_kiki 1:ebb9cfc0cff5 22 */
fachrizi_kiki 2:77ef3d60d8d9 23 PID_lib(PinName dir1, PinName dir2, PinName pwm);
fachrizi_kiki 1:ebb9cfc0cff5 24 /*
fachrizi_kiki 1:ebb9cfc0cff5 25 get the pid pwm
fachrizi_kiki 1:ebb9cfc0cff5 26
fachrizi_kiki 1:ebb9cfc0cff5 27 --------------
fachrizi_kiki 1:ebb9cfc0cff5 28
fachrizi_kiki 1:ebb9cfc0cff5 29 keluarkan nilai pwm pid
fachrizi_kiki 1:ebb9cfc0cff5 30 */
fachrizi_kiki 3:80e7ed9fdb02 31 void pid_pwm(float target_, float kp_, float ki_, float kd_, float rpm, float t_);
fachrizi_kiki 3:80e7ed9fdb02 32 void pwm_read(float target_, float kp_, float ki_, float kd_, float rpm, float t_);
fachrizi_kiki 3:80e7ed9fdb02 33 void stop();
fachrizi_kiki 2:77ef3d60d8d9 34
fachrizi_kiki 1:ebb9cfc0cff5 35 private:
fachrizi_kiki 3:80e7ed9fdb02 36 // Timer t;
fachrizi_kiki 0:e14308f43fdf 37 DigitalOut dir1;
fachrizi_kiki 2:77ef3d60d8d9 38 DigitalOut dir2;
fachrizi_kiki 2:77ef3d60d8d9 39 PwmOut pwm;
fachrizi_kiki 0:e14308f43fdf 40 float rpm;
fachrizi_kiki 3:80e7ed9fdb02 41 float freq;
fachrizi_kiki 3:80e7ed9fdb02 42 float ppr;
fachrizi_kiki 0:e14308f43fdf 43 float e;
fachrizi_kiki 0:e14308f43fdf 44 float laste;
fachrizi_kiki 0:e14308f43fdf 45 float eI;
fachrizi_kiki 0:e14308f43fdf 46 float eD;
fachrizi_kiki 0:e14308f43fdf 47 float dt;
fachrizi_kiki 0:e14308f43fdf 48 float tim;
fachrizi_kiki 0:e14308f43fdf 49 float lastime;
fachrizi_kiki 0:e14308f43fdf 50 float pidPwm;
fachrizi_kiki 0:e14308f43fdf 51 float pwmLebih;
fachrizi_kiki 0:e14308f43fdf 52 float lastPid;
fachrizi_kiki 0:e14308f43fdf 53 float hP;
fachrizi_kiki 0:e14308f43fdf 54 float hI;
fachrizi_kiki 0:e14308f43fdf 55 float hD;
fachrizi_kiki 0:e14308f43fdf 56 float setI;
fachrizi_kiki 0:e14308f43fdf 57
fachrizi_kiki 1:ebb9cfc0cff5 58 float rpmFilt;
fachrizi_kiki 1:ebb9cfc0cff5 59 float rpmFiltn1;
fachrizi_kiki 1:ebb9cfc0cff5 60 float rpmn1;
fachrizi_kiki 2:77ef3d60d8d9 61
fachrizi_kiki 2:77ef3d60d8d9 62
fachrizi_kiki 0:e14308f43fdf 63 };
fachrizi_kiki 0:e14308f43fdf 64
fachrizi_kiki 2:77ef3d60d8d9 65 #endif