Simulación del sensor de temperatura LM35: 3 pasos

Simulación del sensor de temperatura LM35: 3 pasos

Tabla de contenido:

Anonim

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