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
Diff: main.cpp
- 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