INFO: Dieses Forum nutzt Cookies...
Cookies sind für den Betrieb des Forums unverzichtbar. Mit der Nutzung des Forums erklärst Du dich damit einverstanden, dass wir Cookies verwenden.

Es wird in jedem Fall ein Cookie gesetzt um diesen Hinweis nicht mehr zu erhalten. Desweiteren setzen wir Google Adsense und Google Analytics ein.

Antwort schreiben 
 
Themabewertung:
  • 0 Bewertungen - 0 im Durchschnitt
  • 1
  • 2
  • 3
  • 4
  • 5
ESP32, AD-Wandler ADS1115, NTC einlesen
12.12.2020, 12:08 (Dieser Beitrag wurde zuletzt bearbeitet: 12.12.2020 15:29 von Bitklopfer.)
Beitrag #1
ESP32, AD-Wandler ADS1115, NTC einlesen
Hallo zusammen,

ich bin ein einer Neuer und möchte mich kurz vorstellen.
Bin > 50 Jahre alt, wohne in der Schweiz und interessiere mich seit kurzem für Microcontroller. Ich habe diverse kleine Beispiele mit Arduino, ESP8266 und ESP32 gebastelt. Somit bin ich absoluter Neuling.

Jetzt habe ich ein kleines Projekt das ich realisieren möchte und komme nicht weiter.
Ich möchte mir ein W-Lan Grillthermometer mit einer Kerntemperatur, einer Garraumtemperatur und einer Blynkanbindung bauen.

Die Garraumtemperatur erfasse ich mit einem PT100 und Max31865 funktioniert sehr gut.
Die Kerntemperatur möchte ich mit einer NTC- Einstechsonde (Aliexpress) messen. Das funktioniert leider nur bedingt. Mit dem normalen Analgeingang des ESP hatte ich Abweichungen von 10%. Das hat mir so nicht gefallen, darum die Idee eines AD-Wandler ADS1115, aber da bekomme ich völlig falsche Werte und ich weiss jetzt nicht mehr weiter und bitte um eure Hilfe.

Ich habe mit einem 100kOhm einen Spannungsteiler aufgebaut. Die Analogeingänge 1-3 des ADS1115 habe ich aug GND gelegt.

Den Beta-Wert der Einstechsonde habe ich über folgende HomePage ermittelt.
https://www.thinksrs.com/downloads/progr...ulator.htm

Hier mein Code
Code:
#include <Arduino.h>
#include <Wire.h>
#include <Adafruit_ADS1015.h>

Adafruit_ADS1115 ads;  /* Use this for the 16-bit version */
// Adafruit_ADS1015 ads;     /* Use thi for the 12-bit version */
    
// widerstand bei 25 grad C der Sonde
#define THERMISTORNOMINAL 97000    
// temp. for nominal resistance (almost always 25 C)
#define TEMPERATURENOMINAL 25  
// The beta coefficient of the thermistor (usually 3000-4000)
#define BCOEFFICIENT 4036
// the value of the 'other' resistor
#define SERIESRESISTOR 102000


void setup(void)
{
  Serial.begin(9600);

  // The ADC input range (or gain) can be changed via the following
  // functions, but be careful never to exceed VDD +0.3V max, or to
  // exceed the upper and lower limits if you adjust the input range!
  // Setting these values incorrectly may destroy your ADC!
  //                                                                ADS1015  ADS1115
  //                                                                -------  -------
  // ads.setGain(GAIN_TWOTHIRDS);  // 2/3x gain +/- 6.144V  1 bit = 3mV      0.1875mV (default)
  ads.setGain(GAIN_ONE);        // 1x gain   +/- 4.096V  1 bit = 2mV      0.125mV
  // ads.setGain(GAIN_TWO);        // 2x gain   +/- 2.048V  1 bit = 1mV      0.0625mV
  // ads.setGain(GAIN_FOUR);       // 4x gain   +/- 1.024V  1 bit = 0.5mV    0.03125mV
  // ads.setGain(GAIN_EIGHT);      // 8x gain   +/- 0.512V  1 bit = 0.25mV   0.015625mV
  // ads.setGain(GAIN_SIXTEEN);    // 16x gain  +/- 0.256V  1 bit = 0.125mV  0.0078125mV
  
  ads.begin();

}

