Вы находитесь на странице: 1из 20

DIAGRAMA DE BLOQUES

El diagrama de bloques esta compuesto por siete etapas:


1. Etapa de control:Mediante un teclado conectado al puerto B del PIC 16F877A se
puede programar el SETPOINT de temperatura, la iluminacin y la finalizacin del
proceso.

2. Etapa de censado: Con esta etapa se inicia el proceso; el sensor LM35 determina
que temperatura existe dentro de la cmara de incubacin y en su pin de salida nos
da una seal en mili voltios.

3. Etapa de conversin A/D:En esta etapa el PIC 16F877A recibe la seal anloga
proporcionada por el sensor LM35 (con un rango de 10 mV 400 mV) y mediante
una rutina de conversin, lo transforma en un valor digital.

4. Etapa de conversin BINARIO a DECIMAL: Mediante una rutina de conversin
BINARIO a DECIMAL,el PIC 16F877A transforma el valor obtenido de la conversin
A/D para visualizarlo en el LCD y obtener unaproporcin lineal entre tensin (mV) y
temperatura (C).

5. Etapa de comparacin:El PIC 16F877A compara el SETPOINT programado con el
valor censado, y establece dos condiciones:
SENSOR
LM35
FUENTE DE CALOR
PIC 16F877A









BLOQUE DE
CONVERSION A/D
BLOQUE DE
CONVERSION (BINARIO
A DECIMAL)
VISUALIZACION
DE DATOS EN EL
LCD
CIRCUITO
DE MANDO
CIRCUITO DE
FUERZA
BLOQUE DE
COMPARACION
PIC 16F84A







BLOQUE
REGULADOR DE
VELOCIDAD
FUENTE DE VENTILACION
- Si: (valor censado <setpoint) Deja encendido la fuente de calor y mantiene la
velocidad del cooler a 1500 RPM.
- Si: (valor censado > o = al setpoint) Apaga la fuente de calor e incrementa la
velocidad del cooler a 3000 RPM.

6. Etapa de regulacin de velocidad: Para esta etapa se utiliz el PIC 16F84A,
programado como un control PWM y se encarga de regular la velocidad del cooler,
de esta manera tenemos una fuente de ventilacin.

7. Etapa de potencia:Mediante un relay se controla la carga resistiva que genera la
energa calorfica; de acuerdo al SETPOINT programado.


FUENTE DE ALIMENTACION

DESCRIPCION:
Segn los requerimientos del circuito, fue conveniente usar un transformador de 5
Amp. con tres salidas de tensin (5.5VAC, 6.5VAC y 13VAC) para proporcionar
alimentacin a los circuitos de control y fuerza.
Se utilizo tres puentes rectificadores W08 para cada salida de tensin AC, dos
reguladores de tensin (L7805 para la fuente de +5VDC) y (L7812 para la fuente de
+12VDC), para cada regulador se puso condensadores polarizados de 1000uF en su
entrada y 10uF en su salida, adicionalmente se agreg como filtro, un condensador
cermico de 100nF en la salida de tensin de cada regulador.
La salida de 5.5VAC solo fue rectificada y filtrada con los condensadores de 1000uF,
10uF y 100nF, para esta salida de tensin no se puso regulador de tensin por que el
motor que vamos a utilizar para mover la bandeja portadora de los huevos, consume
1.2 Amp. y el regulador de tensin solo puede suministrar hasta 1 Amp.


CIRCUITO DE POTENCIA

DESCRIPCION Y FUNCIONAMIENTO:
Encargado de controlar la carga resistiva, esta compuesto de un Optoacoplador 4N35 y
un relay de 12V DC.
Se conect una resistencia de 220 ohm en el pin 1 del Optoacoplador para regular la
corriente que llega del PIC a 13.5mA as nos aseguramos que el LED infrarrojo del
4N35 trabaje con la corriente adecuada.Adicionalmente se coloc un transistor BD135
en par Darlington con el transistor del 4N35 para poder controlar la bobina del Relay.
Tambin se coloc un diodo 1N4007 en paralelo a la bobina del Relay, para evitar que
el BD135 se destruya al momento de ponerlo en corte. n
Al energizar la bobina del Relay, se cierra un contacto del Relay y los 220 V AC fluyen a
travs de la resistencia de nicrom.
PLANOS DEL CIRCUITO IMPRESO
* PLANO DEL CIRCUITO PRINCIPAL
* CIRCUITO QUE CONTROLA LA RESISTENCIA DE NICROM
* CIRCUITO DE LA FUENTE DE ALIMENTACION
* CIRCUITO DEL LM35

