Está en la página 1de 19

CONTROL PID CON EL PROGRAMA VISUAL BASIC

FUNDACION UNIVERSITARIA LOS LIBERTADORES


PRESENTADO POR:
JULIAN ALBERTO MARTINEZ MATEUS
ROGER ALEXIS VILLAMARIN MUOZ

CODIGO:201010008600
CODIGO:201010044600

Abstract
This report is all the analysis and development of the last practice of the digital control course
corresponding to the communication between the PID control and the computer via the
RS232 serial interface, where the appropriate response to visualize the variables defined
Proportional, Integral and Derivative control that results in a variation will be obtained in the
fan speed and the pitch angle of the lid or sensor to be had on the ground.
Keywords:Microcontroller, PID controller,Rs232 interface, Visual basic
Resumen
En este informe se encuentra todo el anlisis y desarrollo de la ltima practica del curso de
control digital correspondiente a la comunicacin entre el control PID y el computador por
medio de la interfaz serial RS232,en donde se visualizara la respuesta correspondiente a las
variables definidas al control Proporcional, Integral y derivativoque como resultado se
obtendr una variacin en la velocidad del ventilador y el grado de inclinacin de la tapa
sensor que se tendr en la planta.

Palabras clave: Microcontrolador, controlador PID, Interfaz rs232, Visual basic


1. OBJETIVOS
1.1.

Objetivo General

Disear un control Proporcional, integral y derivativo por comunicacin con el programa


Visual Basic.
1.2.
-

Objetivos Especficos

Realizar una comunicacin serial con el computador en el programa Visual Basic.


Disear una planta eficiente para el tipo de control PID.
Disear un control que realice la conversin de datos obtenidos en l sensor.
Determinar el efecto de las constantes integrativa, derivativa y proporcional del sistema.
Determinar las constantes del controlador.
Analizar el porcentaje de error del sistema.
Identificar las caractersticas obtenidas en el control PID.

2.

Equipos e instrumentos usados en la prctica

Red elctrica de 120VACrms


Voltmetro
Potenciometro de 10k
Optoacoplador 4N25
MicrocontroladorPIC16F877A
Lm 35
Switch
Resistencia de 10K y100
Pulsador
Transistor MOSFET canal N P/N :IRFZ44N
Max 232
cable serial-USB
Ventilador DC

3.

Procedimientos de diseo y clculos.

Elaboracin de la planta
Como primer paso, se procedi a construir el pndulo horizontal. con tal fin en primer lugar
se eligi un ventilador DC que funciona a 12 voltios y contaba con la suficiente potencia para
elevar el pndulo. a continuacin el ventilador fue ubicado en la parte inferior de un cilindro
plstico hueco, a este cilindro se le pego un soporte para ubicar el sensor que en este caso
se trato de un potencimetro de 10K.
utilizando el principio de la palanca un palo de madera se uni al potencimetro y en el otro
extremo se ubico una lamina cuadrada de espuma, la cual quedo sobre el extremo libre del
cilindro plstico. por ltimo se adhiri a la planta un indicador de plstico y una flecha sobre
el brazo unido al potencimetro para visualizar la inclinacin del pndulo.

el resultado se muestra a continuacin:

grafica 1: foto de la planta

grafica2: pndulo horizontal a 30

Caracterizacin de la planta:
para caracterizar la respuesta de la planta, se le aplico un escaln unitario y se observo la
salida del sensor en un osciloscopio y se obtuvo el siguiente resultado:

Grafica 3: respuesta de la planta ante escaln unitario.


Para aplicar el mtodo de Ziegler Nichols determinamos los parmetros L que es el retardo tiempo
muerto y T que es la constante de tiempo, sabiendo que:

La constante de tiempo de subida como de bajada es igual a:

El tiempo muerto es igual a:


Por lo cual el resultado esperado ser:
(
(

)
)

Creacin del programa con Visual Basic 2010


