Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
ESCUELA
DE
Y DE
TELECOMUNICACIONES
I. Descripcin De La Planta La planta a caracterizar es una banda transportadora la cual se ilustra en las figuras 1,2 y 3. La banda como se muestra en las figuras anteriormente citadas cuenta con una relacin de engranes, los cuales fueron necesarios para el acople con el motor de DC, y se seleccionaron de tal manera que la relacin de conversin de ellos, logre reducir la velocidad de la banda y aumentar la traccin de ella, en el momento del acople con el motor para no forzar el motor, cuando se le pusiera una determinada carga.
Figura 2.
Figura 3. II. Caracterizacin de la planta La caracterizacin se realiz usando el mtodo de la respuesta en frecuencia por facilidad en la obtencin de parmetros, con ayuda de conversor frecuencia tensin. Para esto se utilizo un encoder que consiste en un aspa de 100 ranuras adecuado especialmente para el
1
Figura 1.
Y DE
TELECOMUNICACIONES
sistema y acoplado al eje del motor. Este sistema bsicamente convierte la seal mecnica, es decir el giro del engranaje en una seal elctrica por medio de un sensor ptico generador de pulsos de acuerdo con la interrupcin de la seal de luz. En consecuencia es necesario convertir esta frecuencia a tensin, para esto se utilizo un circuito conversor de frecuencia voltaje (ver Figura4.).
Figura 5.Sistema de primer orden. El siguiente anlisis muestra como determinar el sistema de primer orden a partir de la grafica 1. El sistema de primer orden esta determinado por:
Expandindolo a fracciones parciales tenemos Figura 4.Sistema conversor de frecuenciaVoltaje.(Op amp utilizado LM2907). Resultados obtenidos con el montaje propuesto en la figura 5 se observa en la grafica 1 con Vcc=120.9, C1= 50nf, C2=3.3uf, R1=30k , R2=10k . Aplicando transformada inversa de laplace obtenemos:
>
>
e f
lt
Y DE
TELECOMUNICACIONES
Donde K 1 = 5 v
K= 51 .9701018 =10.39402036 K1
G ( s) =
1 f = Vo * 12 .09 * 10 e3 * 50 e 9
o =165.4259719* V
m =
2 * * f 100
= 10.39402036*Vo m
De la Grafica 1 se determina el tiempo de establecimiento y la tensin a la que se establece el sistema.
AMPLITUD(1Vdiv) 4.5 4 3.5 3 2.5 2 1.5 1
El 63% de c(t) es 1 = = 100ms por lo tanto el Ts =5* =500ms (tiempo de establecimiento ) Tr =2.2/a=220ms (tiempo de levantamiento) Como
Vmax = 5 v
0.5 0
4 5 6 TIEMPO(100msdiv)
10
= 10.39402036*Vmax m
max = 51 .9701018 rad / s
K * K 1 = 51 .9701018
Y DE
TELECOMUNICACIONES
Imaginary Axis
ENVIO DE PULSOS
PC
-18
-16
-14
-12
-8
-6
-4
-2
Despus de analizar el lugar geomtrico de las races utilizando la funcin rlocus de Matlab (Ver Grafica 3), se concluyo que el sistema es estable para cualquier valor de ganancia Kp.
IV. Conclusiones y observaciones En este informe se explica de una manera sencilla, la caracterizacin de la planta por el mtodo de respuesta en frecuencia. Los resultados obtenidos en el momento de caracterizar la planta indican que el sistema se aproxima a un sistema de primer orden, lo cual es una ventaja, a la hora de la definir parmetros del sistema (por el numero de ellos).
Motor DC a 24V con encoder incluido Sistema de Comunicacin Conformado por: Computador Dell Optiplex con Matlab 7.1 SP3 Sistema de Conversin Digital /Analogo Analogo Digital conformado por un PIC 16F818 programado con un codigo adjunto en los anexos. Etapa de potencia. El sistema de comunicacin serie por medio de Matlab tiene las siguientes especificaciones: SERIAL specific properties:
Y DE
TELECOMUNICACIONES
BaudRate = 9600 BreakInterruptFcn = DataBits = 8 DataTerminalReady = on FlowControl = none Parity = none PinStatus = [1x1 struct] PinStatusFcn = Port = COM1 ReadAsyncMode = continuous RequestToSend = on StopBits = 1 Terminator = LF El objeto del microcontrolador en primer lugar ser esperar los datos en formato RS-232 y una vez recibidos convertirlos a paralelo para luego a este sistema conectar un DAC que convierta esta informacin en un nivel de tensin que por medio de una posterior etapa de potencia alimentara el motor; en segundo lugar ser contar los pulsos y enviar a solamente la informacin del numero de pulsos para un tiempo de 100ms solo cuando desde Matlab se le envie la orden de comenzar el conteo.
250
200
150
100
50
x vs. y fit 2
Caracterizacin i vs Franjas por segundo ledas por el encoder y su respectiva curva de aproximacin de octavo orden. k=p1*x^8 + p2*x^7 + p3*x^6 + p4*x^5 + p5*x^4 + p6*x^3 + p7*x^2 + p8*x + p9; Tabla de datos Obtenidos en los Anexos de este trabajo, la cual fue realizada usando el sistema de comunicacin el motor y la planta montada por medio de un simple programa en matlab que se encarga de evaluar i de 0 a 255 y leer la velocidad del motor y guardarla en una matriz. El archivo M de matlab se presenta a continuacin: %este es un programa anexo para realizar la caracterizacion de la respuesta %a la planta funcion que hace referencia DabControl 3 Beta 2 linea 31 a 37 y 98 a 103. fclose(s1); %se crea y abre el puerto con parametros por defecto s1=serial('COM1'); fopen(s1); fr=0; s1.Timeout = 0.05; for i=1:255 fwrite(s1,[1 2 5 0 i]); pause(0.002); fwrite(s1,[1 2 5 1 0]); pause(0.15); fr=fread(s1); frec=(fr(1,1).*256+fr(2,1)).*10; total(i,1)=i; total(i,2)=frec; end
La informacin convertida de serie a paralelo por el PIC es mantenida con el ultimo valor obtenido proveniente del puerto serie hasta que nueva informacin llega, debido a que por medio del uso del DAC y una etapa de potencia la informacin presentada en paralelo por el PIC en sus 8 terminales controlara directamente la alimentacin del motor; entonces solo si el puerto serie enva una nueva informacin los datos convertidos a paralelo deben cambiar con objeto de mantener la alimentacin del motor constante. Para evitar problemas de comunicacin se defini un cdigo binario el cual garantiza que el PIC no realizara tareas no indicadas en el cual para iniciar el conteo de pulsos del encoder primero deben mandarse en binario el vector (1 2 5 1 0) y esperar 100 ms para leer los datos en Matlab; si lo que se desea es fijar un set-point en el sistema se requiere enviar el vector (1 2 5 0 i) donde i es un numero entre 0 y 255. La resolucin del PIC a 100ms es de 10hertz. A continuacin se presenta la tabla de caracterizacin valor de i Vs Franjas por segundo y su respectiva conversin a RPM de la cual fue creada una funcin de octavo orden por aproximacin numrica para ser usada en el cdigo de matlab presentado en los anexos.
Y DE
TELECOMUNICACIONES
Con base en la tabla anexo 3 se definen los mrgenes de control del sistema por lo cual se tendr que el sistema podr controlar desde 340RPM hasta 1000RPM dejando un margen de 1000RPM para cuando es aplicada carga al sistema, dejando claro que si es posible trabajar el sistema a mayor velocidad pero se presenta perdida de margen de control por las limitaciones del sistema principalmente de la etapa de potencia, como se puede observar en la Tabla Anexo 3 el motor se activa de forma estable para valores de i mayores a 35 y obtiene una velocidad maxima para cuando i es 210 para valores superiores la velocidad pico se mantiene a 2058 RPM a partir de aqu cualquier valor de i mayor no aumentara la velocidad del motor pues para valores superiores tenemos que etapa de potencia se encuentra saturada como se puede observar en la Figura __ de caracterizacin.
El controlador Implementado fue un proporcional, esto teniendo en cuenta que implementar un controlador continuo PI, PD o PID aqu representaba una posible inestabilidad del sistema por el tiempo de muestreo presentado por el sistema caracterizado en aprox 300ms, tiempo de retardo ocurrido entre una lectura y la siguiente. CONTROLADOR P
La estructura de un controlado P introduce una ganancia con respecto al error a la planta. La estructura se muestra a continuacin:
Figura 2 Diagrama controlador P VOLTAJES DE ALIMENTACION Se definen los siguientes voltajes de alimentacin para un correcto funcionamiento del sistema. El circuito deber ser alimentado con las siguientes tensiones de alimentacin: Vencoder= 5.12 V VPIC= 8.48V V-=-3.815V V+=17.20V
Y DE
TELECOMUNICACIONES
EJECUTANDO DABSOFT3.M Proyecto control Control de velocidad de un motor DC usando Matlab 7.1SP3 Programa de Control usando interfaz serie RS232 DabControl version 3 BETA 2 - Copyright DabSoft 2008 Verificando dispositivos por favor espere... Iniciando dispositivos y preparando el sistema por favor espere... Warning: The specified amount of data was not returned within the Timeout period. El Sistema se Inicio Correctamente Introduzca el SetPoint del sistema en RPM valor entre 340 y 1000 tenga en cuenta que a mayor velocidad menor rango de control con respecto a carga pero mayor inercia ____ Introduzca el tiempo de simulacion en segundos _____ El proceso de control a comenzado...
Y DE
TELECOMUNICACIONES
ANEXO 1
x=setencoder; k=p1*x^8 + p2*x^7 + p3*x^6 + p4*x^5 + p5*x^4 + p6*x^3 + p7*x^2 + p8*x + p9; % esta aproximacion es valida solo hasta rps*100 =3440 time1=input('Introduzca el tiempo de simulacion en segundos '); disp('El proceso de control a comenzado...') %aqui se va inicializar el motor con base en el Set Point establecido try fwrite(s1,[1 2 5 0 k]); catch % esto permitir reintentar la operacion en caso que el tiempo de escritura sea insuficiente. s1.Timeout = 0.09; disp('Ocurrio un retardo adicional en la escritura de datos reintentando ') %aqui se va inicializar el motor fwrite(s1,[1 2 5 0 k]); s1.Timeout = 0.05; end tic time=0; %entornoo grafico inicializacion hold off newplot hold on; grid on; plot(time,1); while time<=time1 %tiempo de duracin if error==1 break end pause(0.02); % INTEREZANTE PROBAR ESTE LIMITE try fwrite(s1,[1 2 5 1 0]); % se solicita leer datos al encoder numero de pulsos en 100 ms. catch s1.Timeout = 0.09; disp('Ocurrio un retardo adicional en la escritura de datos reintentando ') fwrite(s1,[1 2 5 1 0]); % se solicita leer datos al encoder numero de pulsos en 100 ms s1.Timeout = 0.05; end pause(0.15)% tiempo de espera encoder configurado a 100ms e asignan 40ms adicionales por posibles retardos fr=fread(s1); %verificacion de que se reciba la informacion en el tiempo estipulado if isempty(fr)==0 frec=(fr(1,1).*256+fr(2,1)).*10; else disp('Ocurrio un retardo adicional en la lectura de datos anexando retardo de 100ms ') pause(0.1) fr=fread(s1); if isempty(fr)==1
disp('Existe un error grave en la lectura de datos verifique conexiones') error=1; break else frec=(fr(1,1).*256+fr(2,1)).*10; end end %graficamos la velocidad del motor en vivo! frecplot=(frec.*60)./100; plot(toc,frecplot,'+'); %aqui inicia la parte del controlador error=savesetp-frec; % si suponemos un control proporcional %----------------------------------------------------------------------kp=1.3; %kp es la constante proporcional (definir valor!!) error2=error.*kp; setencoder=setencoder+error2; %usando una tabla o una funcion con base en este valor de frecuencia de %correccion se escribir un dato entre 0 y 255 q sera el nuevo setpoint. % esto esta mal hecho pro solo con fines de test! x=setencoder; if x<=3300 newsetp=(p1*x^8 + p2*x^7 + p3*x^6 + p4*x^5 + p5*x^4 + p6*x^3 + p7*x^2 + p8*x + p9); else x=3300; newsetp=(p1*x^8 + p2*x^7 + p3*x^6 + p4*x^5 + p5*x^4 + p6*x^3 + p7*x^2 + p8*x + p9); end if x>=330 newsetp=(p1*x^8 + p2*x^7 + p3*x^6 + p4*x^5 + p5*x^4 + p6*x^3 + p7*x^2 + p8*x + p9); else x=330; newsetp=(p1*x^8 + p2*x^7 + p3*x^6 + p4*x^5 + p5*x^4 + p6*x^3 + p7*x^2 + p8*x + p9); end % newsetp=setencoder.*(funcion)% es una funcion frec-->0-255 %resultado del proceso de control en newsetp %aqui se escribe el nuevo SetPoint pause(0.02); try fwrite(s1,[1 2 5 0 newsetp]); catch pause(0.003); s1.Timeout = 0.09; fwrite(s1,[1 2 5 0 newsetp]); end %Si no hubo errores todo el bucle comienza de nuevo. time=toc;
% sprintf('El Bucle tuvo una duracion de %f segundos',time); %esto solo debe usarse en etapa de pruebas. disp(ans) end sprintf('El Proceso tuvo una duracion de %f segundos',time); disp(ans) disp('El proceso a finalizado') if error==1 try fwrite(s1,[1 2 5 0 0]); disp('ERROR GRAVE!!!----------------- SISTEMA DE CONTROL DETENIDO-----------------------') catch disp('ERROR GRAVE!!! VERIFIQUE LAS CONEXIONES') end end try fwrite(s1,[1 2 5 0 0]); catch s1.Timeout = 0.09; fwrite(s1,[1 2 5 0 0]); s1.Timeout = 0.05; end fwrite(s1,[1 2 5 0 0]); disp('Cerrando Puerto...') fclose(s1)%cerrando el puerto
27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53
210 170 210 220 230 220 300 290 330 350 360 400 360 390 450 430 470 480 500 470 560 560 570 570 590 600 610
126 102 T 126 O 132 138 T 132 E 180 S 174 T 198 210 216 240 216 234 270 258 282 288 300 282 336 336 342 342 354 360 366
91 92 93 94 95 96 97 98 99 10 0 10 1 10 2 10 3 10 4 10 5 10 6 10 7 10 8 10 9 11 0 11 1 11 2 11 3 11 4 11 5 11 6 11 7
1360 1400 1400 1410 1400 1450 1480 1460 1490 1500 1530 1560 1560 1580 1620 1620 1650 1660 1670 1710 1720 1750 1760 1780 1790 1810 1820
816 840 840 846 840 870 888 876 894 900 918 936 936 948 972 972 990 996 1002 1026 1032 1050 1056 1068 1074 1086 1092
4 15 5 15 6 15 7 15 8 15 9 16 0 16 1 16 2 16 3 16 4 16 5 16 6 16 7 16 8 16 9 17 0 17 1 17 2 17 3 17 4 17 5 17 6 17 7 17 8 17 9 18 0 18 1
2510 2520 2540 2570 2590 2580 2620 2640 2640 2680 2670 2700 2720 2740 2760 2800 2800 2810 2830 2840 2880 2890 2920 2950 2980 2960 2990
1506 1512 1524 1542 1554 1548 1572 1584 1584 1608 1602 1620 1632 1644 1656 1680 1680 1686 1698 1704 1728 1734 1752 1770 1788 1776 1794
219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245
3430 3440 3440 3450 3450 3420 3430 3450 3430 3450 3440 3440 3430 3440 3440 3460 3450 3440 3430 3440 3430 3460 3430 3440 3450 3460 3450
2058 O 2064 N 2064 2070 E 2070 T 2052 A 2058 P 2070 A 2058 2070 D 2064 E 2064 2058 P 2064 O 2064 T 2076 E 2070 N 2064 C 2058 I 2064 A 2058 2076 2058 2064 2070 2076 2070
54 55 56 57 58 59 60 61 62 63 64
650 680 730 710 750 780 750 840 810 840 860
390 408 438 426 450 468 450 504 486 504 516
11 8 11 9 12 0 12 1 12 2 12 3 12 4 12 5 12 6 12 7 12 8
1850 1880 1900 1890 1940 1950 1960 1970 2000 2010 2010
1110 1128 1140 1134 1164 1170 1176 1182 1200 1206 1206
18 2 18 3 18 4 18 5 18 6 18 7 18 8 18 9 19 0 19 1 19 2
3000 3020 3030 3060 3070 3080 3110 3140 3140 3170 3190
1800 1812 1818 1836 1842 1848 1866 1884 1884 1902 1914
246 247 248 249 250 251 252 253 254 255
3460 3460 3450 3440 3440 3420 3450 3460 3440 3440
2076 2076 2070 2064 2064 2052 2070 2076 2064 2064
ANEXO 4 CODIGO DE PROGRAMACION DEL PIC '************************************************************ 'CONVERSOR SERIE RS232-PARALELO '************************************************************ include "modedefs.bas" 'OSCILADOR PULSOS VAR word ORDEN VAR BYTE VALOR VAR BYTE DEFINE OSC 4 TACOMETRO CON 8 RS232_IN CON 9 RS232_OUT CON 10 CONFIGURACION: 'CALIBRACION DE FABRICA OSCCON = %01100000 OSCTUNE = %00000000 'CONFIGURACION DE PUERTOS 'CONFIGURACION DEL PUERTO A 'RA0 'RA1 'RA2 BIT DE CONTROL(RS,SELECCION DE COMANDO O DATO) 'RA3 NC 'RA4 NC 'RA5 BIT DE CONTROL ADCON1 = 6 'CONFIGURAR LAS ENTRADAS COMO DIGITALES TRISA = %11111011 'CONFIGURACION DE I/O PORTA = %11111111 'CONFIGURACION DEL PUERTO B 'RB0-RB7 DATO DE SALIDA PARA EL CONVERSOR A/D TRISB = %00000000 PORTB = %00000000 CICLO: ;LEEMOS EL PUERTO RS232 SERIN RS232_IN,T9600,[1,2,5],ORDEN,VALOR ;SI NO LLEGA UN DATO VULVE A LEER ;SE DETERMINA SI SE LE PIDIO LEER LA FRECUENCIA O PONER EL DATO if ORDEN=0 THEN ;SI LLEGA 0 PONE VALOR EN EL PUERTO PORTB=VALOR ELSE ;SI NO LLEGA 0 ENTONCES LEE LA FRECUENCIA Y LA ENVIA COUNT TACOMETRO,100,PULSOS ;CUENTA LOS PULSOS QUE ENTRAN POR EL PIN EN 100[mS] SEROUT RS232_OUT,T9600,[PULSOS.highBYTE,PULSOS.LOWBYTE] ;ENVIA LA CUENTA, EL BIT MAS MSB,LSB ENDIF GOTO CICLO END