* CIRCUITO DEL PANEL DE CONTROL




PROGRAMA PRINCIPAL PARA EL PIC 16F877A

LIST P=16F877A
__CONFIG _CP_OFF & _WDT_OFF & _BODEN_OFF & _PWRTE_ON & _XT_OSC & _WRT_OFF & _LVP_OFF & _CPD_OFF
INCLUDE <P16F877A.INC>
CBLOCK 0x20
LLAV1
LLAV2
LLAV3
LLAV4
LLAV5
D_M
D_U
D_D
MUESTRA_MSB
MUESTRA_LSB
DATO
CESTA
RE_UNI
RE_DEC
RE_CEN
LLAV6
LLAV7
CASH
BOTE
ENDC

ORG 0x00
goto INICIO
ORG 0x05

Mensajes addwf PCL,F
Mensaje0 DT "INCUBADORA PARA",0
Mensaje1 DT "HUEVOS DE AVE",0
Mensaje2 DT "HUEVO DE POLLO",0
Mensaje3 DT "HUEVO DE PAVO",0
Mensaje4 DT "HUEVO DE PATO",0
Mensaje5 DT "HUEVO DE CODOR.",0
Mensaje6 DT "CONFIGURACION",0
Mensaje7 DT "MANUAL",0
Mensaje8 DT "TEMP: C",0
Mensaje9 DT "SETPOINT: . C",0
Mensaje10 DT "STOP",0
Mensaje11 DT "T.pro: . C",0
Mensaje12 DT "T.act: . C",0
FinMensajes

INICIO clrf PORTC
bcf STATUS,RP1
bsf STATUS,RP0
movlw b'10000101'
movwf ADCON1
movlw b'00001011'
movwf TRISA
movlw b'00111111'
movwf TRISB
clrf TRISC
bcf STATUS,RP0

bcf PORTB,6
bsf PORTB,7
clrf LLAV1
clrf LLAV2
clrf LLAV3
clrf LLAV4
clrf LLAV5
clrf LLAV6
clrf LLAV7
clrf RE_UNI

clrf RE_DEC
clrf RE_CEN
call LCD_Inicializa
call LCD_Borra
call Retardo_1s
bcf PORTB,7
movlw Mensaje0
call LCD_Mensaje
movlw .1
call LCD_PosicionLinea2
movlw Mensaje1
call LCD_Mensaje
BU1 btfss PORTB,0
goto BU1
goto POLLO

;************** 1 MENU ************
POLLO call LCD_Borra
call Retardo_200ms
movlw Mensaje2
call LCD_Mensaje
call LCD_PosicionLinea2
movlw Mensaje8
call LCD_Mensaje
movlw .6
call LCD_PosicionLinea2
movlw .3
movwf D_D
call LCD_Nibble
movlw .7
movwf D_U
call LCD_Nibble
movlw '.'
call LCD_Caracter
movlw .7
movwf D_M
call LCD_Nibble
MENU1 btfss PORTB,0
goto PUL2
goto INIC
PUL2 btfss PORTB,3
goto PUL3
goto PAVO
PUL3 btfss PORTB,4
goto MENU1
goto MANU

PAVO call LCD_Borra
call Retardo_200ms
movlw Mensaje3
call LCD_Mensaje
call LCD_PosicionLinea2
movlw Mensaje8
call LCD_Mensaje
movlw .6
call LCD_PosicionLinea2
movlw .3
movwf D_D
call LCD_Nibble
movlw .8
movwf D_U
call LCD_Nibble
movlw '.'
call LCD_Caracter
movlw .2
movwf D_M
call LCD_Nibble
MENU2 btfss PORTB,0

goto PUL4
goto INIC
PUL4 btfss PORTB,3
goto PUL5
goto PATO
PUL5 btfss PORTB,4
goto MENU2
goto POLLO

