Skip to content

Instantly share code, notes, and snippets.

Embed
What would you like to do?
LM35DZ Temperatursensor: Beispielcode für Arduino und ESP32 mit ADC ADS1115
/* Abfrage des LM35DZ Temperatur-Sensors am ESP32
* - analog am ESP32
* - analog am ADS1115 mit Weitergabe per I2C
*
* 2021-05-31 Heiko (unsinnsbasis.de)
*/
#define LM35_PIN 4 // GPIO-Pin für die Datenleitung des LM35DZ
#include <Adafruit_ADS1X15.h> // bindet Wire.h für I2C mit ein
Adafruit_ADS1115 ads;
#define ADS_I2C_ADDR 0x48
void setup() {
Serial.begin(115200);
delay(500);
Serial.println("LM35DZ am ESP32 - Test");
ads.begin(ADS_I2C_ADDR, &Wire);
// Werte des LM35DZ 1-fach verstärken (er liefert max. 1 V)
// wg. der hohen Auflösung des ADS1115 ist keine größere
// Verstärkung nötig
ads.setGain(GAIN_ONE);
}
void loop() {
int LM35_Value; // Messwert des Sensors per GPIO
int adc0; // Messwert an Kanal 0 des ADS1115
float millivolt, temperature;
LM35_Value = analogRead(LM35_PIN);
Serial.printf("ESP32 Analog-Rohwert: %d mV", LM35_Value);
// Wert in Temperatur umrechnen
temperature = (float)LM35_Value * 330.0 / 4095.0;
Serial.printf("; ESP32 Temp.: %3.1f °C", temperature);
// Temperatur mit Korrekturfunktion berechnen
// (siehe https://unsinnsbasis.de/ads1115/#tgt-dia)
temperature = ((float)LM35_Value / 1.239 + 100.38) / 10.0;
Serial.printf("; ESP32 korr.: %3.1f °C", temperature);
// Messung per ADS1115
adc0 = ads.readADC_SingleEnded(0); // Kanal 0 messen
millivolt = ads.computeVolts(adc0) * 1000;
Serial.printf("; ADS1115: %3.1f °C\n", millivolt/10.0);
delay(5000);
}
/* Abfrage des LM35DZ Temperatur-Sensors am Arduino
*
* 2020-10-22 Heiko (unsinnsbasis.de)
*/
#define LM35_PIN A0 // GPIO-Pin für die Datenleitung des LM35DZ
int LM35_Value ; // Messwert des Sensors
float temperature; // Temperatur in Grad Celsius
void setup() {
Serial.begin(9600);
delay(1000);
}
void loop() {
LM35_Value = analogRead(LM35_PIN);
Serial.print(LM35_Value);
Serial.print(" - ");
// Wert in Temperatur umrechnen
temperature = (float)LM35_Value * 500 / 1023;
Serial.print(temperature, 1); // eine Nachkommastelle
Serial.println(" °C");
delay(5000);
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment