Tabla de contenido:
Simulación de un sensor de temperatura LM35 utilizando proteus y MicroC.
Detalles del video en Youtube
Suministros:
Paso 1: Conectando los Componentes
Usé Proteus 8.0 para simular el sensor de temperatura LM35 con microcontrolador PIC16f887
y una pantalla LCD de 16x2, todas las conexiones se muestran en la figura.
el LM35 puede usarse en un rango de -55 a 150 grados Celsius
pero por ahora estamos interesados en el rango de 2 a 150 grados Celsius con un error de 0,5 grados.
Lista de piezas de amazon:
LM35
PIC16F887
LCD 16x2
22 pF capacitores
Cristal de 8 mhz
Resistencias de 10K ohmios
Paso 2: Codificación
Usé MicroC para programar y compilar el siguiente código:
//4/2018
// suscríbase para más información en youtube en: Circuitalist
/// pin LCD
sbit LCD_RS en RB6_bit;
sbit LCD_EN en RB5_bit;
sbit LCD_D4 en RB4_bit;
sbit LCD_D5 en RB3_bit;
sbit LCD_D6 en RB2_bit;
sbit LCD_D7 en RB1_bit;
sbit LCD_RS_Direction at TRISB6_bit;
sbit LCD_EN_Direction at TRISB5_bit;
sbit LCD_D4_Direction at TRISB4_bit;
sbit LCD_D5_Direction at TRISB3_bit;
sbit LCD_D6_Direction at TRISB2_bit;
sbit LCD_D7_Direction at TRISB1_bit;
//**********************************
unsigned int adc_rd; // 10 bit para 16f887
char * txt; // texte pointeur
largo tlong
float val;
temp temp 4;
temperatura de flotación
vacío principal() {
INTCON = 0; // TODO INTERRUPTO DESACTIVADO
ANSEL = 0X01; // PIN RA0 CONFIGURADO COMO ANALÓGICO
ANSELH = 0; // Configurar otros pines ANALOG como E / S digital.
C1ON_BIT = 0; // Desactivar comparadores
C2ON_BIT = 0; // Desactivar comparadores TRISA.RA0 = 1;
TRISB = 0;
LCD_init ();
Lcd_Cmd (_LCD_CURSOR_OFF);
Lcd_Cmd (_LCD_CLEAR);
////////////////////////////Puesta en marcha
txt = "Circuitalista";
Lcd_Out (1, 1, txt);
txt = "Sensor de temperatura";
Lcd_Out (2, 1, txt);
delay_ms (1500);
///////////////////////////
Lcd_Cmd (_LCD_CLEAR);
mientras (1) {
adc_rd = ADC_read (0);
val = (adc_rd * 5000.0) /1023.0; // Convertir a resolución mV
temp = val / 10.0; // convertir mV a centígrados
si (temp <= 12) {
FloatToStr (temp, tempval);
Lcd_Out (1,1, "Thx para ver");
LCD_Out (1,7, tempval);
Lcd_Out (1,16, "C");
Lcd_Out (2,1, "Suscribirse ….");
}
if (temp> 12 & temp <= 25) {
FloatToStr (temp, tempval);
Lcd_Out (1,1, "Temp =");
LCD_Out (1,7, tempval);
Lcd_Out (1,16, "C");
Lcd_Out (2,1, "Warm");
}
if (temp> 25) {
FloatToStr (temp, tempval);
Lcd_Out (1,1, "Temp =");
LCD_Out (1,7, tempval);
Lcd_Out (1,16, "C");
Lcd_Out (2,1, "Hot");
}
}
}
Paso 3: Finalmente
Si todo sale bien, debería ver los resultados en la pantalla LCD.
mira mi video de youtube circuitalista