Está en la página 1de 21
UNIDAD MÉDICA DE FRECUENCIA CARDIACA Y TEMPERATURA Arturo García Barragán Universidad de Guadalajara, Centro

UNIDAD MÉDICA DE FRECUENCIA CARDIACA Y TEMPERATURA

Arturo García Barragán Universidad de Guadalajara, Centro Universitario de Ciencias Exactas e Ingenierías División de Electrónica y Computación, Departamento de Electrónica Boulevard. Marcelino García Barragán No. 1421 y Calzada Olímpica Teléfono / Fax; (++52) (33) 3619-8471 Guadalajara Jalisco, México. C.P. 44420. e-mail: macartur_555@hotmail.com

INDICE

Página

RESUMEN--------------------------------------------------------------------------------------------------1

1

1. NECESIDAD DE EQUIPO MÉDICO---------------------------------------------------------------1

2. MEDIDOR DE FRECUENCIA CARDIACA-------------------------------------------------------1

2

3

2.1 Micrófono piezoeléctrico omnidireccional-------------------------------------------------------1

4

2.2 Amplificador operacional LM_741---------------------------------------------------------------1

3. MEDIDOR DE TEMPERATURA--------------------------------------------------------------------1

4

5

3.1 Regulador de voltaje LM_336---------------------------------------------------------------------1

3.2 Amplificador diferencial con el LM_741--------------------------------------------------------1

3.3 Sensor de temperatura LM_335-------------------------------------------------------------------1

4. MICROCONTROLADOR PIC_16F877-------------------------------------------------------------1

6

7

8

8

4.1 Características del microcontrolador PIC_16F877---------------------------------------------1

9

4.2 Diseño del programa para el microcontrolador PIC_16F877---------------------------------1

4.2.1 Diagrama de flujo-----------------------------------------------------------------------------1

11

11

5. DISPLAY DE SIETE SEGMENTOS-----------------------------------------------------------------1

12

6. CONCLUSIONES---------------------------------------------------------------------------------------1

13

7. REFERENCIAS BIBLIOGRÁFICAS----------------------------------------------------------------1

14

8. APÉNDICE A--------------------------------------------------------------------------------------------1

14

RESUMEN

El presente trabajo tiene como objetivo medir diferentes variables del cuerpo humano como lo son: el calor corporal (temperatura), frecuencia cardiaca y frecuencia cardiaca fetal. El equipo médico desarrollado esta pensado para ofrecer al paciente comodidad en su aplicación, lo que nos asegura que al llevarse a cabo las diferentes mediciones clínicas no sufrirá ninguna molestia. Este tipo de unidad puede estar destinada a zonas urbanas y primordialmente a zonas rurales muy lejanas, donde los hospitales no cuentan con gran tecnología debido al presupuesto que tienen. En México, los dispositivos médicos que existen en los hospitales generalmente son importados a un alto costo lo que provoca una gran inversión, es por eso que surge la idea de realizar un proyecto basado principalmente en la bioelectrónica, que es una herramienta complementaria en el sector médico, utilizada para facilitar y precisar diagnósticos clínicos. En el diseño del proyecto se utilizan los siguientes elementos: LM_335, LM_336, LM_741, microcontrolador PIC_16F877, display de siete segmentos cátodo común, un micrófono piezoeléctrico omnidireccional, resistores y capacitores.

1. NECESIDAD DE EQUIPO MÉDICO Este tipo de sistema ya existe en el mercado, pero

1. NECESIDAD DE EQUIPO MÉDICO

Este tipo de sistema ya existe en el mercado, pero como su precio es muy elevado sólo las instituciones que cuentan con mayor apoyo económico por parte del Gobierno Estatal y/o Federal, tienen este tipo de aparatos electrónicos, pero desgraciadamente en instituciones que se encuentran como por ejemplo en zonas rurales, no se cuenta con este tipo de sistemas, por lo que, por medio de este diseño se pretende economizar este produc to, para que así más clínicas médicas y hospitales puedan contar con esta tan útil e indispensable herramienta, porque por ejemplo un doctor que pretende realizar esta medición en forma manual, debe contar los pulsos del paciente por un determinado tiempo por ejemplo 5 segundos, y enseguida debe llevar a cabo una multiplicación para así obtener los pulsos por minuto del paciente y desgraciadamente al llevar a cabo este procedimiento algunas veces se cometen errores y por lo tanto se genera una medición errónea.

Para realizar la detección de los fetos, se utiliza el estetoscopio, pero debido a la sensibilidad del mismo, no se hace la detección, sino hasta unas 7 semanas después de haber sido concebido. Por medio de este sistema se lleva a cabo una medición más exacta y ofreciéndonos una lectura de los pulsos por minuto de cada paciente de una forma inmediata.

