Un planta ideal para probar diferentes esquemas de control es un balancin.
Un balacin es un pendulo formado for una varilla con un motor con un helice en su extremo.
El objetivo es controlar la posiciòn angular por medio de fuerza de empuje generada por la helices del motor
Para medir la posiciòn de la varilla se usa un potenciometro conectado al eje de rotaciòn, es decir el voltaje de salida de potenciometro es proporcional a la posiciòn angular.
La fuerza de empuje de la helice es proporcional a la fuerza a velocidad del motor y esta a su vez es proporcianal a potencia pwm que se le alimente.

La entrada al control PID es el error de posiciòn angular y la salida es el ancho de pulso PWM.
#include <PID_v1.h>
int valorpote; //Variable que recoge el valor del potenciómetro
int pwm1; //Variable del PWM 1
int pin2=9; //Entrada 2 del L293D al Enable salida PWM
//Define Variables we'll be connecting to
double posicion, Setpoint,Output, error;
//Specify the links and initial tuning parameters
double Kp=68.77, Ki=10000, Kd=7.16;
//double Kp=1, Ki=0.1, Kd=0.23;
PID myPID(&posicion, &Output, &Setpoint, Kp, Ki, Kd, DIRECT);
void setup(){
Setpoint = 96; //posicion referencia Voltalje 80
pinMode(pin2,OUTPUT);
posicion = analogRead(0);
Serial.begin(9600); //Iniciamos la comunicación con el puerto monitor serial
myPID.SetMode(AUTOMATIC);
myPID.SetOutputLimits(0, 255);
}
void loop(){
posicion = analogRead(0);
error = Setpoint - posicion;
// valorpote=analogRead(1);
myPID.Compute();
analogWrite(pin2,Output);
Serial.println("x");
Serial.println(posicion);
Serial.println(error);
Serial.println(Output);
Serial.println("x");
}



