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 wollte dann liest euch bitte diese Anleitung durch.

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 wollte dann liest euch bitte diese Anleitung durch.

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
  ESP32 D1mini: Schiebeschalter für was? AnFi 2 209 16.01.2021 09:16
Letzter Beitrag: AnFi
  ESP32 Board und LCDKeypadShield kjoussen 23 770 11.01.2021 00:04
Letzter Beitrag: kjoussen
  Erfahrungen mit ESP32 und WLAN/MQTT oder was ich beobachtet habe... Arduino4Fun 13 927 10.01.2021 14:18
Letzter Beitrag: nbk83
Question ESP32 als BLE client, int to 2byte Wert reisner 3 223 07.01.2021 18:13
Letzter Beitrag: Tommy56
  ESP32 über OTA luemar 58 2.179 03.01.2021 13:50
Letzter Beitrag: luemar
  Woher Gehäuse für ESP32 ? Steinspiel 36 2.176 28.12.2020 00:43
Letzter Beitrag: Steinspiel
Smile Frage zu Millis im Loop - ESP32 Stargazer 5 712 27.12.2020 06:41
Letzter Beitrag: N1d45
  ESP32 Devkit c4 Oled und RFID RC522 betreiben klappt nicht steffus 1 309 23.12.2020 12:45
Letzter Beitrag: hotsystems
  Vergleich ESP32-Boards (auch Batteriemodus) biologist 0 321 22.12.2020 14:40
Letzter Beitrag: biologist
  Sleepmodus ESP32 codingalex 6 545 22.12.2020 02:31
Letzter Beitrag: N1d45

Gehe zu:


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