Fabien Lepoutre
/
PID_2
main.cpp
- Committer:
- fabienlepoutre
- Date:
- 2012-02-27
- Revision:
- 0:e837a6fef44b
File content as of revision 0:e837a6fef44b:
#include "mbed.h" DigitalOut myled(LED1); AnalogIn entree(p20); AnalogOut sortie(p18); int main() { float integral =0; float previous_error =0; float error =0; float prev_sortie =0; float Kp = 2.72, Ki=2.61, Kd=0; int interval=2; float derivative = 0; float sortie_ns; myled = 0; /* printf("Entrer les parametres Kp : \r\n"); scanf("%f", &Kp); printf("Ki : \r\n"); scanf("%f", &Ki); printf("Kd: \r\n"); scanf("%f", &Kd); printf("Periode d'echantillonnage (en ms) :\r\n"); scanf("%d", &interval);*/ printf("Debut du programme avec Ki = %f et Kp = %f \n\r", Ki, Kp); float ana_test = entree.read()*3.3; printf("p20 = %f \n\r", ana_test); int i=0; while(1){ // printf("In : \r\n"); // scanf("%f", &error); /* while(i<20){ myled = 1; error = error + entree.read(); i++; } i=0; myled=0; error = error/20.0;*/ error = entree.read(); integral = integral + (previous_error*interval); derivative = (error - previous_error)/interval; sortie_ns = prev_sortie + (Kp*error)-(Ki*previous_error)+(Kd*derivative); if(sortie_ns >1) sortie_ns =1; if(sortie_ns<0) sortie_ns=0; sortie = sortie_ns; prev_sortie = sortie_ns;; previous_error = error; wait_ms(interval); } }