En el caso de la temperatura se hace uso del termómetro de mercurio, el cual tarda un cierto tiempo para dar la lectura en cierta forma de manera analógica. La temperatura corporal del cuerpo humano que esta sobre los límites normales, es provocada en ocasiones por enfermedades como la fiebre, sarampión, tuberculosis etc. si la temperatura del cuerpo humano llegara a rebasar de los 42 ºC, se corre el peligro de sufrir lesiones en las neuronas cerebrales. Si la temperatura del cuerpo humano se encuentra por debajo de los limites normales, estamos hablando de que se puede presentar una disminución de la temperatura normal del cuerpo humano, mejor conocida como hipotermia, la que nos genera una disminución en la intensidad del metabolismo lo que puede causar la muerte, esto suele ocurrir cuando la temperatura corporal se encuentra entre 21 y 24 ºC.

El proyecto “UNIDAD MÉDICA DE FRECUENCIA CARDIACA Y TEMPERATURA” consiste en el diseño de un sistema electrónico que realice de manera más eficiente la medición de los pulsos del corazón y la temperatura en los pacientes. Además puede sensar los latidos del corazón de los fetos tanto en medición como en audio más pronto que con el método tradicional del estetoscopio, ya que en la actualidad este proceso de medición se lleva a cabo en forma manual, y por medio de este sistema se pretende mejorar adquiriendo mayor exactitud, rapidez, y confiabilidad.

2. MEDIDOR DE FRECUENCIA CARDIACA Las distintas deficiencias en el funcionamiento del corazón son las

2. MEDIDOR DE FRECUENCIA CARDIACA

Las distintas deficiencias en el funcionamiento del corazón son las causas de muchas muertes en el mundo, este índice de mortalidad con el paso del tiempo se va agrandando, por eso es que se ha tenido que recurrir a la electrónica para crear dispositivos o instrumentos enfocados a monitorear el funcionamiento del corazón. De tal manera que se propuso a desarrollar un dispositivo electrónico que fuera capaz de revelar los pulsos cardiacos del corazón tanto del feto como de personas adultas. Para poder detectar los pulsos cardiacos se seleccionó un micrófono piezoeléctrico omnidireccional, que va acoplado al estetoscopio mediante una manguera, se acondiciono la señal para convertirla en forma digital y procesarla con el microcontrolador (PIC_16F877), para finalmente mostrar el dato procesado en los display de siete segmentos.

mostrar el dato procesado en los display de siete segmentos. Figura 1: Diagrama a bloques del

Figura 1: Diagrama a bloques del medidor de frecuencia cardiaca

1: Diagrama a bloques del medidor de frecuencia cardiaca Figura 2: Circuito eléctrico del medidor de

Figura 2: Circuito eléctrico del medidor de frecuencia cardiaca

2.1 Micrófono piezoeléctrico omnidireccional Los micrófonos piezoeléctricos son micrófonos de presión que se

2.1 Micrófono piezoeléctrico omnidireccional

Los micrófonos piezoeléctricos son micrófonos de presión que se utilizan limitadamente para ciertos efectos. Este micrófono depende enteramente de la reflexión del sonido. En situaciones especiales tiene una respuesta superior a cualquier otro tipo de micrófono. Los micrófonos omnidireccionales (también llamados no-direccionales) son igualmente sensibles a los sonidos que provienen de cualquier dirección. Aunque este atributo posee ventajas en la radio donde varias personas pueden estar alrededor del micrófono, en la producción de video casi siempre es mejor utilizar alguna forma de micrófono direccional. Ello permite eliminar sonidos no deseados (ruido detrás de cámaras, ambiente en locación, ruido, etc.) mientras captamos el sonido proveniente del talento. Con este tipo de micrófono detectamos lo pulsos cardiacos.

Con este tipo de micrófono detectamos lo pulsos cardiacos. Figura 3: Micrófono piezoeléctrico omnidireccional 2.2

Figura 3: Micrófono piezoeléctrico omnidireccional

2.2 Amplificador operacional LM_741

Este dispositivo es un amplificador de propósito general bastante conocido y de uso muy extendido. Sus parámetros son bastante regulares, no teniendo ninguno que sea el mejor respecto a los de los demás, pero en conjunto presenta una alta impedancia de entrada, pequeños offset (de corriente y de voltaje) en la entrada y buenos parámetros. En estos días es un dispositivo compensado por frecuencia y aunque todavía es usado extensamente, los tipos de bipolares tienen menos ruido y están reemplazando los amplificadores operacionales de viejo estilo. El 741 es un amp. op. de alto rendimiento con su alta ganancia de lazo abierto, compensación interna, alto modo de rango común y excepcional de estabilidad de temperatura. El 741 es un pequeño circuito protegido y hecho para la falta de información debido a la compensación o perdida de voltaje. Voltaje Suministrado (+/-Vs): El voltaje máximo (positivo y negativo) que puede ser seguramente usado para alimentar el amp. op. Disipación (Pd): El máximo poder o potencia del amp. op. dado por la disipación, como por la temperatura especifica del ambiente (500Mw @ 80°C). Voltaje de Entrada( Vicm).- El máximo voltaje de entrada que puede ser simultáneamente aplicado entre ambas entradas y tierra así como la referencia al modo común de voltaje. En general el máximo voltaje es igual al el voltaje suministrado. Operación de Temperatura (Ta).- Esta es el rango de la temperatura ambiente para la cual el amp. op. puede operar dentro de las especificaciones del fabricante.

