Preview only show first 10 pages with watermark. For full document please download

Matlab Y Comunicacion Rs232 Con Proteus

   EMBED


Share

Transcript

ALGORITMO EN MATLAB DE COMUNICACIÓN RS232 CON PROTEUS 7.6 (Se utiliza Virtual Serial Ports Driver XP4 y MicroCode Studio) Ingeniero Electrónico: Monteza Zevallos Fidel Tomas Se apertura el programa VIRTUAL SERIAL PORT DRIVER XP4 y utilizamos el menú para la creación de puertos virtuales RS232 Una vez que se apertura el programa VIRTUAL SERIAL PORT DRIVER XP4 se crea los puertos virtuales RS232 (2 con 3) y (4 con 5) Una vez establecido los puertos virtuales de comunicación RS232 con el programa VIRTUAL SERIAL PORT DRIVER XP4 lo cerramos Aquí se muestra el circuito electrónico confeccionado en el programa PROTEUS 7.6, considerar el diseño en hardware t al como se encuentra el circuito mostrado. Aquí podemos visualizar la ventana con el circuito electrónico del microcontrolador PIC16F877A del programa PROTEUS. Note que el contador display 7 segmentos se encuentra en CERO y además las ventanas de ingreso (derecha) y salida salida (izquierda) de información en el protocolo RS232 se encuentran vacías. vacías. Aquí podemos visualizar igualmente la ventana de MATLAB y en ella la del Command Window con la que deberá seguir los pasos q ue se soliciten. Aquí podemos visualizar en MATLAB la ventana Editor en donde figura las líneas del algoritmo desarrollado para la comunicación RS232. Las líneas en det alle figuran líneas abajo y se encuentran comentadas Aquí podemos visualizar tanto la ventana Editor de MATLAB en el instante de iniciar la simulación, en este caso no tengo mi carpeta reconocida por MATLAB así que se inicie la comunicación RS232 se debe ejecutar Add to Path. Path. Aquí podemos visualizar la ventana del Command Window que solicita ejecutar ENTER ENTER para  para que PROTEUS reciba la información desde MATLAB. Aquí podemos visualizar solo la ventana con el circuito electrónico del microcontrolador PIC16F877A del programa PROTEUS en pleno proceso de recibir la primera información numérica de confirmación de inicio de la comunicación comunicación desde MATLAB. Note que el contador display 7 segmentos se encuentra en ONCE y además las ventanas de ingreso (derecha) se encuentra codificado con AA000011 y salida (izquierda) de información en el protocolo RS232 se encuentran codificado con $$0011. Aquí podemos ahora visualizar la ventana con el circuito electrónico del microcontrolador PIC16F877A del programa PROTEUS en pleno proceso de r ecibir la segunda información numérica desde MATLAB. Note que el contador display display 7 segmentos se encuentra en MIL DOSCIENTOS DOSCIENTOS TREINTAIOCHO y además las ventanas de ingreso (derecha) se encuentra codificado con AA001238 y salida (izquierda) de información en el protocolo RS232 se encuentran codificado con $$1238. Aquí podemos ahora visualizar la ventana con el circuito electrónico del microcontrolador PIC16F877A del programa PROTEUS en pleno proceso de recibir la tercera inform ación numérica desde MATLAB. Note que el contador display display 7 segmentos se encuentra en DOS MIL CIENTO DOCE y además las ventanas de ingreso (derecha) se encuentra codificado con AA002112 y salida (izquierda) de información en el protocolo RS232 se encuentran codificado con $$2112. Aquí podemos ahora visualizar la ventana con el circuito electrónico del microcontrolador PIC16F877A del programa PROTEUS en pleno proceso de recibir la ú ltima información numérica desde MATLAB de comprobación de término de la comunicación. Note que el contador display 7 segmentos se encuentra en TRES MIL OCHOCIENTOS TREINTAIOCHO y además las ventanas de ingreso (derecha) se encuentra codificado con AA003838 y salida (izquierda) de información en el protocolo RS232 se encuentran codificado con $$3838. Finalmente podemos visualizar la ventana del Command Window que informa Fin comunicación RS232 con RS232 con PROTEUS reciba la información desde MATLAB. Se muestra el programa MicroCode Studio que servirá para la creación del algoritmo qu e deberá ser grabado en el microcontrolador PIC16F877A que se implementó en PROTEUS. El procedimiento de grabación virtual se muestra líneas abajo, se debe considerar que si se dese a la implementación del hardware se deberá contar con una tar jeta electrónica grabadora de PIC y el programa PICKit2 se debe utilizar para realizar la grabación física en el microcontrolador. Con la apertura el programa MicroCode Studio se puede visualizar las líneas del algoritmo implementado para ser grabad o en el microcontrolador PIC16F877A. Estas líneas de programación también se encuentran publicadas en este documento. Aquí se muestra el programa MicroCode Studio realizando la selección del microcontrolador a utilizar (PIC16F877A), una vez realizada esta selección se deberá de compilar las líneas del algoritmo pues se debe recordar que el m icrocontrolador solo entiende UNOS y CEROS, no comprende las líneas escritas. En este paso se muestra la compilación de las líneas del algoritmo desarrollado, este proceso creara un archico del tipo ASM que se muestra en la siguiente figura. Aquí apreciamos que una vez que compilamos el archivo DME tipo ASM del programa MicroCode Studio se creara el archivo DME tipo HEX que es el que deberá ser grabado en el microcontrolador PIC16F877A Aquí apreciamos el primer paso de la forma virtual de grabar el archivo DME del tipo HEX dentro del microcontrolador PIC16F877A Aquí apreciamos el segundo paso de la fo rma virtual de grabar el archivo DME del tipo HEX dentro del m icrocontrolador PIC16F877A, se selecciona selecciona el archivo y se da click en Abrir A continuación se presenta las líneas de programación en MATLAB )ue deben reali!ar la comunicación RS"#" con PROTEUS5 posteriormente est*n publicadas las líneas del programa Micro+ode Studio para ser utili!ado en el microcontrolador P-+./0122A %pause(0.1) end fprintf(SerPIC,'AA003838') fprintf(SerPIC,'AA003838' ) fprintf(SerPIC,'FIN fprintf(SerPIC, 'FIN COMUNICACION RS232') RS232' ) fclose(SerPIC); delete(SerPIC) clear SerPIC clear; clc; close all all; ; fprintf('\n fprintf('\n Fin comunicacion RS232 \n') \n' ) % Pausa para que el puerto termine de llenar el buffer para la siguiente lectura % Envia la trama de cierre de puerto serie con 4 cifras (3838) % Envia ultimo mensaje de termino de comunicacion RS232 % % % % % % Cerramos el puerto RS232 Borramos el puerto RS232 abierto Se limpia el puerto para un nuevo envio Limpiamos el Workspace Limpiamos el Command Window Cerramos todo % Se envia termino de comunicacion RS232 al Command Window de MATLAB ce0 var centena.0 ce1 var centena.1 ce2 var centena.2 ce3 var centena.3 mi0 var millar.0 mi1 var millar.1 mi2 var millar.2 mi3 var millar.3 'ce0 es el bit cero de centena 'ce1 es el bit uno de centena 'ce2 es el bit dos de centena 'ce3 es el bit tres de centena 'mi0 es el bit cero de millar 'mi1 es el bit uno de millar 'mi2 es el bit dos de millar 'mi3 es el bit tres de millar INICIO: 'Recepcion serial a 9600 Baudios (84) 'Recepcion serial a 4800 Baudios (188) 'Recordar: (y1=A); (y2=A); (y3=0); (y4=0 o y4=1) Son parametros rigidos de la trama 'Mientras y5, y6, y7, y8 representan caracteres numericos de la trama SERIN2 PORTC.7,188,10,NO_DATO,[y1,y2,y3,y PORTC.7,188,10,NO_DATO,[y1,y2,y3,y4,y5,y6,y7,y8, 4,y5,y6,y7,y8,B1] B1] 'Recordar Codigo Codigo ASCII en hexadecimal: $41=A; $30=0; $31=1 IF y1=$41 AND y2=$41 AND y3=$30 AND y4=$30 THEN RESET IF y1=$41 AND y2=$41 AND y3=$30 AND y4=$31 THEN VARIABLES GOTO INICIO 'Etiqueta para resetear el sistema a CERO RESET: 'DATO4=0 'DATO3=0 'DATO2=0 'DATO1=0 'GOTO CALCULO goto VARIABLES 'Etiqueta para asignar valores de la informacion numerica VARIABLES: if y5=$30 then DATO4=0 if y5=$31 then DATO4=1 if y5=$32 then DATO4=2 if y5=$33 then DATO4=3 if y5=$34 then DATO4=4 if y5=$35 then DATO4=5 if y5=$36 then DATO4=6 if y5=$37 then DATO4=7 if y5=$38 then DATO4=8 if y5=$39 then DATO4=9 if y6=$30 then DATO3=0 if y6=$31 then DATO3=1 if y6=$32 then DATO3=2 if y6=$33 then DATO3=3 if y6=$34 then DATO3=4 if y6=$35 then DATO3=5 if y6=$36 then DATO3=6 if y6=$37 then DATO3=7 if y6=$38 then DATO3=8 if y6=$39 then DATO3=9 'Trama: AA00 'Trama: AA01 if y7=$30 then DATO2=0 if y7=$31 then DATO2=1 if y7=$32 then DATO2=2 if y7=$33 then DATO2=3 if y7=$34 then DATO2=4 if y7=$35 then DATO2=5 if y7=$36 then DATO2=6 if y7=$37 then DATO2=7 if y7=$38 then DATO2=8 if y7=$39 then DATO2=9 if y8=$30 then DATO1=0 if y8=$31 then DATO1=1 if y8=$32 then DATO1=2 if y8=$33 then DATO1=3 if y8=$34 then DATO1=4 if y8=$35 then DATO1=5 if y8=$36 then DATO1=6 if y8=$37 then DATO1=7 if y8=$38 then DATO1=8 if y8=$39 then DATO1=9 GOTO CALCULO 'Etiqueta para realizar el calculo de la informacion numerica y visualizarlo en los displays CALCULO: DATO = (DATO4*1000)+(DATO3*100)+(DATO2*10 (DATO4*1000)+(DATO3*100)+(DATO2*10)+(DATO1*1) )+(DATO1*1) 'Recomposicion polinomica de DATO millar=DATO/1000 'Resultado para el decoder de los Millares centena=(DATO-millar*1000)/100 centena=(DATO-millar*100 0)/100 'Resultado para el decoder de las Centenas decena=((DATO-millar*1000)-centena*100)/10 decena=((DATO-millar*1000) -centena*100)/10 'Resultado para el decoder de las Decenas unidad=((DATO-millar*1000)-centena*100)-decena*10 unidad=((DATO-millar*1000)-ce ntena*100)-decena*10 'Resultado para el decoder de las Unidades PORTD.4=mi0 PORTD.5=mi1 PORTD.6=mi2 PORTD.7=mi3 PORTD.0=ce0 PORTD.1=ce1 PORTD.2=ce2 PORTD.3=ce3 PORTB.4=de0 PORTB.5=de1 PORTB.6=de2 PORTB.7=de3 PORTB.0=un0 PORTB.1=un1 PORTB.2=un2 PORTB.3=un3 'Transmision serial a 9600 Baudios (84) 'Transmision serial a 4800 Baudios (188) serout2 PORTC.6,188,["$","$",dec4 PORTC.6,188,["$","$",dec4 dato,10,13] 'Transmision serial para confirmar la salida goto INICIO no_dato: goto INICIO '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' 'DISPOSICION DE LOS TERMINALES DEL DISPLAY DE ANODO COMUN DE 2 cm ' ' a g f Co a b ' --------. . . . . ' | | ' f| |b ' | g | ' --------' | | ' e| |c ' | | . . . . . ' --------- o e d Co c pto ' d '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' 'DISPOSICION DE LOS TERMINALES DEL DISPLAY DE ANODO COMUN DE 1 cm ' ' a b Co f ' -- ------. . . ' | | a g ' f| |b . . ' | g | ' --------c d ' | | . . ' e| |c ' | | . . . ' --------- o pto Co e ' d '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' Espero )ue esta aplicación sea de muc4a utilidad 3 de seguro debera tener mejoras5 las )ue posteriormente estare publicando ;racias -ngeniero Electronico Monte!a >e$allos 0idel Tomas %?M?