IF_CASQUERO ZAIDMAN_FIEE - Universidad Nacional del

Anuncio
UNIVERSIDAD NACIONAL DEL CALLAO
FACULTAD DE INGENIERIA ELÉCTRICA Y ELECTRÓNICA
DISEÑO DE UN SENSOR DE CAUDAL AISLADO CON CONTROL
ELECTRÓ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 JUNIO
DEL 2011
INDICE
ÍNDICE …………………………………………………………………………………………..……….
RESUMEN
CAPÍTULO 1: INTRODUCCIÓN……………………………………………………..…..…....
1. Introducción………………………………………………………………………………….…..
CAPÍTULO 2: PARTE TEÓRICA ………………………………………………………..……...
2. Parte teórica………………………………………………………………………………….….
2.1 Teorías relacionadas al módulo mecánico………….………………………..
2.1.1 Campo magnético………………………………………………………………..
2.2.2 Las turbinas de acción …………………………………………………………
2.1.3 Permeabilidad magnética……………………………………………….…..
2.2 Teorías relacionadas al módulo electrónico ……………………………..…
2.2.1 El sensor +óptico de barrera………………………………………………..
2.2.2 El encoder absoluto……………………………………………………………..
2.3 Conocimientos relacionados al controlador digital……………………...
CAPÍTULO 3: MATERIALES Y MÉTODOS…………………………………………..……..
3. Materiales y métodos……………………………………….………………………………..
3.1 Materiales……………………………………………………………………………………
3.1.1 El grabador de PICs………………………………………………………………
3.1.2 El entrenador basado en el PIC 16F876A………………………………
3.1.3 La tarjeta de control………..…………………………………………………..
3.1.4 La carcasa acondicionada………………………………………………….…
3.1.5 El transductor electrónico………………………………………………….…
3.1.6 Banco de pruebas con el prototipo del sensor……………………...
3.2 Métodos…………………………………………………………………………………………
CAPÍTULO 4: RESULTADOS ……………………………………………………………..........
4. Resultados……………………………………………………………………………………….…
CAPÍTULO 5: DISCUSIÓN……………………………………………………………….………..
5. Discusión……………………………………………………………………………………………
5.1.1 Discusión respecto al alcance de la investigación………………..
5.1.2 Discusión respecto al material desarrollado …………………….…
5.1.3 Discusión respecto al procesamiento de la información……...
5.1.4 Discusión respecto a la utilidad de la presente investigación
CAPÍTULO 6: REFERENCIAS ……………………………………………………………….…...
6. Referencias bibliográficas……………………………………………………………….…
APÉNDICE ……………………………………………………………………………………….…....
ANEXOS …………………………………………………………………………………………….....
-
1 -
Pág.
1
2
3
3
5
5
5
5
6
7
8
8
9
10
16
16
16
16
16
17
18
19
21
22
23
23
24
24
24
24
24
24
26
26
27
28
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.
-
2 -
CAPÍTULO 1
INTRODUCCIÓ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:
-
3 -
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%.
-
4 -
CAPÍTULO 2
PARTE 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 -
Figura No 2.1
LÍ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.2
MEDIDOR 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.3
GIRO 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 -
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 A
HABIENDO 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.
-
8 -
Figura No 2.5
CIRCUITO 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,
ABZAB). 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.
-
9 -
Figura No 2.6
FORMA 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.7
PULSOS 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 -
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
-
11 -
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
-
12 -
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
-
13 -
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
-
14 -
Figura No 2.8
DISTRIBUCIÓN DE PINES DEL PIC 16F876A
-
15 -
CAPÍTULO 3
MATERIALES 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.1
EL GRABADO DE PICs
3.1.2 El entrenador basado en el PIC 16F876A
El entrenador utilizado se muestra en la Figura No 3.2
-
16 -
Figura No 3.2
ENTRENADOR 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.3
ESQUEMA DEL LADO POSTERIOR DEL PROTOTIPO DE LA TARJETA CONTROLADORA
-
17 -
Figura No 3.4
ESQUEMA 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.5
PROTOTIPO 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 -
la figura No 3.6 se muestra el acondicionamiento de la carcasa mecánica ya instalada
en el banco de prueba.
Figura No 3.6
ACONDICIONAMIENTO DE LA CARCASA
3.1.5 El transductor electrónico
En la figura No 3.7 se muestra los componentes del transductor electrónico
desarrollado.
Figura No 3.7
COMPONENTES DEL TRANSDUCTOR ELECTRÓNICO
En la figura No 3.8 se muestra el transductor electrónico ensamblado.
-
19 -
Figura No 3.8
TRANSDUCTOR 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.9
TRANSDUCTOR 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.
-
20 -
Figura No 3.10
TRANSDUCTOR 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.11
BANCO DE PUREBA CON EL SENSOR INCORPORADO
-
21 -
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.
-
22 -
CAPÍTULO 4
RESULTADOS
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.1
RESULTADOS FINALES OBTENIDOS
FRECUENCIA DE
CAUDAL
QUE
FRECUENCIA DE PULSACIÓN
LECTURA
INGRESA
AL VELOCIDAD DEL VELOCIDAD DEL PULSACIÓN
EFECTUADA
[Ciclos/segundo]
SENSOR [lt/s]
EJE
PRINCIPAL EJE SECUNDARIO [Ciclos/minuto]
[lt/s]
EN
ESTADO (RPMp)
(RPMs)
ESTABEL
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
1
2
DESCRIPCIÓN
Materiales para elaboración de transductores
Servicios transporte, comunicación, movilidad, programación
Total S/.
Todo ha sido totalmente financiado por el autor del presente proyecto
-
23 -
MONTO (S/.)
3,900-00
1,200.00
5,100.00
CAPÍTULO 5
DISCUSIÓ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:
-
24 -
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.
-
25 -
CAPÍTULO 6
REFERENCIAS
6. REFERENCIAS BIBLIOGRÁFICAS
Las referencias bibliográficas utilizadas han sido las siguientes:
Creus, Antonio. INSTRUMENTACIÓN INDUSTRIAL, España: Alfaomega
edición.1997
Marcombo, 6ta
Villalobos, Gustavo. MEDICIÓN DE FLUJO, México: Noriega Limusa, 1 ra edición.1999
Rizzoni, Giorgio. PRINCIPIOS Y APLICACIONES DE INGENIERÍA ELÉCTRICA, Bogotá-Colombia: Mc
Graw 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, 2 da 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, 2 da edición.
2006
Tokheim, Roger. ELECTRÓNICA DIGITAL, México: McGraw-Hil Interamericana, 7ma
edición. 2008
-
26 -
APENDICE
El diagrama medios-fines constituye el cuadro de trabajo de la investigación que ha servido de referente para establecer la
deducció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
-
27 -
ANEXOS
ANEXO No 1: ARTIFICIOS DE PROGRAMACIÓN DESARROLLADOS DURANTE LA
INVESTIGACIÓN
;-------------------------------------------------------------------;* CAUDALIMETRO
;-------------------------------------------------------------------LIST
P=16F876A
INCLUDE
<P16F876A.INC>
__CONFIG
0x1F31
;-------------------------------------------------------------------;* SE DEFINEN PINES DEL PORTA
;-------------------------------------------------------------------rs
e
dat0
dat1
EQU
EQU
EQU
EQU
1
2
3
5
; COMANDO/CARACTER
; ENABLE LCD
; D4 LCD
; D5 LCD
;-------------------------------------------------------------------;* SE DEFINEN PINES DEL PORTB
;-------------------------------------------------------------------cpz
fil3
fil2
fil1
EQU
EQU
EQU
EQU
0
1
2
3
; CRUZE POR CERO
; TECLADO: FILA 2
; TECLADO: FILA 3
; TECLADO: FILA 4
col1
col2
col3
col4
EQU
EQU
EQU
EQU
4
6
7
5
; TECLADO: COLUMNA 1
; TECLADO: COLUMNA 2
; TECLADO: COLUMNA 3
; TECLADO: COLUMNA 4
;-------------------------------------------------------------------;* SE DEFINEN PINES DEL PORTC
;-------------------------------------------------------------------dat2
dat3
buzz
actv
EQU
EQU
EQU
EQU
0
1
3
6
; D6 LCD
; D7 LCD
; BUZZER
-
28 -
fil4
EQU
7
; TECLADO: FILA 1
;-------------------------------------------------------------------;* SE DEFINEN FLAGS DEL REGISTRO RFLAG
;-------------------------------------------------------------------key
fin
dsp
EQU
EQU
EQU
0
1
2
; FLAG DE TECLADO
; TEMPORIZACION
;-------------------------------------------------------------------;* REGISTROS GENERALES DE LA MEMORIA RAM
;-------------------------------------------------------------------CBLOCK
0x20
RKEY1
RKEY2
RKEY3
RKEY4
RKEY5
RKEY6
; TECLA 1
; TECLA 2
; TECLA 3
; TECLA 4
; TECLA 5
; TECLA 6
TEMP,CNTSEG,OVFLW,CNT_LCD,CHAR,RFLAG
UNID,DEC,CENT,MIL,DMIL
RM3,RM2,RM1,MULT1,MULT2,MULT3,CNT4,CNT2,CNT1
PCLATH_TEMP,ST_TEMP,W_TEMP
TIMESEG,MCNT,CNT_AD
RG_TIME,TP_H,TP_L,TM_H,TM_L
CNTP_H,CNTP_L,RPP1,RPP2,REMB0,DREG,CONT0
ACCB5,T_TIME,CNT_D,CNT_G,TH_H,TH_L,TL_H,TL_L
RPWM,TKEY,RFLAG1
TP1_H,TP1_L
DIVISORHH,DIVISORHL,DIVISORLL,DIVIDENDOHH
DIVIDENDOHL,DIVIDENDOLL,RESTOHH,RESTOHL
RESTOLL,ACCDHH,ACCDHL,ACCDLL
ENDC
CBLOCK
0x71
RKY1,RKY2,RKY3,RKY4,RKY5,RKY6
RUNID,RDEC,RCENT,RMIL,RDMIL
-
29 -
ENDC
;-------------------------------------------------------------------;* SE DEFINEN ABREVIATURAS
;-------------------------------------------------------------------#DEFINE
#DEFINE
#DEFINE
#DEFINE
buzz_on
buzz_off
actv_on
actv_off
bsf
bcf
bcf
bsf
PORTC,buzz
PORTC,buzz
PORTC,actv
PORTC,actv
;-------------------------------------------------------------------;* MACROS
;-------------------------------------------------------------------;* MACRO DE DETECCION DE TECLA MARCADA
;-------------------------------------------------------------------tec1
MACRO
bcf
btfss
goto
btfss
goto
btfss
goto
btfss
goto
bsf
a,b,c,d,e
PORTC,a
PORTB,col1
b
PORTB,col2
c
PORTB,col3
d
PORTB,col4
e
PORTC,a
; SE COLOCA EN BAJO LA FILA
; Y SE PREGUNTA A LAS
; CORRESPONDIENTES COLUMNAS
; SE COLOCA EN ALTO LA FILA
ENDM
;-------------------------------------------------------------------;* MACRO DE DETECCION DE TECLA MARCADA
;-------------------------------------------------------------------tec2
MACRO
bcf
btfss
goto
btfss
goto
btfss
goto
btfss
goto
bsf
a,b,c,d,e
PORTB,a
PORTB,col1
b
PORTB,col2
c
PORTB,col3
d
PORTB,col4
e
PORTB,a
; SE COLOCA EN BAJO LA FILA
; Y SE PREGUNTA A LAS
; CORRESPONDIENTES COLUMNAS
; SE COLOCA EN ALTO LA FILA
-
30 -
ENDM
;-------------------------------------------------------------------;* MACRO DE GRABACION EN LA RAM DE LA TECLA MARCADA
;* SE USA DIRECCIONAMIENTO INDIRECTO (FSR,INDF)
;-------------------------------------------------------------------rkey
MACRO
a,b
movlw a
movwf INDF
call
alarm
call ms_20
clrwdt
btfss PORTB,b
goto $-2
call ms_20
bsf
RFLAG,key
goto ret
ENDM
;-------------------------------------------------------------------;* MACRO DE MENSAJES
;-------------------------------------------------------------------msj
MACRO
a,b
movlw a
call send_cmd
clrf CNT_LCD
call b
call send_char
incf CNT_LCD,F
movlw .16
xorwf CNT_LCD,W
btfss STATUS,Z
goto $-6
; 20 CARACTERES
ENDM
;-------------------------------------------------------------------;* MACRO DE MENSAJES
;-------------------------------------------------------------------msj1
MACRO
a,b
-
31 -
movlw a
call send_cmd
clrf CNT_LCD
bsf
PCLATH,3
call b
clrf
PCLATH
call send_char
incf CNT_LCD,F
movlw .16
xorwf CNT_LCD,W
btfss STATUS,Z
goto $-8
; 16 CARACTERES
ENDM
;-------------------------------------------------------------------;* INICIALIZA VECTOR DE RESET
;-------------------------------------------------------------------ORG
0x000
nop
nop
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
retlw
retlw
retlw
retlw
retlw
retlw
addwf
PCL,F
'0'
'1'
'2'
'3'
'4'
'5'
-
32 -
retlw
retlw
retlw
retlw
'6'
'7'
'8'
'9'
;-------------------------------------------------------------------;* RUTINA DE TIT 1
;-------------------------------------------------------------------tit1
movfw CNT_LCD
addwf PCL,F
DT
" PROYECTO DE "
;-------------------------------------------------------------------;* RUTINA DE TIT 2
;-------------------------------------------------------------------tit2
movfw CNT_LCD
addwf PCL,F
DT
"INVESTIGACION 01"
;-------------------------------------------------------------------;* RUTINA DE TIT 3
;-------------------------------------------------------------------tit3
movfw CNT_LCD
addwf PCL,F
DT
" PROYECTO "
;-------------------------------------------------------------------;* RUTINA DE TIT 4
;-------------------------------------------------------------------tit4
movfw CNT_LCD
addwf PCL,F
DT
" CAUDALIMETRO "
;-------------------------------------------------------------------;* RUTINA DE TIT 5
;-------------------------------------------------------------------tit5
movfw CNT_LCD
addwf PCL,F
-
33 -
DT
" PROGRAMAR .... "
;-------------------------------------------------------------------;* RUTINA DE TIT 6
;-------------------------------------------------------------------tit6
movfw CNT_LCD
addwf PCL,F
DT
" CAUDAL REF. "
;-------------------------------------------------------------------;* RUTINA DE TIT 7
;-------------------------------------------------------------------tit7
movfw CNT_LCD
addwf PCL,F
DT
" 0.00 lt/s "
;-------------------------------------------------------------------;* RUTINA DE TIT 8
;-------------------------------------------------------------------tit8
movfw CNT_LCD
addwf PCL,F
DT
" CAUDAL MAX. "
;-------------------------------------------------------------------;* RUTINA DE TIT 9
;-------------------------------------------------------------------tit9
movfw CNT_LCD
addwf PCL,F
DT
" 0.4 lt/s "
;-------------------------------------------------------------------;* RUTINA DE TIT 8
;-------------------------------------------------------------------tit10
movfw CNT_LCD
addwf PCL,F
DT
" PRESIONAR .... "
;--------------------------------------------------------------------
34 -
;* RUTINA DE TIT 9
;-------------------------------------------------------------------tit11
movfw CNT_LCD
addwf PCL,F
DT
" CLEAR - 2ND ? "
;-------------------------------------------------------------------;* RUTINA DE TIT 12
;-------------------------------------------------------------------tit12
movfw CNT_LCD
addwf PCL,F
DT
"FUERA DE RANGO !"
;-------------------------------------------------------------------;* ACLARA PINES DEL LCD
;-------------------------------------------------------------------clrbits bcf
bcf
bcf
bcf
PORTA,dat0
PORTA,dat1
PORTC,dat2
PORTC,dat3
return
;-------------------------------------------------------------------;* ACLARA FILAS
;-------------------------------------------------------------------clrfilas bcf
bcf
bcf
bcf
PORTB,fil1
PORTB,fil2
PORTB,fil3
PORTC,fil4
return
;-------------------------------------------------------------------;* ENVIA CARACTER AL MODULO
;-------------------------------------------------------------------send_char
goto
bsf
$+2
PORTA,rs
; CARACTER
;-------------------------------------------------------------------;* ENVIA COMANDO AL MODULO
-
35 -
;-------------------------------------------------------------------send_cmd bcf
PORTA,rs
movwf CHAR
call
ms_2
call
clrbits
btfsc
bsf
btfsc
bsf
btfsc
bsf
btfsc
bsf
CHAR,4
PORTA,dat0
CHAR,5
PORTA,dat1
CHAR,6
PORTC,dat2
CHAR,7
PORTC,dat3
bsf
nop
bcf
PORTA,e
call
clrbits
; COMANDO
PORTA,e
btfsc
bsf
btfsc
bsf
btfsc
bsf
btfsc
bsf
CHAR,0
PORTA,dat0
CHAR,1
PORTA,dat1
CHAR,2
PORTC,dat2
CHAR,3
PORTC,dat3
bsf
nop
bcf
PORTA,e
PORTA,e
return
;-------------------------------------------------------------------;* PONE EN CERO REGISTROS DE TIEMPOS
;-------------------------------------------------------------------tau0
movlw .39
movwf TMR0
clrf OVFLW
clrf CNTSEG
return
-
36 -
;-------------------------------------------------------------------;* RUTINA DE CONTEO
;-------------------------------------------------------------------;* FREC.= 2 MHz, PREESCALADOR TMR0 = N = 256, PTMR0= 0,555 ms
;-------------------------------------------------------------------conteo
clrwdt
movfw TMR0
btfss STATUS,Z
return
decf TEMP,F
movlw .39
movwf TMR0
incf OVFLW,F
movlw .9
xorwf OVFLW,W
btfss STATUS,Z
return
clrf OVFLW
incf CNTSEG,F
return
;-------------------------------------------------------------------;* RUTINA DE RETARDO 2 ms
;-------------------------------------------------------------------ms_2 clrf
TMR0
clrwdt
movlw .4
xorwf TMR0,W
bnz
$-4
; 4 * 0.555 ms = 2.22 ms
return
;-------------------------------------------------------------------;* RUTINA DE RETARDO 20 ms
;-------------------------------------------------------------------ms_20 clrf
TMR0
clrwdt
movlw .36
xorwf TMR0,W
bnz
$-4
; 36 * 0.555 ms = 19.98 ms
return
;--------------------------------------------------------------------
37 -
;* RUTINA DE RETARDO DE TIEMPO DE MEDIO SEG.
;* TEMP * 0.555 ms * 200 = RETARDO
;-------------------------------------------------------------------mdseg
movlw .5
movwf TEMP
call conteo
movfw TEMP
btfss STATUS,Z
goto $-3
return
;-------------------------------------------------------------------;* RUTINA DE RETARDO N SEGUNDOS
;-------------------------------------------------------------------t_nsg movwf
call
call
movfw
xorwf
btfss
goto
TIMESEG
tau0
conteo
TIMESEG
CNTSEG,W
STATUS,Z
$-4
return
;-------------------------------------------------------------------;* RUTINA DE INICIALIZACION DEL MODULO DISPLAY LCD
;-------------------------------------------------------------------LCD_inc
bcf
PORTA,rs
bcf
bcf
bsf
bcf
PORTC,dat3
PORTC,dat2
PORTA,dat1
PORTA,dat0
bsf
nop
bcf
PORTA,e
PORTA,e
;-------------------------------------------------------------------movlw 0x28
call send_cmd
movlw 0x0C
call send_cmd
-
38 -
movlw 0x06
call send_cmd
movlw 0x01
call 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
clrf
clrf
clrf
clrf
DMIL
MIL
CENT
DEC
UNID
d_dmil movlw
subwf
btfss
goto
btfsc
goto
movwf
movlw
subwf
btfss
decf
incf
goto
d8
movlw
subwf
btfss
goto
movwf
clrf
incf
goto
d_mil
0x27
RM2,W
STATUS,C
d_mil
STATUS,Z
d8
RM2
0x10
RM1,F
STATUS,C
RM2,F
DMIL,F
d_dmil
0x10
RM1,W
STATUS,C
d_mil
RM1
RM2
DMIL,F
d_cent
; H'2710' = D'10000'
movlw 0x03
subwf RM2,W
btfss STATUS,C
goto d_cent
btfsc STATUS,Z
goto d9
-
39 -
d9
movwf RM2
movlw 0xE8
subwf RM1,F
btfss STATUS,C
decf RM2,F
incf MIL,F
goto d_mil
movlw 0xE8
subwf RM1,W
btfss STATUS,C
goto d_cent
movwf RM1
clrf RM2
incf
MIL,F
d_cent movlw .100
movf RM2,F
btfsc STATUS,Z
goto d10
subwf RM1,W
btfss STATUS,C
decf RM2,F
movwf RM1
incf CENT,F
goto d_cent
d10
movlw .100
subwf RM1,W
btfss STATUS,C
goto d_dec
incf CENT,F
movwf RM1
goto d10
d_dec movlw .10
subwf RM1,W
btfss STATUS,C
goto d_unit
incf DEC,F
movwf RM1
goto d_dec
d_unit movfw RM1
movwf UNID
return
;-------------------------------------------------------------------;* ACLARA REGISTROS DEL TECLADO
;--------------------------------------------------------------------
-
40 -
borrar clrf
clrf
clrf
clrf
clrf
clrf
RKEY1
RKEY2
RKEY3
RKEY4
RKEY5
RKEY6
return
;-------------------------------------------------------------------;* ALARMA
;-------------------------------------------------------------------alarm movlw .4
movwf CNT1
inc
movlw .125
movwf CNT2
call
tono_1
decfsz CNT2,F
goto $-2
decfsz CNT1,F
goto inc
return
tono_1 clrwdt
movlw .20
movwf CNT4
buzz_on
clrwdt
decfsz CNT4,F
goto $-2
movlw .20
movwf CNT4
buzz_off
decfsz CNT4,F
goto $-2
return
;-------------------------------------------------------------------;* RUTINA LEE UN DATO DE EEPROM
;-------------------------------------------------------------------lee_1d
bsf
STATUS,RP0
-
41 -
bcf
bsf
bcf
EECON1,EEPGD
EECON1,RD
; EMPIEZA A LEER
STATUS,RP0
; BANK 2
return
;-------------------------------------------------------------------;* RUTINA GRABA UN DATO EN EEPROM
;-------------------------------------------------------------------grb_1d bsf
STATUS,RP0
; BANK 3
bcf
EECON1,EEPGD
bsf
EECON1,WREN ; HABILITANDO ESCRITURA
movlw 0x55
; DATO DE CONTROL
movwf EECON2
movlw 0xAA
; DATO DE CONTROL
movwf EECON2
bsf
EECON1,WR
; SE INICIA ESCRITURA
clrwdt
btfsc EECON1,WR
; VERIFICA FIN DE ESCRITURA
goto $-2
bcf
EECON1,WREN ; DESABILITA ESCRITURA
bcf
STATUS,RP0
; BANK 2
return
;-------------------------------------------------------------------;* RUTINA QUE LEE DATOS GUARDADOS EN MEMORIA
;-------------------------------------------------------------------lee_datbsf
STATUS,RP1
clrf EEADR
call lee_1d
movlw 0xFF
xorwf EEDATA,W
btfsc STATUS,Z
clrf
EEDATA
movfw EEDATA
movwf RKY1
incf EEADR,F
call lee_1d
movlw 0xFF
xorwf EEDATA,W
btfsc STATUS,Z
clrf
EEDATA
movfw EEDATA
movwf RKY2
; BANK 2
; 00
; 01
-
42 -
incf EEADR,F
call lee_1d
movlw 0xFF
xorwf EEDATA,W
btfsc STATUS,Z
clrf
EEDATA
movfw EEDATA
movwf RKY3
incf EEADR,F
call lee_1d
movlw 0xFF
xorwf EEDATA,W
btfsc STATUS,Z
clrf
EEDATA
movfw EEDATA
movwf RKY4
incf EEADR,F
call lee_1d
movlw 0xFF
xorwf EEDATA,W
btfsc STATUS,Z
clrf
EEDATA
movfw EEDATA
movwf RKY5
; 02
bcf
STATUS,RP1
; BANK 0
movfw
movwf
movfw
movwf
movfw
movwf
movfw
movwf
movfw
movwf
RKY1
RKEY1
RKY2
RKEY2
RKY3
RKEY3
RKY4
RKEY4
RKY5
RKEY5
; 03
; 04
return
;------------------------------------------------------------------------;* RUTINA DE MULTIPLICACION
;* RM3_RM2_RM1 = MULT3_MULT2 * MULT1
;* MULTIPLICA 16 * 8 bits = 24 bits
;------------------------------------------------------------------------mult
clrf
clrf
RM3
RM2
-
43 -
clrf
movlw
movwf
bcf
mult1 clrwdt
rrf
btfss
goto
movfw
addwf
btfsc
incf
movfw
addwf
mult2 rrf
rrf
rrf
decfsz
goto
RM1
.8
MCNT
STATUS,C
MULT1,F
STATUS,C
mult2
MULT2
RM2,F
STATUS,C
RM3,F
MULT3
RM3,F
RM3,F
RM2,F
RM1,F
MCNT,F
mult1
return
;-------------------------------------------------------------------;* RUTINA QUE CALCULA EL CONTADOR CNT2:CNT1
;-------------------------------------------------------------------calc1
clrf
clrf
CNT1
CNT2
movlw
movwf
movlw
movwf
movfw
movwf
0x27
MULT3
0x10
MULT2
RKEY1
MULT1
call
mult
movfw
movwf
movfw
movwf
RM2
CNT2
RM1
CNT1
movlw
movwf
movlw
movwf
movfw
0x03
MULT3
0xE8
MULT2
RKEY2
-
44 -
movwf MULT1
call
mult
movfw
addwf
btfsc
incf
movfw
addwf
RM1
CNT1,F
STATUS,C
CNT2,F
RM2
CNT2,F
clrf
movlw
movwf
movfw
movwf
MULT3
.100
MULT2
RKEY3
MULT1
call
mult
movfw
addwf
btfsc
incf
movfw
addwf
RM1
CNT1,F
STATUS,C
CNT2,F
RM2
CNT2,F
clrf
movlw
movwf
movfw
movwf
MULT3
.10
MULT2
RKEY4
MULT1
call
mult
movfw
addwf
btfsc
incf
RM1
CNT1,F
STATUS,C
CNT2,F
movfw
addwf
btfsc
incf
RKEY5
CNT1,F
STATUS,C
CNT2,F
return
;-------------------------------------------------------------------;* RUTINA DE CONVERSION ANALOGO DIGITAL
-
45 -
;-------------------------------------------------------------------conv_ad bsf
ADCON0,ADON
movlw .200
movwf CNT_AD
clrwdt
decfsz CNT_AD,F
goto $-2
bsf
ADCON0,GO
clrwdt
btfsc ADCON0,GO
goto $-2
bcf
ADCON0,ADON
return
;-------------------------------------------------------------------;* RUTINA QUE MIDE Y PRESENTA VELOCIDAD DEL MOTOR
;-------------------------------------------------------------------v_motor
movwf
movlw
movwf
movlw
movwf
;
;
movlw 0x39
DIVIDENDOHH
0x38
DIVIDENDOHL
0x70
DIVIDENDOLL
movlw
movwf
movfw
movwf
movfw
movwf
0x00
DIVISORHH
TMR1H
DIVISORHL
TMR1L
DIVISORLL
call
dividir
movfw
movwf
movfw
movwf
movfw
movwf
movlw
movwf
DIVIDENDOHH
RM3
DIVIDENDOHL
MULT3
DIVIDENDOLL
MULT2
.40
MULT1
call
call
mult
hex_bcd
; DIVIDENDO:3750000
; DIVISOR
-
46 -
return
;-------------------------------------------------------------------;* RUTINA DE DIVISION 16/8
;* DIVIDE:
;* {(RPP2_RPP1)/DREG} = {(RPP2_RPP1)/DREG} + (REMB0/DREG)
;-------------------------------------------------------------------divide clrwdt
clrf
REMB0
movlw .8
movwf CONT0
loop_a rlf
rlf
movf
subwf
btfsc
goto
addwf
bcf
RPP2,W
REMB0,F
DREG,W
REMB0,F
STATUS,C
uok68a
REMB0,F
STATUS,C
uok68a rlf
decfsz
goto
clrf
movlw
movwf
RPP2,F
CONT0,F
loop_a
TEMP
.8
CONT0
loop_b rlf
rlf
rlf
movf
subwf
clrf
clrw
btfss
incfsz
subwf
btfsc
goto
movf
addwf
clrf
clrw
btfsc
incfsz
RPP1,W
REMB0,F
TEMP,F
DREG,W
REMB0,F
ACCB5
STATUS,C
ACCB5,W
TEMP,F
STATUS,C
uok68b
DREG,W
REMB0,F
ACCB5
STATUS,C
ACCB5,W
-
47 -
addwf TEMP,F
bcf
STATUS,C
uok68b rlf
RPP1,F
decfsz CONT0,F
goto loop_b
return
;-------------------------------------------------------------------;*
;-------------------------------------------------------------------prom_10
movlw .20
movwf CNT1
clrf
clrf
pm1
;call
call
CNTP_L
CNTP_H
ms_2
conv_ad
movfw ADRESH
movwf RPP2
bsf
STATUS,RP0
movfw ADRESL
bcf
STATUS,RP0
movwf RPP1
;*
; BANK1
; BANK0
movfw RPP1
addwf CNTP_L,F
btfsc
incf
STATUS,C
CNTP_H,F
movfw RPP2
addwf CNTP_H,F
decfsz CNT1,F
goto pm1
;-------------------------------------------------------------------;* SE TERMINO DE SUMAR 10 CONVERSIONES
;* SE CALCULA EL PROMEDIO
;-------------------------------------------------------------------movfw CNTP_H
movwf RPP2
-
48 -
movfw
movwf
movlw
movwf
CNTP_L
RPP1
.20
DREG
call
divide
movfw RPP2
movwf MULT3
movfw RPP1
movwf MULT2
movlw .46
movwf MULT1
call
mult
return
;-------------------------------------------------------------------;* DIVISION : DIVIDENDO(24 BITS)/DIVISOR(24 BITS)->DIVIDENDO(24 BITS)
;* CON RESTO EN RESTOHH & RESTOHL & RESTOLL (24 BITS)
;-------------------------------------------------------------------dividir clrwdt
movlw
movwf
movf
movwf
movf
movwf
movf
movwf
clrf
clrf
clrf
clrf
clrf
clrf
.24
; PARA 24 DESPLAZAMIENTOS
TEMP
DIVIDENDOHH,W
ACCDHH
DIVIDENDOHL,W
ACCDHL
DIVIDENDOLL,W
ACCDLL
DIVIDENDOHH
DIVIDENDOHL
DIVIDENDOLL
RESTOHH
RESTOHL
RESTOLL
dloop bcf
rlf
rlf
rlf
rlf
rlf
rlf
STATUS,C
ACCDLL,F
ACCDHL,F
ACCDHH,F
RESTOLL,F
RESTOHL,F
RESTOHH,F
movf DIVISORHH,W
subwf RESTOHH,W
; COMPRUEBA SI DIVISOR>RESTO
-
49 -
btfss
goto
STATUS,Z
nochk
movf
subwf
btfss
goto
DIVISORHL,W
RESTOHL,W
STATUS,Z
nochk
movf DIVISORLL,W
subwf RESTOLL,W
nochk btfss
goto
STATUS,C
nogo
; COMPRUEBA SI DIVISOR>RESTO
; SI MSB ES IGUAL COMPROBAR LSB
; CARRY A UNO SI RESTO>DIVISOR
movf
subwf
btfss
decf
DIVISORLL,W ; RESTO-DIVISOR A RESTO
RESTOLL,F
STATUS,C
RESTOHL,F
movf
subwf
btfss
decf
DIVISORHL,W
RESTOHL,F
STATUS,C
RESTOHH,F
movf DIVISORHH,W
subwf RESTOHH,F
bsf
STATUS,C
nogo
rlf
rlf
rlf
decfsz
goto
DIVIDENDOLL,F
DIVIDENDOHL,F
DIVIDENDOHH,F
TEMP,F
dloop
return
;-------------------------------------------------------------------;* SUENA EL BUZZER 3 VECES
;-------------------------------------------------------------------buzzer btfsc RFLAG,key
return
;
buzz_on
movlw .2
call
t_nsg
buzz_off
movlw .1
-
50 -
;
;
;
;
;
;
;
;
;
;
;
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
swapf
clrf
movwf
movfw
movwf
clrf
W_TEMP
STATUS,W
STATUS
ST_TEMP
PCLATH
PCLATH_TEMP
PCLATH
btfsc
goto
INTCON,RBIF
tecld
; PUSH
;-------------------------------------------------------------------;* TEMPORIZACION TMR1 TMR1H:TMR1L
;-------------------------------------------------------------------clrf
btfsc
goto
CNT4
RFLAG,fin
tt0
clrf
clrf
bcf
bcf
TMR1L
TMR1H
PIR1,TMR1IF
RFLAG,dsp
bsf
bsf
T1CON,TMR1ON
RFLAG,fin
bcf
INTCON,INTF
goto
ret1
; ACLARA REGISTROS DE TIEMPO
; HABILITA TMR1
-
51 -
tt0
ret1
bcf
bcf
bsf
T1CON,TMR1ON
RFLAG,fin
RFLAG,dsp
call
v_motor
bcf
INTCON,INTF
movfw
movwf
swapf
movwf
swapf
swapf
PCLATH_TEMP ; POP
PCLATH
ST_TEMP,W
STATUS
W_TEMP,F
W_TEMP,W
retfie
;-------------------------------------------------------------------;************************ RUTINA DE TECLADO ***********************
;-------------------------------------------------------------------tecld
n1
n2
n3
nup
n4
n5
n6
ndown
n7
n8
n9
n2nd
nclr
n0
bsf
bsf
bsf
bsf
PORTB,fil1
PORTB,fil2
PORTB,fil3
PORTC,fil4
tec2
tec2
tec2
tec1
fil1,n1,n2,n3,nup
fil2,n4,n5,n6,ndown ; DIGITO 4,5,6 o DOWN ?
fil3,n7,n8,n9,n2nd
; DIGITO 7,8,9 o 2ND ?
fil4,nclr,n0,nhlp,nent ; DIGITO CLEAR,0,HELP o ENTER ?
goto
ret
; NINGUNA TECLA
rkey
rkey
rkey
rkey
rkey
rkey
rkey
rkey
rkey
rkey
rkey
rkey
rkey
rkey
.1,col1
.2,col2
.3,col3
.12,col4
.4,col1
.5,col2
.6,col3
.13,col4
.7,col1
.8,col2
.9,col3
.14,col4
.10,col1
.0,col2
; SE PRESIONO DIGITO 1
; SE PRESIONO DIGITO 2
; SE PRESIONO DIGITO 3
; SE PRESIONO DIGITO UP
; SE PRESIONO DIGITO 4
; SE PRESIONO DIGITO 5
; SE PRESIONO DIGITO 6
; SE PRESIONO DIGITO DOWN
; SE PRESIONO DIGITO 7
; SE PRESIONO DIGITO 8
; SE PRESIONO DIGITO 9
; SE PRESIONO DIGITO 2ND
; SE PRESIONO DIGITO CLEAR
; SE PRESIONO DIGITO 0
-
52 -
nhlp
nent
rkey
rkey
.11,col3
.15,col4
ret
call
clrfilas
; SE PRESIONO DIGITO HELP
; SE PRESIONO DIGITO ENTER
movfw INDF
movwf TKEY
bcf
INTCON,RBIF
movfw
movwf
swapf
movwf
swapf
swapf
PCLATH_TEMP ; POP
PCLATH
ST_TEMP,W
STATUS
W_TEMP,F
W_TEMP,W
retfie
;-------------------------------------------------------------------;********************** PROGRAMA PRINCIPAL ************************
;-------------------------------------------------------------------inicio buzz_off
actv_off
bsf
;
STATUS,RP0
; BANK 1
movlw
movwf
movlw
movwf
movlw
movwf
movlw
movwf
movlw
movwf
B'00000000'
TRISA
B'11110001'
TRISB
B'00100000'
TRISC
B'00000110'
ADCON1
B'01000111' ; N=256, TIMER, PULLUP:ON
OPTION_REG
bsf
PIE1,TMR1IE
bcf
STATUS,RP0
; HABILITA INT. CALENDARIO
; BANK 0
buzz_off
actv_off
;
;
bsf
bsf
INTCON,PEIE ; INT. PERIFERICAS
INTCON,INTE ; INT. FLANCOS
-
53 -
bcf
bcf
INTCON,INTF
PIR1,TMR1IF
movlw B'00110000'
movwf T1CON
; CONFIGURA TMR1
;-------------------------------------------------------------------;* INICIALIZACION
;-------------------------------------------------------------------;* CONFIGURA EL MODULO DISPLAY LCD:
MODO 4 BITS
;--------------------------------------------------------------------
m0
call
LCD_inc
bcf
bcf
INTCON,GIE
INTCON,RBIF
; CONFIGURA EL DISPLAY LCD
; DESABILITA INT.
actv_off
buzz_off
movlw 0x20
movwf FSR
;
clrf
RFLAG
call
bsf
bcf
clrfilas
INTCON,RBIE
INTCON,RBIF
call
ms_20
movlw 0x28
call send_cmd
;-------------------------------------------------------------------;* PRESENTACION DE MENSAJES INICIALES
;-------------------------------------------------------------------;* PRESENTACION DE TITULO 1
;-------------------------------------------------------------------msj
msj
FILA 1
0x01,tit1
0xC0,tit2
movlw .3
call
t_nsg
msj
msj
0x01,tit3
0xC0,tit4
; " PROYECTO "
; " CAUDALIMETRO "
-
54 -
m1
actv_off
buzz_off
goto
f1
movlw .3
call
t_nsg
msj
msj
0x01,tit5
0xC0,tit6
; " PROGRAMAR .... "
; " CAUDAL REF. "
movlw .3
call
t_nsg
msj
msj
0x01,tit8
0xC0,tit9
; " CAUDAL MAX. "
; " 20000 RPM "
movlw .3
call
t_nsg
msj
msj
0x01,tit6
0xC0,tit7
call
lee_dat
movlw 0xC3
call send_cmd
; " CAUDAL REF. "
; " 00000 RPM "
; DIRECCION
movfw RKEY1
call conv_asc
call send_char
movfw RKEY2
call conv_asc
call send_char
movfw RKEY3
call conv_asc
call send_char
movfw RKEY4
call conv_asc
call send_char
movfw RKEY5
call conv_asc
call send_char
movlw 0x0D
call send_cmd
movlw 0xC3
; PARPADEA CARACTER
; DIRECCION
-
55 -
call
m2
m3
;
send_cmd
movlw 0x20
movwf FSR
; RKEY1
bcf
bsf
; HABILITA GLOBAL INTERRUPCCION
INTCON,RBIF
INTCON,GIE
clrwdt
btfss RFLAG,key
goto $-2
bcf
INTCON,GIE
bcf
RFLAG,key
movfw INDF
xorlw 0x0A
bz
m1
movfw INDF
xorlw 0x0E
bz
rn0
movlw
subwf
btfsc
goto
.10
INDF,W
STATUS,C
m3
; PRESIONARON UNA TECLA ?
; NO
; SI, DESAB. INTERRUP.
; PRESIONARON CLEAR ?
; PRESIONARON START ?
; SOLO NUMEROS 0,1,.......,9
movfw INDF
call
conv_asc
call send_char
incf FSR,F
; ENVIA CARACTER
; INCREMENTA FSR
movlw
xorwf
btfss
goto
; PREGUNTA SI LLEGO AL FINAL
0x25
FSR,W
STATUS,Z
m3
movlw 0x0C
call send_cmd
; DEJA DE PARPADEA CARACTER
movlw .2
call
t_nsg
m4
;
msj
msj
0x01,tit10
0xC0,tit11
; " PRESIONAR .... "
; " CLEAR - 2ND ? "
bcf
bsf
INTCON,RBIF
INTCON,GIE
; HABILITA GLOBAL INTERRUPCCION
-
56 -
clrwdt
btfss RFLAG,key
goto $-2
bcf
INTCON,GIE
bcf
RFLAG,key
movfw INDF
xorlw 0x0A
bz
m1
movfw INDF
xorlw 0x0E
bnz
m4
goto
; PRESIONARON UNA TECLA ?
; NO
; SI, DESAB. INTERRUP.
; PRESIONARON CLEAR ?
; PRESIONARON 2ND ?
rn0b
;-------------------------------------------------------------------;************************* PRESIONARON RUN **************************
;-------------------------------------------------------------------;* CALCULA TEMPERATURA DE REFERENCIA Y TIEMPO PROGRAMADO
;-------------------------------------------------------------------rn0
movlw
xorwf
btfss
goto
0x20
FSR,W
STATUS,Z
rr1
movfw RKY1
movwf RKEY1
goto rn0b
rr1
movlw
xorwf
btfss
goto
0x21
FSR,W
STATUS,Z
rr2
movfw RKY2
movwf RKEY2
goto rn0b
rr2
movlw
xorwf
btfss
goto
0x22
FSR,W
STATUS,Z
rr3
movfw RKY3
movwf RKEY3
-
57 -
rr3
goto
rn0b
movlw
xorwf
btfss
goto
0x23
FSR,W
STATUS,Z
rr4
movfw RKY4
movwf RKEY4
goto rn0b
rr4
movfw RKY5
movwf RKEY5
;-------------------------------------------------------------------;* VERIFICA CAUDAL PROGRAMADO
;-------------------------------------------------------------------;* MAXIMO 20000 RPM
;-------------------------------------------------------------------rn0b
movlw 0x0C
call send_cmd
; DEJA DE PARPADEA CARACTER
movlw
subwf
btfss
goto
.2
RKEY1,W
STATUS,C
dsc1
; CAUDAL CORRECTO
movlw
xorwf
btfss
goto
.2
RKEY1,W
STATUS,Z
rn0a
;
movfw RKEY2
btfss STATUS,Z
goto rn0a
;
movfw RKEY3
btfss STATUS,Z
goto rn0a
;
movfw RKEY4
btfss STATUS,Z
goto rn0a
;
movfw RKEY5
btfss STATUS,Z
goto rn0a
;
-
58 -
;-------------------------------------------------------------------;********************* TEMPERATURA CORRECTA ***********************
;*********************
TP_H:TP_L
***********************
;-------------------------------------------------------------------dsc1
call
calc1
movfw
movwf
movfw
movwf
CNT2
TP_H
CNT1
TP_L
goto
rn1
; CALCULA CAUDAL REF.
;********************************************************************
;-------------------------------------------------------------------;************************** DATO INVALIDO **************************
;-------------------------------------------------------------------rn0a
msj
msj
0x01,tit12
0xC0,tit7
movlw 0xC3
call send_cmd
; "FUERA DE RANGO !"
; " 00000 RPM "
; DIRECCION
movfw RKEY1
call conv_asc
call send_char
movfw RKEY2
call conv_asc
call send_char
movfw RKEY3
call conv_asc
call send_char
movfw RKEY4
call conv_asc
call send_char
movfw RKEY5
call conv_asc
call send_char
goto
m1
;********************************************************************
;-------------------------------------------------------------------;************ DATOS CORRECTOS SE SALVA PROGRAMACION ***************
;--------------------------------------------------------------------
59 -
rn1
movfw
movwf
movfw
movwf
movfw
movwf
movfw
movwf
movfw
movwf
RKEY1
RKY1
RKEY2
RKY2
RKEY3
RKY3
RKEY4
RKY4
RKEY5
RKY5
;-------------------------------------------------------------------;* GRABA PROGRAMACION EN MEMORIA EEPROM
;-------------------------------------------------------------------bsf
STATUS,RP1
movfw
movwf
clrf
call
movfw
movwf
incf
call
movfw
movwf
incf
call
movfw
movwf
incf
call
movfw
movwf
incf
call
RKY1
EEDATA
EEADR
grb_1d
RKY2
EEDATA
EEADR,F
grb_1d
RKY3
EEDATA
EEADR,F
grb_1d
RKY4
EEDATA
EEADR,F
grb_1d
RKY5
EEDATA
EEADR,F
grb_1d
bcf
STATUS,RP1
; BANK 2
; BANK 0
;-------------------------------------------------------------------;****************** MEDIDA Y CONTROL DE CAUDAL ********************
;-------------------------------------------------------------------f1
nop
msj
0x01,tit4
-
60 -
msj1
0xC0,tit14
goto
md1
;-------------------------------------------------------------------;***************** MUESTRA CAUDAL DE REFERENCIA *******************
;-------------------------------------------------------------------movlw 0x87
call send_cmd
movfw RKEY1
call conv_asc
call send_char
movfw RKEY2
call conv_asc
call send_char
movfw RKEY3
call conv_asc
call send_char
movfw RKEY4
call conv_asc
call send_char
movfw RKEY5
call conv_asc
call send_char
; DIRECCION
;-------------------------------------------------------------------;* MIDE RPM
;-------------------------------------------------------------------md1
md2
;
;
bcf
bsf
bcf
bcf
bcf
RFLAG,dsp
INTCON,INTE ; INT. FLANCOS
INTCON,INTF
PIR1,TMR1IF
T1CON,TMR1ON
bsf
INTCON,GIE
call
call
btfsc
goto
btfsc
goto
btfsc
goto
movlw
xorwf
tau0
conteo
RFLAG,key
md5
RFLAG,dsp
md4
PIR1,TMR1IF
md3
.1
CNTSEG,W
; PRESENTACION
-
61 -
btfss
goto
STATUS,Z
md2
;-------------------------------------------------------------------;* NO DETECTA PULSO O EL PULSO DEMORO MAS DE UN SEGUNDO
;-------------------------------------------------------------------md3
bcf
INTCON,GIE
actv_off
movlw 0xC7
call send_cmd
; DIRECCION
movlw '0'
call send_char
movlw '.'
call send_char
movlw '0'
call send_char
movlw '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
call send_cmd
; DIRECCION
movlw '0'
call send_char
movlw '.'
call send_char
movlw '0'
call send_char
movfw DMIL
call conv_asc
call send_char
-
62 -
;
;
;
movfw UNID
call conv_asc
call send_char
movlw .3
subwf CENT,W
btfss STATUS,C
actv_off
btfsc STATUS,C
actv_on
call
mdseg
goto
md1
;-------------------------------------------------------------------;* PRESENTARON UNA TECLA
;-------------------------------------------------------------------md5
bcf
INTCON,GIE
bcf
RFLAG,key
movfw INDF
xorlw 0x0A
btfsc STATUS,Z
goto m1
; SI, DESAB. INTERRUP.
goto
; FALSA ALARMA
md2
; PRESIONARON CLEAR ?
; RESET
;-------------------------------------------------------------------;* PAGINA 1
;-------------------------------------------------------------------ORG
0x800
;-------------------------------------------------------------------;* RUTINA DE TIT 13
;-------------------------------------------------------------------tit13
movfw CNT_LCD
addwf PCL,F
DT
"CD REF:00000 RPM"
;-------------------------------------------------------------------;* RUTINA DE TIT 14
;--------------------------------------------------------------------
-
63 -
tit14
movfw CNT_LCD
addwf PCL,F
DT
"CAUDAL:0.00 Lt/s"
END
-
64 -
Descargar