Ich kämpfe seit eine Tage mit ein Code über ein Temperatur Sensor von Typ AD 22100 KT mit der Übertragungsfunktion VOUT = (V+/5 V) ´ [1.375 V + (22.5 mV/°C) ´ TA]
troz normaler Einsatz bekomme ich sehr hohe Temp
kann man mir helfen
hier ist mein Code
float wabeSpannung = 0.0;
int WabePin = A0;
void setup() {
Serial.begin(9600);
}
void loop() {
float TempWabe=getTempWabe(wabeSpannung);
Serial.print(TempWabe);Serial.println(" degrees C");
delay(3000);
}
float getTempWabe(float Spannung)
{
int WabeWert=analogRead(WabePin);
Serial.print(WabeWert);Serial.println(" Integer");
//Spannung = map(WabeWert , 0 ,1023 , 0 , 5.0);
Spannung = ((WabeWert*(5.0))/1024.0);
Serial.print(Spannung);Serial.println(" Volt");
return ((Spannung*(5.0/5.0) - 1.375))/(22.5);
}
Grüß Thierry
Hier (AD22100 temp sensor arduino operation) wird eine deutlich andere Formel (Faktor 1000) zur Berechnung benutzt:
float raw = analogRead(A0);
raw = ((raw *(5.0 / 1024)) - 1.375) / 0.0225;
Passt das besser?
P.S:
Zunächst mal Herzlich Willkommen!
Du wirst deutlich mehr Aufmerksamkeit/Hilfe erhalten, wenn du deine Beiträge nur etwas anders gestaltest.
Gute Vorschläge hier -> Read this before posting a programming question
Aussagekräftiger Titel. z.B. "Merkwürdige Ergebnisse beim Auslesen eines AD22100 mittels UNO"
Code am Besten (immer ;)) in Code-Tags stellen (das </> Icon oben links),
sieht viel besser aus, lässt sich kopieren und wird von der Forensoftware nicht verändert.
Das kannst du in deinem Eingangsposting (hier oft OP genannt) auch nachträglich ändern.
Tippfehler beseitigen (muss ich leider oft nutzen), Code-Tags einfügen, eventuell den Titel ändern und so...
(rechts unter deinem Post more... dann Modify)
Mit der Preview Schaltfläche kann man vor dem Posten sehen, ob das so geklappt hat, wie man wollte.
Code der einmal diskutiert wurde, sollte natürlich nie geändert werden,
dann passen die darauf bezugnehmenden Antworten nicht mehr,
und ein neuer Leser versteht nicht mehr worum es geht.
Da du deine Frage in Deutsch gestellt hast, wäre es sinnvoller gewesen,
sie im deutschsprachigen Teil des Forums zu posten, hier lesen die nicht englisch-
aber deutschsprachigen Benutzer wohl eher nicht mit.
Gutes Gelingen bei deinen Projekten!
Die 5V in der Formel sind auch eher theoretischer Natur. Das können auch leicht mal 4,88V sein - und dann wird auch zuviel berechnet. Du mußt mit einem Digitalvoltmeter die real vorhandene Spannung messen und die Formel entsprechend anpassen. Logischerweise muß die Spannung dann auch stabil bleiben und aus der gleichen Quelle kommen. 2 unterschiedliche PCs mit unterschiedlichen USB Ports bringen unterschiedliche Spannungen.
Ich hatte mit dem LM35 ein ähnliches Problem.
nix_mehr_frei:
Die 5V in der Formel sind auch eher theoretischer Natur. Das können auch leicht mal 4,88V sein - und dann wird auch zuviel berechnet.
Nein, die 5V sind nur relevant, wenn du z.B. mit 3,3V arbeitest. Der Term (V+ / 5V) wandelt sich beim Betrieb mit 5V um in (5.0/5.0), wie Thierry das ja auch umgesetzt hat und wird damit zu 1.
Im Gegensatz zum LM35 ist die Ausgangsspannung des AD22100 proportional zur Versorgungsspannung. Damit kürzen sich die Ungenauigkeiten der Versorgung raus.
thierry_valery:
mit der Übertragungsfunktion VOUT = (V+/5 V) ´ [1.375 V + (22.5 mV/°C) ´ TA]
troz normaler Einsatz bekomme ich sehr hohe Temp
Da du in deinem Code 22.5 verwendest, müsstest du die gemessene Spannung auch in mV berechenen.
also entweder:
Spannung = ((WabeWert*(5.0))/1024.0*1000); // gemessene Spannung in mV
return ((Spannung - 1.375))/(22.5);
oder
Spannung = ((WabeWert*(5.0))/1024.0); // gemessene Spannung in V
return ((Spannung - 1.375))/(0.0225);