Você está na página 1de 29

IMPLEMENTACION DE UN CONTROLADOR PID CON ARDUINO

1. OBJETIVOS

OBJETIVO GENERAL
Controlar la temperatura de trabajo u operacin de un
transformador sobrecargado.

OBJETIVOS SECUNDARIOS
Implementar un control PID usando la placa Arduino,
Conocer el funcionamiento de un control PID.

2. CONCEPTO DE PID

Un controlador PID es un mecanismo de control ampliamente usado en sistemas


de control industrial. Este calcula la desviacin o error entre un valor medido y un
valor deseado.

El control PID consiste de tres parmetros distintos: el proporcional, el integral, y el


derivativo. El valor Proporcional depende del error actual. El Integral depende de
los errores pasados y el Derivativo es una prediccin de los errores futuros. La
suma de estas tres acciones es usada para ajustar al proceso por medio de un
elemento de control como la posicin de una vlvula de control o la potencia
suministrada a un calentador.

2.1. Control Proporcional


La parte proporcional consiste en el producto entre la seal de error y la constante
proporcional para lograr que el error en estado estacionario se aproxime a cero,
pero en la mayora de los casos, estos valores solo sern ptimos en una
determinada porcin del rango total de control, siendo distintos los valores
ptimos para cada porcin del rango. Sin embargo, existe tambin un valor
lmite en la constante proporcional a partir del cual, en algunos casos, el sistema
alcanza valores superiores a los deseados. Este fenmeno se llama sobre oscilacin
y, por razones de seguridad, no debe sobrepasar el 30%, aunque es conveniente
que la parte proporcional ni siquiera produzca sobre oscilacin. Hay una relacin
lineal continua entre el valor de la variable controlada y la posicin del elemento
final de control (la vlvula se mueve al mismo valor por unidad de desviacin). La
parte proporcional no considera el tiempo, por lo tanto, la mejor manera de
solucionar el error permanente y hacer que el sistema contenga alguna
componente que tenga en cuenta la variacin respecto al tiempo, es incluyendo y
configurando las acciones integral y derivativa.
La frmula del proporcional est dada por: Psal= Kp*e(t)

2.2. Control Integral


El modo de control Integral tiene como propsito disminuir y eliminar el error
en estado estacionario, provocado por el modo proporcional. El control integral
acta cuando hay una desviacin entre la variable y el punto de consigna,
integrando esta desviacin en el tiempo y sumndola a la accin proporcional.
El error es integrado, lo cual tiene la funcin de promediarlo sumarlo por un
perodo determinado; Luego es multiplicado por una constante Ki.
Posteriormente, la respuesta integral es adicionada al modo Proporcional para
formar el control P + I con el propsito de obtener una respuesta estable del
sistema sin error estacionario.
El control integral se utiliza para obviar el inconveniente del offset (desviacin
permanente de la variable con respecto al punto de consigna) de la banda
proporcional.

2.3. Control Derivativo


La accin derivativa se manifiesta cuando hay un cambio en el valor absoluto del
error; (si el error es constante, solamente actan los modos proporcional e
integral).
El error es la desviacin existente entre el punto de medida y el valor consigna, o
"Set Point".
La funcin de la accin derivativa es mantener el error al mnimo corrigindolo
proporcionalmente con la misma velocidad que se produce; de esta manera evita
que el error se incremente.
Se deriva con respecto al tiempo y se multiplica por una constante Kd y luego se
suma a las seales anteriores (P+I). Es importante adaptar la respuesta de control a
los cambios en el sistema ya que una mayor derivativa corresponde a un cambio
ms rpido y el controlador puede responder acordemente.

3. IMPLEMENTACION DE PID CON ARDUINO


3.1. Materiales a usar

Placa arduino Uno


Ventiladores de 12 VDC
Resistencias 1k
Diodos 2N22
Transistores
Sensor de Temperatura LM35
Protoboard
Cables para protoboard

3.2. SOFTWARE UTILIZADOS


Matlab
Labview
Arduino
Excel
Word
3.3. Descripcin de Materiales
3.3.1. Placa Arduino
una plataforma de hardware y software de cdigo abierto, basada en
una sencilla placa con entradas y salidas, analgicas y digitales, en un
entorno de desarrollo que est basado en el lenguaje de programacin
Processing. Es decir, una plataforma de cdigo abierto para prototipos
electrnicos.
Conector de Alimentacin esta la utilizamos para
alimentar la placa de arduino, cuando no est conectada a
un puerto USB acepta de 7 a 12 V.

Puerto USB utilizado para alimentar y cargar programas


al arduino y para la comunicacin con el programa arduino
(mediante la instruccin serial.println).

Boton Reset puesta a cero el micro controlador ATmega.

Led TX Y RX estos led indican cuando se hace un


comunicacin entre arduino y el ordenador, parpadean
rpidamente cuando se carga el programa as como en la
comunicacin serie.

PIns Digitales se usan con la instruccin digitalRead(),


digitalWrite(), la instruccin analogwrite() solo trabaja con el
smbolo PWM.

Pines GND Y 5V se usan estos pines para proporcionar


una tensin de +5v y masa para circuitos externos a la
placa.

Entrada anlogas se utilizan con la instruccin


analogRead().

Pin 13 LED el nico componente que actua como


dispositivo de salida incorporado a su arduino.

Microcontrolador ATMEGA es el corazn del la placa


arduino UNO.

Led de Encendido indica que la placa esta siendo


alimentada.

3.3.2. Sensor de Temperatura LM35


El LM35 es un sensor de temperatura con una precisin calibrada de
1 C. Su rango de medicin abarca desde -55 C hasta 150 C. La salida
es lineal y cada grado Celsius equivale a 10 mV, por lo tanto:

150 C = 1500 mV

-55 C = -550 mV1

Opera de 4v a 30v.

4. TRANSISTOR 2N2222
CARGAS

MOTOR DE 9 DC
RPM 480 RPM
Corriente en vacio 0.025
Corriente maxima Rendimiento 0.10 A
Corriente de Bloqueo 0.42 A
Par de bloqueo 70 g*CM

MOTOR DE 9 AC
RPM 80 RPM
Corriente en vacio 0.055
Corriente maxima Rendimiento 0.15 A
Corriente de Bloqueo 0.45 A
Par de bloqueo 70 g*CM

DOS VENTILADOR

Dimensiones:80 x 80 x 25 mm
Voltaje:12 V
Velocidad del ventilador:1000 ~ 3500 R.P.M.
Flujo de aire: 49 CFM
Nivel de ruido:19 ~ 29 dB(A)
Tiempo de vida:30.000 h

TRANSFORMADOR

Dimensiones 29 x 23 x 11 mm
Tensin primaria: 220 v
Tensin secundaria: 9v
Potencia nominal: 50
va
Relacin de
transformacin: 24.4
Intensidad nominal del secundario: 1.25A

5. CIRCUITO PID

PARTE DE CONTROL

Est formada por la placa arduino.


Sensor LM35
Parte Actuadora

Ventilador de 12 VDC
Sistema

Transformador y carga.

IMPLEMENTACION DE PARTE ACTUADORA

Para trabajar con el arduino sabemos que el arduino solo tiene de 0-5 Vdc, por tal
motivo tenemos que manejar el voltaje de ingreso al ventilador con un PWM.

Ventilador
PRUEBA EN ARDUINO PARA VERFICAR EL FUNCIONAMIENRO DEL PWM

Aqu podemos ver el funcionamiento del


PWM el cual varia de 0-255

CONEXIN DEL SENSOR LM35 HACIA ARDUINO


Como podemos observar solo
alimentamos el Lm35 que son las
patas 1 y 3 y la pata 2 va al arduino

TIEMPO DE MUESTREO
Tiempo en el cual se realiza una instruccin.

TIEMPO DE
MUESTREO

Comando para tiempo de muestreo

Ahora = millis(); contador en milisegundos


CALIBRACION DEL LM35
Nos ayudamos del software Excel para la obtencin de ecuacin.

temperatura mili voltios


26 269
27 271
28 278
29 279
30 280
31 294
32 303
33 314
34 322
35 328
36 334
37 360
38 369
39 382
40 399

6. CALCULANDO LA FUNCION DE TRANSFERENCIA DE NUESTRO SISTEMA


Nos ayudamos con el programa Labview.
TOMA DE DATOS

