Code om de PID controller af te stellen aan de hand van een sinus golf
Dependencies: mbed QEI MODSERIAL FastPWM biquadFilter
Diff: main.cpp
- Revision:
- 10:548230cbdb8e
- Parent:
- 9:aa5d6636197b
--- a/main.cpp Fri Mar 22 10:54:48 2019 +0000 +++ b/main.cpp Fri Mar 22 11:24:40 2019 +0000 @@ -164,7 +164,7 @@ static double error1_prev = error1; // initialization with this value only done once! static BiQuad LowPassFilter(0.0640, 0.1279, 0.0640, -1.1683, 0.4241); //(BIQUAD_FILTER_TYPE type, T dbGain, T freq, T srate, T bandwidth); - /* PID testing + // PID testing Kp1 = 10 * Pot2; Ki1 = 10 * Pot1; @@ -174,7 +174,7 @@ if (!But1){ Kd1 = Kd1 - 0.01; } - */ + // Proportional part: double u_k1 = Kp1 * error1; @@ -230,8 +230,8 @@ void moter1_control(double u1) { direction1= u1 > 0.0f; //positief = CW - if (fabs(u1)> 0.7f) { - u1 = 0.7f; + if (fabs(u1)> 0.5f) { + u1 = 0.5f; } else { u1= u1; } @@ -256,9 +256,9 @@ float Ellebooghoek4 = Limits2(Ellebooghoek1); ElbowReference = Ellebooghoek4; - float Polshoek1 = Kinematics1(pwm2); - float Polshoek4 = Limits1(Polshoek1); - PolsReference = Polshoek4; + // float Polshoek1 = Kinematics1(pwm2); + // float Polshoek4 = Limits1(Polshoek1); + // PolsReference = Polshoek4; // Positie motor berekenen, in graden Pulses1 = encoder1.getPulses(); @@ -298,7 +298,7 @@ pwm1 =(Pot1*2)-1; } -/* + void Kdcount (void) // Voor het testen van de PID waardes { int count = 0; @@ -309,7 +309,7 @@ } count ++; } -*/ + int main() { @@ -318,7 +318,7 @@ int counter = 0; pwmpin2.period_us(60); PotRead.attach(ContinuousReader,Ts); - //Kdc.attach(Kdcount,5); //Voor PID waarde testen + Kdc.attach(Kdcount,5); //Voor PID waarde testen pc.baud(115200); //pc.printf("start\r\n"); led = 1;