![](/media/cache/img/default_profile.jpg.50x50_q85.jpg)
PID con pulsadores para circuito RC
Dependencies: Debounced TextLCD mbed
Diff: main.cpp
- Revision:
- 2:c4dc480057f6
- Parent:
- 1:744ee5bf7b7c
diff -r 744ee5bf7b7c -r c4dc480057f6 main.cpp --- a/main.cpp Tue Oct 13 22:04:26 2015 +0000 +++ b/main.cpp Tue Oct 13 22:10:20 2015 +0000 @@ -2,11 +2,7 @@ #include "DebouncedIn.h" #include "TextLCD.h" -// se quiere que las constantes del controlador sean variables debido a que se desea ajustes a cambio en el setpoint. -// la farma que se determino hacer fue que despues de mantener oprimido alguna de las constantes hasta cuenta de 1 en 1 hasta 10 -// luego que si aun esta oprimido cuenta de 10 en 10 hasta 100 y si aun esta oprimido cuenta de 100 en 100 hasta 999, de igual -// de igual manera funciona para decendente, el unico que no cumple estas condisiones es (sp)que llega maximo hasta 3 debido a -//que la salida analoga maxima son 3.21 voltios ya con la conversion realizada. + AnalogIn Vin(PTC2); // entrada analoga AnalogOut Vout(PTE30); // salida analoga @@ -223,12 +219,12 @@ { wait(0.2); x=Vout.read(); // lee el voltaje de salida que nuestra analoga pero en porcentaje - //x = x*(3.21/0.976801); // Voltios + //} //pid error = sp-x; // Calcula el error pwmset = kp* error+ki * eInteg +kd* (error - ePrev); // ecuacion para el PID - pwmset=(0.976801/5)*pwmset; // como el voltaje calculado fue un porcentaje se realiza una convercion respectiva al valor de salida + pwmset=(0.976801/5)*pwmset; // como el voltaje calculado fue un porcentaje se realiza una conversion respectiva al valor de salida Vout=pwmset; eInteg =eInteg+ error; // integral ePrev = error; @@ -262,11 +258,6 @@ } - -// se intento de utilizar la funcion steady, pero esta no funciono cuando se mantenia presionado, por lo tanto se usaron banderas para que cuando -// llegara a un valor determidado cambie de unidades -// se crearon dos fnciones tanto de incremento como decremento ya que se reduce mucho codigo debido a que hay que crear 2 lineas de codigo para cada -// cada constante kp, ki, kd y sp int presionado_incremento(int columna,int fila,int constante) { int marc=0,i=0; @@ -335,7 +326,7 @@ { int marc=0,i=0; - while(button2==0) // cuando el boton 2 esta precionado + while(button2==0) // cuando el boton 2 esta presionado { i=1;