• SHOP-INFO: Kurze Pause!

    Im Zeitraum vom Mo. 25.03.2024 bis Di. 02.04.2024 erfolgt kein Versand. Shop-Bestellungen, welche in diesem Zeitraum getätigt werden, werden voraussichtlich erst wieder ab Mi. 03.04.2024 bearbeitet und verschickt.

    Euer WLANThermo Team wünscht euch schöne Ostertage!

Beta Wert 100k/iGrill

maxawp97

New member
Hallo,
kann mir jemand sagen was für ein Beta-Wert der 100k/iGrill Fühler besitzt? Probiere mich an einem selbstgebauten Grillthermometer mit einem ESP32. Komme da mit der Berechnung der Temperatur nicht weiter und brauche den definitiv richtigen Beta-Wert. Noch besser wäre natürlich ein fertiges Programm.
Vielen Dank
 

s.ochs

BOFH
Teammitglied
Admin
Welchen Beta? Beta_25/85? Ohne Index fehlt die Referenz. Kann dir morgen die Widerstandswerte von 50 / 85 /100 °C raussuchen. Oder du schaust einfach selbst in unserem GitHub. Dort findest du ja auch unseren Code für die Berechnung der Temperaturwerte. Wir arbeiten allerdings nicht mit Beta-Wert, sondern mit dem Steinhart-Hart-Modell.
Gruß Steffen
 

maxawp97

New member
kannst du dir vielleicht mal mein Programm angucken. Weiß nicht was da flasch sein soll. Hab als Messwiderstand 50 Ohm das aber auch entsprechend deklariert. Komme bei Zimmertemperatur aber auf -90 Grad. Vielen Dank schon mal.

from machine import Pin, ADC
from time import sleep_ms
from math import log

ntc = ADC(Pin(4))
ntc.atten(ADC.ATTN_11DB)
ntc.width(ADC.WIDTH_12BIT)

Rn = 100.075
Rmess = 50.0
a = 3.3525233e-03
b = 2.5293916e-04
c = 2.7388783e-06

ntc_bit = ntc.read()

def temperatur():
global Rn, Rmess, a, b, c
Rt = Rmess * ((4096.0 / (4096 - ntc_bit)) - 1)
v = log(Rt / Rn)
Temp = (1 / (a + b * v + c * v * v)) - 273.15
print(Temp)

while True:
temperatur()
sleep_ms(1500)
 

maxawp97

New member
from machine import Pin, ADC
from time import sleep_ms
from math import log, e

ntc = ADC(Pin(4))
ntc.atten(ADC.ATTN_11DB)
ntc.width(ADC.WIDTH_12BIT)

Rn = 100.075
Rmess = 50.0
a = 3.3525233 * e**-03
b = 2.5293916 * e**-04
c = 2.7388783 * e**-06

ntc_bit = ntc.read()

def temperatur():
global Rn, Rmess, a, b, c
Rt = Rmess * ((4096.0 / (4096 - ntc_bit)) - 1)
v = log(Rt / Rn)
Temp = (1 / (a + b * v + c * v * v)) - 273.15
print(Temp)

while True:
temperatur()
sleep_ms(1500)

Hier mein richtiger Code ... oben ist ein Fehler drin aber hier komm ich bei Raumtemperatur trotzdem auf knapp -270 also auch kompletter Quatsch
 

s.ochs

BOFH
Teammitglied
Admin
Messwiderstand 50 Ohm
Ohm oder kOhm?
Hast du mal einen Abgleich gemacht, ob du in ntc_bit wirklich die Messespannung drin hast, die auch real anliegt? Am besten mal einen definierten Spannungswert vorgeben und schauen was berechnet wird. So weißt du direkt, wo der Fehler liegt. In der Berechnung oder beim Auslesen.

Du nutzt den ESP mit MicroPyhton?
 

maxawp97

New member
50 Ohm. Werde das mit dem festen Spannungswert heute Nachmittag mal ausprobieren. Wir benutzen auch Micropython in der Technikerschule von daher hab ich das beibehalten.
 

s.ochs

BOFH
Teammitglied
Admin
Ok, dann stimmt zum einen dein Code nicht, siehe Rn und Rmess. Zum anderen macht mir der Wert keinen Sinn. Nach welchem Kriterium hast du den ausgewählt? Außerdem wäre ein Foto von der Schaltung vermutlich ganz hilfreich.
 

maxawp97

New member
An der Stelle an der im Ursprungscode rawValue steht muss der Spannungswert stehen der am NTC anliegt ?
 

s.ochs

BOFH
Teammitglied
Admin
Naja, du musst ihn schon digitalisieren. In der Gleichung wird ja nicht mit Spannung in mV sondern einem Digitalwert (0 - 4096) gerechnet. Der ist natürlich abhängig von deiner Analog-Digital-Wandlung.

Am Rande: du nutzt keinen externen ADC sondern den internen ADC vom ESP32? Ohne saubere Referenzspannung? Dann wirst du mit dem Ergebnis vermutlich nicht glücklich werden. Die Performance des internen ADC ist nicht die Beste.
 

maxawp97

New member
Ja okay dann hab ich richtig verstanden, dass rawValue einfach die bits des adc sind.
Im Ursprungscode wird ja Rmess von 47 Ohm benutzt oder daher hab ich 50 Ohm benutzt.
Benutze den internen ADC hätte aber noch einen externen der mittels I2C Bus arbeitet.
Hab einen einfachen Spannungsteiler aus NTC und Rmess.
 

maxawp97

New member
Ah okay das ist gut zu wissen. Aber wenn ich das entsprechend im Programm deklariere sollte es ja dennoch klappen
 

s.ochs

BOFH
Teammitglied
Admin
Gibt es von dem NTC also dem 100k/iGrill ein Datenblatt ?
Hat ich dir oben schon verlinkt:


kann mir jemand die Widerstandswerte für 50 / 85 / 100 Grad geben, die der Sensor dann besitzt.
R50: ca. 35,0 kOhm
R85: ca. 10,18 kOhm
R100: ca. 6,34 kOhm

Kannst du dir aber auch alle aus den Daten vom Link oben ableiten. Die Kennlinie lässt sich in doppellogarithmischer Darstellung ja linearisieren.
 
Oben Unten