Diagrama eléctrico y código para contol PD, Péndulo invertido

2
Código //Asignación de pines y declaración de variables int sensorPin = A0; //Pin para lectura analógica int Pin2 = 9; //Pin para PWM 1 int Pin1 = 10; //Pin para PWM 2 float e=0; //error float e0=0; //error pasad0 float pd=0; //variable de control float d=0; //Diferencia entre error y error pasado float val=0; //Valor analógico leído void setup() { // declare the ledPin as an OUTPUT: pinMode(Pin1, OUTPUT); //PIN1 salida PWM pinMode(Pin2, OUTPUT); //PIN2 salida PWM } void loop() { val = analogRead(sensorPin); //lee entrada del sensor e=val-455; //error= valor leído menos referencia d=e-e0; //diferenciación discreta e0=e; //error pasado //control pd= (43*e) + (25*d); // constantes multiplicando a e y a d pd = constrain(pd, -255, 255); //Limitar pd //Condiciones de posición if (pd>0) { analogWrite(Pin1, pd);//activar pin1 analogWrite(Pin2, 0); //desactivar pin2 }

Transcript of Diagrama eléctrico y código para contol PD, Péndulo invertido

Page 1: Diagrama eléctrico y código  para contol PD, Péndulo invertido

Código

//Asignación de pines y declaración de variables

int sensorPin = A0; //Pin para lectura analógicaint Pin2 = 9; //Pin para PWM 1

int Pin1 = 10; //Pin para PWM 2float e=0; //errorfloat e0=0; //error pasad0float pd=0; //variable de controlfloat d=0; //Diferencia entre error y error pasadofloat val=0; //Valor analógico leído

void setup() {  // declare the ledPin as an OUTPUT:  pinMode(Pin1, OUTPUT); //PIN1 salida PWM  pinMode(Pin2, OUTPUT); //PIN2 salida PWM}void loop() {   val = analogRead(sensorPin); //lee entrada del sensor  e=val-455;                   //error= valor leído menos referencia  d=e-e0;                      //diferenciación discreta  e0=e;                        //error pasado    //control  pd= (43*e) + (25*d); // constantes multiplicando a e y a d   pd = constrain(pd, -255, 255); //Limitar pd    //Condiciones de posición    if (pd>0)  {     analogWrite(Pin1, pd);//activar pin1      analogWrite(Pin2, 0); //desactivar pin2   }  if (pd<0)  {    analogWrite(Pin2, abs(pd));//activar pin2     analogWrite(Pin1, 0); //Descativar pin1   }      }

Page 2: Diagrama eléctrico y código  para contol PD, Péndulo invertido