Trabajo en el cual se realiza un PID, con los valores ingresados por medio de pulsadores, que son finalmente mostrados con el resultado en un lcd
Dependencies: Debounced TextLCD mbed
Fork of PID_con_pulsadores by
Revision 3:b248a19548db, committed 2015-11-23
- Comitter:
- GermanD
- Date:
- Mon Nov 23 23:56:23 2015 +0000
- Parent:
- 2:c4dc480057f6
- Commit message:
- Trabajo, para la creaci?n de PID, el cual se pueda modificar por pulsadores, y muestre tanto las variables y su resultado en un lcd
Changed in this revision
main.cpp | Show annotated file Show diff for this revision Revisions of this file |
diff -r c4dc480057f6 -r b248a19548db main.cpp --- a/main.cpp Tue Oct 13 22:10:20 2015 +0000 +++ b/main.cpp Mon Nov 23 23:56:23 2015 +0000 @@ -35,21 +35,21 @@ while(1) { - if (button1.falling())//se cuenta en el flanco de caida para el boton 1 + if (button1.falling())//se tiene en cuenta es el flanco de caida (boton 1) { led1 =!led1; if (p==1)// posicion 1 en el LCD { - ++sp;//incrementa de a uno - if (sp>=5) // se limita sp porque el mayor valor que toma es 5 + ++sp; //incrementa de a uno + if (sp>=5) // el mayor valor que toma sp es 5 {sp=5; } lcd.locate(3,0); - lcd.printf(" ");//borra el valor anterior + lcd.printf(" "); //borra el valor anterior lcd.locate(3,0); lcd.printf("%d", sp);//decimal - wait (0.5); //para evitar un error al hundir el boton, y que el programa no lo tome como si se hubiera dejado hundido el boton + wait (0.5); // para evitar que el programa crea que se dejó pulsado el boton } else if (p==2) // cambia a posicion 2 @@ -97,12 +97,12 @@ kd = presionado_incremento(11,1,kd); //se llama la funcion de incremento para kd } } - if (button2.falling())//se cuenta en el flanco de caida para el boton 2 decrementar + if (button2.falling())//se cuenta en el flanco de caida para el boton 2 (decrementar) { led2 =!led2; if (p==1) { - if (sp==0) // no mostrar nada evita valores negativos + if (sp==0) // no mostrar nada { } else @@ -113,7 +113,7 @@ lcd.locate(3,0); lcd.printf("%d", sp); wait(0.5); - //sp = presionado_decremento(3,0,sp); //se utiliza la funcion decremento + } } if (p==2) @@ -125,11 +125,11 @@ { --kp; lcd.locate(11,0); - lcd.printf(" "); + lcd.printf(" "); // borra lo que habia antes lcd.locate(11,0); - lcd.printf("%d", kp); + lcd.printf("%d", kp); // imprime el valor de kp wait(0.5); - // kp = presionado_decremento(11,0,kp); + } } if (p==3) @@ -141,11 +141,11 @@ { --ki; lcd.locate(3,1); - lcd.printf(" "); + lcd.printf(" "); // borra el vlalor que habia lcd.locate(3,1); - lcd.printf("%d", ki); + lcd.printf("%d", ki);//pone el calor de ki wait(0.5); - //ki = presionado_decremento(3,1,ki); + } } if (p==4) @@ -161,7 +161,7 @@ lcd.locate(11,1); lcd.printf("%d", kd); wait(0.5); - // kd = presionado_decremento(11,1,kd); + } } } @@ -212,21 +212,20 @@ //enter if(button4.falling()) { - lcd.cls(); // al undir el boton 4 se borra la pantalla - //for (int h=0;h<100;h++) - //Vout= Vout+0.01; + lcd.cls(); //se borra la pantalla + while(bandera==0) { wait(0.2); - x=Vout.read(); // lee el voltaje de salida que nuestra analoga pero en porcentaje + x=Vout.read(); // lee el voltaje de salida en porcentaje //} //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 conversion respectiva al valor de salida + pwmset=(0.976801/5)*pwmset; // se pasa de porcentaje al respectivo valor de salida Vout=pwmset; - eInteg =eInteg+ error; // integral + eInteg =eInteg+ error; // integra ePrev = error; lcd.locate(0,1); lcd.printf("error=%f",error); @@ -262,7 +261,7 @@ { int marc=0,i=0; - while(button1==0) // Cuando el boton 1 esta presionado + while(button1==0) // mientras el boton 1 esta presionado { i=1; wait (0.5);