Duración de salida del corto circuito.- ésta es la cantidad de tiempo que una salida

Duración de salida del corto circuito.- ésta es la cantidad de tiempo que una salida del amp. op. se puede corto circuitar a cualquier voltaje suministrado.

Con este circuito integrado se realiza la etapa del filtrado de frecuencias bajas (filtro pasa bajas), para después amplificar esa señal con este mismo integrado. Un filtro de paso bajas permite todas las

frecuencias por debajo de un punto, conocido como la frecuencia de corte, para pasar sin atenuación mientras se suprimen todas las frecuencias superiores al corte. En este circuito,

construido alrededor de un amplificador operacional 741, la frecuencia de corte esta determinada por los valores de los condensadores C1 y C2 y las resistencias R1 y R2. C1 y C2 son idénticos como R1 y R2. La frecuencia de corte esta determinada por la siguiente formula:

frecuencia de corte = 1/2piRC donde pi es 3,14159

R4/R3. La salida en la frecuencia de corte es igual a 0.707 de la salida máxima.

La ganancia de este circuito es igual a

la salida máxima. La ganancia de este circuito es igual a Figura 4: Amplificador operacional LM741

Figura 4: Amplificador operacional LM741

3. MEDIDOR DE TEMPERATURA

La temperatura es una medida del calor que tiene un cuerpo. Para determinarla se utilizan los termómetros, instrumentos basados en algún fenómeno físico cuantificable que brindan una medida objetiva de la temperatura (el fenómeno más utilizado es el de la expansión térmica). La temperatura desde el punto de vista de importancia, la tiene en alto grado, ya que nos sirve como punto de referencia a bastantes eventualidades y diagnósticos. Debido a ser una medida bastante lenta su trabajo en si no la ha ce un factor difícil de estudiar. Desde hace tiempo se le ha tratado de ampliar su campo de conocimiento y se han descubierto varios métodos de medición, y escalas para su estudio.

varios métodos de medición, y escalas para su estudio. Figura 5: Diagrama a bloques del medidor

Figura 5: Diagrama a bloques del medidor de temperatura

Figura 6: Circuito eléctrico del medidor de temperatura 3.1 Regulador de voltaje LM_336 Para obtener
Figura 6: Circuito eléctrico del medidor de temperatura 3.1 Regulador de voltaje LM_336 Para obtener

Figura 6: Circuito eléctrico del medidor de temperatura

3.1 Regulador de voltaje LM_336

Para obtener un voltaje de referencia de precisión se utilizó el diodo zener LM336 a 2.5V sus características son las siguientes:

- Bajo coeficiente de temperatura.

- Estabilidad para la temperatura.

- Corriente de operación de 400 µA a 10 mA.

- Impedancia dinámica de 0.2 O.

- Encendido rápido.

Se ajustó el voltaje de salida a 2.49 V del LM336 y se amplifico su señal mediante un amplificador no inversor como se puede ver en la figura 6. La ganancia de amplificación se calcula con la formula 1.

AV =

1

+

R

5

R

4

=

Vo

Vi

(1)

se calcula con la formula 1. AV = 1 + R 5 R 4 = Vo

Figura 7: Regulador LM_336

3.2 Amplificador diferencial con el LM_741 Este circuito presenta como característica notable la amplificación de

3.2 Amplificador diferencial con el LM_741

Este circuito presenta como característica notable la amplificación de la diferencia entre las dos tensiones de entrada. Presenta el inconveniente de que la impedancia de entrada del amplificador disminuye sensiblemente y además las dos resistencias R1 y las dos R2 deben ser exactamente iguales.

resistencias R1 y las dos R2 deben ser exactamente iguales. Figura 8: Amplificador diferencial Puesto que

Figura 8: Amplificador diferencial

Puesto que sabemos que las tensiones de las patillas inversora y no inversora deben ser iguales, podemos afirmar que tanto las resistencias R1 y R2 superiores como las R1 y R2 inferiores se encuentran en serie. Planteando las ecuaciones 2 y 3:

Vi

-

Va

Va

-

Vout

=

R 1

R2

(2)

V

2 -

Va = Va

R

(3)

2

De estas dos igualdades (donde Va es la tensión de entrada tanto en la patilla no inversora como en la inversora) podemos obtener la tensión de salida en función de los valores R1, R2 y las tensiones de entrada Para ello despejamos lo valores Va de ambas expresiones obteniendo:

