Sei sulla pagina 1di 16

UNIVERSIDAD INDUSTRIAL DE SANTANDER

ESCUELA
DE

INGENIERAS ELCTRICA, ELECTRNICA

Y DE

TELECOMUNICACIONES

Perfecta Combinacin entre Energa e Intelecto

PROYECTO CONTROL DE VELOCIDAD USANDO MATLAB SOBRE RS-232


Jaime Gonzlez Rodrguez, Daniel Bernal Yham, Johan Arturo Castillo, Daysy Murillo Presentado: Diego Alexander Tibaduza

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.

UNIVERSIDAD INDUSTRIAL DE SANTANDER


ESCUELA
DE

INGENIERAS ELCTRICA, ELECTRNICA

Y DE

TELECOMUNICACIONES

Perfecta Combinacin entre Energa e Intelecto

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

Grafica 1. De acuerdo a la curva obtenida en la grafica 1, se plantea un sistema de primer orden.

Figura 6.respuesta de un sistema de primer orden a un escaln unitario.


2

UNIVERSIDAD INDUSTRIAL DE SANTANDER


ESCUELA
DE

INGENIERAS ELCTRICA, ELECTRNICA

Y DE

TELECOMUNICACIONES

Perfecta Combinacin entre Energa e Intelecto

Calculo de los parmetros que define el sistema: Del la figura 4 se obtiene:

Donde K 1 = 5 v
K= 51 .9701018 =10.39402036 K1

Teniendo los parmetros definidos a y K, obtenemos la funcin de transferencia: De la ecuacin 4 despejamos f


G ( s) = K (s + a) 10 .39402036 ( s +10 )

G ( s) =

1 f = Vo * 12 .09 * 10 e3 * 50 e 9

III. Simulacin de la planta

o =165.4259719* V

m =

2 * * f 100

Figura 7.Diagrama de bloks del sistema en simulink.


seal de entrada 5

= 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

Grafica 2.resultado de la simulacin Anlisis de estabilidad para el diseo del controlador :

UNIVERSIDAD INDUSTRIAL DE SANTANDER


ESCUELA
DE

INGENIERAS ELCTRICA, ELECTRNICA

Y DE

TELECOMUNICACIONES

Perfecta Combinacin entre Energa e Intelecto

>> t=tf([10.39402036],[1 10]) 10.39 -----s + 10 rlocus(t)


Root Locus 1 0.8 0.6 0.4 0.2 0 -0.2 -0.4 -0.6 -0.8 -1 -20

CON RESPECO A EL DISEO DEL CONTROLADOR Y SISTEMA DE COMUNICACIN Y PROGRAMACION EN MATLAB


Proyecto realizado consiste en el control de velocidad de un motor de DC conectado a una banda transportadora, este control se realizara de forma digital por medio de MATLAB por lo cual el sistema va a estar comunicado con la siguiente grafica muestra las partes de este proyecto: un computador esta comunicacin se realizara por el puerto serial,

Imaginary Axis

ENVIO DE PULSOS

PC

DAC CIRCUITO DE AJUSTE

-18

-16

-14

-12

-10 Real Axis

-8

-6

-4

-2

Grafica 3. Anlisis de estabilidad


Figura 1Diagrama base del proyecto.

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.

Implementos Utilizados Planta conformada por Banda 3 rodillos Base en madera

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:

UNIVERSIDAD INDUSTRIAL DE SANTANDER


ESCUELA
DE

INGENIERAS ELCTRICA, ELECTRNICA

Y DE

TELECOMUNICACIONES

Perfecta Combinacin entre Energa e Intelecto

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

0 0 500 1000 1500 2000 2500 3000

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.

UNIVERSIDAD INDUSTRIAL DE SANTANDER


ESCUELA
DE

INGENIERAS ELCTRICA, ELECTRNICA

Y DE

TELECOMUNICACIONES

Perfecta Combinacin entre Energa e Intelecto

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.

PLANTA TERMINADA Y ETAPA DE POTENCIA Y ETAPA DE COMUNICACIN

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

UNIVERSIDAD INDUSTRIAL DE SANTANDER


ESCUELA
DE

INGENIERAS ELCTRICA, ELECTRNICA

Y DE

TELECOMUNICACIONES

