• Du musst dich registrieren, bevor du Beiträge verfassen kannst. Klicke auf Jetzt registrieren!, um den Registrierungsprozess zu starten. Registrierte User surfen werbefrei, können Suchen durchführen und sehen die volle Darstellung des Forums mit vielen anderen Unterforen!!!

Eigenbau Thermometer ESP8266 mit ADS1015

michael1968

Militanter Veganer
Guten Morgen zusammen,

Ich habe ein Wlanthermo mini V2 und ein Mini V1.
Beide laufen super und ich bin damit total zufrieden.

jetzt hab ich ein Projekt begonnen und möchte mir ein handliches Thermometer in Hemdtaschenformat bauen.

Ich hab mir einen ads1015 ADwandler gekauft und an einen ESP8266 angeschlossen.
Zum Test habe ich Teile des Codes vom wlanthemo ESP32 genutzt der eigentlich funktioniert.

Leider bekomme ich falsche Temperaturwerte.
Dies scheint damit zu tun zu haben das der ADS1015 sowohl single_ended und differenzial mode kann und nur 11 bit ausgibt.

Der ADS gibt als raw Value bei 3,3v und gain-einstellung(+/-4096 1bit =2mv) 1650 aus.

Irgend wie bekomme ich das mit der Umrechnung nicht hin und sehe den Wald vor Bäumen nicht

Code:
float Rt = Rmess * ((4096.0 / (4096 - rawValue)) - 1); geändert in float Rt = Rmess * ((1650.0 / (1650 - rawValue)) - 1);
  float v = log(Rt / Rn);
  float erg = (1 / (a + b * v + c * v * v)) - 273.15;

Hat schon mal jemand den ADS1015 genutzt ?
LG
Michael
 
Der ADS gibt als raw Value bei 3,3v und gain-einstellung(+/-4096 1bit =2mv) 1650 aus.
Wo liegt denn die Referenzspannung? Sind das die 3,3V? Dann muss der ADC ja seinen Maximalwert ausgeben. Bei 11 Bit wären das ja 2024. Warum nur 11 Bit, der ADS kann doch 12 Bit. Die Umrechnung macht halt erst Sinn, wenn der ADC auch was gescheites ausgibt. Zudem wäre gut zu wissen, wie deine Messkreise aufgebaut sind, sind die an denen vom Mini angelehnt? Das Nano kennst du?

Gruß
Steffen
 
Guten Morgen Steffen,

Die Refenzspannung sind die 3,3 Volt.
beim Maximalwert gibt der ADC 1650 aus.(gain_one)
Der ADC gibt wohl nur 11 Bit aus,da bit12 anzeigt ob + oder - Wert.
Der Messkreis ist an den Mini angelehnt.

Ich habe den Fehler eventuell gerade gefunden:
Rt = Rmess * ((1650 / (1650 - rawValue)) - 1); ->falscher messwert
Rt = Rmess * ((1650.0 / (1650 - rawValue)) - 1); -> geht !!! (versteh aber noch nicht warum)

Danke
Gruß Michael
 
Ich habe den Fehler eventuell gerade gefunden:
Rt = Rmess * ((1650 / (1650 - rawValue)) - 1); ->falscher messwert
Rt = Rmess * ((1650.0 / (1650 - rawValue)) - 1); -> geht !!! (versteh aber noch nicht warum)
Weil du mit float arbeitest.
 
Zurück
Oben Unten