Al igual que cualquier tipo de programacin actual, la programacin en Visual Basic requiere
elementos de lenguaje y programacin especfico para este tipo de programa. Por medio de
tutoriales y documentos encontrados en internet se pudo comprender este tipo de programa
y el lenguaje utilizado para poder construir nuestro propio diseo de programa de
comunicacin serial.Los siguientes pasos fueron los que se utilizaron para lograr el diseo
del programa:

1. Lo primero fue sacar del cuadro de herramientas los elementos que se utilizaran para
realizar tanto la comunicacin serial como los botones y cajas de texto en las cuales
se definir cual ser tipo de variable que se controlara.
2. Lo siguiente fue definir las variables de transmisin y recepcin como tipo string
cadena las cules sern las encargadas de la comunicacin con el PIC.
3. El tercer paso es configurar cada botn y caja de texto para lograr una eficiente
comunicacin con el PIC, determinando si existe la comunicacin serial y si es as
comenzar la conexin habilitando las cajas de texto para realizar transmisin y
recepcin de datos.
4. El cuarto paso fue ms experimental que terico porque se vio que en la recepcin del
programa recibamos solo signos de interrogacin (?) esto era porque el programa no
identificaba el lenguaje y lo que enviaba el PIC por lo tanto en la caja se configuro
para que leyera en byte para poder hacer una conversin y asi poder analizar lo que
nos entregaba el microcontrolador.
5. En este paso se quiso graficar la respuesta de nuestro control PID pero por problemas
no identificados el programa al incluirle esta opcin de graficar se bloqueaba y no
dejaba correr el programa hecho.
6. Por ltimo se utiliz la herramienta picturebox para colocar el logo de nuestra
universidad y un label para colocar el nombre de los diseadores del programa.
La meta era la comunicacin serial con el programa Visual Basic la cual se logry se hizo un
buen desarrollo con esta herramienta que es muy completa para realizar cualquier tipo de
programa que se quiera.
Procesamiento de datos obtenidos en el sensor:
En el procesamiento de los datos obtenidos en el control PID se utiliz el microcontrolador
PIC 16F877A el cual es alimentado con 5V y mide el valor que tiene el sensor con el dato
que se le introduce al programa Visual Basic y compara estos dos valores dando como
resultado una variacin de potencial en la planta es decir variando la velocidad del ventilador
y por ende variando el sensor que nos determina el ngulo y posicin en que se encuentra
cada una de las variables a controlar ya sea Proporcional, Integral o Derivativa y as llegar al
valor deseado.
El sensor que se utiliz para medir estas variaciones de potencial fue un potencimetro de
10k. el cual estaba conectado a una tensin de 5Vdc por lo cual variaba dentro del mismo
rango de la tensin de referencia del pin A0 encargado de realizar la conversin de anlogo a
digital.
el clculo de la resolucin del ADC de 8 bits, esta dado por la siguiente ecuacin:

Para garantizar la toma de muestra y la conversin de forma correcta se dice que la


velocidad de muestreo debe ser como minimo el doble que el ancho de banda de la seal
muestrada segn el teorema de Nyquist, si no se cumple ocurre el fenmeno de aliasing.
Fs>2.fm
En nuestro caso la frecuencia de muestreo usada fue:
Frecuencia de reloj/2=8MHz
En esta prctica lo que se realizo fue un control de una seal anloga y convertirla a una
seal digital por medio del microcontroladorPIC16F877A y un algoritmo el cual determinara el
funcionamiento de nuestro conversor para poder transmitirla al programa en Visual Basic y
poder hacer un control tambin en la transmisin y recepcin de datos.

DETERMINAR LAS CONSTANTES DEL CONTROLADOR:


