Upload
annuar-brnal
View
367
Download
25
Embed Size (px)
DESCRIPTION
Control PID con PIC16F877A MATLAB PROTEUS LABVIEW
Citation preview
PROGRAMACIÓN Y SIMULACIÓN Maestría en Eléctrica - II Semestre – Área: Instrumentación Catedrático: Dr. Enrique Cuan D. – Alumno: Annuar López
1
Índice Introducción ......................................................................................................................................................... 2
Controlador PID .................................................................................................................................................. 3
Simulación en Proteus ...................................................................................................................................... 5
Simulación LabVIEW – MATLAB .................................................................................................................... 9
Conclusión ......................................................................................................................................................... 12
Apéndice 1 .......................................................................................................................................................... 13
2
Introducción
El presente documento tiene como objetivo poner en práctica los conocimientos de
programación adquiridos a lo largo del curso a través del software de programación y
simulación MATLAB™.
El proyecto que se desarrolló en simulación fue un control de temperatura de un horno
industrial; el control automático del horno tiene retroalimentación (lazo cerrado) ya que se
implementó en él un controlador PID el cuál es ejecutado por un microcontrolador
PIC16F877A, dicho dispositivo fue programado en lenguaje C y posteriormente simulado en
el programa ISIS Proteus versión 7.9; para posteriormente a través de la emulación de un
puerto COM dentro de la misma computadora, enlazar el software antes mencionado para
transmitir sus datos a LabVIEW™ de National Instruments versión 2012 en donde el
comportamiento del aumento o disminución de la temperatura es monitorizado junto con la
ejecución de un Mathscritp de MATLAB™ dentro del mismo entorno de programación de
LabVIEW™.
3
Controlador PID
Uno de los controladores más comunes que se utilizan en la industria es el controlador PID
(Controlador Proporcional-Integral-Derivativo). Sin entrar en teoría de control, se puede indicar que un
controlador PID responde a la siguiente ecuación:
𝑢(𝑡) = 𝐾𝑝𝑒(𝑡) +𝐾𝑝𝑇𝑖
∫ 𝑒𝑡
0
(𝑡)𝑑𝑡 + 𝐾𝑝𝑇𝑑𝑑𝑒(𝑡)
𝑑𝑡
Donde e(t) es el error de la señal y u(t) es la entrada de control del proceso. Kp es la
ganancia proporcional, Ti es la constante de tiempo integral y Td es la constante de
tiempo derivativa.
Por lo tanto en el dominio de s, la ecuación del controlador PID se puede escribir de la
siguiente manera:
𝑈(𝑠) = 𝐾𝑝 ⌈1 +1
𝑇𝑖𝑠+ 𝑇𝑑𝑠⌉ 𝐸(𝑠)
Un controlador PID tiene tres parámetros (Kp,Ti,Td) los cuales interactúan uno con el
otro hasta obtener la respuesta de salida deseada.
La respuesta de un controlador PID con una entrada escalón, se muestra en la
siguiente figura:
Figura 1.1 Respuesta a una Entrada Escalón
4
Los parámetros se pueden obtener de esta respuesta:
𝜏0 = 𝑡1 − 𝑡0 γ0 = 𝑡2 − 𝑡1 𝐾0 =𝑦1−𝑦0
𝑢1−𝑢0
Según Ziggler y Nichols, las relaciones de estos coeficientes con los parámetros del
controlador son:
𝐾𝑝 =1.2𝛾0
𝐾0𝑇0 𝑇𝑖 = 2𝑇0 𝑇𝑑 = 0.5𝜏0
Si cambiamos el controlador PID por un controlador PID discreto, empleamos la
transformada z, de tal manera que la ecuación se re-escribe como:
𝑈(𝑧) = 𝐸(𝑧)𝐾𝑝 [1 +𝑇
𝑇𝑖(1 − 𝑧−1)+ 𝑇𝑑
1 − 𝑧−1
𝑇]
También:
𝑈(𝑧)
𝐸(𝑧)= 𝑎 +
𝑏
1 − 𝑧−1+ 𝑐(1 − 𝑧−1)
Donde:
𝑎 = 𝐾𝑝 𝑏 =𝐾𝑝𝑇
𝑇𝑖 𝑐 =
𝐾𝑝𝑇𝑑
𝑇
La figura que se muestra a continuación, describe el proceso a bloques del
controlador PID discreto.
Figura 1.2 Diagrama a bloques del Controlador PID discreto.
5
Simulación en Proteus
Para obtener los valores de las ganancias del controlador PID discreto, primero se
probó el comportamiento del sistema con una entrada escalón al 20% de su capacidad,
para posteriormente analizar la curva característica de operación.
El software implementado es ISIS PROTEUS 7.9, y los elementos necesarios fueron
los siguientes que se muestran en la ilustración.
Componentes utilizados: CELL, SWITCH,OVEN, GROUND.
Figura 1.3 Curva característica de operación del Horno.
6
Posteriormente se realizó la simulación del microcontrolador PIC16F877A dentro
del mismo software de Proteus para verificar la correcta operación del control discreto
con el PID; el cuál se encargará de generar un pulso PWM para controlar el
calentamiento del Horno conmutando un MOSFET de Potencia con una realimentación
análoga en el sistema para leer la temperatura del horno.
Componentes utilizados: CELL, PIC16F877A, OVEN, GROUND, RES, IRL1004, POWER
TERMINAL.
Figura 1.4 Simulación del Control PID en ISIS Proteus.
7
Una vez probado el sistema, se procede a enlazar la simulación del software de
ISIS PROTEUS 7.9 con LabVIEW 2012 y MatLAB™. Para hacer esto se hizo uso de la
comunicación serial del microcontrolador PIC16F877A para conectar los pines TX y RX
del dispositivo a un puerto COM configurado en ISIS PROTEUS (COM1) y monitoreado
dentro del mismo a través de una terminal serial virtual, posteriormente se dio de alta
en la computadora dos COM en modo de puente para poder hacer el enlace con
LabVIEW de National Instruments (COM2).
El dispositivo COM (o puerto serial) dado de alta dentro de la computadora, se
emulo con el software HDD Virtual Serial Ports el cual se encarga de crear un dispositvo
serial virtual dentro de la computadora y reconocido como un dispositivo de entrada y
salida al configurarlo como tipo puente.
Figura 1.5 Emulación de los Puertos COM en modo Puente (Bridge).
8
Al agregar los componetes necesarios, así como un potenciómetro (POT HG) para
poder ajustar el SETPOINT de control PID, nuestro diagrama de simulación en ISIS
PROTEUS 7.9 nos queda como se muestra en la figura inferior del párrafo.
Componentes utilizados: CELL, PIC16F877A, OVEN, GROUND, RES, IRL1004, POWER
TERMINAL, VIRTUAL TERMINAL, COMPIM, POT HG.
Figura 1.6 Simulación completa en ISIS PROTEUS del Controlador PID
con enlace a LabVIEW 2012 de National Instruments.
9
Simulación LabVIEW – MATLAB
El software de LabVIEW de National Instruments es un lenguaje de programación
visual. Cuenta con dos ventanas de desarrollo, la primera que permite el Diseño de la
Interfaz Gráfica (Front Panel) que es donde estaremos monitoreando nuestro proceso y
una segunda ventana en la cual se hace la programación a bloques (Block Diagrama) así
como el monitoreo de la ejecución del código paso a paso; esto en caso de tener un
error identificarlo a la brevedad o bien para optimizar el código programado.
Figura 1.7 Código a Bloques del Programa en LabVIEW (Block Diagram).
Figura 1.8 Interfaz Gráfica del Programa en LabVIEW (Front Panel).
10
Por último en el diagrama de bloques de LabVIEW se encuentra un MathSript,
una herramienta que permite ejecutar instrucciones en lenguaje de MATLAB dentro
del entorno de desarrollo de LabVIEW de National Instruments.
En la siguiente figura se muestra el comportamiento del controlador PID
implementando las siguientes ganancias del sistema:
a=0.1243;
b=0.00621;
c=.621514;
T= 100 milisegundos (En el microcontrolador representa un retardo “delay_ms (100);”)
Figura 1.9 Comportamiento del Controlador PID con Sobre Impulso.
11
Para amortiguar el sobre impulso se utilizaron las siguientes ganancias con un
tiempo de 1 ms.
a=0.1243;
b=0.000062;
c=62.1514;
T= 1 milisegundos (En el microcontrolador representa un retardo “delay_ms (1);”)
12
Conclusión
Los Softwares de Programación y Simulación Virtual son una herramienta
poderosa a lo hora de diseñar y desarrollar proyectos ya que permiten prevenir y/
corregir fallas inclusive antes de llegar a la etapa de construcción de un prototipo ya sea
de algún proceso de control y automatización, monitoreo etc.
Con las herramientas ofrecidas por ISIS PROTEUS, LabVIEW y MATLAB, se pudo
desarrollar un proyecto integral tanto de la parte de instumentación simulada en ISIS
PROTEUS como el monitoreo en LabVIEW, aunado a la parte matemática implementada
con un MathScript de MATLAB para la conversión del valor numérico recibido a un valor
en grados Centígrados de tal manera que se pudiera visualizar la temperatura sensada.
13
Apéndice 1 // Configuración Inicial del Microcontrolador PIC de Microchip™
#INCLUDE <16F877A.h>
#DEVICE adc=8
#USE delay(clock=4000000)
#USE RS232(baud=9600,xmit=PIN_C6,rcv=PIN_C7)
#fuses XT, NOWDT
#BYTE TRISC= 0X87
// Declaración de Variables en la función principal o void main
void main(){
int set_Point;
int16 valor;
int16 control;
float a,b,c;
float temp_limit;
float rT,eT,iT,dT,yT,uT,iT0,eT0;
float max,min;
min=0.0;
max=1500.0;
a=0.1243;
b=0.000062;
c=62.1514;
temp_limit=0.0;
TRISC=0;
setup_timer_2(t2_div_by_4,249,1);
setup_ccp1(ccp_pwm);
SETUP_ADC_PORTS(ALL_ANALOG);
SETUP_ADC(ADC_CLOCK_INTERNAL);
//Ciclo a repetir (aquí se aloja el programa del PID discreto)
for(;;){
14
set_adc_channel(1);
delay_us(20);
set_Point=read_adc();
temp_limit=set_Point*19.53125;
set_adc_channel(0);
delay_us(20);
valor=read_adc();
PUTC(valor);
yT=valor*20000.0/1024.0;
rT=temp_limit;
eT=rT-yT;
iT=b*eT+iT0;
dT=c*(eT-eT0);
//Respuesta PID
uT=iT+a*eT+dT;
//Condiciones de Control en caso de sobrepasar positivamente o negativamente el rango de operación.
if(uT>max){
uT=max;
}
else{
if(uT<min){
uT=min;
}
}
control=uT;
set_pwm1_duty(control); //Carga del valor “control” para la generación del PWM
iT0=iT;
eT0=eT;
delay_ms(1);
}
}