Fase 4 – Implementar controlador en un Microcontrolador
Estudiante
Docente
Curso
23431_3 Control Digital
Universidad Nacional Abierta y a Distancia UNAD
Ingeniería Electrónica
09/05/2021
Introducción
Por medio de la presente actividad vamos a trabajar en el diseño e implementación de un
controlador PID totalmente funcional por medio del microcontrolador PIC 16F877A de la
familia microchip technology de manera virtual por medio del software Proteus Vsm para
el montaje del circuito y el compilador CSS para la edición y compilación del código
Fuente entregado para la actividad y su posterior simulación observando los resultados en
grafica de simulación por medio del módulo de análisis interactivo.
De esta manera nos estamos basando en el circuito de la anterior actividad basado en el
montaje de un horno de calefacción tipo Heater del software Proteus Vsm donde tomamos
la curva de reacción del mismo en la fase 2 y 3 del presente Curso y vamos por medio de un
actuador o Switch a cambiar los parámetros de Voltaje cambiando las baterías de
alimentación del circuito para evidenciar los cambios en el comportamiento de la gráfica
demostrando así el comportamiento del sistema ante diferentes perturbaciones.
Objetivos
1. Aprender a manejar el módulo de Microcontroladores y su posterior simulación
con código fuente compilado y sin errores desde el editor PCW.
2 Manejo adecuado de microcontroladores con su código fuente a través del software
Proteus Vsm
3. Diseño e implementación de Controladores PID y su respectivo análisis de la señal
por medio del módulo.
Solución
A Continuación, se realiza el montaje que a partir del diseño del controlador PID de la
anterior actividad y del cálculo de las constantes Kp, Ti y Td, Debemos realizar el montaje
implementando dicho controlador en un microcontrolador de referencia 16F877A y analizar
su comportamiento ante diferentes perturbaciones las cuales van a ser introducidas por cada
uno de nosotros de manera manual a través de SW1 por medio de los tiempos dados en la
guía de actividades.
Ahora vamos a analizar por medio de las ecuaciones correspondientes el comportamiento del
circuito y como es que es afectado el resultado final con las perturbaciones suministradas.
Los controladores PID responden a la siguiente ecuación:
𝑘𝑝 𝑡 𝑑𝑒(𝑡)
𝑢(𝑡) = 𝑘𝑝 𝑒(𝑡) + ∫ 𝑒(𝑡)𝑑𝑡 + 𝑘𝑝 𝑡𝑑
𝑡𝑖 0 𝑑𝑡
𝑎 = 𝐾𝑝
𝐾𝑝𝑇
𝑏=
𝑇𝑖
𝐾𝑝𝑇𝑑
𝑐=
𝑇
Donde tenemos que :
𝐾𝑝 = 𝑐𝑜𝑛𝑠𝑡𝑎𝑛𝑡𝑒 𝑝𝑟𝑜𝑝𝑜𝑟𝑐𝑖𝑎𝑛𝑎𝑙.
𝑇𝑖 = 𝑐𝑜𝑛𝑠𝑡𝑎𝑛𝑡𝑒 𝑑𝑒 𝑡𝑖𝑒𝑚𝑝𝑜 𝑖𝑛𝑡𝑒𝑔𝑟𝑎𝑙.
𝑇𝑑 = 𝑐𝑜𝑛𝑠𝑡𝑎𝑛𝑡𝑒 𝑑𝑒 𝑡𝑖𝑒𝑚𝑝𝑜 𝑑𝑒𝑟𝑖𝑣𝑎𝑡𝑖𝑣𝑜.
Para determinar el valor de las constantes, utilizo el primer método de la regla de sintonía
de Ziegler-Nichols, Para este método se traza una recta tangente en el punto de inflexión
de la curva de reacción del sistema.
Cálculo de las constantes o parámetros Mediante ZN en lazo abierto
Tabla 1
Sintonización de controlador mediante Ziegler-Nichols
En lazo abierto, Muchos procesos pueden definirse según la siguiente función de
transferencia :
82.5𝑒 −7.81𝑠
𝐺(𝑠) =
11𝑠 + 1
Ahora tenemos que para hallar los valores de 𝑘𝑝 , 𝑇𝑖, 𝑇𝑑 tenemos que emplear las
siguientes fórmulas de la tabla 1 :
𝑡 11
𝐾𝑝 = 1.2 ∗ 𝑘∗𝑡 = 𝐾𝑝 = 1.2 ∗ 82.5∗7.81 = 0.020 = 𝐾𝑝 = 0.02
𝑚
Para hallar 𝑇𝑖
𝑇𝑖 = 2𝐿
𝑇𝑖 = 2(7.81) = 15.6
Y para calcular 𝑇𝑑
𝑇𝑑= 0.5L = 0.5(7.81) =3.905
Ahora como ya tenemos los valores de 𝐾𝑝 , 𝑇𝑖, 𝑇𝑑 y estableciendo un periodo de muestreo
de 𝑇 = 1.95 , los parámetros del controlador discreto son:
𝒂 = 𝑘𝑝 = 0.0204
𝑘𝑝 ∗𝜏 0.0204∗1.95
𝒃= == = 0.00254
𝑇𝑖 15.62
𝑘𝑝 ∗𝑇𝑑 0.0204∗3.095
𝒄= = = 0.03237
𝜏 1.95
En la guía de actividades nos suministran el siguiente circuito electrónico montado en el
software Proteus Vsm sobre el cual vamos a trabajar y en el cual por medio del software
CSS vamos a montar el código en el Pic utilizado en el mismo donde en tres líneas de código
vamos a montar las variables a , b y c anteriormente halladas con las ecuaciones.
Montaje Circuito Software Proteus. Fase 4 Control Digital.
Figura 1. Implementación del controlador.
Dicha simulación debe realizarse utilizando el modelo Heated Oven (Lumped Model ) con
la siguiente configuración en parámetros:
Temperature Ambient (°C) = 27
• Thermal Resistence to Ambient (°C/W) = 0.5
• Oven Time Constant (sec)= 10
• Heater Time Constant (sec)= 1
• Temperature coefficient (V/°C) = 1
• Heating Power (W)= 150
Para el análisis de la curva de reacción, se analizará la respuesta del sistema en lazo abierto
ante una entrada escalón, dicha entrada escalón es de 0v a 10v, A continuación se expone el
código C para grabar en el micro controlador o en este caso en el simulador Proteus por
medio de Pic c Compiler.
En la actualidad muchos de los sistemas PID se convierten de análogo como son en su
mayoría a Digitales por medio de la electrónica Digital con procesadores como son los de
la familia 16Fxxx, en nuestro ejercicio utilizamos el Pic 16F877A.
Propiedades del Micro donde se muestra el cargue del código fuente en el mismo.
CODIGO FUENTE EN LENGUAJE C PARA CONTROLADOR PID DISCRETO
#INCLUDE <16F877A.H>
#DEVICE ADC=10
#USE DELAY(CLOCK=4000000)
#FUSES XT,NOWDT
VOID MAIN(){
INT16 valor, control; //Variables para lectura de ADC y señal de Control a
modulo CCP
FLOAT a,b,c; //Constantes para parámetros de controlador PID
FLOAT TEMPERATURA_LIMITE; //Referencia de Temperatura
FLOAT rt,eT,iT,dT,yT,uT,iT0,eT0; //Variables de controlador PID
FLOAT max,min; //Variables para anti-windup
min=0.0;
max=1000.0;
iT0=0.0;
eT0=0.0;
a=0.0204;
b=0.002546; // valores a manipular hallados por medio de las formulas de la tabla de
ZN
c=0.03237;
TEMPERATURA_LIMITE=1400.0; //Set Point r(kT)= 120°C
setup_timer_2(t2_div_by_4,249,1); //Configuracion de Timer 2 para establecer frec.
PWM a 1kHz
setup_ccp1(ccp_pwm); //Configurar modulo CCP1 en modo PWM
setup_adc_ports(all_analog); //Configurar ADC
setup_adc(adc_clock_internal);
set_adc_channel(0); //Seleccionar Canal 0 para sensor de Temperatura
while(true){
valor=read_adc(); //Leer ADC
yT=5000.0*valor/1024.0; //Escalizar señal de salida y(kT)
rT=TEMPERATURA_LIMITE;
eT=rT-yT; //Calcular senal de error e(kT)
iT=b*eT+iT0; //Calcular termino integrativo i(kT)
dT=c*(eT-eT0); //Calcular termino derivativo d(kT)
uT=iT+a*eT+dT; //Calcular senal de control u(kT)
if (uT>max){ //Anti-windup
uT=max;
}
else {
if (uT<min){
uT=min;
}
}
control=uT;
set_pwm1_duty(control); //Transferencia de señal de control al actuador
iT0=iT;
eT0=eT;
delay_ms(100); //Periodo de muestreo T=0.1s
}
}
A continuación, evidencia de ejecución y compilación de código fuente en Aplicación PCW
Se debe definir el modelo del sistema y analizar su comportamiento ante perturbaciones de
tipo escalón, teniendo en cuenta que la temperatura límite o set point es de 140°C.
A continuación, se muestra la gráfica tomada con el módulo de análisis Interactivo del
software Proteus Vsm.
Primeramente, se aplica una perturbación en el instante de tiempo t=0s por medio del Sw1
Dando paso a la a limentaciòn del Heater por medio de BAT1 de 20V, para el instante de
tiempo t=50s se conmuta SW1 Permitiendo el flujo de los electrones desde BAT 2 de 15V y
para el instante de tiempo t=120s se conmuta nuevamente SW1 a la fuente de alimentación
BAT1 de 20V.
Como podemos observar en nuestra anterior simulación de control PID aunque lenta en la
estabilización , nos percatamos que en el segundo 50 llega a un pico de mas de 150 grados
para lentamente tratar de estabilizarse y notese que en el segundo 120 se presenta otro pico
cuando cambiamos a la batería inicial de 20V .
Ahora vamos a cambiar el periodo de muestreo a 0.9 y como ya tenemos los valores de
𝐾𝑝 , 𝑇𝑖, 𝑇𝑑 y estableciendo dicho periodo de muestreo de 𝑇 = 0.9 , lo cual va a generar
cambios en los parámetros del controlador discreto :
𝒂 = 𝑘𝑝 = 0.0204
𝑘𝑝 ∗𝜏 0.0204∗0.9
𝒃= == = 0.001175
𝑇𝑖 15.62
𝑘𝑝 ∗𝑇𝑑 0.0204∗3.095
𝒄= = = 0.070153
𝜏 0.9
Ingresamos los datos en el código a cargar en el micro y realizamos nuevamente la
simulación y realizamos el análisis.
Realizando nuevamente la simulación por medio del software Proteus Vsm obtenemos la
siguiente gráfica:
Ahora podemos observar como en el momento inicial nuestro sistema trata de estabilizarse
al principio entre el tiempo 0 y 50 hasta tratar de estabilizarse sin conseguirlo entre el
minuto 50 y 120 donde se evidencia otro pico de subida en el último rizado
Adjunto enlace de código fuente cargado en el Pic 16F877A en google Drive.
https://drive.google.com/drivvze/folderzvzs/1azvcUXaB5Z-
dGT3xkmRAfE9KQS4WtWEcsrlzxvc?usp=sharing
Conclusiones:
Se evidencia como el cambio en el parámetro T nos cambia la ecuación por
consiguiente el código C a cargar en el Pic Micro dándonos como resultado cambios
evidentes en la gráfica a la hora de realizar la simulación.
Desarrollando esta actividad tipo ejercicio de simulación hemos adquirido diferentes
conocimientos en referentes al uso e implementación de microcontroladores de la
familia MIROCHIP muy utilizados en la industria y la educación por su estabilidad
y versatilidad para con ellos realizar análisis de procesos industriales como el que
trabajamos anteriormente, logrando así dar respuesta a la temática que se solicita en
la guía de actividades.
Por medio de la presente actividad logramos analizar la respuesta del sistema en lazo
abierto ante una entrada escalón, teniendo en cuenta la temperatura límite y las
diferentes perturbaciones Generadas de manera interactiva por nosotros mismos
gracias a las diferentes herramientas que posee el software proteus Vsm.
Bibliografía
Alfaro, V. M. (11 de 05 de 2006). Ciencia y tecnologia.com.
Ogata, K. (2010). Ingeniería de control moderna. Madrid: Pearson education S.A.
Ospino, A. P. (23 de 04 de 2012). Blog Corporativo de Proteus ISIS. Obtenido de
blogspot.com/2012/04/diseno-y-simulacion-mediante-proteus.html
https://www.youtube.com/watch?v=_kTrdzxvcxzbf0iqlac