Controlador PWM de temperatura Por Medio de accion por PWM... Lectura y filtro digiral de lectura de temperatura de Sensor LM35 a entradas análogas. Accionamiento de potencia por medio de Relés. Link De La Implementación: https://www.youtube.com/watch?v=gcQtUNqF5M0&list=UULR7eSOJgpTUlpzbloXAgIQ

Dependencies:   DebouncedIn QEI TextLCD_encoder mbed

Fork of PID_Encoder by Gustavo Ramirez

Revision:
2:fa1d90037a6c
Parent:
1:ffbcc55fa659
Child:
3:9347b362d33c
--- a/main.cpp	Sun Nov 10 05:50:46 2013 +0000
+++ b/main.cpp	Wed Nov 13 01:54:13 2013 +0000
@@ -6,7 +6,7 @@
 
 AnalogIn Vin(PTC2);
 TextLCD lcd(PTB10, PTB11, PTE2, PTE3, PTE4, PTE5); // rs, e, d4-d7
-QEI wheel (PTD5, PTD0, NC, 624);
+QEI wheel (PTD5, PTD0, NC, 100);
 
 AnalogIn y(PTB0);
 AnalogOut u(PTE30);
@@ -50,11 +50,11 @@
     while(1) {
     
               led3 =1;
-           if (button3.falling()) {
+           if (button3.falling()) {   //INCREMENTA POSICION DEL MENU CON BOTON 3 (Switche encoder)
               led3 =!led3;              
                ++j;
                }    
-                                                //INCREMENTA POSICION DEL MENU CON BOTON 3
+                                                
            if (j==0){      
                sp=sp+wheel.getPulses();
                wheel.reset();
@@ -187,43 +187,49 @@
            ap = kp*err;
            
            // se verifica que la accion integral no sea muy grande
-           if(ai<100){
+           //if(ai<500){
               ai =(ki*err)+ai;    //calculo de la integral del error
-                     }
-           else{
+               //      }
+           //else{
                 //Dejo de sumar la accion integral
-               }
+             //  }
                       
            ad = kd*(err-err_v); //calculo de la accion derivativa
-          
            pid = (ap+ai+ad);
            
            // se actualizan las variables *******************************************
-           err_v = err;      
+          // err_v = err;      
                 
            // se verifica que pid sea positivo **************************************
            if(pid<=0){
               pid=0;
                      }
-                     
            // se verifica que pid sea menor o igual la valor maximo *****************
            if (pid > 999){
                pid=999;
                          } 
                       
            // se actualizan las variables *******************************************
-           err_v = err;           
+           //err_v = err;           
            
            //se muestran las variables******************************************
            
-           wait(2);
+           wait(0.3);
+           lcd.locate(2,0);
+           lcd.printf("    ");
            lcd.locate(2,0);
            lcd.printf("%d",err);
            lcd.locate(10,0);
+           lcd.printf("    ");
+           lcd.locate(10,0);
            lcd.printf("%d",med);
            lcd.locate(2,1);
+           lcd.printf("    ");
+           lcd.locate(2,1);
            lcd.printf("%d",sp);
            lcd.locate(10,1);
+           lcd.printf("    ");
+           lcd.locate(10,1);
            lcd.printf("%d",pid);
            
            
@@ -231,7 +237,10 @@
            pidn=pid/999;
            //  se envia el valor pid a puerto analogico de salida (D/A) **************
            u.write(pidn);
+           err_v = err; 
            //  se repite el ciclo
            }
-               
-        }
+           
+           
+              
+        }
\ No newline at end of file