PATO call LCD_Borra
call Retardo_200ms
movlw Mensaje4
call LCD_Mensaje
call LCD_PosicionLinea2
movlw Mensaje8
call LCD_Mensaje
movlw .6
call LCD_PosicionLinea2
movlw .3
movwf D_D
call LCD_Nibble
movlw .0
movwf D_U
call LCD_Nibble
movlw '.'
call LCD_Caracter
movlw .3
movwf D_M
call LCD_Nibble
MENU3 btfss PORTB,0
goto PUL6
goto INIC
PUL6 btfss PORTB,3
goto PUL7
goto CODOR
PUL7 btfss PORTB,4
goto MENU3
goto PAVO

CODOR call LCD_Borra
call Retardo_200ms
movlw Mensaje5
call LCD_Mensaje
call LCD_PosicionLinea2
movlw Mensaje8
call LCD_Mensaje
movlw .6
call LCD_PosicionLinea2
movlw .4
movwf D_D
call LCD_Nibble
movlw .0
movwf D_U
call LCD_Nibble
movlw '.'
call LCD_Caracter
movlw .0
movwf D_M
call LCD_Nibble
MENU4 btfss PORTB,0
goto PUL8
goto INIC
PUL8 btfss PORTB,3
goto PUL9
goto MANU
PUL9 btfss PORTB,4
goto MENU4
goto PATO

MANU call LCD_Borra
call Retardo_200ms
movlw .1
call LCD_PosicionLinea1
movlw Mensaje6
call LCD_Mensaje
movlw .5
call LCD_PosicionLinea2
movlw Mensaje7
call LCD_Mensaje
MENU5 btfss PORTB,0
goto PUL10
goto NUMER
PUL10 btfss PORTB,3
goto PUL11
goto POLLO
PUL11 btfss PORTB,4
goto MENU5
goto CODOR

;************* 2 MENU *************
NUMER call LCD_Borra
clrf D_D
clrf D_U
clrf D_M
call Retardo_200ms
movlw .0
call LCD_PosicionLinea1
movlw Mensaje9
call LCD_Mensaje
MUEST movlw .10
call LCD_PosicionLinea1
movfw D_D
call LCD_Nibble
movfw D_U
call LCD_Nibble
movlw .13
call LCD_PosicionLinea1
movfw D_M
call LCD_Nibble
btfss LLAV1,0
goto PRIM
btfss LLAV2,0
goto UP
btfss LLAV3,0
goto SECU
btfss LLAV4,0
goto UP_1
btfss LLAV5,0
goto TERC
goto UP_2
;Digito DECIMAL
PRIM movlw .13
call LCD_PosicionLinea1
movlw '_'
call LCD_Caracter
movlw .1
movwf LLAV1
UP btfss PORTB,1
goto DOWN
goto MAS_M
DOWN btfss PORTB,2
goto LEFT
goto MEN_M
LEFT btfss PORTB,4
goto OPT1
call Retardo_200ms
movlw .1
movwf LLAV2
goto MUEST
OPT1 btfss PORTB,0
goto STOP
goto INIC
STOP btfss PORTB,5
goto UP
goto MANU
MAS_M call Retardo_200ms
incf D_M,1
movfw D_M
sublw .10
btfss STATUS,2
goto MUEST
clrf D_M
goto MUEST
MEN_M call Retardo_200ms
decf D_M,1
movfw D_M
sublw .255
btfss STATUS,2
goto MUEST
clrf D_M
goto MUEST
;Digito UNIDAD
SECU movlw .11
call LCD_PosicionLinea1
movlw '_'
call LCD_Caracter
movlw .1
movwf LLAV3
UP_1 btfss PORTB,1
goto DOW_1
goto MAS_U
DOW_1 btfss PORTB,2
goto RIG_1
goto MEN_U
RIG_1 btfss PORTB,3
goto LEF_1
call Retardo_200ms
clrf LLAV1
clrf LLAV2
clrf LLAV3
goto MUEST
LEF_1 btfss PORTB,4
goto OPT2
call Retardo_200ms
movlw .1
movwf LLAV4
goto MUEST
OPT2 btfss PORTB,0
goto ST_1
goto INIC
ST_1 btfss PORTB,5
goto UP_1
goto MANU
MAS_U call Retardo_200ms
incf D_U,1
movfw D_U
sublw .10
btfss STATUS,2
goto MUEST
clrf D_U
goto MUEST
MEN_U call Retardo_200ms
decf D_U,1
movfw D_U
sublw .255
btfss STATUS,2
goto MUEST
clrf D_U
goto MUEST

