Simulation des LM35-Temperatursensors: 3 Schritte

Simulation des LM35-Temperatursensors: 3 Schritte

Inhaltsverzeichnis:

Anonim

Simulation eines Temperatursensors LM35 mit Proteus und MicroC

Videodetails auf Youtube

Zubehör:

Schritt 1: Anschließen der Komponenten

Ich habe Proteus 8.0 verwendet, um den LM35-Temperatursensor mit dem Mikrocontroller PIC16f887 zu simulieren

und ein 16x2 LCD, alle Anschlüsse sind in der Abbildung dargestellt.

Der LM35 kann in einem Bereich von -55 bis 150 Grad Celsius eingesetzt werden

aber im Moment interessieren wir uns für den Bereich von 2 bis 150 Grad Celsius mit einem Fehler von 0,5 Grad.

Teileliste von amazon:

LM35

PIC16F887

LCD 16x2

22 pF Kondensatoren

8 MHz Kristall

10K Ohm Widerstände

Schritt 2: Codierung

Ich habe mit MicroC den folgenden Code programmiert und kompiliert:

//4/2018

// abonniere mehr auf youtube unter: Circuitalist

/// LCD Pin

sbit LCD_RS bei RB6_bit;

sbit LCD_EN bei RB5_bit;

sbit LCD_D4 bei RB4_bit;

sbit LCD_D5 bei RB3_bit;

sbit LCD_D6 bei RB2_bit;

sbit LCD_D7 bei RB1_bit;

sbit LCD_RS_Direction bei TRISB6_bit;

sbit LCD_EN_Direction at TRISB5_bit;

sbit LCD_D4_Direction bei TRISB4_bit;

sbit LCD_D5_Direction bei TRISB3_bit;

sbit LCD_D6_Direction bei TRISB2_bit;

sbit LCD_D7_Direction bei TRISB1_bit;

//**********************************

unsigned int adc_rd; // 10 Bit für 16f887

char * txt; // pointeur texte

lang tlong;

float val;

char tempval 4;

float temp;

void main () {

INTCON = 0; // ALLE UNTERBRECHUNG DEAKTIVIEREN

ANSEL = 0X01; // PIN RA0 ALS ANALOG KONFIGURIERT

ANSELH = 0; // Andere ANALOG-Pins als digitale E / A konfigurieren

C1ON_BIT = 0; // Komparatoren deaktivieren

C2ON_BIT = 0; // Komparatoren deaktivieren TRISA.RA0 = 1;

TRISB = 0;

LCD_init ();

Lcd_Cmd (_LCD_CURSOR_OFF);

Lcd_Cmd (_LCD_CLEAR);

////////////////////////////Anlaufen

txt = "Circuitalist";

Lcd_Out (1, 1, txt);

txt = "Temp. Sensor";

Lcd_Out (2, 1, txt);

delay_ms (1500);

///////////////////////////

Lcd_Cmd (_LCD_CLEAR);

während (1) {

adc_rd = ADC_read (0);

val = (adc_rd * 5000.0) / 1023.0; // In mV Auflösung konvertieren

temp = val / 10,0; // konvertiere mV nach celsius

if (temp <= 12) {

FloatToStr (temp, tempval);

Lcd_Out (1,1, "Thx for watching");

LCD_Out (1,7, tempval);

Lcd_Out (1,16, "C");

Lcd_Out (2,1, "Subscribe ….");

}

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");

}

}

}

Schritt 3: Endlich

Wenn alles richtig läuft, sollten die Ergebnisse auf dem LCD angezeigt werden.

Check mein Youtube Video Circuitalist