R 1

Va

=

R 2

R 1

V

1

1 +

R

2

R

1

(4)

Igualando ambas expresiones resulta trivial obtener la expresión final de la tensión de salida:

Va =

R

2

R

1

(

V

2

-

V

1)

(5)

Como se puede ver esta configuración amplifica o atenúa la diferencia existente en las dos entradas V2 y V1. Para obtener 10 mV / º C se tiene un amplificador diferencial básico con el sensor LM_335.

3.3 Sensor de temperatura LM_335 Trabaja como un diodo zener cuyo voltaje de ruptura es

3.3 Sensor de temperatura LM_335

Trabaja como un diodo zener cuyo voltaje de ruptura es directamente proporcional la temperatura que llegue a la superficie. Por cada grado de temperatura, el LM_335 varía su voltaje en mV, presentando teóricamente una lectura de 0V. a 0 ºK. (-273ºC). Para conseguir 10 mV. Con este circuito, tenemos que tener en cuenta que le sensor por sí sólo en su estado básico, nos proporciona 10mV/ºK. Por ello deberemos estudiar el paso de ºK. a ºC: Tomamos como referencia: 0ºC -- 273 ºK. ; 27ºC-- 300ºK. Por esta razón, se elijen de entre los múltiples circuitos que nos proporciona la documentación de National, este modelo. Se elije este tipo de circuito porque nos permite ajustar fácilmente mediante potenciómetros, para obtener así a la salida 10 mV/ºC. Sólo cambiaremos del circuito obtenido en la documentación de National el amplificador operacional. El sensor ya estará ajustado a 10 mV/ºC. El operacional es realimentado negativamente. El circuito conectado a la entrada positiva del operacional nos sirve de referencia para la entrada negativa, que es la entrada que varía respecto a la temperatura. Para poder realizar la medición de la temperatura se seleccionó el sensor de temperatura C.I. LM335, aprovechando también sus características, se protegió contra una sobre corriente mediante una resistencia como se puede ver en la figura 6, y con la formula para R6:

R6 =

Vcc

I

ver en la figura 6, y con la formula para R6: R 6 = Vcc I

Figura 9: Sensor LM_335

(6)

4. MICROCONTROLADOR PIC_16F877

Se denomina microcontrolador a un dispositivo programable capaz de realizar diferentes actividades que requieran del procesamiento de datos digitales y del control y comunicación digital de diferentes dispositivos. Los microcontroladores poseen principalmente una ALU (Unidad Lógico Aritmética), memoria del programa, memoria de registros, y pines I/O (entrada y/0 salida). La ALU es la encargada de procesar los datos dependiendo de las instrucciones que se ejecuten (ADD, OR, AND), mientras que los pines son los que se encargan de comunicar al microcontrolador con el medio externo; la función de los pines puede ser de transmisión de datos, alimentación de corriente para un funcionamiento de este o pines de control especifico. En este proyecto se utiliza el PIC 16F877. Este microcontrolador es fabricado por MicroChip familia a la cual se le denomina PIC. El modelo 16F877 posee varias características que hacen

a este microcontrolador un dispositivo muy versátil, eficiente y practico para ser empleado en esta

a este microcontrolador un dispositivo muy versátil, eficiente y practico para ser empleado en esta aplicación médica. Algunas de estas características importantes se muestran a continuación:

-Soporta modo de comunicación serial, posee dos pines para ello. -Amplia memoria para datos y programa. -Memoria reprogramable: La memoria en este PIC es la que se denomina FLASH; este tipo de memoria se puede borrar electrónicamente (esto corresponde a la "F" en el modelo). -Set de instrucciones reducido (tipo RISC), pero con las instrucciones necesarias para facilitar su manejo.

4.1 Características del microcontrolador PIC_16F877

En la siguiente tabla y figuras de pueden observar las características más relevantes del PIC:

CARACTERÍSTICAS

16F877

Frecuencia máxima

DX-20MHz

Memoria de programa flash palabra de 14 bits

8KB

Posiciones RAM de datos

368

Posiciones EEPROM de datos

256

Puertos E/S

A,B,C,D,E

Número de pines

40

Interrupciones

14

Timers

3

Módulos CCP

2

Comunicaciones Serie

MSSP, USART

Comunicaciones paralelo

PSP

Líneas de entrada de CAD de 10 bits

8

Juego de instrucciones

35 Instrucciones

Longitud de la instrucción

14 bits

Arquitectura

Harvard

CPU

Risc

Canales Pwm 2 Pila Harware - Ejecución En 1 Ciclo Máquina -
Canales Pwm
2
Pila Harware
-
Ejecución En 1 Ciclo Máquina
-

Tabla 1: Características del microcontrolador PIC_16F877

