pid encoder

Dependencies:   DebouncedIn QEI TextLCD_encoder mbed

Fork of PID_Encoder by Laura Corrales

Files at this revision

API Documentation at this revision

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