Upload
ngomien
View
213
Download
1
Embed Size (px)
Citation preview
UNIVERSIDAD NACIONAL DEL CALLAOFACULTAD DE INGENIERIA ELÉCTRICA Y ELECTRÓNICA
DISEÑO DE UN SENSOR DE CAUDAL AISLADO CON CONTROLELECTRÓNICO DE TRANSDUCCIÓN OPTOCINEMÁTICA
DE ALTA PRECISIÓN
Ing. JULIO CÉSAR CASQUERO ZAIDMAN
PERIODO 01/06/2011 AL 31/05/2012
RESOLUCIÓN RECTORAL No 640-211-R DEL 22DE JUNIODEL 2011
- 1 -
INDICE
Pág.ÍNDICE …………………………………………………………………………………………..………. 1RESUMEN 2CAPÍTULO 1: INTRODUCCIÓN……………………………………………………..…..….... 3
1. Introducción………………………………………………………………………………….….. 3CAPÍTULO 2: PARTE TEÓRICA ………………………………………………………..……... 5
2. Parte teórica………………………………………………………………………………….…. 52.1 Teorías relacionadas al módulo mecánico………….……………………….. 5
2.1.1 Campo magnético……………………………………………………………….. 52.2.2 Las turbinas de acción ………………………………………………………… 62.1.3 Permeabilidad magnética……………………………………………….….. 7
2.2 Teorías relacionadas al módulo electrónico ……………………………..… 82.2.1 El sensor +óptico de barrera……………………………………………….. 82.2.2 El encoder absoluto…………………………………………………………….. 9
2.3 Conocimientos relacionados al controlador digital……………………... 10CAPÍTULO 3: MATERIALES Y MÉTODOS…………………………………………..…….. 163. Materiales y métodos……………………………………….……………………………….. 16
3.1 Materiales…………………………………………………………………………………… 163.1.1 El grabador de PICs……………………………………………………………… 163.1.2 El entrenador basado en el PIC 16F876A……………………………… 163.1.3 La tarjeta de control………..………………………………………………….. 173.1.4 La carcasa acondicionada………………………………………………….… 183.1.5 El transductor electrónico………………………………………………….… 193.1.6 Banco de pruebas con el prototipo del sensor……………………... 21
3.2 Métodos………………………………………………………………………………………… 22CAPÍTULO 4: RESULTADOS …………………………………………………………….......... 23
4. Resultados……………………………………………………………………………………….… 23CAPÍTULO 5: DISCUSIÓN……………………………………………………………….……….. 24
5. Discusión…………………………………………………………………………………………… 245.1.1 Discusión respecto al alcance de la investigación……………….. 245.1.2 Discusión respecto al material desarrollado …………………….… 245.1.3 Discusión respecto al procesamiento de la información……... 245.1.4 Discusión respecto a la utilidad de la presente investigación 24
CAPÍTULO 6: REFERENCIAS ……………………………………………………………….…... 266. Referencias bibliográficas……………………………………………………………….… 26
APÉNDICE ……………………………………………………………………………………….….... 27ANEXOS ……………………………………………………………………………………………..... 28
- 2 -
RESUMEN
El presente tema de investigación está enmarcado dentro del universo de los transductores y
de los sensores de caudal y tiene como propósito la comprobación de la factibilidad del diseño
e implementación de un prototipo de un sensor de caudal aislado con control electrónico de
transducción optocinemática de alta precisión
El sistema contiene un transductor mecánico cuya señal de ingreso es el caudal de agua que
ingresa al transductor y como señal de salida es la velocidad rotacional del eje, provisto de un
imán en su extremo, que es movido por una hélice al ser impactada por el flujo.
El sistema también contiene un transductor electrónico cuya señal de ingreso es la velocidad
rotacional de su eje que recibe movimiento del eje del transductor mecánico por arrastre
magnético, el cual contiene un disco que también gira con el eje provisto de marcas que son
leídas por un sensor de barrera electrónico obteniéndose una pulsación proporcional a las
revoluciones del eje.
El sistema adicionalmente contiene un controlador electrónico integral digital y programable
(PIC), el cual se ha programado de modo que toma la pulsación del sensor indicado y realiza el
procesamiento de modo que presenta en la pantalla el caudal correspondiente.
La síntesis del presente trabajo se refleja en haber comprobado en principio la eficacia de la
implementación del prototipo del sensor y en segundo lugar haber comprobado que para una
medición de 0.3 litros/segundo, la precisión en la lectura supera el 97% de precisión en el
caudal medido en un banco de pruebas que se ha acondicionado para poder realizar las
pruebas.
- 3 -
CAPÍTULO 1INTRODUCCIÓN
1 INTRODUCCIÓN
La estructura de la presenta introducción está basada en los siguientes pilares:
a) El diseño e implementación del transductor mecánico que ha requerido la realización las
siguientes tareas:
Diseñar y fabricar el cuerpo del transductor mecánico
Diseñar y fabricar el rotor
Diseñar y fabricar el eje de arrastre principal con extremo imantado
Diseñar y fabricar la tapa del cuerpo
b) El diseño e implementación del transductor electrónico que ha requerido la realización las
siguientes tareas:
Diseñar y fabricar el soporte del transductor electrónico
Seleccionar e implementar el encoder acoplado a eje secundario con extremo
imantado
Seleccionar e implementar transductor de barrera óptico
Diseñar y fabricar la tapa del transductor electrónico
c) El diseño e implementación del controlador electrónico que ha requerido la realización las
siguientes tareas:
Seleccionar y adquirir el microcontrolador
Diseñar la tarjeta electrónica de control principal
Programar el microcontrolador
Probar el programa y el controlador electrónico
d) La integración del transductor mecánico, electrónico con el controlador lo que hizo
necesario la realización de las siguientes tareas:
- 4 -
Acabar la fabricación del prototipo del transductor electrónico
Instalar el sensor en el banco de pruebas
Preparar protocolo de pruebas
e) Obtener el costo de producción y haber estimado el tiempo de fabricación
El presente trabajo muestra que en primer lugar se ha comprobado la eficacia de las tareas
realizadas al haber obtenido el prototipo del sensor de caudal aislado con control electrónico
de transducción optocinemática de alta precisión y en segundo lugar muestra la manera como
se ha comprobado la eficiencia en la medición del caudal con una alta precisión. El punto de
medición ha sido de 0.3 litros/segundo y el rango de la precisión de control ha sido 3%.
- 5 -
CAPÍTULO 2PARTE TEÓRICA
2 PARTE TEÓRICA
Los conceptos teóricos lo presentamos en tres grupos, los relacionados al módulo mecánico,
al módulo electrónico y al controlador digital:
2.1 TEORÍAS RELACIONADAS AL MÓDULO MECÁNICO
2.1.1 Campo magnético
El campo magnético representa una región del espacio en la que una carga eléctrica
puntual de valor q, que se desplaza a una velocidad , experimenta los efectos de una
fuerza que es perpendicular y proporcional tanto a la velocidad v como al campo B.
Así, dicha carga percibirá una fuerza descrita con la siguiente ecuación.
donde F es la fuerza, v es la velocidad y B el campo magnético, también llamado
inducción magnética y densidad de flujo magnético. (Nótese que tanto F como v y B
son magnitudes vectoriales y el producto vectorial tiene como resultante un vector
perpendicular tanto a v como a B). El módulo de la fuerza resultante será
La existencia de un campo magnético se pone de relieve gracias a la propiedad (la cual
la podemos localizar en el espacio) de orientar un magnetómetro (laminilla de acero
imantado que puede girar libremente). La presencia de las líneas de campo magnético
se muestra en la figura No 2.1.
- 5 -
CAPÍTULO 2PARTE TEÓRICA
2 PARTE TEÓRICA
Los conceptos teóricos lo presentamos en tres grupos, los relacionados al módulo mecánico,
al módulo electrónico y al controlador digital:
2.1 TEORÍAS RELACIONADAS AL MÓDULO MECÁNICO
2.1.1 Campo magnético
El campo magnético representa una región del espacio en la que una carga eléctrica
puntual de valor q, que se desplaza a una velocidad , experimenta los efectos de una
fuerza que es perpendicular y proporcional tanto a la velocidad v como al campo B.
Así, dicha carga percibirá una fuerza descrita con la siguiente ecuación.
donde F es la fuerza, v es la velocidad y B el campo magnético, también llamado
inducción magnética y densidad de flujo magnético. (Nótese que tanto F como v y B
son magnitudes vectoriales y el producto vectorial tiene como resultante un vector
perpendicular tanto a v como a B). El módulo de la fuerza resultante será
La existencia de un campo magnético se pone de relieve gracias a la propiedad (la cual
la podemos localizar en el espacio) de orientar un magnetómetro (laminilla de acero
imantado que puede girar libremente). La presencia de las líneas de campo magnético
se muestra en la figura No 2.1.
- 5 -
CAPÍTULO 2PARTE TEÓRICA
2 PARTE TEÓRICA
Los conceptos teóricos lo presentamos en tres grupos, los relacionados al módulo mecánico,
al módulo electrónico y al controlador digital:
2.1 TEORÍAS RELACIONADAS AL MÓDULO MECÁNICO
2.1.1 Campo magnético
El campo magnético representa una región del espacio en la que una carga eléctrica
puntual de valor q, que se desplaza a una velocidad , experimenta los efectos de una
fuerza que es perpendicular y proporcional tanto a la velocidad v como al campo B.
Así, dicha carga percibirá una fuerza descrita con la siguiente ecuación.
donde F es la fuerza, v es la velocidad y B el campo magnético, también llamado
inducción magnética y densidad de flujo magnético. (Nótese que tanto F como v y B
son magnitudes vectoriales y el producto vectorial tiene como resultante un vector
perpendicular tanto a v como a B). El módulo de la fuerza resultante será
La existencia de un campo magnético se pone de relieve gracias a la propiedad (la cual
la podemos localizar en el espacio) de orientar un magnetómetro (laminilla de acero
imantado que puede girar libremente). La presencia de las líneas de campo magnético
se muestra en la figura No 2.1.
- 6 -
Figura No 2.1LÍNEAS DE CAMPO MAGNÉTICO EN UN IMÁN
2.1.2 Las turbinas de acción
Son aquellas en que el fluido no sufre ningún cambio de presión a través de su paso
por el rodete. La presión que el fluido tiene a la entrada en la turbina se reduce hasta
la presión atmosférica en la corona directriz, manteniéndose constante en todo el
rodete. Su principal característica es que carecen de tubería de aspiración. La principal
turbina de acción es la que trabaja con el flujo tangencial. Se caracterizan por tener un
número específico de revoluciones bajo. El cambio de momento de una turbina tipo
hélice se aprovecha, por ejemplo, en los medidores de caudal utilizados en las
mediciones domiciliarias que se muestra en la figura No 2.2. En este caso el eje
giratorio acciona una caja de engranajes la cual mueve las ruletas numeradas.
Figura No 2.2MEDIDOR DE CAUDAL MECÁNICO
Se ha aprovechado la carcasa del medidor mecánico y la parte de la hélice que gira al
ingresar el caudal y tiene adosado un eje en cuyo extremo se coloca un imán. En la
figura No 2.3 se muestra esquematizado el giro de la hélice por acción del agua que
ingresa al medidor.
- 6 -
Figura No 2.1LÍNEAS DE CAMPO MAGNÉTICO EN UN IMÁN
2.1.2 Las turbinas de acción
Son aquellas en que el fluido no sufre ningún cambio de presión a través de su paso
por el rodete. La presión que el fluido tiene a la entrada en la turbina se reduce hasta
la presión atmosférica en la corona directriz, manteniéndose constante en todo el
rodete. Su principal característica es que carecen de tubería de aspiración. La principal
turbina de acción es la que trabaja con el flujo tangencial. Se caracterizan por tener un
número específico de revoluciones bajo. El cambio de momento de una turbina tipo
hélice se aprovecha, por ejemplo, en los medidores de caudal utilizados en las
mediciones domiciliarias que se muestra en la figura No 2.2. En este caso el eje
giratorio acciona una caja de engranajes la cual mueve las ruletas numeradas.
Figura No 2.2MEDIDOR DE CAUDAL MECÁNICO
Se ha aprovechado la carcasa del medidor mecánico y la parte de la hélice que gira al
ingresar el caudal y tiene adosado un eje en cuyo extremo se coloca un imán. En la
figura No 2.3 se muestra esquematizado el giro de la hélice por acción del agua que
ingresa al medidor.
- 6 -
Figura No 2.1LÍNEAS DE CAMPO MAGNÉTICO EN UN IMÁN
2.1.2 Las turbinas de acción
Son aquellas en que el fluido no sufre ningún cambio de presión a través de su paso
por el rodete. La presión que el fluido tiene a la entrada en la turbina se reduce hasta
la presión atmosférica en la corona directriz, manteniéndose constante en todo el
rodete. Su principal característica es que carecen de tubería de aspiración. La principal
turbina de acción es la que trabaja con el flujo tangencial. Se caracterizan por tener un
número específico de revoluciones bajo. El cambio de momento de una turbina tipo
hélice se aprovecha, por ejemplo, en los medidores de caudal utilizados en las
mediciones domiciliarias que se muestra en la figura No 2.2. En este caso el eje
giratorio acciona una caja de engranajes la cual mueve las ruletas numeradas.
Figura No 2.2MEDIDOR DE CAUDAL MECÁNICO
Se ha aprovechado la carcasa del medidor mecánico y la parte de la hélice que gira al
ingresar el caudal y tiene adosado un eje en cuyo extremo se coloca un imán. En la
figura No 2.3 se muestra esquematizado el giro de la hélice por acción del agua que
ingresa al medidor.
- 7 -
Figura No 2.3GIRO HORARIO PRODUCIDO POR ACCIÓN DEL
CHORRO DE AGUA SOBRE UNA HÉLICE QUE GIRA SOBRE UN EJE
Si se adosa un imán en uno de los extremos del eje se dispondrá da un campo
magnético capaz de mover un metal o imán que se encuentra en su cercanía.
2.1.3 Permeabilidad magnética
En física se denomina permeabilidad magnética a la capacidad de una sustancia o
medio para atraer y hacer pasar a través de los campos magnéticos, la cual está
dada por la relación entre la inducción magnética existente y la intensidad de
campo magnético que aparece en el interior de dicho material.
La magnitud así definida, el grado de magnetización de un material en respuesta a
un campo magnético, se denomina permeabilidad absoluta y se suele representar
por el símbolo μ:
donde B es la inducción magnética (también llamada densidad de flujo magnético)
en el material, y H es intensidad de campo magnético.
- 7 -
Figura No 2.3GIRO HORARIO PRODUCIDO POR ACCIÓN DEL
CHORRO DE AGUA SOBRE UNA HÉLICE QUE GIRA SOBRE UN EJE
Si se adosa un imán en uno de los extremos del eje se dispondrá da un campo
magnético capaz de mover un metal o imán que se encuentra en su cercanía.
2.1.3 Permeabilidad magnética
En física se denomina permeabilidad magnética a la capacidad de una sustancia o
medio para atraer y hacer pasar a través de los campos magnéticos, la cual está
dada por la relación entre la inducción magnética existente y la intensidad de
campo magnético que aparece en el interior de dicho material.
La magnitud así definida, el grado de magnetización de un material en respuesta a
un campo magnético, se denomina permeabilidad absoluta y se suele representar
por el símbolo μ:
donde B es la inducción magnética (también llamada densidad de flujo magnético)
en el material, y H es intensidad de campo magnético.
- 7 -
Figura No 2.3GIRO HORARIO PRODUCIDO POR ACCIÓN DEL
CHORRO DE AGUA SOBRE UNA HÉLICE QUE GIRA SOBRE UN EJE
Si se adosa un imán en uno de los extremos del eje se dispondrá da un campo
magnético capaz de mover un metal o imán que se encuentra en su cercanía.
2.1.3 Permeabilidad magnética
En física se denomina permeabilidad magnética a la capacidad de una sustancia o
medio para atraer y hacer pasar a través de los campos magnéticos, la cual está
dada por la relación entre la inducción magnética existente y la intensidad de
campo magnético que aparece en el interior de dicho material.
La magnitud así definida, el grado de magnetización de un material en respuesta a
un campo magnético, se denomina permeabilidad absoluta y se suele representar
por el símbolo μ:
donde B es la inducción magnética (también llamada densidad de flujo magnético)
en el material, y H es intensidad de campo magnético.
- 8 -
Los materiales que son permeables al magnetismo permiten encerrar la hélice
provista de un imán de modo que cuando gire por la acción del golpe tangencial del
agua, dicho imán pueda mover otro que se encuentra fuera la superficie encerrada.
En la figura No 2.4 se muestra la manera como el imán A que está anclado al eje del
rotor arrastra al imán B que está anclado al encoder. Entre ambos imanes es
necesario colocar un material permeable al magnetismo.
Figura No 2.4
MOVIMIENTO DEL IMAN B POR ACCIÓN DEL IMAN AHABIENDO UN MATERIAL MAGNÉTICO PERMEABLE ENTRE ÉLLOS
2.2 TEORÍAS RELACIONADAS AL MÓDULO ELECTRÓNICO
2.2.1 El sensor óptico de barrera
El sensor de barrera está compuesto por un transmisor realizado a partir de un
diodo emisor de luz y un receptor realizado a partir de un fotodiodo y/o un
fototransistor. Al incidir la luz emitida por el transmisor el fotodiodo y/o
fototransistor permite el paso de la corriente a tierra, cuando se interrumpo el
paso de la luz se impide el paso de la corriente poniendo en estado alto relativo
a la línea utilizada como señal de salida, la cual servirá como señal de control.
En la figura No 2.5 se muestra el esquema de un sensor óptico de barrera.
- 9 -
Figura No 2.5CIRCUITO DEL SENSOR DE BARRERA ÓPTICO
2.2.2 El encoder absoluto
El encoder absoluto está constituido por un disco que está marcado en su
periferia con señales intermitentes periféricas, las cuales son leídas con un
sensor de barrera de modo que cuando las encuentran emiten una serie de
pulsos. Con esto se puede tener una sucesión de pulsos proporcional a las
revoluciones con las cuales gira el disco del encoder. Las salidas pueden ser
de por lo menos un canal, habiendo de dos, tres, y cincos canales (AB, ABZ,
ABZAB). En la figura 2.6 se muestra la manera como se conectar las
resistencias de 47K en los canales A y B del encoder de modo que se
disponga de las entradas A y B que van al microcontrolador.
- 10 -
Figura No 2.6FORMA DE INSTALAR EL ENCODER DE DOS CANALES
Se las señales en A o en B es alta son detectadas, entonces las salidas serán
“1” y en caso contrario las salidas serán “0”. La sucesión de pulsos generada
se muestra en la figura No 2.7.
Figura No 2.7PULSOS DEL CANAL A DEL ENCODER
2.3 CONOCIMIENTOS RELACIONADOS AL CONTROLADOR DIGITAL
El controlador usado es un circuito integrado programable conocido como PIC el cual usa un
juego de instrucciones tipo RISC, cuyo número puede variar desde 35 para PICs de gama baja a
70 para los de gama alta. Las instrucciones se clasifican entre las que realizan operaciones
entre el acumulador y una constante, entre el acumulador y una posición de memoria,
instrucciones de condicionamiento y de salto/retorno, implementación de interrupciones y
una para pasar a modo de bajo consumo llamada sleep.
El fabricante proporciona un entorno de desarrollo freeware llamado MPLAB que incluye un
software simulador y un ensamblador.
- 10 -
Figura No 2.6FORMA DE INSTALAR EL ENCODER DE DOS CANALES
Se las señales en A o en B es alta son detectadas, entonces las salidas serán
“1” y en caso contrario las salidas serán “0”. La sucesión de pulsos generada
se muestra en la figura No 2.7.
Figura No 2.7PULSOS DEL CANAL A DEL ENCODER
2.3 CONOCIMIENTOS RELACIONADOS AL CONTROLADOR DIGITAL
El controlador usado es un circuito integrado programable conocido como PIC el cual usa un
juego de instrucciones tipo RISC, cuyo número puede variar desde 35 para PICs de gama baja a
70 para los de gama alta. Las instrucciones se clasifican entre las que realizan operaciones
entre el acumulador y una constante, entre el acumulador y una posición de memoria,
instrucciones de condicionamiento y de salto/retorno, implementación de interrupciones y
una para pasar a modo de bajo consumo llamada sleep.
El fabricante proporciona un entorno de desarrollo freeware llamado MPLAB que incluye un
software simulador y un ensamblador.
- 10 -
Figura No 2.6FORMA DE INSTALAR EL ENCODER DE DOS CANALES
Se las señales en A o en B es alta son detectadas, entonces las salidas serán
“1” y en caso contrario las salidas serán “0”. La sucesión de pulsos generada
se muestra en la figura No 2.7.
Figura No 2.7PULSOS DEL CANAL A DEL ENCODER
2.3 CONOCIMIENTOS RELACIONADOS AL CONTROLADOR DIGITAL
El controlador usado es un circuito integrado programable conocido como PIC el cual usa un
juego de instrucciones tipo RISC, cuyo número puede variar desde 35 para PICs de gama baja a
70 para los de gama alta. Las instrucciones se clasifican entre las que realizan operaciones
entre el acumulador y una constante, entre el acumulador y una posición de memoria,
instrucciones de condicionamiento y de salto/retorno, implementación de interrupciones y
una para pasar a modo de bajo consumo llamada sleep.
El fabricante proporciona un entorno de desarrollo freeware llamado MPLAB que incluye un
software simulador y un ensamblador.
- 11 -
a) Arquitectura central
La arquitectura del PIC es sumamente minimalista. Esta caracterizada por las siguientes
prestaciones:
Área de código y de datos separadas (Arquitectura Harvard).
Un reducido número de instrucciones de longitud fija.
La mayoría de las instrucciones se ejecutan en un solo ciclo de ejecución (4 ciclos de
clock), con ciclos de único retraso en las bifurcaciones y saltos.
Un solo acumulador (W), cuyo uso (como operador de origen) es implícito (no está
especificado en la instrucción).
Todas las posiciones de la RAM funcionan como registros de origen y/o de destino de
operaciones matemáticas y otras funciones.1
Una pila de hardware para almacenar instrucciones de regreso de funciones.
Una relativamente pequeña cantidad de espacio de datos direccionable (típicamente,
256 bytes), extensible a través de manipulación de bancos de memoria.
El espacio de datos está relacionado con el CPU, puertos, y los registros de los
periféricos.
El contador de programa esta también relacionado dentro del espacio de datos, y es
posible escribir en él (permitiendo saltos indirectos).
A diferencia de la mayoría de otros CPU, no hay distinción entre los espacios de memoria y los
espacios de registros, ya que la RAM cumple ambas funciones, y esta es normalmente referida
como "archivo de registros" o simplemente, registros.
b) Espacio de datos (RAM)
Los microcontroladores PIC tienen una serie de registros que funcionan como una RAM de
propósito general. Los registros de propósito específico para los recursos de hardware
- 12 -
disponibles dentro del propio chip también están direccionados en la RAM. La
direccionabilidad de la memoria varía dependiendo la línea de dispositivos, y todos los
dispositivos PIC tienen algún tipo de mecanismo de manipulación de bancos de memoria que
pueden ser usados para acceder memoria externa o adicional. Las series más recientes de
dispositivos disponen de funciones que pueden cubrir todo el espacio direccionable,
independientemente del banco de memoria seleccionado. En los dispositivos anteriores, esto
debía lograrse mediante el uso del acumulador.
Para implementar direccionamiento indirecto, se usa un registro de "selección de registro de
archivo" (FSR) y uno de "registro indirecto" (INDF): Un número de registro es escrito en el FSR,
haciendo que las lecturas o escrituras al INDF serán realmente hacia o desde el registro
apuntado por el FSR. Los dispositivos más recientes extienden este concepto con post y
preincrementos/decrementos para mayor eficiencia al acceder secuencialmente a la
información almacenada. Esto permite que se pueda tratar al FSR como un puntero de pila.
La memoria de datos externa no es directamente direccionable excepto en algunos
microcontroladores PIC 18 de gran cantidad de pines.
c) Tamaño de palabra
El tamaño de palabra de los microcontroladores PIC es fuente de muchas confusiones. Todos
los PICs (excepto los dsPIC) manejan datos en trozos de 8 bits, con lo que se deberían llamar
microcontroladores de 8 bits. Pero a diferencia de la mayoría de las CPU, el PIC usa
arquitectura Harvard, por lo que el tamaño de las instrucciones puede ser distinto del de la
palabra de datos. De hecho, las diferentes familias de PICs usan tamaños de instrucción
distintos, lo que hace difícil comparar el tamaño del código del PIC con el de otros
microcontroladores. Por ejemplo, un microcontrolador tiene 6144 bytes de memoria de
- 13 -
programa: para un PIC de 12 bits esto significa 4096 palabras y para uno de 16 bits, 3072
palabras.
d) Programación del PIC
Para transferir el código de un ordenador al PIC normalmente se usa un dispositivo llamado
programador. La mayoría de PICs hoy en día incorporan ICSP (In Circuit Serial Programming,
programación serie incorporada) o LVP (Low Voltage Programming, programación a bajo
voltaje), lo que permite programar el PIC directamente en el circuito destino. Para la ICSP se
usan los pines RB6 y RB7 (En algunos modelos pueden usarse otros pines como el GP0 y GP1 o
el RA0 y RA1) como reloj y datos y el MCLR para activar el modo programación aplicando un
voltaje de 13 voltios. Existen muchos programadores de PICs, desde los más simples que dejan
al software los detalles de comunicaciones, a los más complejos, que pueden verificar el
dispositivo a diversas tensiones de alimentación e implementan en hardware casi todas las
funcionalidades. Muchos de estos programadores complejos incluyen ellos mismos PICs
preprogramados como interfaz para enviar las órdenes al PIC que se desea programar. Uno de
los programadores más simples es el TE20, que utiliza la línea TX del puerto RS232 como
alimentación y las líneas DTR y CTS para mandar o recibir datos cuando el microcontrolador
está en modo programación. El software de programación puede ser el ICprog, muy común
entre la gente que utiliza este tipo de microcontroladores. Entornos de programación basados
en interpretes BASIC ponen al alcance de cualquiera proyectos que parecieran ser ambiciosos.
e) Prestaciones y dispositivos especiales de los PIC16F87X.
· Procesador de arquitectura RISC avanzada
· Juego de solo 35 instrucciones con 14 bits de longitud. Todas ellas se
ejecutan en un ciclo de instrucción, menos las de salto que tardan dos.
· Hasta 8K palabras de 14 bits para la Memoria de Programa, tipo FLASH
- 14 -
en los modelos 16F876 y 16F877 y 4KB de memoria para los PIC
16F873 y 16F874.
· Hasta 368 Bytes de memoria de Datos RAM.
· Hasta 256 Bytes de memoria de Datos EEPROM.
· Pines de salida compatibles para el PIC 16C73/74/76/77.
· Hasta 14 fuentes de interrupción internas y externas.
· Pila de 8 niveles.
· Modos de direccionamiento directo e indirecto.
· Power-on Reset (POP).
· Temporizador Power-on (POP) y Oscilador Temporizador Start-Up.
· Perro Guardián (WDT).
· Código de protección programable.
· Modo SLEEP de bajo consumo.
· Programación serie en circuito con dos pines, solo necesita 5V para
programarlo en este modo.
· Voltaje de alimentación comprendido entre 2 y 5,5 V.
· Bajo consumo: < 2 mA valor para 5 V y 4 Mhz 20 A para 3V y 32 M <
1 A en standby.
El PIC 16F876A utilizado tiene la distribución de pines mostrada en la figura No
2.8
- 15 -
Figura No 2.8DISTRIBUCIÓN DE PINES DEL PIC 16F876A
- 16 -
CAPÍTULO 3MATERIALES Y MÉTODOS
3.1 MATERIALES
Los materiales que se han utilizado son:
El grabador de PICs
El módulo de desarrollo
El Banco de pruebas con el prototipo del sensor
3.1.1 El grabador de PICs
El grabador de PICs utilizado se muestra en la figura No 3.1. Este grabador fabricado
siguiente los lineamiento que ofrece la empresa Microchip, permite usar el PIC
16F876A.
Figura No 3.1EL GRABADO DE PICs
3.1.2 El entrenador basado en el PIC 16F876A
El entrenador utilizado se muestra en la Figura No 3.2
- 17 -
Figura No 3.2ENTRENADOR UTILIZADO BASADO EN EL PIC 16F876A
3.1.3 La tarjeta de control
Se ha diseñado y fabricado el prototipo de la tarjeta controladora. En la figura No 3.3
se muestra las pistas y guías de la ubicación de los componentes del lado posterior del
mismo y en la figura No 3.4 se muestra lo correspondiente al lado anterior.
Figura No 3.3ESQUEMA DEL LADO POSTERIOR DEL PROTOTIPO DE LA TARJETA CONTROLADORA
- 18 -
Figura No 3.4ESQUEMA DEL LADO ANTERIOR DEL PROTOTIPO DE LA TARJETA CONTROLADORA
En la figura 3.5 se muestran el prototipo de la tarjeta de control que se ha desarrollado.
Figura No 3.5PROTOTIPO DE LA TARJETA CONTROLADORA
3.1.4 La carcasa acondicionada
El prototipo del sensor se fabricó en base a la adaptación de la carcasa de un medidor
de caudal mecánico al cual se le ha adaptado el transductor electrónico basado en el
encoder que gira por erraste de su eje debido al efecto magnético que se le aplica. En
- 18 -
Figura No 3.4ESQUEMA DEL LADO ANTERIOR DEL PROTOTIPO DE LA TARJETA CONTROLADORA
En la figura 3.5 se muestran el prototipo de la tarjeta de control que se ha desarrollado.
Figura No 3.5PROTOTIPO DE LA TARJETA CONTROLADORA
3.1.4 La carcasa acondicionada
El prototipo del sensor se fabricó en base a la adaptación de la carcasa de un medidor
de caudal mecánico al cual se le ha adaptado el transductor electrónico basado en el
encoder que gira por erraste de su eje debido al efecto magnético que se le aplica. En
- 18 -
Figura No 3.4ESQUEMA DEL LADO ANTERIOR DEL PROTOTIPO DE LA TARJETA CONTROLADORA
En la figura 3.5 se muestran el prototipo de la tarjeta de control que se ha desarrollado.
Figura No 3.5PROTOTIPO DE LA TARJETA CONTROLADORA
3.1.4 La carcasa acondicionada
El prototipo del sensor se fabricó en base a la adaptación de la carcasa de un medidor
de caudal mecánico al cual se le ha adaptado el transductor electrónico basado en el
encoder que gira por erraste de su eje debido al efecto magnético que se le aplica. En
- 19 -
la figura No 3.6 se muestra el acondicionamiento de la carcasa mecánica ya instalada
en el banco de prueba.
Figura No 3.6ACONDICIONAMIENTO DE LA CARCASA
3.1.5 El transductor electrónico
En la figura No 3.7 se muestra los componentes del transductor electrónicodesarrollado.
Figura No 3.7COMPONENTES DEL TRANSDUCTOR ELECTRÓNICO
En la figura No 3.8 se muestra el transductor electrónico ensamblado.
- 20 -
Figura No 3.8TRANSDUCTOR ELECTRÓNICO DESARROLLADO
En la figura No 3.9 se muestra el transductor electrónico ensamblado conjuntamente
con la tapa que sirve para fijarlo en el cuerpo del sensor.
Figura No 3.9TRANSDUCTOR ELECTRÓNICO Y TAPA DE SUJECIÓN
En la figura No 3.10 se muestra la manera como queda instalado el transductor
electrónico en el cuerpo del sensor.
- 21 -
Figura No 3.10TRANSDUCTOR MECÁNICO Y TRANSDUCTOR ELECTRÓNICO
ENSAMBLADOS CONJUNTAMENTE
3.1.6 Banco de pruebas con el prototipo del sensor
Se ha acondicionado un banco de pruebas que permite regular el caudal
manualmente. Se ha instalado el caudalímetro en el banco tal como se muestra en la
figura No 3.11.
Figura No 3.11BANCO DE PUREBA CON EL SENSOR INCORPORADO
- 22 -
3.2 MÉTODOS
En principio el método de investigación empleado ha sido el hipotético, deductivo y
basado en comprobación experimental. En cuanto al procedimiento para lograr el
resultado del presente proyecto ha sido el siguiente:
1º Se ha fabricado el grabador del PIC.
2º Se ha fabricado el entrenador de PICs.
3º Se ha acondicionado la carcasa del transductor mecánico.
4º Se ha ensamblado el transductor electrónico.
5º Se ha realizado la programación del PIC.
6º Se ha acondicionado el prototipo del sensor en el banco de prueba.
7º Se ha realizado las pruebas y las mediciones habiendo estabilizado el flujo que pasa
por la tubería del banco de prueba en el caudal nominal de 0.3 litros/segundo.
Las pruebas se han hecho experimentalmente.
- 23 -
CAPÍTULO 4RESULTADOS
4.1 RESULTADOS
Los resultados se han obtenido de la siguiente manera:
a) Luego de haber diseñado e implementa el transductor mecánico se ha obtenido la relación
que existe entre el caudal en [litros/segundo] y las RPM del eje principal de arrastre, para el
punto de medición.
b) Luego de haber diseñado e implementado el transductor electrónico se ha obtenido la
relación que existe entre la la velocidad del eje secundario de arrastre [RPM] y la frecuencia de
pulsos [pulsos/rev], para el punto de medición.
c) Luego de haber diseñado e implementado el controlador electrónico se ha obtenido la
relación que existe entre la frecuencia de pulsos [pulsos/rev] y el caudal mostrado en la
pantalla o medido [litros/s], para el punto de medición.
El resultado final obtenido se indica en la tabla No 4.1
TABLA No 4.1RESULTADOS FINALES OBTENIDOS
CAUDAL QUEINGRESA ALSENSOR [lt/s]EN ESTADOESTABEL
VELOCIDAD DELEJE PRINCIPAL(RPMp)
VELOCIDAD DELEJE SECUNDARIO(RPMs)
FRECUENCIA DEPULSACIÓN[Ciclos/minuto]
FRECUENCIA DEPULSACIÓN[Ciclos/segundo]
LECTURAEFECTUADA[lt/s]
0.3 100 98 784 13.067 0.294
Existe un resbalamiento en el arrastre del eje secundario esto hace variar la lectura en el del
2%. Para el caso de una lectura en estado estable, la corrección es factible hacerla vía
software.
Los costos de toda la investigación ha sido el siguiente:
Item DESCRIPCIÓN MONTO (S/.)1 Materiales para elaboración de transductores 3,900-002 Servicios transporte, comunicación, movilidad, programación 1,200.00
Total S/. 5,100.00Todo ha sido totalmente financiado por el autor del presente proyecto
- 24 -
CAPÍTULO 5DISCUSIÓN
5.1 DISCUSIÓN
5.1.1 DISCUSIÓN RESPECTO AL ALCANCE DE LA INVESTIGACIÓN
El alcance de la presente investigación ha sido fijado mediante la fabricación del
prototipo del sensor de caudal optocinemático, su instalación en un banco para medir
caudales y la determinación de la verificación e la precisión en la lectura si supera el
97% de precisión al medir un caudal de 0.3 litros/segundo. Tal como se muestra
documentado en los puntos anteriores se ha llegado al cumplir la meta trazada.
5.1.2 DISCUSIÓN RESPECTO AL MATERIAL DESARROLLADO
El material desarrollado para alcanzar el objetivo ha sido el apropiada. Es necesario
mencionar que aún habiendo utilizado un encoder con una resolución de 8
pulsos/rev, se ha podido obtener apreciaciones importantes.
5.1.3 DISCUSIÓN RESPECTO AL PROCESAMIENTO DE LA INFORMACION
En principio se ha acondicionado un banco de pruebas el cual cuenta con una
regulación manual del caudal y una tina calibrada de modo que se puede fijar el
funcionamiento estable del sensor.
La programación del PIC juega un papel importante ya que mediante una
programación apropiada se puede mostrar en la pantalla el caudal deseado. Esto hace
evidente la necesidad de recomendar que todo sensor digital debe ser contrastado
para garantizar sus registros de lectura.
5.14. DISCUSIÓN RESPECTO A LA UTILIDAD DE LA PRESENTE INVESTIGACIÓN
La utilidad de la presente investigación radica en lo siguiente:
- 25 -
a) Muestra que el sensor propuesto constituye una nueva alternativa para diseñar
sensores de caudal. El modelo presentado es original y novedoso.
b) Muestra que para un caudal específico la precisión en la medición es alta y
confiable.
c) El seguir desarrollándolo conducirá a conseguir un producto innovador.
d) También permite contar con la experiencia para emprender estudios para poder
desarrollar caudalímetros útiles no sólo en un rango predefinido sino también cuando
se producen cambios rápidos en el caudal.
e) Obliga a perfeccionar la habilidad de programar los PICs
f) Permite recomendar que la Facultad de Ing. Eléctrica y Electrónica de la UNAC
cuente con un banco de pruebas para la medición de caudal con diversos tipos de
caudalímetros.
- 26 -
CAPÍTULO 6REFERENCIAS
6. REFERENCIAS BIBLIOGRÁFICAS
Las referencias bibliográficas utilizadas han sido las siguientes:
Creus, Antonio. INSTRUMENTACIÓN INDUSTRIAL, España: Alfaomega Marcombo, 6ta
edición.1997
Villalobos, Gustavo. MEDICIÓN DE FLUJO, México: Noriega Limusa, 1ra edición.1999
Rizzoni, Giorgio. PRINCIPIOS Y APLICACIONES DE INGENIERÍA ELÉCTRICA, Bogotá-Colombia: McGraw Hill, 3ra edición. 2002
Cuenca, Eugenio. MICROCONTROLADORES PIC, España: Thomson, 1ra edición. 2003
Pérez, Miguel. INSTRUMENTACIÓN ELECTRÓNICA, España: Thomson, 2da edición. 2004
Garza Garza, Juan Ángel. SISTEMAS DIGITALES Y ELECTRONICA DIGITAL, México:Pearson Educación, 1ra edición. 2006
Palacios, Enrique. MICROCONTROLADOR PIC16F84, México: Alfaomega, 2da edición.2006
Tokheim, Roger. ELECTRÓNICA DIGITAL, México: McGraw-Hil Interamericana, 7ma
edición. 2008
- 27 -
APENDICE
El diagrama medios-fines constituye el cuadro de trabajo de la investigación que ha servido de referente para establecer ladeducción indicada en el punto 4.1
Esta referencia ha sido seguida rigurosamente durante la investigación lo que constituye el trabajo auditado por el Ing. Julio César Casquero Zaidman
- 28 -
ANEXOS
ANEXO No 1: ARTIFICIOS DE PROGRAMACIÓN DESARROLLADOS DURANTE LAINVESTIGACIÓN
;--------------------------------------------------------------------;* CAUDALIMETRO;--------------------------------------------------------------------
LIST P=16F876A
INCLUDE <P16F876A.INC>
__CONFIG 0x1F31
;--------------------------------------------------------------------;* SE DEFINEN PINES DEL PORTA;--------------------------------------------------------------------
rs EQU 1 ; COMANDO/CARACTERe EQU 2 ; ENABLE LCDdat0 EQU 3 ; D4 LCDdat1 EQU 5 ; D5 LCD
;--------------------------------------------------------------------;* SE DEFINEN PINES DEL PORTB;--------------------------------------------------------------------
cpz EQU 0 ; CRUZE POR CEROfil3 EQU 1 ; TECLADO: FILA 2fil2 EQU 2 ; TECLADO: FILA 3fil1 EQU 3 ; TECLADO: FILA 4
col1 EQU 4 ; TECLADO: COLUMNA 1col2 EQU 6 ; TECLADO: COLUMNA 2col3 EQU 7 ; TECLADO: COLUMNA 3col4 EQU 5 ; TECLADO: COLUMNA 4
;--------------------------------------------------------------------;* SE DEFINEN PINES DEL PORTC;--------------------------------------------------------------------
dat2 EQU 0 ; D6 LCDdat3 EQU 1 ; D7 LCDbuzz EQU 3 ; BUZZERactv EQU 6
- 29 -
fil4 EQU 7 ; TECLADO: FILA 1
;--------------------------------------------------------------------;* SE DEFINEN FLAGS DEL REGISTRO RFLAG;--------------------------------------------------------------------
key EQU 0 ; FLAG DE TECLADOfin EQU 1 ; TEMPORIZACIONdsp EQU 2
;--------------------------------------------------------------------;* REGISTROS GENERALES DE LA MEMORIA RAM;--------------------------------------------------------------------
CBLOCK 0x20
RKEY1 ; TECLA 1RKEY2 ; TECLA 2RKEY3 ; TECLA 3RKEY4 ; TECLA 4RKEY5 ; TECLA 5RKEY6 ; TECLA 6
TEMP,CNTSEG,OVFLW,CNT_LCD,CHAR,RFLAGUNID,DEC,CENT,MIL,DMILRM3,RM2,RM1,MULT1,MULT2,MULT3,CNT4,CNT2,CNT1PCLATH_TEMP,ST_TEMP,W_TEMPTIMESEG,MCNT,CNT_ADRG_TIME,TP_H,TP_L,TM_H,TM_LCNTP_H,CNTP_L,RPP1,RPP2,REMB0,DREG,CONT0ACCB5,T_TIME,CNT_D,CNT_G,TH_H,TH_L,TL_H,TL_LRPWM,TKEY,RFLAG1
TP1_H,TP1_L
DIVISORHH,DIVISORHL,DIVISORLL,DIVIDENDOHHDIVIDENDOHL,DIVIDENDOLL,RESTOHH,RESTOHLRESTOLL,ACCDHH,ACCDHL,ACCDLL
ENDC
CBLOCK 0x71
RKY1,RKY2,RKY3,RKY4,RKY5,RKY6
RUNID,RDEC,RCENT,RMIL,RDMIL
- 30 -
ENDC
;--------------------------------------------------------------------;* SE DEFINEN ABREVIATURAS;--------------------------------------------------------------------
#DEFINE buzz_on bsf PORTC,buzz#DEFINE buzz_off bcf PORTC,buzz#DEFINE actv_on bcf PORTC,actv#DEFINE actv_off bsf PORTC,actv
;--------------------------------------------------------------------;* MACROS;--------------------------------------------------------------------;* MACRO DE DETECCION DE TECLA MARCADA;--------------------------------------------------------------------
tec1 MACRO a,b,c,d,e
bcf PORTC,a ; SE COLOCA EN BAJO LA FILAbtfss PORTB,col1 ; Y SE PREGUNTA A LASgoto b ; CORRESPONDIENTES COLUMNASbtfss PORTB,col2goto cbtfss PORTB,col3goto dbtfss PORTB,col4goto ebsf PORTC,a ; SE COLOCA EN ALTO LA FILA
ENDM
;--------------------------------------------------------------------;* MACRO DE DETECCION DE TECLA MARCADA;--------------------------------------------------------------------
tec2 MACRO a,b,c,d,e
bcf PORTB,a ; SE COLOCA EN BAJO LA FILAbtfss PORTB,col1 ; Y SE PREGUNTA A LASgoto b ; CORRESPONDIENTES COLUMNASbtfss PORTB,col2goto cbtfss PORTB,col3goto dbtfss PORTB,col4goto ebsf PORTB,a ; SE COLOCA EN ALTO LA FILA
- 31 -
ENDM
;--------------------------------------------------------------------;* MACRO DE GRABACION EN LA RAM DE LA TECLA MARCADA;* SE USA DIRECCIONAMIENTO INDIRECTO (FSR,INDF);--------------------------------------------------------------------
rkey MACRO a,b
movlw amovwf INDFcall alarmcall ms_20clrwdtbtfss PORTB,bgoto $-2call ms_20bsf RFLAG,keygoto ret
ENDM
;--------------------------------------------------------------------;* MACRO DE MENSAJES;--------------------------------------------------------------------
msj MACRO a,b
movlw acall send_cmdclrf CNT_LCDcall bcall send_charincf CNT_LCD,Fmovlw .16 ; 20 CARACTERESxorwf CNT_LCD,Wbtfss STATUS,Zgoto $-6
ENDM
;--------------------------------------------------------------------;* MACRO DE MENSAJES;--------------------------------------------------------------------
msj1 MACRO a,b
- 32 -
movlw acall send_cmdclrf CNT_LCDbsf PCLATH,3call bclrf PCLATHcall send_charincf CNT_LCD,Fmovlw .16 ; 16 CARACTERESxorwf CNT_LCD,Wbtfss STATUS,Zgoto $-8
ENDM
;--------------------------------------------------------------------;* INICIALIZA VECTOR DE RESET;--------------------------------------------------------------------
ORG 0x000
nopnop
goto inicio ; VA AL PROGRAMA PRINCIPAL
;--------------------------------------------------------------------;* RUTINA DE INTERRUPCION DEL TECLADO;--------------------------------------------------------------------
ORG 0x004 ; VECTOR DE INTERRUPCION
goto r_int ; RUTINA DE INTERRUPCION
;--------------------------------------------------------------------;* RUTINAS;--------------------------------------------------------------------;* RUTINA DE CONVERSION A CODIGO ASCII;--------------------------------------------------------------------
conv_asc addwf PCL,F
retlw '0'retlw '1'retlw '2'retlw '3'retlw '4'retlw '5'
- 33 -
retlw '6'retlw '7'retlw '8'retlw '9'
;--------------------------------------------------------------------;* RUTINA DE TIT 1;--------------------------------------------------------------------
tit1 movfw CNT_LCDaddwf PCL,F
DT " PROYECTO DE "
;--------------------------------------------------------------------;* RUTINA DE TIT 2;--------------------------------------------------------------------
tit2 movfw CNT_LCDaddwf PCL,F
DT "INVESTIGACION 01"
;--------------------------------------------------------------------;* RUTINA DE TIT 3;--------------------------------------------------------------------
tit3 movfw CNT_LCDaddwf PCL,F
DT " PROYECTO "
;--------------------------------------------------------------------;* RUTINA DE TIT 4;--------------------------------------------------------------------
tit4 movfw CNT_LCDaddwf PCL,F
DT " CAUDALIMETRO "
;--------------------------------------------------------------------;* RUTINA DE TIT 5;--------------------------------------------------------------------
tit5 movfw CNT_LCDaddwf PCL,F
- 34 -
DT " PROGRAMAR .... "
;--------------------------------------------------------------------;* RUTINA DE TIT 6;--------------------------------------------------------------------
tit6 movfw CNT_LCDaddwf PCL,F
DT " CAUDAL REF. "
;--------------------------------------------------------------------;* RUTINA DE TIT 7;--------------------------------------------------------------------
tit7 movfw CNT_LCDaddwf PCL,F
DT " 0.00 lt/s "
;--------------------------------------------------------------------;* RUTINA DE TIT 8;--------------------------------------------------------------------
tit8 movfw CNT_LCDaddwf PCL,F
DT " CAUDAL MAX. "
;--------------------------------------------------------------------;* RUTINA DE TIT 9;--------------------------------------------------------------------
tit9 movfw CNT_LCDaddwf PCL,F
DT " 0.4 lt/s "
;--------------------------------------------------------------------;* RUTINA DE TIT 8;--------------------------------------------------------------------
tit10 movfw CNT_LCDaddwf PCL,F
DT " PRESIONAR .... "
;--------------------------------------------------------------------
- 35 -
;* RUTINA DE TIT 9;--------------------------------------------------------------------
tit11 movfw CNT_LCDaddwf PCL,F
DT " CLEAR - 2ND ? "
;--------------------------------------------------------------------;* RUTINA DE TIT 12;--------------------------------------------------------------------
tit12 movfw CNT_LCDaddwf PCL,F
DT "FUERA DE RANGO !"
;--------------------------------------------------------------------;* ACLARA PINES DEL LCD;--------------------------------------------------------------------
clrbits bcf PORTA,dat0bcf PORTA,dat1bcf PORTC,dat2bcf PORTC,dat3
return
;--------------------------------------------------------------------;* ACLARA FILAS;--------------------------------------------------------------------
clrfilas bcf PORTB,fil1bcf PORTB,fil2bcf PORTB,fil3bcf PORTC,fil4
return
;--------------------------------------------------------------------;* ENVIA CARACTER AL MODULO;--------------------------------------------------------------------
send_char bsf PORTA,rs ; CARACTERgoto $+2
;--------------------------------------------------------------------;* ENVIA COMANDO AL MODULO
- 36 -
;--------------------------------------------------------------------
send_cmd bcf PORTA,rs ; COMANDOmovwf CHARcall ms_2call clrbits
btfsc CHAR,4bsf PORTA,dat0btfsc CHAR,5bsf PORTA,dat1btfsc CHAR,6bsf PORTC,dat2btfsc CHAR,7bsf PORTC,dat3
bsf PORTA,enopbcf PORTA,e
call clrbits
btfsc CHAR,0bsf PORTA,dat0btfsc CHAR,1bsf PORTA,dat1btfsc CHAR,2bsf PORTC,dat2btfsc CHAR,3bsf PORTC,dat3
bsf PORTA,enopbcf PORTA,e
return
;--------------------------------------------------------------------;* PONE EN CERO REGISTROS DE TIEMPOS;--------------------------------------------------------------------
tau0 movlw .39movwf TMR0clrf OVFLWclrf CNTSEG
return
- 37 -
;--------------------------------------------------------------------;* RUTINA DE CONTEO;--------------------------------------------------------------------;* FREC.= 2 MHz, PREESCALADOR TMR0 = N = 256, PTMR0= 0,555 ms;--------------------------------------------------------------------
conteo clrwdtmovfw TMR0btfss STATUS,Zreturndecf TEMP,Fmovlw .39movwf TMR0incf OVFLW,Fmovlw .9xorwf OVFLW,Wbtfss STATUS,Zreturnclrf OVFLWincf CNTSEG,F
return
;--------------------------------------------------------------------;* RUTINA DE RETARDO 2 ms;--------------------------------------------------------------------
ms_2 clrf TMR0clrwdtmovlw .4 ; 4 * 0.555 ms = 2.22 msxorwf TMR0,Wbnz $-4
return
;--------------------------------------------------------------------;* RUTINA DE RETARDO 20 ms;--------------------------------------------------------------------
ms_20 clrf TMR0clrwdtmovlw .36 ; 36 * 0.555 ms = 19.98 msxorwf TMR0,Wbnz $-4
return
;--------------------------------------------------------------------
- 38 -
;* RUTINA DE RETARDO DE TIEMPO DE MEDIO SEG.;* TEMP * 0.555 ms * 200 = RETARDO;--------------------------------------------------------------------
mdseg movlw .5movwf TEMPcall conteomovfw TEMPbtfss STATUS,Zgoto $-3
return
;--------------------------------------------------------------------;* RUTINA DE RETARDO N SEGUNDOS;--------------------------------------------------------------------
t_nsg movwf TIMESEGcall tau0call conteomovfw TIMESEGxorwf CNTSEG,Wbtfss STATUS,Zgoto $-4
return
;--------------------------------------------------------------------;* RUTINA DE INICIALIZACION DEL MODULO DISPLAY LCD;--------------------------------------------------------------------
LCD_inc bcf PORTA,rs
bcf PORTC,dat3bcf PORTC,dat2bsf PORTA,dat1bcf PORTA,dat0
bsf PORTA,enopbcf PORTA,e
;--------------------------------------------------------------------
movlw 0x28call send_cmdmovlw 0x0Ccall send_cmd
- 39 -
movlw 0x06call send_cmdmovlw 0x01call send_cmd
return
;--------------------------------------------------------------------;* RUTINA DE DESCOMPOSICION DE NUMEROS;* DESCOMPONE UN NUMERO HEXADECIMAL (RM2:RM1);* EN 5 REGISTROS DMIL,MIL,CENT,DEC,UNID;* QUE REPRESENTAN EN DECIMAL A DICHO NUMERO;--------------------------------------------------------------------
hex_bcd clrf DMILclrf MILclrf CENTclrf DECclrf UNID
d_dmil movlw 0x27 ; H'2710' = D'10000'subwf RM2,Wbtfss STATUS,Cgoto d_milbtfsc STATUS,Zgoto d8movwf RM2movlw 0x10subwf RM1,Fbtfss STATUS,Cdecf RM2,Fincf DMIL,Fgoto d_dmil
d8 movlw 0x10subwf RM1,Wbtfss STATUS,Cgoto d_milmovwf RM1clrf RM2incf DMIL,Fgoto d_cent
d_mil movlw 0x03subwf RM2,Wbtfss STATUS,Cgoto d_centbtfsc STATUS,Zgoto d9
- 40 -
movwf RM2movlw 0xE8subwf RM1,Fbtfss STATUS,Cdecf RM2,Fincf MIL,Fgoto d_mil
d9 movlw 0xE8subwf RM1,Wbtfss STATUS,Cgoto d_centmovwf RM1clrf RM2incf MIL,F
d_cent movlw .100movf RM2,Fbtfsc STATUS,Zgoto d10subwf RM1,Wbtfss STATUS,Cdecf RM2,Fmovwf RM1incf CENT,Fgoto d_cent
d10 movlw .100subwf RM1,Wbtfss STATUS,Cgoto d_decincf CENT,Fmovwf RM1goto d10
d_dec movlw .10subwf RM1,Wbtfss STATUS,Cgoto d_unitincf DEC,Fmovwf RM1goto d_dec
d_unit movfw RM1movwf UNID
return
;--------------------------------------------------------------------;* ACLARA REGISTROS DEL TECLADO;--------------------------------------------------------------------
- 41 -
borrar clrf RKEY1clrf RKEY2clrf RKEY3clrf RKEY4clrf RKEY5clrf RKEY6
return
;--------------------------------------------------------------------;* ALARMA;--------------------------------------------------------------------
alarm movlw .4movwf CNT1
inc movlw .125movwf CNT2
call tono_1decfsz CNT2,Fgoto $-2
decfsz CNT1,Fgoto inc
return
tono_1 clrwdtmovlw .20movwf CNT4buzz_onclrwdtdecfsz CNT4,Fgoto $-2movlw .20movwf CNT4buzz_offdecfsz CNT4,Fgoto $-2
return
;--------------------------------------------------------------------;* RUTINA LEE UN DATO DE EEPROM;--------------------------------------------------------------------
lee_1d bsf STATUS,RP0
- 42 -
bcf EECON1,EEPGDbsf EECON1,RD ; EMPIEZA A LEERbcf STATUS,RP0 ; BANK 2
return
;--------------------------------------------------------------------;* RUTINA GRABA UN DATO EN EEPROM;--------------------------------------------------------------------
grb_1d bsf STATUS,RP0 ; BANK 3bcf EECON1,EEPGDbsf EECON1,WREN ; HABILITANDO ESCRITURAmovlw 0x55 ; DATO DE CONTROLmovwf EECON2movlw 0xAA ; DATO DE CONTROLmovwf EECON2bsf EECON1,WR ; SE INICIA ESCRITURAclrwdtbtfsc EECON1,WR ; VERIFICA FIN DE ESCRITURAgoto $-2bcf EECON1,WREN ; DESABILITA ESCRITURAbcf STATUS,RP0 ; BANK 2
return
;--------------------------------------------------------------------;* RUTINA QUE LEE DATOS GUARDADOS EN MEMORIA;--------------------------------------------------------------------
lee_datbsf STATUS,RP1 ; BANK 2
clrf EEADR ; 00call lee_1dmovlw 0xFFxorwf EEDATA,Wbtfsc STATUS,Zclrf EEDATAmovfw EEDATAmovwf RKY1incf EEADR,F ; 01call lee_1dmovlw 0xFFxorwf EEDATA,Wbtfsc STATUS,Zclrf EEDATAmovfw EEDATAmovwf RKY2
- 43 -
incf EEADR,F ; 02call lee_1dmovlw 0xFFxorwf EEDATA,Wbtfsc STATUS,Zclrf EEDATAmovfw EEDATAmovwf RKY3incf EEADR,F ; 03call lee_1dmovlw 0xFFxorwf EEDATA,Wbtfsc STATUS,Zclrf EEDATAmovfw EEDATAmovwf RKY4incf EEADR,F ; 04call lee_1dmovlw 0xFFxorwf EEDATA,Wbtfsc STATUS,Zclrf EEDATAmovfw EEDATAmovwf RKY5
bcf STATUS,RP1 ; BANK 0
movfw RKY1movwf RKEY1movfw RKY2movwf RKEY2movfw RKY3movwf RKEY3movfw RKY4movwf RKEY4movfw RKY5movwf RKEY5
return
;-------------------------------------------------------------------------;* RUTINA DE MULTIPLICACION;* RM3_RM2_RM1 = MULT3_MULT2 * MULT1;* MULTIPLICA 16 * 8 bits = 24 bits;-------------------------------------------------------------------------
mult clrf RM3clrf RM2
- 44 -
clrf RM1movlw .8
movwf MCNTbcf STATUS,C
mult1 clrwdtrrf MULT1,Fbtfss STATUS,Cgoto mult2movfw MULT2addwf RM2,Fbtfsc STATUS,Cincf RM3,Fmovfw MULT3addwf RM3,F
mult2 rrf RM3,Frrf RM2,Frrf RM1,Fdecfsz MCNT,Fgoto mult1
return
;--------------------------------------------------------------------;* RUTINA QUE CALCULA EL CONTADOR CNT2:CNT1;--------------------------------------------------------------------
calc1 clrf CNT1clrf CNT2
movlw 0x27movwf MULT3movlw 0x10movwf MULT2movfw RKEY1movwf MULT1
call mult
movfw RM2movwf CNT2movfw RM1movwf CNT1
movlw 0x03movwf MULT3movlw 0xE8movwf MULT2movfw RKEY2
- 45 -
movwf MULT1
call mult
movfw RM1addwf CNT1,Fbtfsc STATUS,Cincf CNT2,Fmovfw RM2addwf CNT2,F
clrf MULT3movlw .100movwf MULT2movfw RKEY3movwf MULT1
call mult
movfw RM1addwf CNT1,Fbtfsc STATUS,Cincf CNT2,Fmovfw RM2addwf CNT2,F
clrf MULT3movlw .10movwf MULT2movfw RKEY4movwf MULT1
call mult
movfw RM1addwf CNT1,Fbtfsc STATUS,Cincf CNT2,F
movfw RKEY5addwf CNT1,Fbtfsc STATUS,Cincf CNT2,F
return
;--------------------------------------------------------------------;* RUTINA DE CONVERSION ANALOGO DIGITAL
- 46 -
;--------------------------------------------------------------------
conv_ad bsf ADCON0,ADONmovlw .200movwf CNT_ADclrwdtdecfsz CNT_AD,Fgoto $-2bsf ADCON0,GOclrwdtbtfsc ADCON0,GOgoto $-2bcf ADCON0,ADON
return
;--------------------------------------------------------------------;* RUTINA QUE MIDE Y PRESENTA VELOCIDAD DEL MOTOR;--------------------------------------------------------------------
v_motor movlw 0x39 ; DIVIDENDO:3750000movwf DIVIDENDOHHmovlw 0x38movwf DIVIDENDOHLmovlw 0x70movwf DIVIDENDOLL
movlw 0x00 ; DIVISORmovwf DIVISORHHmovfw TMR1Hmovwf DIVISORHLmovfw TMR1Lmovwf DIVISORLL
call dividir
; movfw DIVIDENDOHH; movwf RM3
movfw DIVIDENDOHLmovwf MULT3movfw DIVIDENDOLLmovwf MULT2movlw .40movwf MULT1
call multcall hex_bcd
- 47 -
return
;--------------------------------------------------------------------;* RUTINA DE DIVISION 16/8;* DIVIDE:;* {(RPP2_RPP1)/DREG} = {(RPP2_RPP1)/DREG} + (REMB0/DREG);--------------------------------------------------------------------
divide clrwdtclrf REMB0movlw .8movwf CONT0
loop_a rlf RPP2,Wrlf REMB0,Fmovf DREG,Wsubwf REMB0,Fbtfsc STATUS,Cgoto uok68aaddwf REMB0,Fbcf STATUS,C
uok68a rlf RPP2,Fdecfsz CONT0,Fgoto loop_aclrf TEMPmovlw .8movwf CONT0
loop_b rlf RPP1,Wrlf REMB0,Frlf TEMP,Fmovf DREG,Wsubwf REMB0,Fclrf ACCB5clrwbtfss STATUS,Cincfsz ACCB5,Wsubwf TEMP,Fbtfsc STATUS,Cgoto uok68bmovf DREG,Waddwf REMB0,Fclrf ACCB5clrwbtfsc STATUS,Cincfsz ACCB5,W
- 48 -
addwf TEMP,Fbcf STATUS,C
uok68brlf RPP1,Fdecfsz CONT0,Fgoto loop_b
return
;--------------------------------------------------------------------;*;--------------------------------------------------------------------
prom_10 movlw .20movwf CNT1
clrf CNTP_Lclrf CNTP_H
pm1 ;call ms_2 ; *call conv_ad
movfw ADRESHmovwf RPP2bsf STATUS,RP0 ; BANK1
movfw ADRESLbcf STATUS,RP0 ; BANK0movwf RPP1
movfw RPP1addwf CNTP_L,F
btfsc STATUS,Cincf CNTP_H,F
movfw RPP2addwf CNTP_H,F
decfsz CNT1,Fgoto pm1
;--------------------------------------------------------------------;* SE TERMINO DE SUMAR 10 CONVERSIONES;* SE CALCULA EL PROMEDIO;--------------------------------------------------------------------
movfw CNTP_Hmovwf RPP2
- 49 -
movfw CNTP_Lmovwf RPP1movlw .20movwf DREG
call divide
movfw RPP2movwf MULT3
movfw RPP1movwf MULT2movlw .46movwf MULT1call mult
return
;--------------------------------------------------------------------;* DIVISION : DIVIDENDO(24 BITS)/DIVISOR(24 BITS)->DIVIDENDO(24 BITS);* CON RESTO EN RESTOHH & RESTOHL & RESTOLL (24 BITS);--------------------------------------------------------------------
dividir clrwdtmovlw .24 ; PARA 24 DESPLAZAMIENTOSmovwf TEMPmovf DIVIDENDOHH,Wmovwf ACCDHHmovf DIVIDENDOHL,Wmovwf ACCDHLmovf DIVIDENDOLL,Wmovwf ACCDLLclrf DIVIDENDOHHclrf DIVIDENDOHLclrf DIVIDENDOLLclrf RESTOHHclrf RESTOHLclrf RESTOLL
dloop bcf STATUS,Crlf ACCDLL,Frlf ACCDHL,Frlf ACCDHH,Frlf RESTOLL,Frlf RESTOHL,Frlf RESTOHH,F
movf DIVISORHH,Wsubwf RESTOHH,W ; COMPRUEBA SI DIVISOR>RESTO
- 50 -
btfss STATUS,Zgoto nochk
movf DIVISORHL,Wsubwf RESTOHL,W ; COMPRUEBA SI DIVISOR>RESTObtfss STATUS,Zgoto nochk
movf DIVISORLL,Wsubwf RESTOLL,W ; SI MSB ES IGUAL COMPROBAR LSB
nochk btfss STATUS,C ; CARRY A UNO SI RESTO>DIVISORgoto nogo
movf DIVISORLL,W ; RESTO-DIVISOR A RESTOsubwf RESTOLL,Fbtfss STATUS,Cdecf RESTOHL,F
movf DIVISORHL,Wsubwf RESTOHL,Fbtfss STATUS,Cdecf RESTOHH,F
movf DIVISORHH,Wsubwf RESTOHH,Fbsf STATUS,C
nogo rlf DIVIDENDOLL,Frlf DIVIDENDOHL,Frlf DIVIDENDOHH,Fdecfsz TEMP,Fgoto dloop
return
;--------------------------------------------------------------------;* SUENA EL BUZZER 3 VECES;--------------------------------------------------------------------
buzzer btfsc RFLAG,keyreturn
buzz_onmovlw .2call t_nsgbuzz_off
; movlw .1
- 51 -
; call t_nsg; buzz_on; movlw .5; call t_nsg; buzz_off; movlw .1; call t_nsg; buzz_on; movlw .1; call t_nsg; buzz_off
return
;--------------------------------------------------------------------;*********** RUTINA DE INTERRUPCION PARA EL TECLADO **************;--------------------------------------------------------------------
r_int movwf W_TEMP ; PUSHswapf STATUS,Wclrf STATUSmovwf ST_TEMPmovfw PCLATHmovwf PCLATH_TEMPclrf PCLATH
btfsc INTCON,RBIFgoto tecld
;--------------------------------------------------------------------;* TEMPORIZACION TMR1 TMR1H:TMR1L;--------------------------------------------------------------------
clrf CNT4btfsc RFLAG,fingoto tt0
clrf TMR1L ; ACLARA REGISTROS DE TIEMPOclrf TMR1Hbcf PIR1,TMR1IFbcf RFLAG,dsp
bsf T1CON,TMR1ON ; HABILITA TMR1bsf RFLAG,fin
bcf INTCON,INTF
goto ret1
- 52 -
tt0 bcf T1CON,TMR1ONbcf RFLAG,finbsf RFLAG,dsp
call v_motor
bcf INTCON,INTF
ret1 movfw PCLATH_TEMP ; POPmovwf PCLATHswapf ST_TEMP,Wmovwf STATUSswapf W_TEMP,Fswapf W_TEMP,W
retfie
;--------------------------------------------------------------------;************************ RUTINA DE TECLADO ***********************;--------------------------------------------------------------------
tecld bsf PORTB,fil1bsf PORTB,fil2bsf PORTB,fil3bsf PORTC,fil4
tec2 fil1,n1,n2,n3,nuptec2 fil2,n4,n5,n6,ndown ; DIGITO 4,5,6 o DOWN ?tec2 fil3,n7,n8,n9,n2nd ; DIGITO 7,8,9 o 2ND ?tec1 fil4,nclr,n0,nhlp,nent ; DIGITO CLEAR,0,HELP o ENTER ?
goto ret ; NINGUNA TECLA
n1 rkey .1,col1 ; SE PRESIONO DIGITO 1n2 rkey .2,col2 ; SE PRESIONO DIGITO 2n3 rkey .3,col3 ; SE PRESIONO DIGITO 3nup rkey .12,col4 ; SE PRESIONO DIGITO UPn4 rkey .4,col1 ; SE PRESIONO DIGITO 4n5 rkey .5,col2 ; SE PRESIONO DIGITO 5n6 rkey .6,col3 ; SE PRESIONO DIGITO 6ndown rkey .13,col4 ; SE PRESIONO DIGITO DOWNn7 rkey .7,col1 ; SE PRESIONO DIGITO 7n8 rkey .8,col2 ; SE PRESIONO DIGITO 8n9 rkey .9,col3 ; SE PRESIONO DIGITO 9n2nd rkey .14,col4 ; SE PRESIONO DIGITO 2NDnclr rkey .10,col1 ; SE PRESIONO DIGITO CLEARn0 rkey .0,col2 ; SE PRESIONO DIGITO 0
- 53 -
nhlp rkey .11,col3 ; SE PRESIONO DIGITO HELPnent rkey .15,col4 ; SE PRESIONO DIGITO ENTER
ret call clrfilas
movfw INDFmovwf TKEY
bcf INTCON,RBIF
movfw PCLATH_TEMP ; POPmovwf PCLATHswapf ST_TEMP,Wmovwf STATUSswapf W_TEMP,Fswapf W_TEMP,W
retfie
;--------------------------------------------------------------------;********************** PROGRAMA PRINCIPAL ************************;--------------------------------------------------------------------
inicio buzz_offactv_off
bsf STATUS,RP0 ; BANK 1
movlw B'00000000'movwf TRISAmovlw B'11110001'movwf TRISBmovlw B'00100000'movwf TRISCmovlw B'00000110'movwf ADCON1movlw B'01000111' ; N=256, TIMER, PULLUP:ONmovwf OPTION_REG
; bsf PIE1,TMR1IE ; HABILITA INT. CALENDARIO
bcf STATUS,RP0 ; BANK 0
buzz_offactv_off
; bsf INTCON,PEIE ; INT. PERIFERICAS; bsf INTCON,INTE ; INT. FLANCOS
- 54 -
bcf INTCON,INTFbcf PIR1,TMR1IF
movlw B'00110000' ; CONFIGURA TMR1movwf T1CON
;--------------------------------------------------------------------;* INICIALIZACION;--------------------------------------------------------------------;* CONFIGURA EL MODULO DISPLAY LCD: MODO 4 BITS;--------------------------------------------------------------------
call LCD_inc ; CONFIGURA EL DISPLAY LCD
m0 bcf INTCON,GIE ; DESABILITA INT.bcf INTCON,RBIF
actv_offbuzz_off
movlw 0x20movwf FSR
clrf RFLAG
call clrfilas; bsf INTCON,RBIE
bcf INTCON,RBIF
call ms_20
movlw 0x28call send_cmd
;--------------------------------------------------------------------;* PRESENTACION DE MENSAJES INICIALES;--------------------------------------------------------------------;* PRESENTACION DE TITULO 1 FILA 1;--------------------------------------------------------------------
msj 0x01,tit1msj 0xC0,tit2
movlw .3call t_nsg
msj 0x01,tit3 ; " PROYECTO "msj 0xC0,tit4 ; " CAUDALIMETRO "
- 55 -
m1 actv_offbuzz_off
goto f1
movlw .3call t_nsg
msj 0x01,tit5 ; " PROGRAMAR .... "msj 0xC0,tit6 ; " CAUDAL REF. "
movlw .3call t_nsg
msj 0x01,tit8 ; " CAUDAL MAX. "msj 0xC0,tit9 ; " 20000 RPM "
movlw .3call t_nsg
msj 0x01,tit6 ; " CAUDAL REF. "msj 0xC0,tit7 ; " 00000 RPM "
call lee_dat
movlw 0xC3 ; DIRECCIONcall send_cmd
movfw RKEY1call conv_asccall send_charmovfw RKEY2call conv_asccall send_charmovfw RKEY3call conv_asccall send_charmovfw RKEY4call conv_asccall send_charmovfw RKEY5call conv_asccall send_char
movlw 0x0D ; PARPADEA CARACTERcall send_cmdmovlw 0xC3 ; DIRECCION
- 56 -
call send_cmd
m2 movlw 0x20movwf FSR ; RKEY1
m3 bcf INTCON,RBIF; bsf INTCON,GIE ; HABILITA GLOBAL INTERRUPCCION
clrwdtbtfss RFLAG,key ; PRESIONARON UNA TECLA ?goto $-2 ; NO
bcf INTCON,GIE ; SI, DESAB. INTERRUP.bcf RFLAG,keymovfw INDFxorlw 0x0A ; PRESIONARON CLEAR ?bz m1
movfw INDFxorlw 0x0E ; PRESIONARON START ?bz rn0
movlw .10 ; SOLO NUMEROS 0,1,.......,9subwf INDF,Wbtfsc STATUS,Cgoto m3
movfw INDFcall conv_asccall send_char ; ENVIA CARACTERincf FSR,F ; INCREMENTA FSR
movlw 0x25xorwf FSR,Wbtfss STATUS,Zgoto m3 ; PREGUNTA SI LLEGO AL FINAL
movlw 0x0C ; DEJA DE PARPADEA CARACTERcall send_cmd
movlw .2call t_nsg
msj 0x01,tit10 ; " PRESIONAR .... "msj 0xC0,tit11 ; " CLEAR - 2ND ? "
m4 bcf INTCON,RBIF; bsf INTCON,GIE ; HABILITA GLOBAL INTERRUPCCION
- 57 -
clrwdtbtfss RFLAG,key ; PRESIONARON UNA TECLA ?goto $-2 ; NO
bcf INTCON,GIE ; SI, DESAB. INTERRUP.bcf RFLAG,keymovfw INDFxorlw 0x0A ; PRESIONARON CLEAR ?bz m1
movfw INDFxorlw 0x0E ; PRESIONARON 2ND ?bnz m4
goto rn0b
;--------------------------------------------------------------------;************************* PRESIONARON RUN **************************;--------------------------------------------------------------------;* CALCULA TEMPERATURA DE REFERENCIA Y TIEMPO PROGRAMADO;--------------------------------------------------------------------
rn0 movlw 0x20xorwf FSR,Wbtfss STATUS,Zgoto rr1
movfw RKY1movwf RKEY1goto rn0b
rr1 movlw 0x21xorwf FSR,Wbtfss STATUS,Zgoto rr2
movfw RKY2movwf RKEY2goto rn0b
rr2 movlw 0x22xorwf FSR,Wbtfss STATUS,Zgoto rr3
movfw RKY3movwf RKEY3
- 58 -
goto rn0b
rr3 movlw 0x23xorwf FSR,Wbtfss STATUS,Zgoto rr4
movfw RKY4movwf RKEY4goto rn0b
rr4 movfw RKY5movwf RKEY5
;--------------------------------------------------------------------;* VERIFICA CAUDAL PROGRAMADO;--------------------------------------------------------------------;* MAXIMO 20000 RPM;--------------------------------------------------------------------
rn0b movlw 0x0C ; DEJA DE PARPADEA CARACTERcall send_cmd
movlw .2subwf RKEY1,Wbtfss STATUS,Cgoto dsc1 ; CAUDAL CORRECTO
movlw .2xorwf RKEY1,Wbtfss STATUS,Zgoto rn0a ;
movfw RKEY2btfss STATUS,Zgoto rn0a ;
movfw RKEY3btfss STATUS,Zgoto rn0a ;
movfw RKEY4btfss STATUS,Zgoto rn0a ;
movfw RKEY5btfss STATUS,Zgoto rn0a ;
- 59 -
;--------------------------------------------------------------------;********************* TEMPERATURA CORRECTA ***********************;********************* TP_H:TP_L ***********************;--------------------------------------------------------------------
dsc1 call calc1 ; CALCULA CAUDAL REF.
movfw CNT2movwf TP_Hmovfw CNT1movwf TP_L
goto rn1
;********************************************************************;--------------------------------------------------------------------;************************** DATO INVALIDO **************************;--------------------------------------------------------------------
rn0a msj 0x01,tit12 ; "FUERA DE RANGO !"msj 0xC0,tit7 ; " 00000 RPM "
movlw 0xC3 ; DIRECCIONcall send_cmd
movfw RKEY1call conv_asccall send_charmovfw RKEY2call conv_asccall send_charmovfw RKEY3call conv_asccall send_charmovfw RKEY4call conv_asccall send_charmovfw RKEY5call conv_asccall send_char
goto m1
;********************************************************************;--------------------------------------------------------------------;************ DATOS CORRECTOS SE SALVA PROGRAMACION ***************;--------------------------------------------------------------------
- 60 -
rn1 movfw RKEY1movwf RKY1movfw RKEY2movwf RKY2movfw RKEY3movwf RKY3movfw RKEY4movwf RKY4movfw RKEY5movwf RKY5
;--------------------------------------------------------------------;* GRABA PROGRAMACION EN MEMORIA EEPROM;--------------------------------------------------------------------
bsf STATUS,RP1 ; BANK 2
movfw RKY1movwf EEDATAclrf EEADRcall grb_1dmovfw RKY2movwf EEDATAincf EEADR,Fcall grb_1dmovfw RKY3movwf EEDATAincf EEADR,Fcall grb_1dmovfw RKY4movwf EEDATAincf EEADR,Fcall grb_1dmovfw RKY5movwf EEDATAincf EEADR,Fcall grb_1d
bcf STATUS,RP1 ; BANK 0
;--------------------------------------------------------------------;****************** MEDIDA Y CONTROL DE CAUDAL ********************;--------------------------------------------------------------------
f1 nop
msj 0x01,tit4
- 61 -
msj1 0xC0,tit14
goto md1
;--------------------------------------------------------------------;***************** MUESTRA CAUDAL DE REFERENCIA *******************;--------------------------------------------------------------------
movlw 0x87 ; DIRECCIONcall send_cmd
movfw RKEY1call conv_asccall send_charmovfw RKEY2call conv_asccall send_charmovfw RKEY3call conv_asccall send_charmovfw RKEY4call conv_asccall send_charmovfw RKEY5call conv_asccall send_char
;--------------------------------------------------------------------;* MIDE RPM;--------------------------------------------------------------------
md1 bcf RFLAG,dspbsf INTCON,INTE ; INT. FLANCOSbcf INTCON,INTFbcf PIR1,TMR1IFbcf T1CON,TMR1ON
bsf INTCON,GIE
call tau0md2 call conteo; btfsc RFLAG,key; goto md5
btfsc RFLAG,dspgoto md4 ; PRESENTACIONbtfsc PIR1,TMR1IFgoto md3movlw .1xorwf CNTSEG,W
- 62 -
btfss STATUS,Zgoto md2
;--------------------------------------------------------------------;* NO DETECTA PULSO O EL PULSO DEMORO MAS DE UN SEGUNDO;--------------------------------------------------------------------
md3 bcf INTCON,GIE
actv_off
movlw 0xC7 ; DIRECCIONcall send_cmd
movlw '0'call send_charmovlw '.'call send_charmovlw '0'call send_charmovlw '0'call send_char
call mdseg
goto md1
;--------------------------------------------------------------------;* DETECTO 2 FLANCOS DE SUBIDA;* Y NO SUPERO TMR1H:TMR1L: 65536;* APROXIMADAMENTE 1 Hz 60 RPM;* PRESENTACION LCD;--------------------------------------------------------------------
md4 bcf INTCON,GIE
movlw 0xC7 ; DIRECCIONcall send_cmd
movlw '0'call send_charmovlw '.'call send_charmovlw '0'call send_charmovfw DMILcall conv_asccall send_char
- 63 -
; movfw UNID; call conv_asc; call send_char
movlw .3subwf CENT,Wbtfss STATUS,Cactv_offbtfsc STATUS,Cactv_on
call mdseg
goto md1
;--------------------------------------------------------------------;* PRESENTARON UNA TECLA;--------------------------------------------------------------------
md5 bcf INTCON,GIE ; SI, DESAB. INTERRUP.bcf RFLAG,keymovfw INDFxorlw 0x0A ; PRESIONARON CLEAR ?btfsc STATUS,Zgoto m1 ; RESET
goto md2 ; FALSA ALARMA
;--------------------------------------------------------------------;* PAGINA 1;--------------------------------------------------------------------
ORG 0x800
;--------------------------------------------------------------------;* RUTINA DE TIT 13;--------------------------------------------------------------------
tit13 movfw CNT_LCDaddwf PCL,F
DT "CD REF:00000 RPM"
;--------------------------------------------------------------------;* RUTINA DE TIT 14;--------------------------------------------------------------------
- 64 -
tit14 movfw CNT_LCDaddwf PCL,F
DT "CAUDAL:0.00 Lt/s"
END