void loop(void)
{
  int16_t adc0;
  float fadc0;

  adc0 = ads.readADC_SingleEnded(0);

  fadc0 = adc0*0.0625;
  Serial.print("Spannung: "); Serial.print(fadc0); Serial.println("mV");
  Serial.print("AIN0: "); Serial.println(adc0);
  
  float average;
  average = adc0;
  
  Serial.print("Average analog reading ");
  Serial.println(average);
  
  average = 65536 / average - 1;
  average = SERIESRESISTOR / average;
  Serial.print("Thermistor resistance ");
  Serial.println(average);
  
  float steinhart;
  steinhart = average / THERMISTORNOMINAL;     // (R/Ro)
  steinhart = log(steinhart);                  // ln(R/Ro)
  steinhart /= BCOEFFICIENT;                   // 1/B * ln(R/Ro)
  steinhart += 1.0 / (TEMPERATURENOMINAL + 273.15); // + (1/To)
  steinhart = 1.0 / steinhart;                 // Invert
  steinhart -= 273.15;                         // convert absolute temp to C


Serial.print("Kerntemperatur ist ");
Serial.print(steinhart);
Serial.println(" *C nach Steinhart");

  delay(1000);
}

Ich bekomme immer Werte um die 50 Grad. Es müsste aber um die 23 Grad sein.
Ich weiss nicht wo mein Fehler liegt und wäre sehr froh um Unterstützung von Euch.

Mit der selben Sonde konnte ich schon mal richtige Werte auf einem Arduino uno erfassen, aber da habe ich kein W-Lan.

Besten Dank schon mal im Voraus.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
12.12.2020, 14:41 (Dieser Beitrag wurde zuletzt bearbeitet: 12.12.2020 15:35 von Bitklopfer.)
Beitrag #2
RE: ESP32, AD-Wandler ADS1115, NTC einlesen
Hallo smily013,

ich denke der Gain ist falsch. Der NodeMCU hat nur 3,3 Volt im Gegensatz zum Uno 5V. Somit stimmt die Auflösung des ADC nicht zur Volt Spannung des NodeMCU.

Gruß
Franzel

..ähm die Abkürzung ADS ist mir als Elektroniker nicht geläufig...das sind Analog Digital Converter. lgbk Mod.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
12.12.2020, 15:20 (Dieser Beitrag wurde zuletzt bearbeitet: 12.12.2020 15:30 von Bitklopfer.)
Beitrag #3
RE: ESP32, AD-Wandler ADS1115, NTC einlesen
Hi,

ich verweise Dich mal auf den Sketch (für Arduino) den ich hier hinterlassen habe. Link >>>
Damit komme ich bei Zimmertemperatur mit den 10Bit des Arduino auf 10tel-Grad Auflösung.
Beim ESP kann ich nicht helfen. Aber prüfe mal mit ein paar mehr Ausgaben, ob Deine Zwischenwerte stimmen,
die Du an der Stelle erwarten würdest! (gemessene Spannung, Widerstand, ...)

Gruß André
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
12.12.2020, 15:27 (Dieser Beitrag wurde zuletzt bearbeitet: 12.12.2020 15:30 von Bitklopfer.)
Beitrag #4
RE: ESP32, AD-Wandler ADS1115, NTC einlesen
Nein, die AD-Wandlung erfolgt im ADS1115. Der NodeMCU sieht nur das I2C-Signal.

@TO: Mit welcher Spannung betreibst Du den ADS1115? Hat der PullUp-Widerstände an SDA/SCL?

Im Datenblatt lese ich
Analoginput current 100,momentary mA
Analoginput current 10,continuous mA

Dafür erscheint mir Dein Spannungsteiler mit 100 kOhm zu hochohmig.
Hast Du ohne ADS1115 mal die Spannung gemessen?

Hast Du Dir mal diesen Thread angeschaut?

Gruß Tommy

"Wer den schnellen Erfolg sucht, sollte nicht programmieren, sondern Holz hacken." (Quelle unbekannt)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
12.12.2020, 16:05
Beitrag #5
RE: ESP32, AD-Wandler ADS1115, NTC einlesen
(12.12.2020 15:27)Tommy56 schrieb:  ...
Im Datenblatt lese ich
Analoginput current 100,momentary mA
Analoginput current 10,continuous mA

Dafür erscheint mir Dein Spannungsteiler mit 100 kOhm zu hochohmig.
Hast Du ohne ADS1115 mal die Spannung gemessen?
...

@Tommy, das sind maximum Werte für den Fall das die Schutzdioden an den Eingängen belastet werden....das wäre dann Überspannung... die im normalen Betrieb geltenden Eingangswiderstände sind da deutlich höher:
Common-modeinputimpedance: // Kopie aus Datenblatt ADS1115
FS= ±6.144V(1) 10MΩ
FS= ±4.096V(1), ±2.048V 6MΩ
FS= ±1.024V 3MΩ
FS= ±0.512V,±0.256V 100MΩ
...was anderes hätte mich auch gewundert.

Aber um mit diesem ADC klarzukommen wäre es mal sinnvoll eine feste Spannung anzulegen und dann mit der einstellbaren Verstärkung (Gain) zu experimentieren bis ein plausibler Wert dabei rauskommt.