Perfecta Combinacin entre Energa e Intelecto

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...

UNIVERSIDAD INDUSTRIAL DE SANTANDER


ESCUELA
DE

INGENIERAS ELCTRICA, ELECTRNICA

Y DE

TELECOMUNICACIONES

Perfecta Combinacin entre Energa e Intelecto

ANEXO 1

ANEXO 2 CODIGO DE MATLAB DEL PROYECTO


clc; disp('Proyecto control') clc; disp('Proyecto control') disp('Control de velocidad de un motor DC usando Matlab 7.1SP3') disp('Programa de Control usando interfaz serie RS232 - DabControl version 3 BETA 2 - Copyright DabSoft 2008') disp('Verificando dispositivos por favor espere...') %iniciamos verificando que el puerto serie se encuentre cerrado try if class(s1)=='serial' fclose(s1); %si existe el puerto se da la orden de cerrar el puerto para evitar conclictos disp('Puerto COM se encontro en uso, Cerrando Puerto...') end end disp('Iniciando dispositivos y preparando el sistema por favor espere...') clear all; %se crea y abre el puerto con parametros por defecto s1=serial('COM1'); fopen(s1); s1.Timeout = 0.05; fread(s1); %desocupamos el buffer de lectura para evitar errores al iniciar %definimos algunas variables de trabajo p1 = 2.853e-024; p2 = -3.645e-020; p3 = 1.878e-016; p4 = -4.97e-013; p5 = 7.087e-010; p6 = -5.108e-007; p7 = 0.000139; p8 = 0.06474; p9 = 10.96; error=0; %verificamos el puerto inicializara correctamente if get(s1,'status')=='open' disp('El Sistema se Inicio Correctamente') else disp('Error en el sistema Verifique el puerto COM') error=1; end setp=input('Introduzca el SetPoint del sistema en RPM valor entre 200 y 1500 tenga en cuenta que a mayor velocidad menor rango de control con respecto a carga pero mayor inercia '); setencoder=(setp./60).*100; %esto simplemente es convertir el dato de RPM en RPS y luego en RPS*100 pues el encoder posee 100 ranuras savesetp=setencoder; %esta es la funcion que se usa para convertir entre rps*100 y valores entre %0 y 255

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

ANEXO 3 TABLA DE CARACTERIZACION RESPUESTA DEL MOTOR VS MATLAB


i 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 Fr/se g 90 0 0 0 0 0 0 890 0 100 130 70 130 0 0 0 0 0 0 40 100 100 90 40 70 120 RPM C 54 D 0 A 0 T 0 O 0 S 0 0 M 534 U 0 E 60 R 78 T 42 O 78 S 0 0 N 0 O 0 0 V 0 A 24 L 60 I 60 D 54 O 24 S 42 72 i 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 Fr/se g 880 840 870 910 910 930 960 990 1000 1010 1050 1080 1100 1080 1160 1140 1170 1210 1200 1220 1230 1240 1270 1320 1350 1340 RPM C 528 504 522 546 546 558 576 594 600 606 630 648 660 648 696 684 702 726 720 732 738 744 762 792 810 804 Fr/se i g RPM C 12 9 2000 1200 13 0 2040 1224 13 1 2050 1230 13 2 2070 1242 13 3 2100 1260 13 4 2110 1266 13 5 2130 1278 13 6 2160 1296 13 7 2170 1302 13 8 2190 1314 13 9 2210 1326 14 0 2220 1332 14 1 2250 1350 14 2 2270 1362 14 3 2280 1368 14 4 2300 1380 14 5 2330 1398 14 6 2340 1404 14 7 2360 1416 14 8 2380 1428 14 9 2380 1428 15 0 2420 1452 15 1 2440 1464 15 2 2440 1464 15 3 2470 1482 15 2490 1494 i 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 Fr/se g 3200 3220 3240 3250 3270 3290 3300 3320 3350 3360 3380 3390 3420 3440 3450 3440 3440 3450 3430 3440 3430 3430 3460 3430 3450 3460 RPM C 1920 1932 1944 1950 1962 1974 1980 1992 2010 2016 2028 2034 2052 2064 2070 2064 2064 2070 2058 S 2064 A 2058 T 2058 U 2076 R 2058 A 2070 C 2076 I

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

Potrebbero piacerti anche