- Tabla 1: Características del microcontrolador PIC_16F877 Figura 10: Diagrama a bloques del PIC_16F877 Figura 11:

Figura 10: Diagrama a bloques del PIC_16F877

PIC_16F877 Figura 10: Diagrama a bloques del PIC_16F877 Figura 11: Microcontrolador PIC_16F877 Este microcontrolador

Figura 11: Microcontrolador PIC_16F877

Este microcontrolador de la figura 11 se utiliza en este proyecto para realizar el conteo de los pulsos de la frecuencia cardiaca, convertir las señales analógicas de entrada en digitales, y mostrar los resultados digitales codificados para mostrarlos en los display de siete segmentos.

4.2 Diseño del programa para el microcontrolador PIC_16F877 Se programa para que el puerto A

4.2 Diseño del programa para el microcontrolador PIC_16F877

Se programa para que el puerto A sea la entrada de las señales analógicas, una entrada como contador de frecuencias cardiacas y otra entrada para la conversión de analógica a digital, el puerto B sea la salida a los display, y el puerto C como el control de las lecturas del los display’s. El código del programa en lenguaje ensamblador se encuentra en el Apéndice A.

4.2.1 Diagrama de flujo

se encuentra en el Apéndice A. 4.2.1 Diagrama de flujo Figura 12: Diagrama de flujo para

Figura 12: Diagrama de flujo para el programa del PIC_16F877

5. DISPLAY DE SIETE SEGMENTOS Una de las aplicaciones mas populares de los LED’s es

5. DISPLAY DE SIETE SEGMENTOS

Una de las aplicaciones mas populares de los LED’s es la de señalización. Quizás la mas utilizada sea la de 7 LED’s colocadas en forma de ocho tal y como se indica en la figura 9. Aunque externamente su forma difiere considerablemente de un diodo LED típico, internamente están constituidos por una serie de diodos LED con unas determinadas conexiones internas. En la figura 13 se indica el esquema eléctrico de las conexiones del interior de un indicador luminoso de 7 segmentos.

del interior de un indicador luminoso de 7 segmentos. Figura 13: Display de sietes segmentos La
del interior de un indicador luminoso de 7 segmentos. Figura 13: Display de sietes segmentos La
del interior de un indicador luminoso de 7 segmentos. Figura 13: Display de sietes segmentos La

Figura 13: Display de sietes segmentos

La figura 13 se muestra un indicador de siete segmentos. Contiene siete LED rectangulares (a - g), en el que cada uno recibe el nombre de segmento porque forma parte del símbolo que esta mostrando. Con un indicador de siete segmentos se pueden formar los dígitos del 0 al 9,

de

microprocesadores usan a menudo indicadores de siete segmentos para mostrar todos los dígitos del 0 al 9 mas a, b, d, d, e y f. En el proyecto se utiliza el display de siete segmentos con estructura en cátodo común, para poder visualizar los resultados de de la frecuencia cardiaca y de la temperatura de cada paciente. Los transistores 2N2222 solo son la parte del control para la visualización de los display’s, por medio del microcontrolador PIC_16F877.

también

las

letras

a,

c,

e

y

f

y

las

letras

minúsculas

b

y

d.

Los

entrenadores

En la figura 14 se observa la parte final del proyecto.

Figura 14: Circuito eléctrico del microcontrolador PIC_16F877 y los display’s de siete segmentos 6. CONCLUSIONES
Figura 14: Circuito eléctrico del microcontrolador PIC_16F877 y los display’s de siete segmentos 6. CONCLUSIONES

Figura 14: Circuito eléctrico del microcontrolador PIC_16F877 y los display’s de siete segmentos

6. CONCLUSIONES

Tiempo atrás el hombre sintió la necesidad de desarrollar dispositivos que fueran capaces de diagnosticar las variables del cuerpo humano como son la temperatura y la frecuencia cardiaca, es por eso que el surgimiento del los termómetros y estetoscopios son considerados de gran ayuda para el sector salud de ahí que surgió la inquietud de poder realizar un instrumento capaz de llevar acabo estas mediciones con mayor rapidez y exactitud. Con el diseño de este proyecto denominado “UNIDAD MÉDICA”, ratificamos que los diseños electrónicos son de mucha importancia para el bienestar de la humanidad, ya que los podemos aplicar en diversas actividades para un logro común. Otro aspecto importante que señalar es que los sistemas digitales con frecuencia se deben interconectar con equipos analógicos y que gracias a que existen disposit ivos que transforman una señal analógica a digital y viceversa la tecnología a podido seguir adelante en su desarrollo.

Por otra parte los componentes electrónicos requeridos para el proyecto están disponibles en el mercado

