Hallo, ich versuche gerade einen Temperatursensor mit meinem Arduino
Board zu verbinden. Das genau Datensheet kann ich euch nicht nennen da
in dem Kit wo der Sensor drin war nu 4K7 Thermistor steht. Auf jedenfall
habe ich alles richtig verbunden denke ich und bekomme komische Werte
geliefert.
Hier auch noch mein Programm:
1
#include<math.h>
2
3
voidsetup(){
4
Serial.begin(9600);
5
}
6
7
doubleThermister(intRawADC){
8
doubleTemp;
9
// See http://en.wikipedia.org/wiki/Thermistor for explanation of formula
Ich schätze ich habe das selbe Problem wie diese Person hier:
http://www.arduino.cc/cgi-bin/yabb2/YaBB.pl?num=1230826223
Kann es daran liegen das ich einen 10K Resistor verwende ?
Hier noch ein Bild wie meine Verkabelung aussieht : (siehe Anhang)
Vielen Dank für eure Hilfe !
Hallo,
lass dir doch einfach mal den gemessenen AD-Wert ausgeben. Sollte
dieser bei 1023 liegen, ist die Eingangspannung am AD-Wandler höher als
die Referenzspannung. Falls nicht, gib doch einfach mal die
Zwischenergebnisse aus, die kannst du dann ja auch mal von Hand
gegenrechnen.
Gruß
Frank
> // See http://en.wikipedia.org/wiki/Thermistor for explanation of formula> Temp = log(((10240000/RawADC) - 10000));> Temp = 1 / (0.001129148 + (0.000234125 * Temp) + (0.0000000876741 Temp Temp
* Temp));
> Temp = Temp - 273.15; // Convert Kelvin to Celcius
Ich kan mir beim besten Willen nicht vorstellen, dass du in er
englischen Wikipedia eine Formel findest, die genau für deinen Fall
eines Terminstors in einem Spannungsteiler mit einem (für Wikipedia)
unbekannten Widerstand passt.
Die Formel im Wiki geht davon aus, dass du den Widerstandswert des
Terminstors gemessen hast
Der Wert, den du vom ADC bekommst ist aber NICHT der Widerstandswert des
Termistors! Er hängt damit zusammen, aber er ist es nicht direkt.
Ok also AD Wert liegt bei 300-350 und wenn ich anstatt 5V GND verbinde
dann habe ich 0.0 was doch eigentlich klar ist oder ? Ich muss doch mit
dem 5V oder dem 3.3V verbinden oder nicht ?
Hoffe ihr könnte mir helfen, aber vielen Dank schonmal !
Der Thermistor soll mit dem Widerstand einen Spannungsteiler bilden und
Du willst die Spannung am Punkt zwischen den beiden messen. Das musst Du
Dir erst einmal klar machen (aufzeichnen). Dann geht der Rest vonn
allein.
citb
Hm das scheint mit ein wenig zu komplex zu sein. Habe die ganzen
Bauteile heute morgen bekommen. Habe vor ein paar Stunden ein LED mit
Button zum leuchten gebracht und habe dann den Sensor gesehen und wollte
unbedingt was damit machen. Wie genau ich jetzt das anstelle mit dem
Spannungsteiler will mir noch nicht ganz klar werden. Entschuldigt meine
Unbeholfenheit... :)
Einhart Pape schrieb:> Tu mir einen Gefallen: stecke das obere rote Kabel in den GND Anschluss!
Wie konfiguriert man eigentlich mit den Arduino Funktionen den ADC? Auf
welcher Referenzspannung ist der per Default?
Ich hätt nämlich eher den orangen auf GND gelegt, damit sich ein
Spannungsteiler
5V --- Term -+- R ---- GND
|
v
Eingang
ergibt. Ich weiß aber nicht, welche Referenzspannung per Default benutzt
wird und aus dem Code kann ich es nicht ersehen.
Oh sorry mir gerade nochmal das Bild angesehen.... da hatte ich mich
wirklich um einen Steckplatz vertan... aber jetzt habe ich es bei GND
und 5V drin und es liefert die oben genannten Resultate.
Daniel H schrieb:> das eine rote geht zum Analog 0, das Obere rechte zu GND, das Gelbe zu> 5V.
Wie wäre es mal mit vernünftigen Strippenfarben und einem Schaltplan?
Du musst 5V und GND vertauschen, d.h. der 10kΩ-Widerstand muss an GND
und der Thermistor an 5V liegen. Nur dann stimmt diese Formel zur
Berechnung des Widerstands:
1
(10240000/RawADC)-10000)
Wenn du wie jetzt die Widerstände andersherum anschließt, musst du die
obige Formel entsprechend ändern.
> Ok also AD Wert liegt bei 300-350
Das sieht gut aus. 4,7kΩ entsprechen bei deiner Beschaltung einem
ADC-Wert von etwa 327. Wenn du 5V und GND tauschst, sollte der ADC-Wert
etwa 697 sein, und deine Formel liefert dann etwa 4700.
Daniel H schrieb:> Hm das scheint mit ein wenig zu komplex zu sein. Habe die ganzen> Bauteile heute morgen bekommen.
Wenn dich die Mathematik erst mal vor ein Problem stellt, solltest du
vielleicht erst mal mit etwas anfangen, das mathematisch nicht so
anspruchsvoll ist.
War bei deinen Bauteilen kein Poti dabei?
Poti als Spannungsteiler anschliessen
mit dem ADC messen
ADC Werte ausgeben
Wenn du am Poti drehst, gibt der ADC je nach Potistellung Werte zwischen
0 und 1023 aus. Da wird dir doch bestimmt etwas einfallen, was man damit
machen könnte. Denk zb mal an ein paar LED, von denen je nach
Potistellung mal mehr und mal weniger leuchten sollen
Also das Programm hatte ich hierher:
http://www.hacktronics.com/Tutorials/arduino-thermistor-tutorial.html
(wegen den Koeffizienten)
Klar kann ich auch erstmal diese Standard Anwendung zu Beginn bauen,
fand so ein Thermometer halt einfach reizvoll :)
Habe GND und 5V vertauscht und bekomme jetzt als wert von analogRead(0)
ca 660 was mit deiner Vermutung übereinstimmt. Die Verkabelung scheint
also nun zu funktionieren.... fragt sich nur wie ich jetzt diesen Wert
in Celsius überführe.
Daniel H schrieb:> ca 660 was mit deiner Vermutung übereinstimmt. Die Verkabelung scheint> also nun zu funktionieren.... fragt sich nur wie ich jetzt diesen Wert> in Celsius überführe.
Indem du darüber resümierst, was dieser Wert eigentlich aussagt und wie
er zu Stande kommt. Danach setzt du deine mathematischen Fähigkeiten ein
und leitest dir erst mal eine Formel her, mit der du aus diesem Wert den
Widerstandswert des Termistors errechnen kannst. Dann bist du schon fast
auf der Zielgeraden, denn dann brauchst du diesen Widerstandswert mit
der bekannten Formel R->T nur noch in eine Temperatur umrechnen.
Wenn du momentan nur 'Bahnhof' verstehst, dann solltest du vielleicht
erst mal den Termistor zur Seite legen und mit etwas anderem am ADC
Eingang experimentieren, bis dir klar ist was genau du eigentlich mit
dem ADC misst und was man mit dem Wert anfangen kann.
(Hast du eigentlich ein Voltmeter?)
Karl Heinz Buchegger schrieb:> Danach setzt du deine mathematischen Fähigkeiten ein> und leitest dir erst mal eine Formel her, mit der du aus diesem Wert den> Widerstandswert des Termistors errechnen kannst.
Diese Formel hat er ja schon, nachdem er jetzt die Schaltung passend zur
Formel gemacht hat:
1
(10240000/RawADC)-10000
Die Koeffizienten der Umrechnungsformel vom Widerstand in die Temperatur
scheinen aber von einem 10kΩ-Sensor zu sein:
Damit ist die Formel hier nicht brauchbar. Man könnte allenfalls den
gemessenen Widerstandswert mit dem Faktor 10/4.7 multiplizieren, um
wenigstens eine grobe Näherung zu erhalten. Dann ist die dicke Formel
aber wie Kanonen auf Spatzen.
Ne habe kein Voltmeter.
Habe dieses Datasheet gefunden, weil ich glaube endlich den Namen des
Sensors herausgefunden zu haben. Da steht was zur Berechnung allerdings
für einen Laien etwas undurchsichtig.
Zu der letzten Frage. Der Wert gibt den Widerstandswert bei der
Temperatur T an, oder nicht ?
Hier das Datasheet:
http://www.datasheetcatalog.net/de/datasheets_pdf/B/5/7/1/B57164-K472.shtml
Daniel H schrieb:> Zu der letzten Frage. Der Wert gibt den Widerstandswert bei der> Temperatur T an, oder nicht ?
Nein.
Der Wert vom ADC gibt an, in welchem Verhältnis die Spannung am ADC
Eingang zur Referenzspannung steht. Wobei ein Wert von 1024 für 100%
steht.
Yalu X. schrieb:> Karl Heinz Buchegger schrieb:>> Danach setzt du deine mathematischen Fähigkeiten ein>> und leitest dir erst mal eine Formel her, mit der du aus diesem Wert den>> Widerstandswert des Termistors errechnen kannst.>> Diese Formel hat er ja schon, nachdem er jetzt die Schaltung passend zur> Formel gemacht hat:>>
1
>(10240000/RawADC)-10000
2
>
Disclaimer: Ich hab die Mathe nicht gemacht.
Aber das sieht nicht richtig aus. Wenn das den Widerstandswert in einem
Spannungsteiler mit 10k ergibt, dann geb ich ein virtuelles Bier aus.
Hm ich weiß echt nicht mehr weiter....
Habe mir jetzt die letzte Dreiviertel Stunde sämtliche Einträge
durchgelesen die auch nur im entferntesten damit zu tun haben, aber die
Berechnung funktioniert noch immer nicht. Hat denn wirklich keiner eine
Idee wie mein Programm aussehen müsste ?
Viele Grüße Daniel
Der Ausdruck in der vierten Zeile ist das nach der Methode der kleinsten
Quadrate optimale Polynom dritten Grades und approximiert die tabellari-
schen Werte im Datenblatt (R/T-Kennlinie Nr. 4001) auf besser als 1K:
Yalu X. schrieb:> Der Ausdruck in der vierten Zeile ist das nach der Methode der kleinsten> Quadrate optimale Polynom dritten Grades und approximiert die tabellari-> schen Werte im Datenblatt (R/T-Kennlinie Nr. 4001)
Wenn die Berechnung eines Spannungsteilers schon zu viel Mathematik ist,
wie soll das dann mit der Polynomapproximation erst sein ...
Hier im Forum ist oft zu lesen, das die ganzen Kommata in der Formel den
µC-Code sehr groß machen. Geht das nicht mit ganzen Zahlen?
Werde mich heute Abend wenn ich heim komme mal daran machen und
versuchen die Formel zu verstehen... wenn mir noch was unklar ist melde
ich mich nochmal, weil ich das ganze ja auch verstehen und nicht nur
abschreiben möchte.