You are on page 1of 7

UNIVERSIDAD NACIONA DE CHIMBORAZO

Facultad de Ingenieria
Escuela de Electronica y Telecomunicaciones

GUÍA DE PRÁCTICAS

NOMBRE DE LA ASIGNATURA: SISTEMAS DE CONTROL Y LAB


DOCENTE: LEONARDO RENTERIA

Integrantes:

 Erick Toapanta
 Daniel Yautibug
 Richar Yungan

1. Tema: Control PID en Arduino

2. Objetivos de la Práctica:

Implementar un Controlador PID empleando Arduino con un sensor de luz

3. Equipos, Materiales e Insumos:


Ítem Cantidad Nombre Descripción
4 1 Mcu, Arduino Grupo
5 1 laptop Arduino, Scilab
6 1 LDR Sensor de luz
7 1 leds
8 2 resistencias 330 y 10k

La ecuación del PID

𝑲𝒑 𝒅𝒆(𝒕)
𝒖(𝒕) = 𝑲𝒑 𝒆(𝒕) + ∫ 𝒆(𝒕)𝒅𝒕 + 𝑲𝒑 𝑻𝒅
𝑻𝒊 𝒅𝒕

Para tener una idea más clara, recurrimos al siguiente diagrama


De la ecuación, podemos hacer las siguientes afirmaciones:

 e(t) es el error de la señal.


 u(t) salida del controlador y entrada de control al proceso.
 Kp es la ganancia proporcional.
 Ti es la constante de tiempo integral.
 Td es la constante de tiempo derivativa.

a) Del diagrama de flujo determinamos lo siguiente:

1. El primer bloque de control (proporcional) consiste en el producto entre la señal de error y la


constante proporcional, quedando un error en estado estacionario casi nulo

2. El segundo bloque de control (integral) tiene como propósito disminuir y eliminar el


error en estado estacionario, provocado por el modo proporcional. El control integral
actual cuando hay una desviación entre la variable y el punto de consigna, integrando
esta desviación en el tiempo y sumándola a la acción proporcional.

3. El tercer bloque de control (Derivativo) considera la tendencia del error y permite una
repercusión rápida de la variable después de presentarse una perturbación en el
proceso.

4. Procedimiento:
4.1 Arme el circuito que se muestra en la figura:

Fig. Diagrama de conexiones (fritzing)


Resultados:

4.2. Descripción del código realizado en IDE Arduino

#include <PID_v1.h> //INCLUIMOS LA LIBRERIA

#define PIN_INPUT A0 //DEFINIMOS LOS PUERTOS - ENTRADA A0


#define PIN_OUTPUT A3 //DEFINIMOS LOS PUERTOS - SALIDA A3

double Setpoint, Input, Output; //VARIABLAMES DE NUESTRO PID


double Kp=1, Ki=1, Kd=2; //CONSTANTES PARA CADA CONTROL

PID myPID(&Input, &Output, &Setpoint, Kp, Ki, Kd, DIRECT); //INICIALIZAMOS NUESTRO PID

void setup() //PROCESO DE INICIO


{
Setpoint = 90; //VALORES REPETITIVOS ASIGNADOS A NUESTRO SETPOINT
myPID.SetMode(AUTOMATIC); // PID EN MODO AUTOMATICO
myPID.SetTunings(Kp, Ki, Kd); //ASIGNAMOS NUESTROS PARAMETROS A LOS PARAMETROS DE
SINTONIZACION
Serial.begin(9600); //INICIAMOS NUESTRO PUERTO SERIAL
}

void loop() //INICIAMOS NUESTRO BUCLE


{
Input = map(analogRead(PIN_INPUT), 0, 1024, 0, 255); //TOMAMOS NUESTROS VALORES DE LA FOTOCELDA
EN EL RANGO DE 0 A 255
myPID.Compute(); //EL PID PROCESA LOS VALORES
analogWrite(PIN_OUTPUT,Output); //EN NUESTRA SALIDA DE PID LE ASIGNAMOS A UNA
SALIDA FISICA A3

Serial.print(Setpoint);//IMPRIMIMOS NUESTROS VALORES AL PUERTO SERIAL


Serial.print(" ");
Serial.print(Input);
Serial.print(" ");
Serial.println(Output);
}
Los PID principiantes, están diseñados para ejecutarse a periodos irregulares, esto puede
traer 2 problemas:

 Se tiene un comportamiento inconsistente del PID, debido a que en ocasiones se lo


ejecuta regularmente y a veces no.

 Hay que realizar operaciones matemáticas extras para calcular los términos
correspondientes a la parte derivada e integral del PID, ya que ambos son
dependientes del tiempo.

4.3. Visualización mediante monitor serial de Arduino

Hay que asegurarse que la función que ejecuta el PID lo haga regularmente. Basado en un
tiempo de ejecución predeterminado, el PID decide si debe hacer cálculos o retornar de la
función. Una vez que nos aseguramos que el PID se ejecuta a intervalos regulares, los
cálculos correspondientes a la parte derivada e integral se simplifican.

Ahora tomamos el error y lo multiplicamos por el valor de Ki en ese momento, luego


almacenamos la suma de los diferentes errores multiplicados por la constante Ki. Esto resulta
en una función de salida, suave y sin sobresaltos, con la ventaja de no tener que utilizar
matemática adicional para ello.
4.4 Grafica del desempeño del PID

5. PID en Scilab

Este bloque implementa un controlador PID (Proporcional-Integral-Diferencial). Calcula un


valor de "error" U(e) como la diferencia entre una variable de proceso medida U(pr) y un
punto de ajuste deseado U(r).
𝑈𝑒 = 𝑈𝑟 − 𝑈𝑝𝑟

El propósito es hacer que la variable del proceso subir siga el valor del punto de ajuste Ur.
El controlador PID es ampliamente utilizado en el control de retroalimentación de procesos
industriales.
El cálculo del controlador PID (algoritmo) involucra tres parámetros separados; los valores
de Kp proporcional, Ki integral y Derivada Kd. Estos términos describen tres funciones
matemáticas básicas aplicadas a la señal de error Ue. Kp determina la reacción al error actual,
Ki determina la reacción basándose en la suma de los errores recientes y Kd determina la
reacción a la velocidad a la que el error ha estado cambiando.

La suma ponderada de estas tres acciones se utiliza para ajustar el proceso a través de un
elemento de control, como la posición de una válvula de control o la fuente de alimentación
de un elemento de calefacción. La estructura básica de los sistemas de control de
retroalimentación convencionales se muestra a continuación:

5.1 Caja de diálogo

Proporcional

1. El valor de la ganancia que multiplica el error.

Integral

2. El valor del tiempo integral del error. (1 / Integral)

Derivación

3. El valor del tiempo derivado del error.


5.3. Los parámetros PID Kp, Ki y Kd se establecen en 6, 0.5 y 2

El alcance muestra las formas de onda del error del sistema Ue (azul), la señal de
referencia Ur (negro) y la señal de proceso Upr (rojo). Muestra cómo inicialmente la
señal de proceso Upr (t) no sigue la señal de referencia Ur (t).

El alcance muestra las formas de onda del error del sistema Ue (negro), la señal de
referencia Ur (azul) y la señal de proceso Upr (rojo). Muestra cómo inicialmente la
señal de proceso Upr (t) no sigue la señal de referencia Ur (t).

You might also like