Documente Academic
Documente Profesional
Documente Cultură
Matlab/Simulink:
controlador PID
Jorge Garca Tscar| July 21, 2011
1. Introduccin
2. Interfaz fsica
3. Programacin
3.1. Arduino: interfaz I/O
En primer lugar, el cdigo del Arduino debe ser capaz de (1)
leer V(\theta)V() del potencimetro, (2) enviarlo como dato a
travs del puerto serie, (3) recibir el dato de potencia necesaria al
motor y (4) escribir dicho dato en la salida analgica como seal PWM.
Hay que tener en cuenta que el conversor devuelve un valor entre 0 y
int out = 0;
byte in = 0;
byte pinOut = 10;
void setup() {
// inicializar puerto serie
Serial.begin(9600);
// preparar output
pinMode(pinOut, OUTPUT);
}
void loop() {
// leer del pin A0 como
out = analogRead(A0);
// escalar para obtener formato uint8
out = map(out, 0, 1023, 0, 255);
// enviar en base 10 en ASCII
Serial.write(out);
// leer del serie si hay datos
if(Serial.available()){
in = Serial.read();
// escribir en el pin 10
analogWrite(pinOut, in);
}
// esperar para estabilizar el conversor
delay(20);
}
%% Preparar la figura
f = figure('Name','Captura');
axis([0 length(ref_out) 0 5.1])
grid on
xlabel('Medida (-)')
ylabel('Voltaje (V)')
title('Captura de voltaje en tiempo real con Arduino')
hold all
%% Tratamiento
pos_out = pos_out(:);
pid_out = pid_out(:);
x = linspace(0,length(ref_out),length(ref_out));
%% Limpiar figura y dibujar
cla
plot(x,pid_out,'Color',[0.6,0.6,0.6],'LineWidth',2)
plot(x,ref_out,x,pos_out,'LineWidth',2)
legend('Control','Referencia','Posicin','Location','Best');
%% Salvar el grfico
savefigure('resultado','s',[4.5 3],'po','-dpdf')
Ejecutando este cdigo tras haber realizado otro ensayo del sistema,
hemos obtenido el siguiente resultado:
Se observa en este caso que el motor requiere mucho menos voltaje (en
gris) debido a que se trata de uno ms potente que el inicial y que el
sistema presenta todava una sobreoscilacin (overshoot) en la seal de
salida (en rojo) cuando la seal de referencia (en verde) presenta una
subida escaln, cosa que esperamos corregir en futuras versiones.
4. Conclusiones
En esta entrada se describe cmo es posible, con un presupuesto muy
reducido, construir montajes que permiten poner en prctica la teora
del control PID. El siguiente desarrollo interesante sera realizar un
control con dos grados de libertad en lugar de uno not because it is
easy, but because it is hard!