Вы находитесь на странице: 1из 17

PROYECTO DE CONTROL PI DE LA PLANTA DE POSICION

NESTOR EDUARDO POLANIA VARGAS

UNIVERSIDAD SURCOLOMBIANA
FACULTAD DE INGENIERIA
INGENIERA ELECTRNICA
NEIVA HUILA
2012
1. INTRODUCCIN

COD. 2008277081

PLANTA DE POSICIN
La planta de posicin sin compensador, se conforma por un SetPoint que vara su voltaje de (-10
a 10v); un mdulo restador encargado de la retroalimentacin; un motor de giro completo que
indica la posicin en la que se encuentra; y un sensor de posicin que responde, para ngulos
positivos (0 a 180) con voltajes de (0 a 10v), y para ngulos negativos (0 a -180) con voltajes de
(0 a -10v).

Fig.1 Diagrama de bloques

Fig.2 Planta de posicin sin compensador

CONTROLADOR PID PARA PLANTA DE POSICIN


En este proyecto se propone controlar la posicin de la planta anterior, mediante el uso de un
microcontrolador (PIC 16F877) y con ayuda del conocimiento adquirido en clase sobre el diseo de
controladores tipo PID. El proceso de control se realizara en general de manera digital, con algunas
etapas anlogas correspondientes a las adecuaciones de voltaje.
El proceso de control responde al siguiente procedimiento: El SetPoint es introducido mediante un
KeyPad y ser visualizado en un LCD azul . El valor de la seal entregada por el sensor se adecuara
mediante un arreglo de amplificadores operaciones (TL 084) y ser ledo por el microcontrolador
en su mdulo de conversin A/D, encontrando el error o la diferencia con respecto al SetPoint.
Con la ecuacin en diferencia correspondiente al controlador diseado, el sistema tomara las
medidas de correccin pertinentes y enviara un binario de 8 bits a un convertidor D/A (dac0808),
el cual mediante una etapa de adecuacin enviara la correccin a la Planta en un rango de (-13 a
13v).

2. OBJETIVOS

2.1 GENERAL

Controlar la Planta del de posicin por compensador tipo PI.

2.2 ESPECIFICOS

Encontrar la funcin de transferencia de la planta, con ayuda de las grficas obtenidas


experimentalmente con el software BORIS.

Disear un controlador PID que cumpla con las especificaciones de diseo.

Disear un circuito electrnico que adecue los niveles de voltaje recibidos del sensor
para realizar lecturas en el PIC 16F877.

Disear un circuito electrnico capaz de convertir un nmero binario de 8 bits, en un


voltaje que recibir la planta; correspondiente a la correccin del controlador PI.

Encontrar la ecuacin en diferencia correspondiente a la funcin de transferencia del


controlador diseado, para poderla implementar en un microcontrolador.

Implementar un cdigo en lenguaje C para que el microcontrolador reciba el SetPoint


y controle la posicin del motor, mediante la ecuacin en diferencia del compensador
diseado.

Simular el sistema con el software PROTEUS, con todas las etapas y comprobar su
funcionamiento.

3. PROCEDIMIENTO

A.

Modelamiento de la Planta de Posicin

Con ayuda del software BORIS se obtuvo la grfica de la respuesta de la planta y dos tablas
correspondientes al escaln y la respuesta de la planta. De la grfica podemos observar de
manera rpida que tiene una respuesta sin tiempo muerto, un tiempo de establecimiento de
alrededor de los 2 segundos y un error de estado estacionario aproximado a los 0.5 voltios.

Fig.3 Respuesta al escaln

Identificacin de la planta de posicin:


Mediante el toolbox de Matlab llamado System Identification hacemos la identificacin de la
planta.
Primero cargamos los datos de la planta en el workspace

Luego procedemos a abrir el Toolbox escribiento la palabra ident en la ventada de comandos.

Poco tiempo despus se abre la ventada del Toolbox que es la siguiente

Luego cargamos los datos de la planta en el toolbox


Escribimos en input: in(:,2) debido a que nos referimos
a los datos de entrada que estn cargados en la
variable in, esta variable tiene dos columnas, una de
tiempo y otra de los valores del step. Los caracteres
:,2 indica que vamos a seleccionar todas las filas de la
segunda columna.
Lo mismo hacemos con los datos de salida.

Luego de cargar los datos en el toolbox, elegimos el modelo que queremos para la planta

Luego de esto nos damos cuenta que la estimacin de la planta es del 97.87

Entonces finalmente tenemos la funcin de transferencia de nuestra planta:


( )

Aplicamos el siguiente cdigo para sacar la funcin de transferencia en el dominio digital para un
periodo de muestreo de 0.2 segundos:
Transfer function:

( )

Ahora procedemos al diseo analitico del control PI

G(S) =
= 16
T = 0.2
= 2seg

-1.832=-

=0.16 = Ln(

1.832=

3.3562(1- )=
3.3562 =

3.3562

3.3562 = 13.22
= 0.503

=2=

; entonces

= 3.97

Z =
<Z=

= 0.6707

Z = 0.5189

= 39.31
j 0.4248
K

( )

1=180 -

POLO DOMINANTE

2 = 180 -

) = 134.33
(

Ahora realizamos:
- 1 2 = - 180

)=138.55

= 92.88
tan =
= 0.5189 (

( )

) = 0.5402

K
K

=1

K = 42.7

Con esto tenemos la funcin del controlador:

( )

Convirtiendo a k para meter al pic:


( )

( )

Donde E representa la seal de error y Y es la salida del controlador

MODELAMIENTO CON SIMULINK

SISTEMA RESPUESTA AL ESCALON

CONTROLADOR CON PIC 16F877


Cdigo del pic:
#include <16F877A.h>
#device adc=8
#FUSES NOWDT
//No Watch Dog Timer
#FUSES HS
//High speed Osc (> 4mhz for PCM/PCH) (>10mhz for PCD)
#FUSES NOPUT
//No Power Up Timer
#FUSES NOPROTECT
//Code not protected from reading
#FUSES NODEBUG
//No Debug mode for ICD
#FUSES NOBROWNOUT
//No brownout reset
#FUSES NOLVP
//No low voltage prgming, B3(PIC16) or B5(PIC18) used for I/O
#FUSES NOCPD
//No EE protection
#FUSES NOWRT
//Program memory not write protected
#use delay(clock=20000000)
#define LCD_ENABLE_PIN PIN_D1
#define LCD_RS_PIN PIN_D2
#define LCD_RW_PIN PIN_D3
#define LCD_DATA4 PIN_D4
#define LCD_DATA5 PIN_D5
#define LCD_DATA6 PIN_D6
#define LCD_DATA7 PIN_D7
#byte portb=0x06
#byte trisb=0x86
#bit e0=0x09.0
#include <lcd.c> //libreria del LCD
#include <kbd.h> //Libreria para teclado matricial
void teclado();
//declaramos las variables que vamos a utilizar durante el control
float x,p,a;
int h;
signed int d;
float y[4],e[4];
char letra;
signed int16 step, grados, sum,rea,grado;
#int_TIMER2
void TIMER2_isr(void)
{
disable_interrupts(INT_TIMER2); //desabilitamos interrupcion por temporizacion del timer
set_adc_channel(0);
x=read_adc();
delay_us(20);
x=x-128;
x=x*0.667;
if((grados>=40)&&(grados<=120)){

p=grados*85/180+5;
}
if((grados>=120)&&(grados<=180)){
p=grados*85/180+8;
rea=grado+4;
}
if(grados>=0&&grados<=40){
p=grados*85/180+4;
rea=x*180/85+4;
}
if(grados<0){
p=grados*85/180;
}
if(x>0){
rea=(x)*180/127+10;
}
else{
rea=(x)*180/(-128)+180+70;
}
if((h==0)||(h>20)){
e[2]=p-x;
y[2]=0.42.7*e[2]-23.06*e[1];
e[1]=e[2];
if((y[2])==(-128))
{
y[2]=-127;
}
if((y[2])<(0))
{
y[2]=y[2]*(-1);
y[2]=y[2]+128;
}
d=(unsigned int)y[2];
lcd_gotoxy(1,2);
printf(lcd_putc,"%d",d);
output_c(d);
if(h==20)
{
h=0;
}
}
h++;
enable_interrupts(INT_TIMER2);
}
void main()
{

lcd_init();
kbd_init();
port_b_pullups(true);
y[0]=0;
e[0]=0;
y[1]=0;
e[1]=0;
y[2]=0;
e[2]=0;
setup_adc_ports(AN0_VREF_VREF);
setup_adc(ADC_CLOCK_DIV_32);
setup_spi(SPI_SS_DISABLED);
setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1);
setup_timer_1(T1_DISABLED);
setup_timer_2(T2_DIV_BY_16,199,16);
setup_comparator(NC_NC_NC_NC);
lcd_putc(" Proyecto de \n CONTROL DIGTAL");
delay_ms(2000);
lcd_putc("\f");
teclado();
enable_interrupts(INT_TIMER2);
enable_interrupts(GLOBAL);
while(true)
{
letra=kbd_getc();
if(letra=='#')
{
disable_interrupts(INT_TIMER2);
lcd_putc("\f");
teclado();
}
}
}
void teclado()
{
grados=0;
letra=0;
lcd_putc("Deseado = ");
while(letra!='*' || grados>360)
{
letra=kbd_getc();//para cachar lo que se pulse o no se pulse en el teclado
if(letra!=0 && letra!='*')
{
printf(lcd_putc,"%c",letra);
step=letra-48;
sum=grados*10;
grados=sum+step;

}
if(letra=='*' && grados>360)
{
lcd_putc("\f");
lcd_putc("Error... \n capacidad 360 g");
delay_ms(500);
lcd_putc("\f");
grados=0;
letra=0;
}
}
lcd_putc("\f");
printf(lcd_putc , "Posicion=%ld " ,grados);
lcd_gotoxy (1 , 1);
grado=grados;
if(grados>180)
{
grados=grados-360;
}
h=0;
enable_interrupts(INT_TIMER2);
}

EL DISEO FINAL DEL SISTEMA


A partir del diagrama de bloques, diseamos el circuito y ubicamos todas las etapas
correspondientes, para comprobar el funcionamiento del sistema y corregir los errores
pertinentes.

CONCLUSIONES

Podemos observar que hay un poquito de desfase entre el set point deseado y el valor
mostrado por la planta debido a que el DAC que utilizamos fue uno de 7 bits que
montamos implementado por resistencias y un amplificador operacional, y esto a su vez
tambin nos origina un error debido a la tolerancia de las resistencias.

Se tienen diferentes tipos de limitantes a la hora de la implementacin real de nuestro


sistema de control, una de ellas es la potencia mxima que se le puede aplicar a la planta.
En las simulaciones realizadas se observaba una excelente respuesta en cuanto a tiempo
de establecimiento y overshoot se refiere, pero a la hora de la implementacin se observ
que en la salida del controlador se presentaban voltajes del orden de los 25 voltios,
cuando el voltaje mximo a aplicar al sistema est en el rango de -15 a 15 voltios.
Entonces se someti el controlador a un proceso de sintonizacin paulatina y progresiva
hasta que encontramos una combinacin optima entre mrgenes de potencia, overshoot y
tiempo de establecimiento.

Вам также может понравиться