Por otra parte los componentes electrónicos requeridos para el proyecto están disponibles en el mercado nacional y muy económicos, con lo que se nos facilita llevar a cabo el montaje y el mantenimiento del diseño, y en especial dispositivo medico no requiere de personal especializado en el manejo del equipo. Se recomienda realizar este proyecto para poder llevarlo a las comunidades humildes, indígenas o marginadas que necesiten este tipo de aparatos para que tengan un control del estado de salud de sus habitantes. También se le pueden anexan otros circuitos para determinar otro tipo de variables físicas y así determinar otro tipo de mediciones médicas y visualizarlas en un display LCD por ejemplo.

7. REFERENCIAS BIBLIOGRÁFICAS

[1] Guyton, Arthur C . Fisiología Humana. Segunda Edición. Nueva Editorial Interamericana S.A. de C.V. [2] Coughlin, Robert F. Driscoll, Frederick F. Amplificadores Op eracionales y Circuitos Integrados Lineales. Cuarta Edición. Editorial Prentice Hall Hispanoamérica S.A. [3] Franco, S . Design with operational amplifiers and analog integrated circuits . Editorial McGraw-Hill [4] Ghausi, M.S. Circuitos electrónicos: discretos e integrados. Nueva EditorialInteramericana. [5] Malik, N. R. Circuitos electrónicos: análisis, simulación y diseño. Prentice-Hall [6] Millman, J., Grabel, A. Microelectrónica. Ed. Hispano-Europea [7] http://proton.ucting.udg.mx/materias/ET201/index.html [8] http://www.datasheetcatalog.com/ [9] http://www.alos.5u.com/indexpic877.htm#CURSO%20B%C1SICO%20DE%20PIC16F877 [10] http://en.wikipedia.org

8. APÉNDICE A

Código del programa en lenguaje ensamblador DE MICROCONTROLADOR PIC_16F877

list p=16f877 ;Comando que indica el Pic usado include "p16f877.inc" ;Etiquetas genéricas para el Pic16F877 org 0x000 ;Inicio del programa en la posición cero de memoria nop ;Libre (uso del debugger) nop CBLOCK 20H

R0

R1

R2

R3

R4

_inicio bsf STATUS,RP0 ;Ir banco 1 bcf STATUS,RP1 movlw CONF_ADCON1 ;PA como entrada digital movwf ADCON1 movlw 0xFF movwf TRISA ;PA entrada clrf TRISB ;PB salida movlw CONF_OPT

Arturo García Barragán, Código: 300829633,

macartur_555@hotmail.com

Unidad Médica de Frecuencia Cardiaca y Temperatura Ciclo Escolar 2006-B

movwf OPTION_REG ;Configuracion del TMRO bcf STATUS,RP0 ;Ir banco 0 bcf STATUS,RP1 clrf TMR0 ;TMR0=0

movwf OPTION_REG ;Configuracion del TMRO bcf STATUS,RP0 ;Ir banco 0 bcf STATUS,RP1 clrf TMR0 ;TMR0=0 ADC bcf STATUS,RP0 ;Ir banco 0 bcf STATUS,RP1 movlw b'01000001' ;A/D conversion Fosc/8 movwf ADCON0 bsf STATUS,RP0 ;Ir banco 1 bcf STATUS,RP1 clrf TRISA ;PORTA salida clrf TRISB ;PORTB salida clrf TRISC ;PORTC salida clrf TRISD ;PORTD salida clrf TRISE ;PORTE salida movlw b'00000111' movwf OPTION_REG ;TMR0 preescaler, 1:156 movlw b'00001110' ;A/D Port AN0/RA0 movwf ADCON1 bsf TRISA,0 ;RA0 linea de entrada para el ADC bcf STATUS,RP0 ;Ir banco 0 bcf STATUS,RP1 clrf PORTC ;Limpiar PORTC _bucle btfss INTCON,T0IF goto _bucle ;Esperar que el timer0 desborde bcf INTCON,T0IF ;Limpiar el indicador de desborde bsf ADCON0,GO ;Empezar la conversion A/D _espera btfsc ADCON0,GO ;ADCON0 es 0? (la conversion esta completa?) goto _espera ;No, ir _espera movf ADRESH,W ;Si, W=ADRESH movwf PORTC ;Muestra el resultado en PORTC goto _bucle ;Ir bucle end BUCLE movf TMR0,W ;W=TMR0 movwf TEMP ;TEMP=W movlw LIMITE ;W=10 xorwf TEMP,W ;W XOR TEMP btfss STATUS,Z ;EL resultado de la anterior instruccion es 0? goto SIGUE ;Z=0, NO es diferente de 0, TMRO = 0,1,2,3,4,5,6,7,8,9 clrf TMR0 ;Z=1, SI vale 10, TMRO > 9, TMR0=0 clrf TEMP ;Temp=0 call FRECUENCIA call TEMPERATURA SIGUE movf TEMP,W ;W=TEMP call DISPLAY ;Decodifica el valor de DISPLAY

movwf PORTB ;Escribe el valor en PORTB goto BUCLE ;Salta a la etiqueta bucle DISPLAY