;Digito DECENA
TERC movlw .10
call LCD_PosicionLinea1
movlw '_'
call LCD_Caracter
movlw .1
movwf LLAV5
UP_2 btfss PORTB,1
goto DOW_2
goto MAS_D
DOW_2 btfss PORTB,2
goto RIG_2
goto MEN_D
RIG_2 btfss PORTB,3
goto OPT3
call Retardo_200ms
clrf LLAV3
clrf LLAV4
clrf LLAV5
goto MUEST
OPT3 btfss PORTB,0
goto ST_2
goto INIC
ST_2 btfss PORTB,5
goto UP_2
goto MANU
MAS_D call Retardo_200ms
incf D_D,1
movfw D_D
sublw .10
btfss STATUS,2
goto MUEST
clrf D_D
goto MUEST
MEN_D call Retardo_200ms
decf D_D,1
movfw D_D
sublw .255
btfss STATUS,2
goto MUEST
clrf D_D
goto MUEST

;************** 3 MENU **************
INIC call LCD_Borra
movfw D_U
movwf DATO
movfw D_D
movwf CESTA
PREG1 decf CESTA,1
btfss STATUS,2
goto MEN_10
movlw .10
addwf DATO,1
goto VENTI
MEN_10 movlw .10
addwf DATO,1
goto PREG1
VENTI call Retardo_100ms
bsf PORTB,6
call Retardo_50ms
call Retardo_20ms
call Retardo_10ms
bcf PORTB,6
movlw Mensaje11
call LCD_Mensaje
movlw .7
call LCD_PosicionLinea1
movfw D_D
call LCD_Nibble
movfw D_U
call LCD_Nibble
movlw .10
call LCD_PosicionLinea1
movfw D_M
call LCD_Nibble
movlw .0
call LCD_PosicionLinea2
movlw Mensaje12
call LCD_Mensaje
XX movlw .7
call LCD_PosicionLinea2

;***** RUTINA PRINCIPAL *****
call C_ADC
btfss MUESTRA_MSB,0
goto SEGUI
movlw .2
movwf RE_CEN
movlw .56
addwf MUESTRA_LSB,0
goto LUCK
SEGUI movfw MUESTRA_LSB
LUCK call BIN_BCD
movfw CENTENAS
addwf RE_CEN,1
movfw RE_CEN
call LCD_Nibble
movfw DECENAS
addwf RE_DEC,1
movfw RE_DEC
call LCD_Nibble
movlw .10
call LCD_PosicionLinea2
movfw UNIDADES
addwf RE_UNI,1
call LCD_Nibble
RELAY movfw RE_DEC
movwf CASH
movfw RE_CEN
movwf BOTE
BO_ME decf BOTE,1
btfss STATUS,2
goto CA_10
movlw .10
addwf CASH,1
goto ADIC
CA_10 movlw .10
addwf CASH,1
goto BO_ME
ADIC movfw DATO
subwf CASH,0
btfsc STATUS,0
goto MART
btfss LLAV7,0
goto CHATO
goto DETIE
CHATO bsf PORTC,0
bsf PORTB,6
call Retardo_200ms
bcf PORTB,6
bsf LLAV7,0
goto DETIE
MART bcf PORTC,0
clrf LLAV7
DETIE clrf RE_CEN
clrf RE_DEC
clrf RE_UNI
btfss PORTB,5
goto XX
call LCD_Borra
bsf PORTB,7
call Retardo_200ms
bcf PORTB,7
bcf PORTC,0
movlw .6
call LCD_PosicionLinea1
movlw Mensaje10
call LCD_Mensaje
call Retardo_1s
goto POLLO

;Rutina de Conversion A/D
C_ADC movlw b'01000001'
movwf ADCON0
call Retardo_20micros
call Retardo_20micros
bsf ADCON0,2
btfsc ADCON0,2
goto $-1
nop
nop
movf ADRESH,0
movwf MUESTRA_MSB
bcf STATUS,RP1
bsf STATUS,RP0
movf ADRESL,0
bcf STATUS,RP0
movwf MUESTRA_LSB
return

INCLUDE <BIN_BCD.INC>
INCLUDE <LCD_4BIT.INC>
INCLUDE <LCD_MENS.INC>
INCLUDE <RETARDOS.INC>
End




