Capítulo VI Resultados de la Investigación

54
Capítulo VI Resultados de la Investigación

Transcript of Capítulo VI Resultados de la Investigación

Page 1: Capítulo VI Resultados de la Investigación

Capítulo VI Resultados de la Investigación

Page 2: 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í

Page 3: Capítulo VI Resultados de la Investigación

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.

Page 4: Capítulo VI Resultados de la Investigación

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.

Page 5: Capítulo VI Resultados de la Investigación

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

Page 6: Capítulo VI Resultados de la Investigación

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

Page 7: Capítulo VI Resultados de la Investigación

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

Page 8: Capítulo VI Resultados de la Investigación

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

Page 9: Capítulo VI Resultados de la Investigación

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

Page 10: Capítulo VI Resultados de la Investigación

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)

Page 11: Capítulo VI Resultados de la Investigación

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

Page 12: Capítulo VI Resultados de la Investigación

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.

Page 13: Capítulo VI Resultados de la Investigació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

Page 14: Capítulo VI Resultados de la Investigación

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

Page 15: Capítulo VI Resultados de la Investigació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

Page 16: Capítulo VI Resultados de la Investigación

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

Page 17: Capítulo VI Resultados de la Investigación

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

Page 18: Capítulo VI Resultados de la Investigación

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)

Page 19: Capítulo VI Resultados de la Investigación

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

Page 20: Capítulo VI Resultados de la Investigación

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

Page 21: Capítulo VI Resultados de la Investigación

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

Page 22: Capítulo VI Resultados de la Investigación

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 ;+++++++++++++++++++++++++++++++

Page 23: Capítulo VI Resultados de la Investigación

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 ;*************************************************

Page 24: Capítulo VI Resultados de la Investigación

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"?

Page 25: Capítulo VI Resultados de la Investigación

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

Page 26: Capítulo VI Resultados de la Investigación

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 ;*************************************************

Page 27: Capítulo VI Resultados de la Investigación

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

Page 28: Capítulo VI Resultados de la Investigación

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

Page 29: Capítulo VI Resultados de la Investigación

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 ;*************************************************

Page 30: Capítulo VI Resultados de la Investigación

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

Page 31: Capítulo VI Resultados de la Investigación

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

Page 32: Capítulo VI Resultados de la Investigación

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

Page 33: Capítulo VI Resultados de la Investigación

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

Page 34: Capítulo VI Resultados de la Investigación

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

Page 35: Capítulo VI Resultados de la Investigación

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"

Page 36: Capítulo VI Resultados de la Investigación

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:

Page 37: Capítulo VI Resultados de la Investigación

37

Figura 4.11: Despliegue del Área de Tanques

Fuente: Bohórquez Angel, Jiménez Carlos (2000)

Page 38: Capítulo VI Resultados de la Investigación

38

Figura 4.12: Presentación del Sistema

Fuente: Bohórquez Angel, Jiménez Carlos (2000)

Page 39: Capítulo VI Resultados de la Investigación

39

Figura 4.13: Configuración del Sistema

Fuente: Bohórquez Angel, Jiménez Carlos (2000)

Page 40: Capítulo VI Resultados de la Investigación

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

Page 41: Capítulo VI Resultados de la Investigación

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.

Page 42: Capítulo VI Resultados de la Investigación

42

Fuente: Bohórquez Angel, Jiménez Carlos (2000)

Figura 4.10. Diagrama Electrónico del Sistema

Page 43: Capítulo VI Resultados de la Investigación

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

Page 44: Capítulo VI Resultados de la Investigación

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

Page 45: Capítulo VI Resultados de la Investigación

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

Page 46: Capítulo VI Resultados de la Investigación

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

Page 47: Capítulo VI Resultados de la Investigación

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

Page 48: Capítulo VI Resultados de la Investigación

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

Page 49: Capítulo VI Resultados de la Investigación

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

Page 50: Capítulo VI Resultados de la Investigación

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)

Page 51: Capítulo VI Resultados de la Investigación

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.

Page 52: Capítulo VI Resultados de la Investigación

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)

Page 53: Capítulo VI Resultados de la Investigación

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

Page 54: Capítulo VI Resultados de la Investigación

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.