movwf PORTB ;Escribe el valor en PORTB goto BUCLE ;Salta a la etiqueta bucle DISPLAY addwf PCL,f retlw b'01000000' ;0 retlw b'01111001' ;1 retlw b'00100100' ;2 retlw b'00110000' ;3 retlw b'00011001' ;4 retlw b'00010010' ;5 retlw b'00000010' ;6 retlw b'01111000' ;7 retlw b'00000000' ;8 retlw b'00010000' ;9 END Frecuencia bsf STATUS,RP0 ;Ir banco 1 bcf STATUS,RP1 clrf TRISA ;PORTA salida clrf TRISB ;PORTB salida clrf TRISC ;PORTC salida clrf TRISD ;PORTD salida clrf TRISE ;PORTE salida movlw b'10000000' ;configuración del registro OPTION movwf OPTION_REG bcf STATUS,RP0 ;Ir banco 0 bcf STATUS,RP1 movlw b'00110000' ;Contador interno de 16 bits movwf T1CON clrf CONTA ;CONTA = 0 clrf PORTC ;PORTC = 0 _bucle movf CONTA,W ;Cargar el valor de CONTA en W call _display ;Llama a la tabla _display movwf PORTC ;Al retornar de la subrutina el valor de W se saca ;por el PORTC call _retardo ;Llama a la subrutina retardo incf CONTA,F ;incrementa el valor de CONTA movlw d'8' ;Verifica si ha llegado a 8 subwf CONTA,W btfss STATUS,Z goto _bucle ;Si no es 8: ir _bucle clrf CONTA ;Si es 8: CONTA = 0 goto _bucle ;Ir _bucle _retardo bcf PIR1,TMR1IF ;Borrar la bandera de desborde clrf TMR1L ;Limpiar los registros de conteo clrf TMR1H bsf T1CON,TMR1ON ;Habilita el TMR1

_espera btfss PIR1,TMR1IF ;Verificar el desborde goto _espera ;Si no ir _espera bcf T1CON,TMR1ON ;Si

_espera btfss PIR1,TMR1IF ;Verificar el desborde goto _espera ;Si no ir _espera

bcf T1CON,TMR1ON ;Si desborda: limpiar bandera de desborde return ;Retorno _display addwf PCL,F ;pcl + W >>>> W ;El PCL se incrementa con el valor de W ;proporcionando un salto retlw b'10000000' ;retorna con valores para PORTC retlw b'11000000' retlw b'11100000' retlw b'11110000' retlw b'11111000' retlw b'11111100' retlw b'11111110' retlw b'11111111' end Temperatura

BSF STATUS,RP0 BCF STATUS,RP1 MOVLW 0FFH MOVWF TRISA CLRF TRISC CLRF TRISD MOVLW 0FFH MOVWF TRISB MOVLW 82H MOVWF ADCON1

;IR AL BANCO 1

;RA0, RA1 Y RA2 ENTRADA ANALÓGICA ;PORTC Y D, SALIDAS,C ES LA SALIDA Y D ES EL QUE MULTIPLEXA

;PORT B PARA INTERRUPCIONES

;CONFIGURAR PUERTO ANALÓGICO: JUSTIFICADO A LA DERECHA

(6 MSB =0), TODOS SON ENTRADAS ANALÓGICAS Y EL VOLTAJE DE REFERENCIA ES VDD Y VSS, PORTE SALIDA DIGITAL CLRF TRISE

BCF STATUS,RP0 CLRF ADRESL CLRF ADRESH CLRF PORTA CLRF PORTC CLRF PORTD TEMPERATURAS CALL RETARDO2 CALL TERMOPAR GOTO TEMPERATURAS

LM35

BSF PORTE,0 MOVLW 81H MOVWF ADCON0 CALL ADC

;CONFIGURAR LA LECTURA DEL ADC, TIENE UN TOSC DE 32 Y SE LEE RB0

;IR AL BANCO 0

BCF STATUS,C ;LIMPIAR CARRY RRF CONVERT,F ;DIVIDIR ENTRE DOS, PUES CADA CAMBIO EN EL LM35

BCF STATUS,C ;LIMPIAR CARRY RRF CONVERT,F ;DIVIDIR ENTRE DOS, PUES CADA CAMBIO EN EL LM35 ES IGUAL A SUMARLE 2 BITS AL ADC MOVF CONVERT,W

;SUBLW 09H

;OFFSET

ADDLW 05H

;SOLO EN CASO DE QUE HAGA FALTA ACOMODAR EL OFFSET

MOVWF BINARIO1 CALL BIN_BCD CALL MUX DECFSZ R4,F GOTO LM35 RETURN

TABLA_TERMISTOR ADDWF PCL,F

RETLW D'23'

;70H

RETLW D'23'

;0

RETLW D'23'

;0

RETLW D'23'

;0

