Download - Capítulo VI Resultados de la Investigación
Capítulo VI Resultados de la Investigación
2
FASE 1: DEFINICIÓN DE LAS ESPECIFICACIONES.
Los resultados de la investigación, están dados por la aplicación
de las nueve fases desarrolladas por Angulo (1994) para monitorear a
través de un computador los niveles de asfalto en los tanques 61/70 y
Roffer Flux, las especificaciones para el desarrollo del proyecto son las
siguientes:
1 Visualizar el nivel del asfalto.
1 Medida del tanque.
1 Temperatura del líquido.
1 Comunicación entre el tanque y el computador.
Para llevar a cabo la medición del nivel de asfalto contenido en
los tanques de almacenamiento, se desarrolló un circuito electrónico
que sea capaz de determinar el espacio vacío del tanque y de esta
manera realice la comparación entre la capacidad total del tanque y el
nivel asfalto existente. El objetivo central es que el sensor electrónico
maneje una señal eléctrica que puede ser una variación de voltaje, esto
es, cuando el tanque presente cierto nivel exista un voltaje proporcional
a dicho nivel, para que de esta manera la señal eléctrica transmita
hasta el computador y se ingrese a través del puerto serial logrando así
3
el monitoreo por medio de un programa en la computadora del nivel de
asfalto existente en el tanque.
FASE 2: ESQUEMA GENERAL DEL HARDWARE.
El esquema general del hardware esta conformado por siete
bloques funcionales, como lo son: El Oscilador, Emisor, Receptor,
Amplificador, PIC, Salida Binaria, El CPU y estos se definen a
continuación:
OSCILADOR: Este se encarga de producir una señal a 40 KHz
para suministrárselo al emisor.
EMISOR: Este emite un pulso ultrasónico a 40 KHz, el cual será
transmitido a la superficie del líquido, dicho pulso lo suministra el
oscilador.
RECEPTOR: Una vez que el pulso ultrasónico rebota en la
superficie del líquido, es captado por el receptor y este se encargará de
suministrarle esta señal al amplificador.
AMPLIFICADOR: Es el encargado de amplificar la señal que es
captada por el receptor, para que de esta manera la señal pueda ser
permisible por el microcontrolador.
4
PIC: Este se encarga de sincronizar las funciones del oscilador y
de la recepción del pulso ultrasónico. Primero el PIC le emite un pulso
al oscilador para que este transmita la señal de ultrasonido,
conjuntamente este inicia un ciclo de conteo hasta que este reciba el
pulso ultrasónico. Una vez recibido el pulso, se obtendrá un tiempo el
cual será proporcional a la distancia en que se encuentra la superficie
del líquido. Dicho tiempo será comparado por un patrón poseído por el
PIC, y el resultado de la comparación será un valor binario el cual se
transmitirá por el puerto B al computador.
SALIDA BINARIA: Esta es proporcionada por el PIC al
computador, dicho valor es proporcional a la distancia entre el sensor y
la superficie del líquido contenido en el tanque.
CPU: Este es el encargado de efectuar las operaciones
aritméticas y lógicas necesarias para la representación del nivel del
líquido contenido en el tanque. Esto lo realiza mediante la toma de los
provenientes del PIC e interconectados con el software, permitiendo un
muestreo en pantalla de los datos de entrada. Por medio del CPU se
puede monitorear el sistema, permitiendo así la visualización de los
niveles de asfalto almacenado en los tanques.
A continuación se representa en diagrama de bloques el
Esquema General del Hardware.
5
Figura 4.1. Diagrama de Bloques del Sistema
Fuente: Bohórquez Angel, Jiménez Carlos (2000)
FASE 3: ORDINOGRAMA GENERAL.
En esta fase se expresa en forma de diagrama de flujo, el
esquema general del Hardware del proyecto, el cual consta del
diagrama de flujo del PIC y el diagrama de flujo del PC, y estos
presentan los siguientes pasos:
Oscilador
Emisor
Amplificador
Receptor
PIC
Salida binariaproporcional a
la distancia
CPU
6
Figura 4.2. DIAGRAMA DE FLUJO DEL PIC
INICIO
Emitir un pulso al Osciladorpara obtener la señal
ultrasónica
Emitir el pulso ultrasónico
T = 0
Se recibióultrasonido
T = T+1 T = Tiempo
A
B
7
Fuente: Bohórquez Angel, Jiménez Carlos (2000)
A
T = Puerto B
Salida digital proporcionala la distancia del PC
Culminarcon el proceso
FIN
Convertir T en un valordigital proporcional a
distancia
BNo
Si
8
Figura 4.3. DIAGRAMA DE FLUJO DEL PC
Fuente: Bohórquez Angel, Jiménez Carlos (2000)
Comparación del valor deentrada con la medida del
tanque
Continuarel proceso
FIN
Introducirmedida del tanque
BSi
No
INICIO
Obtención del nivelexistente en el tanque
Visualización del nivela través del PC
B
9
El microcontrolador PIC, se encarga de generar un pulso de
Ultrasonido el cual será emitido por el transmisor hacia la superficie del
tanque y una vez que esta rebote, será captado por el receptor. El
tiempo que transcurre entre la emisión del pulso y la recepción del
mismo, es proporcional a la distancia que existe entre la superficie del
líquido que será medido y la altura del tanque.
El tiempo obtenido, es comparado con un tiempo patrón el cual
permite conocer la distancia existente a la que se encuentra la
superficie del líquido. Este tiempo es convertido en una señal digital, la
cual es introducida al computador. De esta manera, el computador
convierte la señal de entrada en una señal visual para el operador.
FASE 4: ADAPTACION ENTRE HARDWARE Y SOFTWARE.
Una vez conocida en la fase 2 el esquema general del Hardware,
descrito en forma de bloques funcionales y especificado el debido
funcionamiento de cada una de las etapas, se describirá a continuación
la forma en que se interrelacionan ambas partes para formar la
integración y consolidación del sistema.
El Hardware esta construido por un transductor piezoeléctrico, el
cual se encarga de emitir una onda a 40 KHz. Luego éste se encarga
10
de recibir dicha onda una vez que la misma rebote sobre una superficie
(en este caso la del líquido). Tal onda es producida por un circuito
oscilador y a su vez todo esto es controlado por un Microcontrolador, el
cual se encarga de convertir la salida analógica del sensor en niveles
lógicos digitales.
La salida del microcontrolador proveniente del pin RB6 esta
conectada al pin de entrada T2IN del MAX232, y la entrada del
microcontrolador correspondiente al pin RB7 está conectada al pin de
salida R2OUT del MAX232, dispositivo que se encarga de convertir los
niveles lógicos (TTL) tradicionales de 0V y 5V al voltaje de doble
polaridad +12V y –12V, que son los que están presente a la entrada
del puerto serial COM2 de un computador. (Ver Figura 4.4).
Figura 4.4. Diagrama de Pines para la conexión del PIC y el
MAX232
Fuente: Bohórquez Angel, Jiménez Carlos (2000)
11
Una vez obtenida esta integración se podrá transmitir de forma
digitalizada la información a través del puerto serial del computador,
correspondiente a los valores actuales del nivel existente en el tanque.
Otra adaptación corresponde a la toma de información
proveniente del puerto serial hacia el MAX232, ésta se realizó a través
de un cable con un conector DB9, logrando así la interfaz con el puerto
serial COM2 del computador obteniendo de esta manera facilidad en la
instalación del dispositivo y asegurar el funcionamiento esperado de la
información captada del exterior, para luego ser procesada mediante la
acción establecida según el software.
Figura 4.5. Configuración del Puerto Serial
Fuente: Bohórquez Angel, Jiménez Carlos (2000)
GND RX TX GND TX RX DTR CD
Conector DB-9 hembra instalado en la Tarjeta de Control
Puerto serial COM1 Conector DB-9 macho
CD: Detección de portadora RX: Recepción de datos
TX: Transmisión de datos DTR: Terminal de datos lista
GND: Nivel de tierra
RTS: Requerimiento de envío CTS: Borrar para envío
RI: Indicador de llamadas DSR: Fijación de datos de lista
RI RTS DSR CTS
12
FASE 5: ORDINOGRAMAS MODULARES Y CODIFICACIÓN
DEL PROGRAMA.
En esta fase se presenta la codificación de los programas y cada
uno de los diferentes bloques representados en los diagramas de flujo.
Para ello se desarrolló el programa que maneja el microcontrolador
PIC16C71 para la conversión analógica digital y la transmisión –
recepción entre el sensor de distancia y el computador, bajo el software
MPLAB en Lenguaje Ensamblador.
El software manejado por el computador se realizó bajo el
Lenguaje de Programación Visual Basic, lo cual permitió manejar la
programación orientada a objeto, y ofrece una visualización gráfica del
proceso de medición de nivel en los tanques de asfalto 61/70 y Roofer
Flux. Es importante resaltar que este software será operado bajo el
Sistema Operativo Windows ´98, ya que es de fácil manejo porque
posee una librería de herramientas de trabajo.
A continuación se muestran los diagramas de flujos que se
aplicaron para el desarrollo del proceso que lleva a cabo el PC y el
proceso que desenvuelve el PIC microcontrolador con su respectiva
codificación.
13
Figura 4.6. Diagrama de flujo del proceso del PC.
Fuente: Bohórquez Angel, Jiménez Carlos
FIN
Configurar Puerto Serial
Canal = 0
Transmitir Canal y Frecuencia al PIC
Recibió Respuesta ?
Mostrar dato recibido
NO
SI
Tecla Presionada
?
NO
SI
Mostrar dato recibido
Recibió Respuesta ?
NO
SI
INICIO
FIN
Configurar Puerto Serial
Canal = 0
Transmitir Canal y Frecuencia al PIC
Recibió Respuesta ?
Mostrar dato recibido
NO
SI
Tecla Presionada
?
NO
SI
Mostrar dato recibido
Recibió Respuesta ?
NO
SI
14
Figura 4.7. Diagrama de flujo del proceso en El Microcontrolador.
Fuente: Bohórquez Angel, Jiménez Carlos.
Configurar Puerto Serial
Recibir byte frecuencia - canal
Configurar convertidor (frecuencia-canal)
Finalizó la Conversión
?
Enviar resultado al PC
NO
SI
INICIO
Configurar Puerto Serial
NO
SI
Activar el Convertidor
Empezar la Conversión
15
Figura 4.8. Diagrama de flujo para la transmisión Serial de Datos.
SI
NO
Colocar línea TX en bajo
TRANSMITIR
Bit de arranque
Contador = 8
Carry = 0 ?
Rotar a la derecha registro de transmisión
Colocar línea TX en alto
Rutina de 1 bit
Decrementar contador
A
16
Fuente: Bohórquez Angel, Jiménez Carlos.
Figura 4.9. Diagrama de flujo para la Recepción Serial de Datos.
Contador = 0 ?
Bit de parada
TERMINAR
A
RECIBIR
Rutina 1.5 Bits
SI
NO Está la línea RX en bajo
?
A
17
Fuente: Bohórquez Angel, Jiménez Carlos.
Contador = 0 ?
Bit de parada
TERMINAR
SI
NOEstá la línea RX en bajo
?
Carry = 1
Rotar a la derecha registro de recepción
Rutina de 1 Bit
Limpiar Carry
A
Decrementar Contador
18
Codificación de los Programas.
;******************************************************************************** ;PROGRAMA DE CONTROL DE NIVEL DE TANQUE CON TX SERIAL ;***************************************************************
LIST P=PIC16C711, R=HEX
STATUS EQU 0X3 ;registro de estado TRISA EQU 0X85 ;triestado puerto A TRISB EQU 0X86 ;triestado puerto B PORTA EQU 0X5 ;puerto A PORTB EQU 0X6 ;puerto B W EQU 0X0 ;registro de trabajo (word) F EQU 0X1 ;registro de archivo (file) Z0 EQU 0X2 ;bandera zeta (zero) CY EQU 0X0 ;bandera de acarreo (carry) RP0 EQU 0X5 ;selección de pagina ;************************************************* RS232 EQU 0X6 ;puerto de transmisión TX EQU 0X6 ;línea de transmisión RD EQU 0X7 ;línea de recepción GO EQU 0X2 ;inicio de conversión ADIF ;********************************************************* ;PROGRAMA DE CONTROL DE LLENADO DE TANQUES CON TX SERIAL ;********************************************************* LIST P=PIC16C71, R=HEX STATUS EQU 0X3 ;registro de estado TRISA EQU 0X85 ;triestado puerto A TRISB EQU 0X86 ;triestado puerto B PORTA EQU 0X5 ;puerto A PORTB EQU 0X6 ;puerto B W EQU 0X0 ;registro de trabajo (word) F EQU 0X1 ;registro de archivo (file) Z0 EQU 0X2 ;bandera zeta (zero) CY EQU 0X0 ;bandera de acarreo (carry)
19
RP0 EQU 0X5 ;selección de página ;************************************************* RS232 EQU 0X6 ;puerto de transmisión TX EQU 0X6 ;línea de transmisión RX EQU 0X7 ;línea de recepción GO EQU 0X2 ;inicio de conversión ADIF EQU 0X1 ;fin de conversión ADON EQU 0X0 ;activación del convertidor PCFG1 EQU 0X1 ;selección 1 de la frec. del convertidor PCFG0 EQU 0X0 ;selección 0 de la frec. del convertidor ADCON0 EQU 0X8 ;control del convertidor ADCON1 EQU 0X88 ;configuración del convertidor ADRES EQU 0X9 ;resultado de la conversión NA1 EQU 0X0 ;NIVEL ALTO 1 NB1 EQU 0X1 ;NIVEL BAJO 1 NA2 EQU 0X2 ;NIVEL ALTO 2 NB2 EQU 0X3 ;NIVEL BAJO 2 ;************************************************* ORG 0XC BUFTX RES 1 ; BUFRX RES 1 ; RETARD RES 1 ; CONTA RES 1 ; CONTA1 RES 1 ; CONTA2 RES 1 ; DIST RES 1 ; PROBAR RES 1 ; ;************************************************* ORG 0X0 BSF STATUS,RP0 ;pasar a página 1 MOVLW 0X3 ;RA4,RA3,RA2 = SALIDAS MOVWF TRISA ;RA1,RA0 = ENTRADAS BSF ADCON1,PCFG1 ;RA4, RA3, RA2 = DIGITALES BCF ADCON1,PCFG0 ;RA1, RA0 = ANALOGAS MOVLW 0XB0 ;RB7,RB5,RB4 = ENTRADAS MOVWF TRISB ;RB6,RB3,RB2,RB1,RB0 = salidas BCF STATUS,RP0 ;pasar a página 0 CLRF PORTB
20
;************************************************* INICIO BSF RS232,TX ;coloca en alto tx MOVLW 0X0F IORWF PORTB,F ;enciende led indicadores CALL UNSEG ;espera 1 seg MOVLW 0XF0 ANDWF PORTB,F ;apaga led indicadores ;************************************************* VUELVE CALL RECIBIR ;recibir dato serial MOVF BUFRX,W MOVWF PROBAR ;+++++++++++++++++++++++++++++++ MOVLW 0XAA SUBWF PROBAR,W ;prueba si dato recibido=0AAH BTFSS STATUS,Z0 ;si es diferente, va a inicio GOTO INICIO ;+++++++++++++++++++++++++++++++ CALL RECIBIR ;recibir dato serial MOVF BUFRX,W MOVWF PROBAR ;+++++++++++++++++++++++++++++++ MOVLW 0X1 SUBWF PROBAR,W ;prueba si dato recibido=01H BTFSC STATUS,Z0 ;si es igual a 01H, va a senyen GOTO TQ1 GOTO TQ11 TQ1 CALL SENYEN1 ;rutina sensa y envia A/D-0 GOTO VUELVE ;+++++++++++++++++++++++++++++++ TQ11 MOVLW 0X2 SUBWF PROBAR,W ;prueba si dato recibido=02H
21
BTFSC STATUS,Z0 ;si es igual a 02H, va a NA1 ON GOTO TQ2 GOTO TQ22 TQ2 BSF PORTB,NA1 GOTO VUELVE ;+++++++++++++++++++++++++++++++ TQ22 MOVLW 0X3 SUBWF PROBAR,W ;prueba si dato recibido=03H BTFSC STATUS,Z0 ;si es igual a 03H, va a NA1 OFF GOTO TQ3 GOTO TQ33 TQ3 BCF PORTB,NA1 GOTO VUELVE ;+++++++++++++++++++++++++++++++ TQ33
MOVLW 0X4 SUBWF PROBAR,W ;prueba si dato recibido=04H BTFSC STATUS,Z0 ;si es igual a 04H, va a NB1 ON GOTO TQ4 GOTO TQ44 TQ4 BSF PORTB,NB1 GOTO VUELVE ;+++++++++++++++++++++++++++++++ TQ44 MOVLW 0X5 SUBWF PROBAR,W ;prueba si dato recibido=05H BTFSC STATUS,Z0 ;si es igual a 05H, va a NB1 OFF GOTO TQ5 GOTO TQ55
22
TQ5 BCF PORTB,NB1 GOTO VUELVE ;+++++++++++++++++++++++++++++++ TQ55 MOVLW 0X6 SUBWF PROBAR,W ;prueba si dato recibido=06H BTFSC STATUS,Z0 ;si es igual a 06H, va a NA2 ON GOTO TQ6 GOTO TQ66 TQ6 BSF PORTB,NA2 GOTO VUELVE ;+++++++++++++++++++++++++++++++ TQ66 MOVLW 0X7 SUBWF PROBAR,W ;prueba si dato recibido=07H BTFSC STATUS,Z0 ;si es igual a 07H, va a NA2 OFF GOTO TQ7 GOTO TQ77 TQ7 BCF PORTB,NA2 GOTO VUELVE ;+++++++++++++++++++++++++++++++ TQ77 MOVLW 0X8 SUBWF PROBAR,W ;prueba si dato recibido=08H BTFSC STATUS,Z0 ;si es igual a 08H, va a NA2 ON GOTO TQ8 GOTO TQ88 TQ8 BSF PORTB,NB2 GOTO VUELVE ;+++++++++++++++++++++++++++++++
23
TQ88 MOVLW 0X9 SUBWF PROBAR,W ;prueba si dato recibido=09H BTFSC STATUS,Z0 ;si es igual a 09H, va a NB2 OFF GOTO TQ9 GOTO TQ99 TQ9 BCF PORTB,NB2 GOTO VUELVE ;+++++++++++++++++++++++++++++++ TQ99 MOVLW 0XA SUBWF PROBAR,W ;prueba si dato recibido=09H BTFSC STATUS,Z0 ;si es igual a 09H, va a NB2 OFF GOTO TQA GOTO TQAA TQA CALL SENYEN2 ;rutina sensa y envia A/D-1 GOTO VUELVE ;+++++++++++++++++++++++++++++++ TQAA GOTO VUELVE ;+++++++++++++++++++++++++++++++ ;************************************************* UNBIT MOVLW .165 ;para un bit de retardo MOVWF RETARD ;rutina de retardo para 1200 baudios REDO NOP NOP DECFSZ RETARD,F GOTO REDO NOP RETLW 0X0 ;retornar ;*************************************************
24
UNMED MOVLW .248 ;para uno y medio bit de retardo MOVWF RETARD ;rutina de retardo para 1200 baudios REDO1
NOP NOP DECFSZ RETARD,F GOTO REDO1 NOP NOP NOP RETLW 0X0 ;retornar ;************************************************* ENVIAR MOVWF BUFTX ;carga dato en registro de transmisión XMRT MOVLW 0X8 ;cargar el numero de bits MOVWF CONTA ;cargar el contador BCF RS232,TX ;colocar línea de TX en bajo CALL UNBIT ;generar bit de arranque XNEXT BCF RS232,TX ;colocar línea de TX en bajo BCF STATUS,CY ;limpiar carry RRF BUFTX,F ;rotar registro de transmisión BTFSC STATUS,CY ;preguntar por el carry BSF RS232,TX ;si es uno, colocar línea en alto CALL UNBIT ;llamar retardo de 1 bit DECFSZ CONTA,F ;decrementar contador, saltar si es cero GOTO XNEXT ;repetir hasta transmitir todo el dato BSF RS232,TX ;colocar línea en alto CALL UNBIT ;retardo de 1 bit, bit de stop RETLW 0X0 ;retornar ;************************************************* RECIBIR CLRF BUFRX ;limpia registro de recepción BTFSC RS232,RX ;línea de recepción está en bajo "0"?
25
GOTO RECIBIR ;si no está, volver a leer CALL UNMED ;llamar rutina uno y medio bits RCVR MOVLW 0X8 ;cargar contador con el número MOVWF CONTA ;de bits RNEXT BCF STATUS,CY ;limpiar carry BTFSC RS232,RX ;preguntar por el estado de la línea BSF STATUS,CY ;activar carry si está en alto "1" RRF BUFRX,F ;rotar registro de recepción CALL UNBIT ;llamar rutina de un bit DECFSZ CONTA,F ;decrementar conta, saltar si es cero GOTO RNEXT ;repetir hasta completar dato RETLW 0X0 ;retornar ;************************************************* TEMPO1 MOVLW .35 ;retardo 25.03 mseg MOVWF CONTA1 LP1 MOVLW .237 MOVWF CONTA LP2 DECFSZ CONTA,F GOTO LP2 DECFSZ CONTA1,F GOTO LP1 RETURN ;************************************************* SENYEN1 CALL LEEAD0 ;rutina de lectura del canal A/D-0 MOVF DIST,W CALL ENVIAR ;rutina de envio de dato CALL MILI1 ;espera un tiempo 1 ms CALL MILI9 ;espera un tiempo 9 ms RETURN
26
;************************************************* LEEAD0 MOVLW B'10000000' ;(FOSC/32) reloj del convertidor MOVWF ADCON0 ;selecciona canal AN0 BSF ADCON0,ADON ;activar convertidor NOP BSF ADCON0,GO ;empezar conversión CONSULT BTFSS ADCON0,ADIF ;pregunta por fin de conversión GOTO CONSULT ;si es cero, vuelve a consultar MOVF ADRES,W ;lee el resultado de la conversión MOVWF DIST ;guarda resultado en buffer dist RETURN ;************************************************* SENYEN2 CALL LEEAD1 ;rutina de lectura del canal A/D-1 MOVF DIST,W CALL ENVIAR ;rutina de envio de dato CALL MILI1 ;espera un tiempo 1 ms CALL MILI9 ;espera un tiempo 9 ms RETURN ;************************************************* LEEAD1 MOVLW B'10001000' ;(FOSC/32) reloj del convertidor MOVWF ADCON0 ;selecciona canal AN1 BSF ADCON0,ADON ;activar convertidor NOP BSF ADCON0,GO ;empiezar conversión CONSU2 BTFSS ADCON0,ADIF ;pregunta por fin de conversión GOTO CONSU2 ;si es cero, vuelve a consultar MOVF ADRES,W ;lee el resultado de la conversión MOVWF DIST ;guarda resultado en buffer dist RETURN ;*************************************************
27
UNSEG MOVLW .40 MOVWF CONTA2 SEG1 CALL TEMPO1 ;espera (25ms * 40)= 1seg DECFSZ CONTA2,F GOTO SEG1 RETURN ;************************************************* MILI1 MOVLW .198 MOVWF RETARD ;rutina de retardo REDO2 NOP NOP DECFSZ RETARD,F GOTO REDO2 NOP NOP NOP RETLW 0X0 ;retornar ;************************************************* MILI9 MOVLW 0X9 MOVWF CONTA V2 MOVLW .199 MOVWF RETARD ;rutina de retardo REDO4
NOP NOP DECFSZ RETARD,F GOTO REDO4 DECFSZ CONTA,F GOTO V2
28
NOP NOP RETLW 0X0 ;retornar ;************************************************* END EQU 0X1 ;fin de conversión ADON EQU 0X0 ;activación del convertidor PCFG1 EQU 0X1 ;selección 1 de la frec. del convertidor PCFG0 EQU 0X0 ;selección 0 de la frec. del convertidor ADCON0 EQU 0X8 ;control del convertidor ADRES EQU 0X9 ;resultado de la conversión ADCON1 EQU 0X88 ;configuración del convertidor ;************************************************* ORG 0XC TRANSM RES 1 ; RECEPC RES 1 ; RETARD RES 1 ; PB RES 1 ; CONTA RES 1 ; CONTA1 RES 1 ; DIST RES 1 ; PROBAR RES 1 ; TM1 RES 1 ;************************************************* ORG 0X0 BSF STATUS,RP0 ;pasar a página 1 MOVLW 0X17 ;RA4,RB2 =entradas RA3=salida MOVWF TRISA ;configura puerto A BSF ADCON1,PCFG1 ;RA4, RA3, RA2 = digitales BCF ADCON1,PCFG0 ;RA1, RA0 = análogas MOVLW B'10000000' ;RB7 = ENTRADA MOVWF TRISB ;RB6 --> RB0 = salidas BCF STATUS,RP0 ;pasar a página 0 ;************************************************* INICIO BSF RS232,TX ;coloca en alto TX
29
MOVF PORTB,W ANDLW 0XF0 MOVWF PB ;************************************************* VUELVE
CALL RECIBIR ;recibir dato serial MOVF RECEPC,W MOVWF PROBAR ;+++++++++++++++++++++++++++++++ MOVLW 0XAA SUBWF PROBAR,W ;prueba si dato recibido=0AAH BTFSC STATUS,Z0 ;si es diferente, va a inicio GOTO INICIO ; ;+++++++++++++++++++++++++++++++ MOVLW 0X1 SUBWF PROBAR,W ;prueba si dato recibidO=01H BTFSC STATUS,Z0 ;si es igual a 01h, va a senyen GOTO IR1 GOTO IR11 IR1
CALL SENYEN ;rutina senyen GOTO VUELVE ;+++++++++++++++++++++++++++++++ IR11
MOVLW 0X2 SUBWF PROBAR,W ;prueba si dato recibido=02h BTFSC STATUS,Z0 ;si es igual a 02h, va a func1 GOTO IR2 GOTO VUELVE IR2
CALL FUNC1 GOTO VUELVE ;*************************************************
30
UNBIT MOVLW 0X2
MOVWF TM1 BIT
MOVLW .165 ;para un bit de retardo MOVWF RETARD ;rutina de retardo para 1200b REDO NOP NOP DECFSZ RETARD GOTO REDO DECFSZ TM1 GOTO BIT NOP NOP RETLW 0X0 ;retornar ;************************************************* UNMED MOVLW 0X2 MOVWF TM1 MED
MOVLW .248 ;para uno y medio bit de retardo MOVWF RETARD ;rutina de retardo REDO1 NOP NOP DECFSZ RETARD GOTO REDO1 DECFSZ TM1 GOTO MED NOP NOP NOP NOP NOP RETLW 0X0 ;retornar
31
;************************************************* ENVIAR MOVWF TRANSM ;carga dato en registro de Tx XMRT MOVLW 0X8 ;cargar el numero de bits
MOVWF CONTA ;cargar el contador BCF RS232,TX ;colocar línea de Tx en bajo CALL UNBIT ;generar bit de arranque
XNEXT
BCF RS232,TX ;colocar línea de Tx en bajo BCF STATUS,CY ;limpiar carry RRF TRANSM ;rotar registro de transmisión BTFSC STATUS,CY ;preguntar por el carry BSF RS232,TX ;si es uno, colocar línea en alto CALL UNBIT ;llamar retardo de 1 bit DECFSZ CONTA ;decrementar y saltar si es cero GOTO XNEXT ;ir a XNEXT BSF RS232,TX ;colocar línea en alto CALL UNBIT ;retardo de 1 bit, bit de stop RETLW 0X0 ;retornar ;************************************************* RECIBIR CLRF RECEPC ;limpia registro de recepción BTFSC RS232,RD ;la línea de recepción está en "0"? GOTO RECIBIR ;si no está, volver a leer CALL UNMED ;llamar rutina uno y medio bits RCVR MOVLW 0X8 ;cargar contador con el numero MOVWF CONTA ;de bits RNEXT BCF STATUS,CY ;limpiar carry BTFSC RS232,RD ;el bit de línea está en 0 BSF STATUS,CY ;activar carry si está en alto "1" RRF RECEPC ;rotar registro de recepción CALL UNBIT ;llamar rutina de un bit DECFSZ CONTA ;decrementar y saltar si es cero
32
GOTO RNEXT ;repetir hasta completar dato RETLW 0X0 ;retornar ;************************************************* TEMPO1 MOVLW .35 MOVWF CONTA1 LP1 MOVLW .237 MOVWF CONTA LP2 DECFSZ CONTA,F GOTO LP2 DECFSZ CONTA1,F GOTO LP1 RETURN ;************************************************* LEEAD BSF PORTA,3 ;control de encendido sensor MOVLW B'10000000' ;(fosc/32) reloj del convertidor MOVWF ADCON0 ;selecciona canal AN0 BCF ADCON0,ADON ;activar convertidor' NOP NOP BCF ADCON0,GO ;empezar conversión' CONSULT BTFSS ADCON0,ADIF ;pregunta por fin de conversión GOTO CONSULT ;si es cero, vuelve a consultar MOVF ADRES,W ;lee el resultado de la conversión MOVWF DIST ;guarda resultado en buffer dist BCF PORTA,3 ;control de encendido sensor RETURN ;************************************************** SENYEN
CALL LEEAD CALL TEMPO1 ;espera un tiempo1
33
MOVF DIST,W ;envía distancia CALL ENVIAR ;rutina de envío de dato CALL TEMPO1 ;espera un tiempo1 RETURN ;************************************************* FUNC1 RETURN ;************************************************* END
Codificación del Programa en Visual Basic.
Los programas que contienen los códigos establecidos para la
comunicación y ejecución de los procesos de visualización de nivel se
encuentran a continuación:
VERSION 5.00
Object= "{7A080CC8-26E2-101B-AEBD-04021C009402}#1.0#0";
"GAUGE32.OCX"
Object="{BDC217C8-ED16-11CD-956C-000C04E4C0A}#1.1#0";
"TABCTL32.OCX"
Object = "{648A5603-2C6E-101B-82B6-000000000014}#1.1#0";
"MSCOMM32.OCX"
Private Sub Command2_Click()
Timer1.Interval = 100
34
Timer1.Enabled = True
End Sub
Private Sub Form_Load()
MSComm1.PortOpen = True
End Sub
Private Sub Form_Unload(Cancel As Integer)
MSComm1.PortOpen = False
End Sub
Sub Timer1_Timer()
MSComm1.Output = Chr(170)
MSComm1.Output = Chr(1)
10:
If MSComm1.InBufferCount = 1 Then Else GoTo 10
dato = MSComm1.Input
Label27 = (Asc(dato))
dato = Abs(Asc(dato) - 105)
Label23 = dato
'tanque Roofer Flux
Randomize
temperatura_roofer = Int((3 * Rnd) + 210)
Gauge1.Value = temperatura_roofer
Label1 = temperatura_roofer
35
simulado = dato
If simulado > 105 Then
simulado = 105
End If
conver = Int((simulado * 80) / 105)
Gauge2 = conver
Label3 = (simulado * 80) / 105
en_porcentaje = Int(simulado * 100) / 105
Gauge4 = en_porcentaje
If en_porcentaje <= 10 Then
Image3.Picture = LoadPicture("c:\exposicion\quemari.bmp")
Text1.Text = "Quemador Apagado, Bajo nivel de Asfalto Ingresar
Cisterna de Roofer Flux "
MSComm1.Output = Chr(170)
MSComm1.Output = Chr(4) 'luz verde on para descargar cisterna
Else
Image3.Picture = LoadPicture("c:\exposicion\quemavi.bmp")
Text1.Text = ""
MSComm1.Output = Chr(170)
MSComm1.Output = Chr(5) ' luz verde apagada el tanque tiene
asfalto
End If
If en_porcentaje >= 90 Then
Text1.Text = "Nivel de Asfalto Alto no Descargar más Cisternas"
36
MSComm1.Output = Chr(170)
MSComm1.Output = Chr(2) 'luz roja on para evitar descargar
cisterna
Else
MSComm1.Output = Chr(170)
MSComm1.Output = Chr(3) ' luz roja apagada el tanque tiene
asfalto
End If
'tanque 61/70
temperatura_6170 = 150
temperatura_6170 = Int((3 * Rnd) + 115)
Gauge6.Value = temperatura_6170
Label10 = temperatura_6170
simulado = 1
conver = Int(simulado * 7)
Gauge3 = conver
Label8 = simulado * 7
en_porcentaje = Int(simulado * 100)
Gauge5 = en_porcentaje
End Sub
A continuación se muestran las Pantallas del Sistema:
37
Figura 4.11: Despliegue del Área de Tanques
Fuente: Bohórquez Angel, Jiménez Carlos (2000)
38
Figura 4.12: Presentación del Sistema
Fuente: Bohórquez Angel, Jiménez Carlos (2000)
39
Figura 4.13: Configuración del Sistema
Fuente: Bohórquez Angel, Jiménez Carlos (2000)
40
FASE 6: IMPLEMENTACIÓN DEL HARDWARE.
Interfaz de Intercambio de Comunicación Serial para la
Comunicación entre el PC y el Sensor de Medición de Nivel.
Para la realización del módulo de comunicación entre el PC y el
módulo de sensor de medición de nivel fue necesario la construcción
de una tarjeta de interfaz de intercambio de información serial la cual
se explica a continuación:
La información obtenida por el sensor, requiere de una interfaz
que la integre al PC para poder completar información, ésta posee un
dispositivo de transmisión serial que transforma los niveles TTL usados
en los circuitos en niveles RS232 y se encuentran correctamente
implementados en el PC. En la comunicación serial se transmite un bit
a la vez, por lo cual es mucho más lento que la paralelo, pero posee la
ventaja de que necesita de un menor número de líneas para la
transferencia de información y la distancia a la cual se puede realizar el
intercambio de información es mayor.
Existen dos formas de comunicación serial: la sincrónica y la
asincrónica. La comunicación sincrónica además de una línea sobre la
41
que se transfiere los datos se necesita otra que contenga los pulsos del
reloj que indique cuando un dato es válido, la duración de un bit está
determinado por la duración del pulso de sincronismo.
En la comunicación asincrónica, los pulsos de reloj no son
necesarios y se acuden a otros mecanismos para realizar la
lectura/escritura de los datos; la duración de cada bit está determinada
por la frecuencia de referencia con la que se realiza la transferencia de
datos.
En el caso de esta investigación se realizó el tipo de
comunicación asincrónica donde ésta determina la duración fija de los
pulsos, dado que el PC trabaja a una velocidad máxima de 15200
Baudios (15200 bits/seg), se realizaron rutinas compatibles con esa
velocidad, además se hizo necesario mantener en rigor un simple
protocolo de transmisión serial, donde debe existir un uno lógico para
el estado inactivo, cero lógico con bit de start, ocho bits de datos y cero
lógico de bit de parada.
42
Fuente: Bohórquez Angel, Jiménez Carlos (2000)
Figura 4.10. Diagrama Electrónico del Sistema
43
MAX232 CPE
Dado que una de las características de la comunicación RS232
donde los rangos de tensión que utilizan para niveles lógicos, el nivel
alto se representa con una tensión o voltaje comprendido entre –3V y –
15V, mientras en nivel bajo utiliza el rango de +3V y +15V, para estos
efectos el dispositivo MAX232 CPE es la parte principal de la interfaz
con el computador logran éste traducir estos valores a niveles TTL y
los niveles TTL a niveles RS232.
El MAX232 CPE dispone de dos canales de entrada para niveles
TTL que son los pines T1IN y T2IN, con sus correspondientes salidas
R1OUT y R2OUT. Igualmente posee dos canales de entrada para
niveles RS232, R1IN y R2IN y sus correspondientes salidas T1OUT y
T2OUT.
En el esquema de la figura se observa tanto el circuito interfaz
con el puerto correspondiente (COM2) de conector DB-9 con la
distribución de los pines del dispositivo:
Microcontrolador PIC16C71.
Para poder leer la información suministrada por el computador es
44
necesario que el microcontrolador posea un programa que contenga
una rutina que permita captar todos los datos a la velocidad que se
está transmitiendo, para tal fin es necesario calcular los tiempos de
transmisión a la cual esta configurado el programa de control del PC,
como ya se explicó anteriormente la computadora es capaz de
transmitir datos a una velocidad de 9600 Budios (9600 bits/segundos),
lo que significa que el tiempo para transmitir un solo bit es dado por el
inverso de la cantidad de bit por segundos, lo que resulta en 104.17
µseg que funcionalmente es 104 µseg. Una vez obtenido el tiempo
requerido para recibir un bit, se procedió a calibrar la rutina del
programa del microcontrolador para que pueda recibir información a
esa velocidad. Por lo tanto, el computador y el microcontrolador deben
configurarse con los mismos parámetros, para que no se presenten
conflictos.
Sensor de Distancia.
Este sensor es de tipo ultrasónico, de la compañía SENIX CORP
y está diseñado para medir la distancia entre el transductor y el punto
de interrupción del cono ultrasónico que emite. La distancia es medida
45
con cualquier objeto, este se logra enviando una función ultrasónica y
midiendo el tiempo que tarda el pulso eco en ser recibido.
Como se mencionó anteriormente, el tiempo que tarda en recibir
la señal es relacionado con la velocidad del sonido en el aire, luego
que la distancia (tiempo) es medida. El circuito electrónico del sensor
provee una salida analógica del voltaje que es proporcional a la
distancia. El dispositivo esta calibrado de fábrica para trabajar con unos
niveles de voltajes comprendidos entre 0 Voltios para distancias
menores de 15 cm o 6 pulgadas y 10 Voltios para distancias a 154 cm
o 60 Pulgadas y por supuesto cambio proporcional entre esos dos
valores.
Las distancias medidas por el sensor es representada por el
Voltaje colocado ente los terminales Vo- y Vo+ del circuito impreso. El
manual de uso del sensor provee una tabla de relación aproximada
entre el voltaje y la distancia expresada en pulgadas, a continuación se
encuentran los valores ajustados al sistema internacional de medidas
donde la distancia esta expresada en centímetros:
Distancia (cm) Voltaje Distancia (cm) Voltaje 15.24 0.0 86.36 5.2
17.74 0.2 88.90 5.3
20.52 0.4 91.44 5.6
46
22.86 0.6 93.98 5.7
25.40 0.7 96.52 5.9
27.94 0.9 99.06 6.1
30.48 1.1 101.60 6.3
33.02 1.3 104.14 6.5
35.56 1.5 106.68 6.7
38.10 1.7 109.22 6.9
40.64 1.9 111.76 7.0
43.18 2.0 114.30 7.2
45.72 2.2 116.84 7.4
50.80 2.6 121.92 7.8
53.32 2.8 124.46 8.0
55.88 3.0 127.00 8.1
58.42 3.1 129.54 8.3
60.98 3.3 132.08 8.5
63.50 3.5 134.62 8.7
66.04 3.7 137.16 8.9
68.58 3.9 139.70 9.1
71.12 4.1 142.24 9.3
73.66 4.3 144.78 9.4
47
76.20 4.4 147.32 9.6
78.78 4.6 149.86 9.8
81.28 4.8 152.40 10.0
83.82 5.0
En cuanto a las características del sensor, mencionando las mas
resaltantes se puede citar:
1 Su resolución es de aproximadamente 0.1524 centímetros.
1 Cono de ultrasonido de 15 grados de amplitud.
1 El tiempo de actualización del voltaje de salida es de 50
milisegundos.
1 No es sensible a los niveles de luz del ambiente.
1 No es sensible a los niveles de colores del objeto.
1 No es sensible a la reflectividad o transparencia del objeto.
Sin embargo, se deben tomar algunas consideraciones en
cuanto al momento de su uso, debido a que la orientación del
transductor debe ser perpendicular a la superficie a sensar para
mejorar resultados, este dispositivo no estará en la capacidad de
sensar el objeto si la energía ultrasónica es reflejada lejos del
transductor, en lugar de volver a él se pierde en el ambiente, no
obstante los objetos curvos o esféricos son buenos blancos. Por otro
48
lado, el factor afecta más la exactitud de las mediciones es la
temperatura, a temperaturas ambientes un cambio de 10 grados
resultará en aproximadamente un cambio de 1% de la velocidad del
sonido y por consiguiente el mismo cambio será afectado el voltaje de
salida proporcional a la distancia. El sensor se muestra en la figura a
continuación:
Figura 4.14. Sensor de Ultrasonido
Fuente: Bohórquez, Jiménez (2000)
FASE 7: DEPURACIÓN DEL SOFTWARE.
La depuración del software del microcontrolador se llevó a cabo
mediante la compilación del programa, utilizando para esto el MPLAB
49
de MICROCHIP, el cual traduce el código ensamblador o código de
máquina en instrucciones hexadecimales que luego por medio de un
programador son introducidos a los microcontroladores. El MPLAB
presenta unas opciones que permiten simular los programas antes de
implementarlos físicamente en el chip, las opciones como Stopwatch,
Step, Step Over, Change the Program Counter, entre otras, permiten
verificar muy acertadamente la fiabilidad del programa para las
funciones que serán ejecutadas. Asimismo permite ver los registros de
funciones especiales (SFR) y una ventana de registros específicos
donde se puede observar el estado de las variables que están siendo
implementadas en el programa.
En cuanto a la depuración del programa desarrollado en el
computador fue necesario contar con los resultados obtenidos, en el
cual se verificaron las rutinas de transmisión y recepción de datos
proveniente del sensor de distancia mediante el puerto serial.
FASE 8: INTEGRACIÓN DEL HARDWARE CON EL
SOFTWARE.
Luego de verificar el óptimo funcionamiento de los programas
mediante la compilación de los mismos, y verificar el funcionamiento
50
adecuado de cada uno de los bloques funcionales referentes al diseño
del circuito, se llevó a cabo la integración entre el hardware y el
software.
Para esto se verificó la interfaz entre el computador y el MAX232,
tomando en cuenta las salidas y entradas de datos proveniente del
microcontrolador y del mismo computador, observando el
funcionamiento del circuito de medición de nivel en conjunto con el
software establecido en el PC, comprobando así la funcionabilidad de
los requerimientos en el diseño.
FASE 9: CONSTRUCCIÓN DEL PROTOTIPO DEFINITIVO Y
PRUEBAS FINALES.
En la construcción del prototipo se instalaron los componentes
de la circuitería de interfaz entre el sensor de nivel y el computador, la
cual está compuesta por el MAX232, el PIC16C71 y los componentes
externos que intervienen en el proceso de medición, en una baquelita
previamente diseñada a una cara para la incorporación de dicho
circuito. (Fig 4.15)
51
Figura 4.15. Circuito del Sistema en Baquelita
Fuente: Bohórquez, Jiménez (2000)
Seguidamente se le incorporó un conector DB-9 para la interfaz
hacia el puerto serial del computador, esto se realizó para lograr la
práctica conexión entre la circuitería y el PC.
52
Una vez obtenido el circuito en su respectiva baquelita, se probó
nuevamente el sistema, para verificar el funcionamiento correcto que
se había logrado en el montaje de la Fase 8 el cual se realizó en Proto
Board. La figura a continuación muestra la adaptación completa entre
el harware y software:
Figura 4.16. Adaptación del Sistema
Fuente: Bohórquez, Jiménez (2000)
53
ANÁLISIS DE LOS RESULTADOS
Una vez obtenida la integración entre el hardware y el software
se procedió a realizar un análisis exhaustivo donde se pudo determinar
cuál había sido el comportamiento del sistema en sí confrontando los
resultados obtenidos en el desarrollo de la investigación.
Se pudo observar que el circuito de medición de distancia
funcionó correctamente, cumpliéndose los valores de voltaje puntuales
de acuerdo a los establecidos, también se logró mantener una
comunicación entre el PC y el circuito de medición de nivel a una
velocidad aceptable de 1200 baudios, la cual permitió una visualización
en tiempo real del nivel existente en el tanque.
Una vez obtenido el perfecto funcionamiento de sensor, se logró
una adaptación correcta junto con el software, y fue éste capaz de dar
una representación visual a los parámetros requeridos por el hardware.
Durante el desarrollo de la implementación del hardware se tomó
en cuenta lo mencionado por Suárez (1996), quien explica que las
condiciones ambientales pueden afectar de manera directa las
mediciones obtenidas por el sensor de ultrasonido, debido a que altas
temperaturas no adecuadas para el funcionamiento del sensor, afectan
54
los parámetros de tiempo en cuanto a la recepción del eco de la onda,
la cual viaja a la velocidad del sonido y se ve degradada por las
variaciones de la temperatura distinta a la del ambiente.
De igual manera se retomó lo expuesto por Velázquez en (1999),
quien menciona que la utilización del computador personal, como
herramienta principal de supervisión y control permitió desarrollar el
sistema en un ambiente de programación amigable y sencillo para el
manejo por parte del operador.