5.00 17.55 5.00 19.11 5.00 20.09


5.00 17.64 5.00 19.11 5.00 20.58
5.00 18.13 5.00 19.6 5.00 20.09
5.00 17.64 5.00 19.11 5.00 20.09
5.00 18.13 5.00 20.09 5.00 20.09
5.00 17.64 5.00 20.09 5.00 21.07
5.00 18.13 5.00 18.62 5.00 20.58
5.00 17.64 5.00 19.6 5.00 20.58
5.00 17.64 5.00 19.6 5.00 20.09
5.00 17.64 5.00 19.6 5.00 20.58
5.00 18.13 5.00 20.09 5.00 20.58
5.00 18.13 5.00 20.09 5.00 20.09
5.00 18.13 5.00 20.09 5.00 21.07
5.00 18.62 5.00 19.6 5.00 21.07
5.00 18.62 5.00 20.09 5.00 21.56
5.00 18.62 5.00 20.58 5.00 21.07
5.00 18.62 5.00 19.6 5.00 21.07
5.00 18.62 5.00 20.58 5.00 20.09
5.00 20.58 5.00 22.05 5.00 22.54
5.00 20.58 5.00 21.56 5.00 22.54
5.00 20.58 5.00 22.05 5.00 22.54
5.00 21.07 5.00 22.05 5.00 22.54
5.00 21.56 5.00 22.05 5.00 21.56
5.00 21.56 5.00 22.05 5.00 22.54
5.00 21.07 5.00 21.56 5.00 22.05
5.00 21.07 5.00 21.56 5.00 22.05
5.00 21.07 5.00 21.56 5.00 22.05
5.00 21.56 5.00 22.05 5.00 22.05
5.00 21.07 5.00 22.05 5.00 22.54
5.00 21.07 5.00 22.05 5.00 22.54
5.00 21.56 5.00 22.05 5.00 22.54
5.00 21.56 5.00 22.05 5.00 22.54
5.00 22.05 5.00 22.05 5.00 22.54
5.00 21.07 5.00 21.56 5.00 22.54
5.00 21.07 5.00 22.05 5.00 22.54
5.00 21.56 5.00 22.05 5.00 22.54
5.00 21.56 5.00 22.05 5.00 23.52
5.00 21.56 5.00 21.56 5.00 23.03
5.00 21.07 5.00 22.05 5.00 22.54
5.00 21.56 5.00 22.54 5.00 22.54
5.00 22.05 5.00 21.56 5.00 22.54
5.00 22.54 5.00 21.56 5.00 22.54
5.00 21.07 5.00 22.05 5.00 22.54
5.00 22.05 5.00 22.05 5.00 22.54
5.00 21.56 5.00 22.54 5.00 22.54
5.00 22.05 5.00 22.54 5.00 22.54
5.00 22.05 5.00 22.54
5.00 21.56 5.00 22.54
5.00 21.56 5.00 22.05
5.00 21.56 5.00 21.56
5.00 21.56 5.00 22.05
5.00 21.56 5.00 22.54
5.00 22.54 5.00 22.54
5.00 21.07 5.00 22.05
5.00 21.07 5.00 22.54
5.00 21.56 5.00 22.05
5.00 21.56 5.00 22.54
5.00 21.56 5.00 22.05
5.00 22.05 5.00 22.05
5.00 22.05 5.00 23.03
5.00 21.07 5.00 22.54
Importamos datos.

Escogemos Importar Data


escogemos la ruta del
archivo.

Se muestran el
archivo importado

Utilizamos la aplicacin ident


1. Seleccionamos la opcin TIME
DOMAIN DAT

3. Ingresamos las variables


exportadas.

2. Click en import
4. Escogemos PROCESS MODELS
6. Escogemos nmero de polos.

5. Click en Estimate

7. En la ventana de Comando de
Matlab escribimos tf(P2Z)

8. Nos Muestra la Funcin


de Transferencia
Estimada

GRAFICAMOS:

Salida en Matlab:
Ploteamos la entrada.

CON LA FUNCION pidtool(Nombre de la Funcion de Transferencia) en la ventana de


matalb.
9. Escogemos PID
SINTONIZACION DE PID POR ZIEGLER-NICHOLS

7. IMPLEMENTADO SOFTWARE EN ARDUINO


