pid encoder
Dependencies: DebouncedIn QEI TextLCD_encoder mbed
Fork of PID_Encoder by
Revision 4:d42fe3777735, committed 2014-05-24
- Comitter:
- tony63
- Date:
- Sat May 24 15:05:40 2014 +0000
- Parent:
- 3:9347b362d33c
- Commit message:
- programa para implementar un controlador PID donde los datos ingresan por encoder
Changed in this revision
main.cpp | Show annotated file Show diff for this revision Revisions of this file |
diff -r 9347b362d33c -r d42fe3777735 main.cpp --- a/main.cpp Sun Dec 15 15:57:03 2013 +0000 +++ b/main.cpp Sat May 24 15:05:40 2014 +0000 @@ -3,14 +3,10 @@ #include "TextLCD.h" #include "QEI.h" - -AnalogIn Vin(PTC2); TextLCD lcd(PTB10, PTB11, PTE2, PTE3, PTE4, PTE5); // rs, e, d4-d7 QEI wheel (PTD5, PTD0, NC, 100); - AnalogIn y(PTB1); AnalogOut u(PTE30); - DigitalOut led1(LED1); DigitalOut led2(LED2); DigitalOut led3(LED3); @@ -31,7 +27,8 @@ int i; // indice de la variable int j; //variable controla cambio 4 posiciones -int kp, ki, kd, sp, yr, ap, ai, ad, err, med, err_v, cycle, pid; +int kp, ki, kd, sp; +float yr, ap, ai, ad, err, med, err_v, cycle, pid; int b=0; float pidn; Timer t; @@ -47,8 +44,7 @@ lcd.printf("Ki%d",ki); lcd.locate(8,1); lcd.printf("Kd%d",kd); - - + while(1) { led3 =1; @@ -184,7 +180,7 @@ // CICLO PRINCIPAL CONTROLADOR PID b=0; while(1) { - med=999*y.read(); //leer puerto analogo y asignar a med + med=1000*y.read(); //leer puerto analogo y asignar a med err = (sp-med); ap = kp*err; @@ -203,15 +199,9 @@ // se verifica que pid sea positivo ************************************** - if(pid<=0) - { - pid=0; - } + if(pid<=0){pid=0;} // se verifica que pid sea menor o igual la valor maximo ***************** - if (pid > 5000) - { - pid=5000; - } + if(pid>=1000){pid=1000;} // se actualizan las variables ******************************************* err_v = err; @@ -223,7 +213,7 @@ t.start(); b=1; } - if(t>=0.3) + if(t>=0.01) { wait(0.2); lcd.locate(2,0); @@ -245,15 +235,14 @@ } //Normalizacion de la salida - pidn=pid/999; + pidn=pid/1000; // se envia el valor pid a puerto analogico de salida (D/A) ************** u.write(pidn); // se repite el ciclo - wait(1.5); + wait(0.1); } - - + } \ No newline at end of file