![Simulation des LM35-Temperatursensors: 3 Schritte Simulation des LM35-Temperatursensors: 3 Schritte](https://img.gwsigeps.com/img/circuits/lm35-temperature-sensor-simulation-4.jpg)
Inhaltsverzeichnis:
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