Está en la página 1de 10

4 DE AGOSTO DEL 2016- SUCHIAPA CHIAPAS

Sistema de control
de una incubadora
neonatal
Proyecto final del 3er Corte

INTEGRANTES:
o Hernández Gómez, Diego Antonio
o Jacinto Córdoba, Diana Laura
o Pérez González, Alan Jesús
o Ramos López, Jemimah

MATERIA:
Microprocesadores

PROFESOR:
Vázquez Velázquez, Miguel Arturo
Índice
Contenido
Índice..........................................................................................................................1
Descripción Del Dispositivo.......................................................................................2
Diagrama de bloques.................................................................................................3
Diagrama esquemático..............................................................................................3
Funcionamiento desde el microcontrolador..............................................................4
Código fuente ensamblador.......................................................................................6
Descripción Del Dispositivo
Una incubadora neonatal consiste en una cámara cerrada con calefacción por
convección. Dicha termorregulación la logra mediante un sensor que mide la
temperatura dentro de la incubadora y la compara con una temperatura
establecida. Cuando detecta que la temperatura es menor que la establecida, la
incubadora emite calor para mantener la temperatura adecuada.
El objetivo de este proyecto es realizar una simulación de un sistema de control de
las incubadoras neonatales mediante un microcontrolador y un sensor que estará
obteniendo la temperatura dentro del prototipo para realizar la comparación con
las temperaturas establecidas.
Temperaturas establecidas en el prototipo
o Temperatura Mínima: 30°C

o Temperatura Máxima: 32°C

En el momento que la temperatura de la incubadora sea menor que 29°C iniciara


el sistema de calefacción, el cual será representado por un foco. De igual forma
cuando el sensor detecte una temperatura mayor que 32°C se iniciara un sistema
de enfriamiento, representado por un ventilador. Estas acciones lograran que la
temperatura se mantenga dentro de los rangos de temperatura ideales para un
neonato.
Los materiales utilizados son los siguientes:
o PIC16F84A

o Sensor de temperatura DSL28B20

o Etapa de potencia (moc,triac)


o Foco

o Ventilador

o Componentes (resistencias, cristal de cuarzo 4MHz y capacitores)


Diagrama de bloques

Temperatura>39 Sistema de
Etapa de potencia enfriamiento
y
Sensor Alarma
DS18b20 Sistema de
Temperatura<29 calefaccion

Diagrama esquemático
Funcionamiento desde el microcontrolador
El microcontrolador se encarga de establecer dos temperaturas como mínimas y
máximas. Básicamente se está controlando la salida de un pin para activar o
desactivar una etapa de potencia mediante una señal digital. Entonces, el
DSL18B20 es el encargado en tomar la temperatura de la siguiente manera:
El formato es de dos bytes:
o El primer bit es el de signo.

o Las temperaturas positivas comienzan con 1 bit a cero: "0xxxxxxx


xxxxxxxx".
o Las temperaturas negativas comienzan con 1 bit a a uno: "1xxxxxxx
xxxxxxxx".
o El nible bajo del byte bajo es la parte decimal.

o La parte entera la conforman el nible bajo del byte alto y el nible alto del
byte bajo.
Por ejemplo: +25ºC = xxxx0001 1001xxxx = 25 en decimal.
Esta información se despliega en un LCD 16x2.
Entrando más a fondo en el funcionamiento del microcontrolador:
 Se crea una interrupción para que constantemente se tome la temperatura
 La sub rutina termómetro se encarga de convertir los dos bytes provenientes
del sensor, agrega signo ° y el punto decimal
 Se visualiza la temperatura en la LCD
 Se hace una comparación con los rangos
 En la sub rutina incubadora se reconoce si están encendidos los sistemas
de calefacción y enfriamiento
 Dependiendo del estado de los sistemas se realiza una comparación
o Si esta encendido es necesario checar constantemente si es
necesario mantener encendido o si ya es tiempo de apagar
o Si está apagado de igual forma se tiene que verificar si es necesario
encender
Esto se logra restando la temperatura establecida con la actual, en el momento
que llegue a la temperatura establecida esta resta dará 0 y significa que ya es
necesario apagar o encender. De lo contrario el resultado será cualquiera excepto
0 y esto significa que la temperatura aún no ha llegado a su límite y que debe
mantenerse en el mismo estado.

Código fuente ensamblador


LIST P=16F84A
INCLUDE <P16F84A.INC>
__CONFIG _CP_OFF & _WDT_OFF & _PWRTE_ON & _XT_OSC

CBLOCK0x0C
Registro50ms ; Guarda los incrementos cada 50 ms.
ENDC

tempmin equ 3ch ;Variables de los rangos de temperatura


tempmax equ 2ch
TMR0_Carga50ms EQU d'256'-d'195' ; Para conseguir interrupción cada 50 ms.
CARGA_2s EQU d'40' ; Leerá cada 2s = 40 x 50ms = 2000ms.
#DEFINE alarma PORTB,0 ;Definir salidas
#DEFINE led PORTB,1
#DEFINE motor PORTB,2

; ZONA DE CÓDIGOS ********************************************************************

ORG 0
goto Inicio
ORG 4
goto ServicioInterrupcion

