Академический Документы
Профессиональный Документы
Культура Документы
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).
2. OBJETIVOS
2.1 GENERAL
2.2 ESPECIFICOS
Disear un circuito electrnico que adecue los niveles de voltaje recibidos del sensor
para realizar lecturas en el PIC 16F877.
Simular el sistema con el software PROTEUS, con todas las etapas y comprobar su
funcionamiento.
3. PROCEDIMIENTO
A.
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.
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
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:
( )
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
( )
( )
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);
}
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.