PROGRAMA SECUNDARIO PARA EL PIC 16F84A


LIST P=16F84A
__CONFIG _CP_OFF & _WDT_OFF & _PWRTE_ON & _XT_OSC
INCLUDE <P16F84A.INC>
CBLOCK 0x0C
CY_ON
CY_OFF
CYCLO
ENDC
ORG 0x00
goto INICIO

INICIO bsf STATUS,5
movlw b'00000011'
movwf TRISA
clrf TRISB
bcf STATUS,5
clrf CYCLO
clrf PORTB
UP btfss PORTA,0
goto DOWN
goto MAS
DOWN btfss PORTA,1
goto START
goto MENOS
START movfw CYCLO
sublw .0
btfss STATUS,2
goto GOO
goto CERO
GOO movfw CYCLO
sublw .10
btfsc STATUS,2
goto CIEN
movwf CY_OFF
movfw CYCLO
movwf CY_ON
ON bsf PORTB,4
call Retardo_1ms
decfsz CY_ON,1
goto ON
OFF bcf PORTB,4
call Retardo_1ms
decfsz CY_OFF,1
goto OFF
goto UP
CERO clrf PORTB
goto UP
CIEN bsf PORTB,4
goto UP
MAS call Retardo_10ms
incf CYCLO,1
movfw CYCLO
sublw .11
btfss STATUS,2
goto START
decf CYCLO,1
goto START
MENOS call Retardo_10ms
decf CYCLO,1
movfw CYCLO
sublw .255
btfss STATUS,2
goto START
incf CYCLO,1
goto START

INCLUDE<RETARDO.INC>
END











DIAGRAMA DE FLUJO




















1 0






INICIO
RB0

ETIQUETAS
<LLAV1 LLAV7> = Registros.
D_M, D_U, D_D = Registros para guardar datos de la temperatura programada.
MUESTRA_MSB, MUESTRA_LSB = Registros para guardar datos de la conversin A/D.
DATO, CASH, CESTA, BOTE = Registros para la conversin binaria a decimal.
RE_UNI, RE_DEC, RE_CEN = Registro para producto de la conversin binaria decimal.
MENSAJES
ADDWF PCL.F = Directiva con los 13 mensajes
CONFIGURACION
RA0 = Entrada anloga
RA2 =Entrada de voltaje de referencia
RB0-RB5 = Entra da de pulsadores
RB6 Y RB7 = Salidas digital
RC0 = Salida para controlar la resistencia
PORD = Salidas para LCD



RB6 = 0
RB7 = 1

Tiempo = 1seg
RB7 = 0
Borrar LCD

INICIAR LCD
Mostrar mensaje con el nombre del equipo
Tiempo = 200 ms
Mostrar 2 mensaje (HUEVO
DE POLLO, TEMP: 37.7 C )

Guarda valor de la temperatura
movwf D_D
movwf D_U
3


0 0 0
0
1 1 1









0 0 0



1 1 1
1








1
RB0

RB4

RB3

1
Borrar LCD

Tiempo = 200 ms
Mostrar 3 mensaje (HUEVO
DE PAVO, TEMP: 38.2 C )

Guarda valor de la temperatura
movwf D_D
movwf D_U
2
RB0

RB4

RB3

Borrar LCD

Tiempo = 200 ms
Mostrar 4 mensaje (HUEVO
DE PATO, TEMP: 30.3 C )

Guarda valor de la temperatura
movwf D_D
movwf D_U
3
4
5



0 0 0
1 1 1











0 0 0
1 1 1
1 1






0 0 0
1 1 1

3
RB0

RB4

RB3

1
Borrar LCD

Tiempo = 200 ms
Mostrar 5 mensaje (HUEVO
DE CODORNIZ, TEMP: 40.0 C )

Guarda valor de la temperatura
movwf D_D
movwf D_U
4
RB0

RB4

RB3

1
Borrar LCD

Tiempo = 200 ms
Mostrar 6 mensaje
(PROGRAMACION MANUAL)

5
RB0

RB4

RB3

6
2
6










0
1
1

0

1
1
0

1
1

0
1
1

0

1

Borrar LCD

Tiempo = 200 ms
Mostrar 7 mensaje
(SETPOINT . C)