Mensajes
addwf PCL,F
MensajePublicitario
DT "UPCHIAPAS", 0x00
MensajeGradoCentigrado
DT "ºC ", 0x00

Inicio
call LCD_Inicializa
bsf STATUS,RP0
movlw b'10000111' ; Prescaler de 256 para el TMR0.
movwf OPTION_REG
bcf led ;Configuración de las salidas
bcf motor
bcf alarma
call LCD_Linea1 ; Se sitúa al principio de la primera línea.
movlw MensajePublicitario
call LCD_Mensaje
call DS18B20_Inicializa ; Comienza la conversión del termómetro y pone
movlw TMR0_Carga50ms ; Carga el TMR0 en complemento a 2.
movwf TMR0
movlw CARGA_2s ; Y el registro cuyo decremento contará los 2 s.
movwf Registro50ms
clrw
movlw b'10101000' ; Activa interrupción del TMR0 (T0IE), por cambio de
movwf INTCON ; líneas del Puerto B (RBIE) y la general (GIE)
Principal
goto Principal ;

ServicioInterrupcion
btfsc INTCON,T0IF ;Si es una interrupción producida por el Timer 0
call Termometro ;lee el termómetro
bcf INTCON,T0IF ;Limpia bit intcon
retfie
;*******************************************************************************
Termometro
bcf INTCON,T0IF ;Limpia bit intcon
movlw TMR0_Carga50ms
movwf TMR0 ; Recarga el TMR0.
decfsz Registro50ms,F ; Decrementa el contador.
movlw CARGA_2s ; Repone este contador nuevamente.
movwf Registro50ms
call DS18B20_LeeTemperatura ; Lee la temperatura.
call DS18B20_Inicializa ; Comienza conversión para la siguiente lectura.
movlw .5 ; Se coloca para centrar visualización en la
call LCD_PosicionLinea2 ; segunda línea.
movf DS18B20_Temperatura,W
call BIN_a_BCD ; La pasa a BCD.
call LCD_Byte ; Visualiza apagando los ceros no significativos.
movlw '.' ; Visualiza el punto decimal.
call LCD_Caracter
movf DS18B20_TemperaturaDecimal,W ; Visualiza la parte decimal.
call LCD_Nibble
movlw MensajeGradoCentigrado ; En pantalla LCD aparece "ºC ".
call LCD_Mensaje
;*******************************************************************************
Incubadora
movlw .29
movwf tempmin ;Establecemos temperatura minima
btfss led ;Comprueba si esta encendido foco
goto ledEstabaApagada ;Si el foco off
ledEstabaActivada ;Foco on, determinar si es necesario apagar
movf DS18B20_Temperatura,W
subwf tempmin,W ;W=tempmin- temp
btfsc STATUS,C ;tempmin < temp ?
goto Finincubadora ;Si da 0, aun es menor dejar encendido
ApagaCarga ;Si no da 0, ya es mayor
bcf led ;apagar calefacción
goto Finincubadora
ledEstabaApagada ;Determinar si temp. continua siendo mayor que tempmin
movf tempmin,W
subwf DS18B20_Temperatura,W ;W=temp-tempmin
btfsc STATUS,C ; temp < tempmin ?
goto Finincubadora ; si da 0, aun es mayor asi que continua apagado
EnciendeCarga ; si no da 0, la temp ya es menor que temp. min, la enciende
bsf led ;Inicia calefaccion
call pitido ;Inica sistema de alarma
call pitido
;*******************************************************************************
Finincubadora ;Ahora compara con la temperatura máxima
movlw .32
movwf tempmax ;Establecemos temperatura máxima
btfss motor ;comprueba si esta encendido el ventilador
goto motorEstabaApagada ;Si el ventilador off
motorEstabaActivada ;Ventilador on, determinar si es necesario apagar
movf tempmax,W
subwf DS18B20_Temperatura,W ; W=temp-tempmax
btfsc STATUS,C ; temp > tempmax ?
goto Finincubadora2 ; si da 0, aun es mayor asi que continua encendido
ApagaCarga2 ; si no da 0, la temp ya es menor que temp. max, la apaga
bcf motor
goto Finincubadora2
motorEstabaApagada ;Determinar si temp. continua siendo mayor que tempmax
movf DS18B20_Temperatura,W
subwf tempmax,W ;W=tempmax- temp
btfsc STATUS,C ;tempmax < temp?
goto Finincubadora2 ;si da 0, aun es menor asi que continua apagado
EnciendeCarga2 ;si no da 0, la temp ya es mayor que temp. max, la enciende
bsf motor ;Encender ventilador
call pitido ;Enciende alarma
Finincubadora2
return
;*******************************************************************************
pitido
bsf alarma ;Parpadeo del zumbador
call Retardo_200ms
bcf alarma
call Retardo_200ms
bsf alarma
call Retardo_200ms
bcf alarma
call Retardo_200ms
return
INCLUDE <DS18B20.INC> ; Subrutinas de control del termómetro digital.
INCLUDE <BUS_1LIN.INC> ; Subrutinas de control del bus de 1 línea.
INCLUDE <RETARDOS.INC>
INCLUDE <BIN_BCD.INC>
INCLUDE <LCD_4BIT.INC>
INCLUDE <LCD_MENS.INC>
END

También podría gustarte