La determinacin de las constantes que se ha desarrollado a travs del curso lo que quieren
es determinar un valor en el cual el sistema que se quiera controlar se estabilice en el menor
tiempo, sin sobre picos y que a perturbaciones que lleguen a ocurrir se recupere hasta
llegara estabilizarse, para el sistema de control PID se realiz un anlisis de lo que significa
cada una de estas variables,el valor proporcional es la que determina la reaccin del error
actual, el integral genera una correccin proporcional a la integral del error, esto nos asegura
que no tendremos un sobre impulso o sobre pico en la seal de entrada y la
derivativadetermina el error de estado estacionario. Realizando un ajuste estas tres variables
obtendremos una diferencia de potencial que ser la energa que se le suministrara al
ventilador, variando hasta llegar al valor deseado en el control PID.
Diagrama de flujo del algoritmo:

cdigo:
#include <prueba-control-p.h>
INT16 control,valor; //Variables para lectura de ADC y seal de Control a modulo CCP
FLOAT a,b,c; //Constantes para parmetros de controlador PID
char t;
FLOAT set1; //Referencia de Temperatura
unsigned int s,rt,eT,iT,dT,yT,iT0,eT0; //Variables de controlador PID
FLOAT max,min,desbordei,; //anti desborde
unsigned int contador,recibido,set;
unsigned int dato,adc0,adc1,adc2,uT,g,valor1,error,m,res; //Declaramos variables a usar.
#INT_RDA
void RDA_isr(void)
{
t=getc();// lee el valor enviado por visual basic
while(t=='P')
{

printf ("CTE proporcional");


g=getc();

if(g<58)
{
adc0=g-48;
a=adc0;
printf ("KP=");
printf ("%u",adc0);
t=0;
}
}

while(t=='i')
{
printf ("CTE integral");
g=getc();

if(g<58)
{
adc0=g-48;
adc1=(adc0/10);
b=adc1;
printf ("Ki=0.");
printf ("%u",adc0);
t=0;
}

}
while(t=='D')
{

printf ("CTE derivativa");


g=getc();

if(g<58)
{
adc0=g-48;
adc1=(adc0/10);
b=adc1;
printf ("Kd=0.");
printf ("%u",adc0);
t=0;
}
}
}
void main()
{
min=0.0;
max=270.0;
iT0=0.0;
eT0=0.0;
a=0;
b=0;
c=0;
pru=255;
set=80;
setup_adc_ports(AN0);
setup_adc(ADC_CLOCK_DIV_2);
setup_timer_2(T2_DIV_BY_1,99,1);
//fecuencia del ADC
setup_ccp1(CCP_PWM);
set_pwm1_duty((int16)0); // inicializar el PID
enable_interrupts(INT_RDA);
enable_interrupts(GLOBAL);
while(TRUE)
{
yT=read_adc();// lle la entrada del ADC
delay_ms(500);
rT=set;// estabelce el punto de referencia
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)
eT=error;

if (uT>max) //Anti desborde


{
uT=max;
}
else
{
if (uT<min)
{
uT=min;
}
}
control=uT;
desbordei=iT/uT;
if(desbordei>=5)
{
iT=0;
}
set_pwm1_duty(control); //Transferencia de senal de control al actuador
iT0=iT;
eT0=eT;
}
}

Implementacin del microcontrolador:


una vez el cdigo fue programado en el micro controlador, se procedi a montarlo en la
protoboard y probar su funcionamiento.

grafica 4: microccontrolador implementado en protoboard

grafica 5: salida del PWM en el puerto ccp1 del microcontrolador.


Etapa de potencia:
para aplicar la potencia requerida es decir, suministrar 12Vdc y una corriente de 600mA se
implementa un circuito que usa un opto-acoplador para separar elctricamente el
microcontrolador de la planta y transmitir la seal del pwm a un MOSFET para que este
suministre la potencia requerida.

Grafica 5: etapa de potencia implementada en la protoboard.

Grafica 6: fuente de alimentacin a 12Vdc y 5 Vdc

ANALISIS DE RESULTADOS:
RESULTADOS:

controlador Proporcional:
en primer lugar se aplico una KP=1 es decir una ganancia unitaria para ver el
comportamiento de la planta.

grafica 7: tensin en el sensor de la planta para KP=1.


se observa que en comparacin a el sistema en lazo abierto, el tiempo de respuesta se
redujo en aproximadamente 500ms y error de estado estacionario se redujo.
a continuacin se aumento al doble la constante proporcional es decir Kp=2

Grafica 8: respuesta de la planta para Kp=2


para este caso el tiempo del transitorio se redujo aun mas, ubicndose el rededor de 1
segundo es decir se redujo al 40% en comparacin con el sistema en lazo abierto (grafica 3)

ahora se aumenta una unidad a KP y se obtuvo el siguiente resultado:

grafica 9: respuesta de la planta para Kp=3


se observa como el resultado es similar al de la grafica 8 aunque mejora levemente el tiempo
del transitorio.
Control Proporcional-integral
para una ganancia unitaria segn los criterios obtenidos en la caracterizacin de la planta se
estudio la respuesta para Ki=1 y Kp=1

grafica 10: respuesta de la planta para Kp=1y Ki=1


se observa una respuesta con un tiempo de transitorio similar al de la ganancia unitaria pero
con una mejora del error de estado estacionario.
ahora se mantiene igual la constante proporcional y se aumenta a 2 la constante integral.

grafica 11: respuesta de la planta para Kp=1y Ki=2


se observa una reduccion del error de estado estacionario con respecto a la grafica anterior.
a continuacin se aumenta a Kp=2 para ver de nuevo los valor 1 y 2 del integral.

grafica 12: respuesta de la planta para Kp=2 y Ki=1


se obtuvo una respuesta similar a la grafica 10, el tiempo del transitorio se reduce pero el
error en estado transitorio se mantiene.
ahora se cambia la constante i a 2 y se grafica de nuevo.

grafica 13: grafica 12: respuesta de la planta para Kp=2 y Ki=2


tal como en al anterior la variacin con respecto a la grafica 11 es la reduccin del error de
estado estacionario
Control PID:
el resultado final del controlador se muestra a continuacin:

Grafica 14: control PID final


segn los criterios establecidos Kp=2, Ki=2 y Kd=0.5 en la caracterizacin de la planta los
valores finales donde se logra reducir el error de estado estacionario a aproximadamente
10mv es decir un 0.6% del valor del punto de referencia, este valor se encuentra dentro del
rango de valores esperados por lo cual se acepta este resultado como valido.

Grafica 15: interfaz del programa final en visual BASIC


En esta imagen se muestra el programa final desarrollado con Visual Basic 2010, en donde
se determina si hay conexin serial con el computador y si es as conectar para
posteriormente enviar el tipo de dato PID.

grafica 16: circuito implementado y funcional.

grafica 17: montaje final con conexin a pc y control asistido por visual BASIC.
4.

CONCLUSIONES

Se determin que para poder leer lo que enva el microcontrolador hay que darle la
configuracin readbyte y de esta manera poder analizar la comunicacin.
Se analiz y determino que la mejor planta para el desarrollo experimental de la
practica fue un tarro cilndrico para que el viento pase uniforme por todo el espacio del
cilindro y de este modo tener una buena visualizacin del control PID.
Se observo que al aadir la parte integrativa se aumento el sobre impulso, lo cual
provoca oscilaciones pero mejoro el error de estado estacionario dejandolo por debajo
del 0.7%.
El objetivo de un control PID es corregir eficazmente y en un mnimo de tiempo
perturbaciones a las que pueda estar expuesto.
Se pudo observar como el metodo de zieglernichols, ofrece una buena gua para la
aproximacin a los valores que hacen al sistema rapido y estable.

Para obtener una mejor medicin de seal de entrada es bueno tener en una posicin
fija el objeto a medir puesto que esto puede ocasionar variaciones en el
comportamiento del control.

5. PLANO ELECTRICO