RETLW D'23'

;0

RETLW D'23'

;0

RETLW D'23'

;0

RETLW D'24'

;77H

RETLW D'25'

;0

RETLW D'29'

;0

RETLW D'31'

;0

RETLW D'33'

;0

RETLW D'34'

;0

RETLW D'36'

;0

RETLW D'37'

;0

RETLW D'38'

;0

RETLW D'39'

;80H

RETLW D'40'

;0

RETLW D'41'

;0

RETLW D'41'

;0

RETLW D'42'

;0

RETLW D'43'

;85H

RETLW D'44'

;0

RETLW D'44'

;0

RETLW D'44'

;0

RETLW D'45'

;0

RETLW D'45'

;8AH

RETLW D'46'

;0

RETLW D'47'

;0

RETLW D'47'

;0

RETLW D'48'

;0

RETLW D'49'

;8FH

RETLW D'50'

;90H

RETLW D'50'

;0

RETLW D'51'

;0

;CONVERTIR EL DATO BINARIO A DECIMAL

;PROGRAM CONTER + POSICIÓN EN LA TABLA

RETLW D'51' ;0 RETLW D'51' ;0 RETLW D'51' ;0 RETLW D'51' ;0

RETLW D'51'

;0

RETLW D'51'

;0

RETLW D'51'

;0

RETLW D'51'

;0

RETLW D'52'

;97H

RETLW D'52'

;0

RETLW D'53'

;99H

RETLW D'54'

;0

RETLW D'55'

;0

RETLW D'55'

;0

RETLW D'56'

;0

RETLW D'56'

;0

RETLW D'57'

;9FH

RETLW D'57'

;0

RETLW D'57'

;0

RETLW D'57'

;0

RETLW D'57'

;0

RETLW D'57'

;0

RETLW D'58'

;A5H

RETLW D'58'

;0

RETLW D'58'

;0

RETLW D'58'

;0

RETLW D'58'

;0

RETLW D'58'

;0

RETLW D'58'

;0

RETLW D'58'

;0

RETLW D'58'

;0

RETLW D'58'

;0

RETLW D'58'

;0

RETLW D'58'

;0

RETLW D'58'

;0

RETLW D'58'

;0

RETLW D'58'

;0

RETLW D'58'

;0

RETLW D'59'

;B5H

RETLW D'59'

;0

RETLW D'59'

;0

RETLW D'60'

;B8H

RETLW D'60'

;0

RETLW D'61'

;BAH

RETLW D'61'

;0

RETLW D'62'

;BCH

RETLW D'63'

;BDH

RETLW D'63'

;0

RETLW D'63'

;0

RETLW D'63'

;0

RETLW D'63'

;0

RETLW D'63'

;0

RETLW D'63'

;0

RETLW D'63' ;0 RETLW D'63' ;0 RETLW D'64' ;C6H RETLW D'64' ;0

RETLW D'63'

;0

RETLW D'63'

;0

RETLW D'64'

;C6H

RETLW D'64'

;0

RETLW D'64'

;0

RETLW D'64'

;0

RETLW D'64'

;0

RETLW D'64'

;0

RETLW D'65'

;CCH

RETLW D'66'

;0

RETLW D'66'

;CEH

RETLW D'66'

;0

RETLW D'66'

;0

RETLW D'66'

;0

RETLW D'66'

;0

RETLW D'66'

;0

RETLW D'66'

;0

RETLW D'66'

;0

RETLW D'66'

;0

RETLW D'66'

;0

RETLW D'66'

;0

RETLW D'66'

;0

RETLW D'67'

;DAH

RETLW D'67'

;0

RETLW D'67'

;0

RETLW D'67'

;0

RETLW D'67'

;0

RETLW D'68'

;DFH

RETLW D'68'

;0

RETLW D'68'

;0

RETLW D'68'

;0

RETLW D'68'

;0

RETLW D'69'

;E4H

RETLW D'69'

;0

RETLW D'69'

;0

RETLW D'69'

;0

RETLW D'69'

;0

RETLW D'69'

;0

RETLW D'69'

;0

RETLW D'69'

;0

RETLW D'69'

;0

RETLW D'69'

;0

RETLW D'69'

;0

RETLW D'69'

;0

RETLW D'69'

;0

RETLW D'69'

;0

RETLW D'69'

;0

RETLW D'69'

;0

RETLW D'69'

;0

RETLW D'69' ;0 RETLW D'69' ;0 RETLW D'69' ;0 RETLW D'69' ;0

RETLW D'69'

;0

RETLW D'69'

;0

RETLW D'69'

;0

RETLW D'69'

;0

RETLW D'69'

;0

RETLW D'69'

;0

RETLW D'69'

;0

RETLW D'69'

;0

RETLW D'69'

;0

RETLW D'69'

;0

RETLW D'70'

;FFH

RETLW D'70'

;0

RETURN