Vous êtes sur la page 1sur 9

LABORATORIO 3

MICROPROCESADORES Y CONTROLADORES

Presentado por
Jhon Wuilquer Laguna Castellanos
Cod 1077849519

UNIVERSIDAD ABIERTA Y A DISTANCIA UNAD


Cead Pitalito
Garzn Huila

Incubadora de Huevos

En este laboratorio vamos a implementar el diagrama en el simulador proteus y el lenguaje de


programacin en C mediante el ensamblador PIC C COMPILER de una incubadora de huevos y se
manejaran los siguientes materiales

Dos relevos
Procesador PIC16F877A
Procesador PIC18F4520
Cristales
Condensadores
Resistencia 10k
2 Indicadores Led
2 Motores 5v
Transistores
DISPLAY LM020L
DISPLAY LM032L
Termostato

1. Elaboraremos mediante el procesador PIC16F877A un extractor de calor para nuestra


incubadora su funcin es que si la incubadora excede la temperatura de 37 grados
centgrados inmediatamente empezar a extraer el calor mediante dos motores
extractores de estn incorporados en nuestra incubadora, es un requisito primordial que
los huevos deben de tener una temperatura ambiente de 37 grados centgrados para su
perfecta incubacin

Codigo en C# mediante el ensamblador PIC C COMPILER

1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.

# include <16f877a.h>
# device *=16
# device adc=10
# use delay(clock=4M)
# include <lcd.c>
float temperatura;
void main()
{
//*******************************
setup_adc_ports(RA0_ANALOG);//entrada del LM35
setup_adc(ADC_CLOCK_INTERNAL);
setup_COUNTERS(RTCC_internal.rtcc_div_1);//marca de divicion
set_adc_channel(0);
//*******************************
lcd_init();
lcd_gotoxy(1,1);
printf(lcd_putc,"Temp. Incubadora");
delay_ms(4000);
lcd_init();

while(true)
{
temperatura=(float)read_adc()/2;
//********grados centigrados
lcd_gotoxy(5,1);
printf(lcd_putc,"%f",temperatura);
lcd_gotoxy(13,1);
printf(lcd_putc,"Grados");
delay_ms(1000);

38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.

if(temperatura<=500&&temperatura>=37)
{
output_high(pin_a1);
output_high(pin_a2);
output_low(pin_a3);
lcd_gotoxy(3,2);
printf(lcd_putc,"Extrayendo Peligro");
delay_ms(1000);
}

else
{
output_low(pin_a1);
output_low(pin_a2);
output_high(pin_a3);
lcd_gotoxy(3,2);
printf(lcd_putc,"Optima Temperatura");
delay_ms(1000);
}
}
}

Imagen en proteux elaborado el esquema

2. Elaboraremos mediante el procesador PIC16F4520 un sensor de calor ya que este nos


permitir que la incubadora este a una temperatura no superior a los 37 grados
centgrados y si la temperatura llegase a subir inmediatamente la resistencia trmica que
es la encargada de generar el calor en nuestra incubadora de huevos se apague o se abra
el circuito mediante un relevo y de esta forma poder controlar la temperatura en el
interior de nuestra incubadora

Codigo en C# mediante el ensamblador PIC C COMPILER


1. #include "H:\Laboratorio 3 Microprocesadores\TERMOSTATO\Codigo
fuente\TERMOSTATO.h"
2.
3. #define LCD_ENABLE_PIN PIN_D0
4. #define LCD_RS_PIN PIN_D1
5. #define LCD_RW_PIN PIN_D2
6. #define LCD_TYPE 1
7. #define RELE PIN_E0
8.
9. #include <lcd.c>
10.
11. Unsigned int temp;
12. int x;
13.
14.
15. void sensado_temp(){
16.
17. temp= (2.0 * x*1000.0)/1024.0; //Calibramos el sensado deacuerdo al error de lectura.
18. }
19.
20.
21.
22. void main()
23. {
24. lcd_init();
25. lcd_putc("\ Incubadora \n");
26. delay_ms(3000);
27. lcd_putc("\f");
28. lcd_putc("\Leyendo Temperatura\n");
29. delay_ms(3000);
30. lcd_putc("\f");

31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.

setup_adc_ports(AN0|VSS_VDD);
setup_adc(ADC_CLOCK_DIV_2|ADC_TAD_MUL_6);
setup_psp(PSP_DISABLED);
setup_spi(SPI_SS_DISABLED);
setup_wdt(WDT_OFF);
setup_timer_0(RTCC_INTERNAL);
setup_timer_1(T1_DISABLED);
setup_timer_2(T2_DISABLED,0,1);
setup_timer_3(T3_DISABLED|T3_DIV_BY_1);
setup_comparator(NC_NC_NC_NC);
setup_vref(FALSE);
//Setup_Oscillator parameter not selected from Intr Oscillator Config tab
// TODO: USER CODE!!
//:::::::::::: CONDICIONES INICIALES PUERTOS ::::::::::
set_tris_A(0xC0);
set_tris_C(0xff);
set_tris_B(0x00);
set_tris_D(0x00);
set_tris_E(0xC);
output_C (0xff);
output_B (0x00);
output_A (0xC0);
output_D (0x00);
output_E (0xC);
//:::::::::::::::::::::::::::::::::::::::::::::::::::::

//::::::::::::: CONDICIONES INICIALES DE VARIABLES ::::::::::::


temp = 0;
x = 0;
//:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
while(1){
set_adc_channel(0); //seleccionamos canal 0
delay_ms(13);
x = read_adc(); //lectura del CAD
delay_us(13);

73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.

sensado_temp();

lcd_gotoxy(1,1); //Situamos donde escribir en el LCD


printf(LCD_PUTC,"Temperatura %u",temp); // Escribimos en el LCD
delay_ms(20);
IF ((temp>=21) | (temp>=37)){ //Sensado de la temperatura por histresis.
output_low(RELE);
}
IF ((temp<21) | (temp<37)){
output_high (RELE);
}
}
}

Imagen en proteux elaborado el esquema