Mostrar en el LCD los datos
guardados en los registros
(D_D), (D_U), (D_M)

LLAV1

LLAV5

LLAV2

LLAV3

LLAV4

8
1 LLAV1
7
12
7
1 LLAV3
8
1 LLAV5 9
9

0 0 0
0

1 1 1




0 0


1 1




0 0


1 1








13
RB0

RB5

7
1 2

Tiempo = 200 ms
1 LLAV2

7
RB1

RB4

RB2

Tiempo = 200 ms
D_M + 1
10 D_M
Z

12
D_M = 0
Tiempo = 200 ms
D_M - 1
255 - D_M
Z

12
D_M = 0
13

0 0 0


1 1 1




0 0

1 1


0 0 0


1 1 1









Tiempo = 200 ms
LLAV1 = 0
LLAV2 = 0
LLAV3 = 0

8
RB1

RB3

RB2

Tiempo = 200 ms
D_U + 1
10 D_U
Z

12
D_U = 0
Tiempo = 200 ms
D_U - 1
255 - D_U
Z

12
D_U = 0
14
14
RB0

RB5

8
1 2

RB4

Tiempo = 200 ms
1 LLAV4

12



0 0 0


1 1 1




0 0
1 1





0 0 0 0

1 1






Tiempo = 200 ms
LLAV3 = 0
LLAV4 = 0
LLAV5 = 0

9
RB1

RB3

RB2

Tiempo = 200 ms
D_D + 1
10 D_D
Z

12
D_D = 0
Tiempo = 200 ms
D_D - 1
255 - D_D
Z

12
D_D = 0
15
RB0

RB5

9
1 2

15



























1
Borrar LCD

D_U DATO

D_D DATO

TIEMPO 80ms
DATO

RB6 = 1

RB6 = 0

Mostrar 8 mensaje (T.pro: . C)

Mostrar en el LCD los datos
guardados en los registros
(D_D), (D_U), (D_M)

LLAMAR A LA RUTINA DE
CONVERSIN A/D

ADRESH MUESTRA_MSB
ADRESL MUESTRA_LSB

MUSTRA_MSB W
Llamar a la rutina BIN_BCD

Mostrar en el LCD los datos
guardados en los registros
(CENTENAS), (DECENAS), (UNIDADES)

16



0 0

1 1
1


0

















Restar (DATO - CASH)

C

RC0 = 0

LIMPIA
LLAVE 7

RB5

16
Borrar LCD

TIEMPO 200 ms

RB0 = 0

RB7 = 0
Mostrar 9 mensaje (STOP)

3
LLAV7

TIEMPO 200 ms

RB6 = 1

RC0 = 1
RB6 = 0

LLAV7 = 0

17
17
17
MATERIALES USADOS PARA LA ELAVORACION DEL PROYECTO

COMPONENTE DESCRIPCION CANTIDAD
Acrlico 2 mm. de espesor 20 x 15 cm.
Bisagra 3
Cable automotriz N 14 8 mts.
Capacitor electroltico 1000 uf 3
Capacitor electroltico 10 uf 3
Capacitor electroltico 0.1 uf 1
Capacitor cermico 100 nf 3
Capacitor cermico 27 pf 4
Cooler 12 V DC 1
Crystal 4 MHz 2
Diodo rectificador 1N4007 2
Enchufe 1
Espadines 2
Estao 3 mts.
LCD 16X2 1
LED White 4
Listones de madera 1 de ancho 10 mts.
Molex 2 , 4 , 6 y 10 pines 10
Motor DC 12 V DC 1
Placa de baquelita 15 x 15 cm.
PIC 16F877A 1
PIC 16F84A 1
Porta resistencia Cermico 1
Potencimetro 1K ohm 1
Potencimetro 10K ohm 1
Potencimetro 20K ohm 1
Protoboard 2
PULSADORES Normalmente abierto 8
Rectificador W08 3
Relay 12 V DC 1
Regulador de tensin 7805 1
Regulador de tensin 7812 1
Resistencia 10K ohm 11
Resistencia 220 ohm 4
Resistencia 100 ohm 7
Resistencia de nicrom 750 W 1
Sensor LM35 1
Switch Normalmente abierto 2
Transformador 220VAC / 12VAC 5VAC 1
Transistor BD 135 2
Triplay 1 x 1.5 mts.