volatile unsigned long tiempoAnterior; // variable para mantener el tiempo de
muestreo
int motor2=6;
int motor=2;
int pot=0;
int TiempoMuestreo=1; // tiempo de muestreo Se encuentra en milisegundos
unsigned long pasado=0; // tiempo pasado (Se hace para asegurar tiempo de
muestreo)
unsigned long ahora;
unsigned long salida;
//sensor
const int sensor =0;
double miliVolts;
double t; //temperatura
int Ref=25; // referencia
double Y; // Salida
double error; // error
double errorPass=0; // Suma del error para la parte integral
double errorAnt=0; // error anterior para la derivada
double U; // Seal control
// constantes del controlador
int Kp=337.3127;
double Ki=27.589;
int Kd=0.82495;
int Lecturas[50];
int Val,i=0, Total=0, Promedio = 0;
void setup() {
// put your setup code here, to run once:
Serial.begin(9600);
pinMode(6,OUTPUT);
for(i=0; i<20; i++)
Lecturas[i]=0;
i=0;
}
void loop() {
Total=Total-Lecturas[i];
Lecturas[i]=t;
Total=Total+Lecturas[i];
i=i+1;
if (i>=20)

{
i=0;
t = Total/20;
miliVolts=(analogRead(sensor)*5000.00)/1023.00;
t=-0.0004*miliVolts*miliVolts+0.3647*miliVolts-42.149;
ahora=millis(); // tiempo actual
int CambioTiempo= ahora-pasado; // diferencia de tiempo actual- pasado
if(CambioTiempo >= TiempoMuestreo) // si se supera el tiempo de muestreo
{
error = Ref - t; // error (Lazo cerrado)-- Feedback
errorPass=error*TiempoMuestreo+errorPass; // clculo de aproximacin del
area
double errorD =(error-errorAnt)/TiempoMuestreo; // clculo derivativo
float P=Kp*error; // control proporcional
float I=Ki*errorPass; // control Integral
float D=Kd*errorD;

U=P+I+D; // Seal de control


errorAnt=error; // actualizar el error

pasado=ahora; // actualizar tiempo


}
}
if (U < -255) // lmites de saturacin de la seal de control
{
U=-255;
}
if (U > 255) // lmites de saturacin de la seal de control
{
U=255;
}
if (U>0){
salida=0; // PWM de los motores )
}
if (U<=0){
salida=abs(U);
}

if (t>27)
{
digitalWrite(6, HIGH);
}
else if (t<15)
{
digitalWrite(6, LOW);
}
//Serial.println(Ref);
Serial.print(Ref);
Serial.print(' ');
Serial.print(t);
Serial.print(' ');
Serial.println(U);
analogWrite(motor,salida);
}

8. CONCLUSIONES

Se cumplieron con los objetivos establecidos.


Los controladores PID se usan ampliamente en control industrial.
Desde una perspectiva moderna, un controlador PID es simplemente un
controlador de segundo orden con integracin. Histricamente, sin embargo,
los controladores PID se ajustaban en trminos de sus componentes P, I y D.
La estructura PID ha mostrado empricamente ofrecer suficiente flexibilidad
para dar excelentes resultados en muchas aplicaciones.
El trmino bsico en el controlador PID es el proporcional P, que origina una
actuacin de control correctiva proporcional el error.
El trmino integral I brinda una correccin proporcional a la integral del error.
Esta accin tiene la ventaja de asegurar que en ltima instancia se aplicar
suficiente accin de control
para reducir el error de regulacin a cero. Sin embargo, la accin integral
tambin tiene un efecto desestabilizador debido al corrimiento de fase
agregado.
El trmino derivativo D da propiedades predictivas a la actuacin, generando
una accin de control proporcional a la velocidad de cambio del error. Tiende
dar ms estabilidad al sistema, pero suele generar grandes valores en la seal
de control.
Varios mtodos empricos pueden usarse para determinar los parmetros de un
PID para una dada aplicacin. Sin embargo, el ajuste obtenido debe tomarse
como un primer paso en el proceso de diseo.
Debe prestarse atencin al particular tipo de estructura de PID disponible (por
ejemplo, estndar, serie o paralelo)

ANEXOS

Você também pode gostar