Und wenn ich das richtig lese dann hat der Nominalwert vom NTC einen recht hohen Wert mit 97000 Ohm was natürlich die Sache für Störungen anfälliger macht als ein NTC mit um die 5000 Ohm.
Und an und für sich ist dann der Vorwiderstand mit 102000 Ohm schon passend dazu...nur frage ich mich wo die 2000 Ohm dabei herkommen...welche E-Reihe soll das sein...oder wurde der R mit einem guten Messgerät überprüft ?
lgbk


An alle Neuankömmlinge hier, wenn ihr Code(Sketch) hier posten wollt dann liest euch bitte diese Anleitung durch.

Ich spreche fließend Schwäbisch, Deutsch das Notwendigste und für die Begriffsstutzigen erprobtes Tacheles mit direkten Hinweisen ohne Schnörkel...

1+1 = 10 Angel ...und ich bin hier nicht der Suchmaschinen-Ersatz Dodgy...nur mal so als genereller Tipp..
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
12.12.2020, 16:07
Beitrag #6
RE: ESP32, AD-Wandler ADS1115, NTC einlesen
Danke für die Korrektur. Etwas hoch war mir das auch schon vorgekommen.

Gruß Tommy

"Wer den schnellen Erfolg sucht, sollte nicht programmieren, sondern Holz hacken." (Quelle unbekannt)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
12.12.2020, 16:17
Beitrag #7
RE: ESP32, AD-Wandler ADS1115, NTC einlesen
(12.12.2020 16:07)Tommy56 schrieb:  Danke für die Korrektur. Etwas hoch war mir das auch schon vorgekommen.

Gruß Tommy

...ja das wären wohl Werte für ein Dreheisenmessinstrument aus der Anfangszeit der Messtechnik...Wink


An alle Neuankömmlinge hier, wenn ihr Code(Sketch) hier posten wollt dann liest euch bitte diese Anleitung durch.

Ich spreche fließend Schwäbisch, Deutsch das Notwendigste und für die Begriffsstutzigen erprobtes Tacheles mit direkten Hinweisen ohne Schnörkel...

1+1 = 10 Angel ...und ich bin hier nicht der Suchmaschinen-Ersatz Dodgy...nur mal so als genereller Tipp..
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
12.12.2020, 16:20 (Dieser Beitrag wurde zuletzt bearbeitet: 12.12.2020 16:25 von Tommy56.)
Beitrag #8
RE: ESP32, AD-Wandler ADS1115, NTC einlesen
Ja, wahrscheinlich Wink . Die Störanfälligkeit dieses hochohmigen Teilers dürfte allerdings beträchtlich sein, besonders da der wohl an einer ziemlich langen Leitung hängen dürfte.

Gruß Tommy

"Wer den schnellen Erfolg sucht, sollte nicht programmieren, sondern Holz hacken." (Quelle unbekannt)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
Antwort schreiben 


Möglicherweise verwandte Themen...
Thema: Verfasser Antworten: Ansichten: Letzter Beitrag
  TTGO ESP32 SIM800L Pinout Stromversorgung pcfritz 1 92 Gestern 14:40
Letzter Beitrag: hotsystems
  ESP32 Daten aus HTML Roger100499 11 315 15.04.2021 15:00
Letzter Beitrag: Tommy56
  Erfahrungen mit ESP32 und WLAN/MQTT oder was ich beobachtet habe... Arduino4Fun 23 3.447 09.04.2021 16:15
Letzter Beitrag: amshh
  Suche Erfahrungen und Hilfe mit ESP32-CAM WiFi + Bluetooth Modul Kamera Modul esp32 Christian_Moba-Arduino 28 1.604 04.04.2021 08:24
Letzter Beitrag: amithlon
  ESP32 CAM Flashlamp schalten RaspiUser0815 13 3.217 28.03.2021 21:51
Letzter Beitrag: Grufti99
  ESP32-cam WAV´s einmalig auf GPI0 25/26 abspielen Sarastro 2 340 28.03.2021 10:45
Letzter Beitrag: Sarastro
  Led-Matrix 8x32 mit Esp32 Zerrus 5 444 27.03.2021 14:16
Letzter Beitrag: hotsystems
  Esp32 MD-Parola Scrolltext wwilhelm 3 371 26.03.2021 22:35
Letzter Beitrag: Tommy56
  ESP32 und Interrupts - ein Erfahrungsbericht - und eine Frage ;) MicroBahner 6 588 24.03.2021 09:18
Letzter Beitrag: MicroBahner
Brick Tiefgehende ESP32 Schnittstellen-Dokumentation gesucht Roland53425 6 776 22.03.2021 18:54
Letzter Beitrag: Bitklopfer

Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste