Moinzen, hab vor ein paar Stunden gerade meinen Ardu ausgepackt, also alles sehr blutig. Ich versuche gerade diesen Temperatursensor zu laufen zu bringen. Bekomme jedoch komische Werte. http://www.ebay.de/itm/261026313725?ssPageName=STRK:MEWNX:IT&_trksid=p3984.m1439.l2649 Könnt ihr einen Blick auf dessen Schaltplan werfen? Es ist ein Thermistor, müssten nicht R5 und R2 einen Teiler bilden anstelle parallel zu sein oder irre ich mich?
ah das ist wohl vielleicht doch nicht der thermistor, sondern der ist nur im oberen Bild, dann wäre das doch richtig. Irgendwie checke ich diesen Plan nicht so recht. Wenn ich den Thermistor erwärme dann sinkt die Spannung am Analoginput anstatt zu steigen :-/
Kann das sein das R und Thermistor vertauscht sind in der Reihenfolge im Gegensatz zum normalen Aufbau?
herb schrieb: > Wenn ich den Thermistor erwärme dann sinkt die Spannung am Analoginput > anstatt zu steigen :-/ Mach dir da nichts draus. Der Arduino hat einen µC, der das richten kann. Der Schaltplan ist in der Tat ein Witz. Von dem LM393 sind bestimmt noch mehr Pins angeschlossen, als dort gezeichnet. Vermutlich besteht mindestens eine Gegenkopplungsverbindung zwischen INA- (2) und OUTA (1).
Das ist doch vollkommen richtig. Der LM393 ist ein Komparator, der hier nur die LED ansteuert. Mit dem Potentiometer stellt man nur die Schalt- schwelle ein. Der Schaltkreis ist überflüssig, wenn man nur das Analogsignal abgreifen will. Das holt man sich aus dem Verbindungspunkt von R1 und N1. Einen Widerstand und einen Thermistor hättest Du in Deutschland auch kaufen können und die wären billiger als 4,99 Dollar gewesen. ;-) MfG Paul
Paul Baumann schrieb: > Der LM393 ist ein Komparator, der hier nur die LED ansteuert. Nicht ganz. "OUT" geht auch noch auf den P1. Man sollte also den Schaltvorgang des Komparators auch erkennen können.
jo der das Ganze hat einen Digi out and AO und beim Schwellwert leuchtet noch eine extra LED. Aber hast recht, das ist eigentlich ziemlich wayne :-) Da der Aufbau ja falsch herum ist muss ich jetzt den Code ändern. double Thermistor(int RawADC) { long Resistance; double Temp; Resistance=((10240000/RawADC) - 10000); // Assuming a 10k Thermistor. Calculation is actually: Resistance = (1024 * BalanceResistor/ADC) - BalanceResistor Temp = log(Resistance); Temp = 1 / (0.001129148 + (0.000234125 * Temp) + (0.0000000876741 * Temp Temp Temp)); Temp = Temp - 273.15; Dazu Resistance = (1024 * BalanceResistor/ADC) - BalanceResistor R1 = (1024 * R2/ADC)- R2 Aber Resistance und Balance Resistor sind vertauscht, richtig? Also nach R2 auflösen. Da komme ich dann auf R2= (R1 * ADC) / (1024 - ADC) Ist das richtig gedacht?
sry für meine Noobness, aber kann mir jmd als Bonus verraten warum bei Temp = log((((1024 * 10000) / RawADC) - 10000)); was anderes rauskommt für Temp als bei Temp = log((((10240000) / RawADC) - 10000)); für mich ist das das Gleiche :-/
Naja Lirum Larum Ich habs eigentlich denke ich richtig gerechnet aber ich komme bei meinem Raum mit offenem Fenster auf 42°C was nicht sein kann. Jetzt habe ich das nochmal anschaulich zum Nachvollziehen aufbereitet. An meinem ADC lese ich 1,67V aus. Das habe ich einer Sim nachgebaut: damit ich auf 1,67V komme muss der Thermistor gerade 5kOhm Widerstand haben, richtig? Wäre die Thermistorschaltung normal aufgebaut (siehe zweite Schaltung) entspräche das dann 3,3V. Aus einer Tabelle für 10K Thermi entnehme ich: ADC V R Temp Temp2 677 3,305664063 5012,791728 41,93468981 41,5 Dh er zeigt mir gerade um die 42°C Nach umbauen der Formeln und Spannungsteiler usw bin ich auch auf solche Werte gekommen. Wie kann das denn sein? Kann mir bitte jmd weiterhelfen
herb schrieb: > aber kann mir jmd als Bonus verraten warum bei > > Temp = log((((1024 * 10000) / RawADC) - 10000)); > > was anderes rauskommt für Temp als bei > > Temp = log((((10240000) / RawADC) - 10000)); > > für mich ist das das Gleiche :-/ Was für Datentypen sind den die einzelnen Komponenten? Jetzt müsste man halt C programmieren können ...
Danke, Ich habs nochmal anders gemacht, dann hats mit dem Rechnen geklappt. Aber hast du eine Idee wieso da bei mir 42°C rauskommt mit der Erklärung die ich gegeben habe?
herb schrieb: > Temp = log((((10240000) / RawADC) - 10000)); Probier mal Temp = log((((10240000L) / RawADC) - 10000)); oder Temp = log((((10240000.0) / RawADC) - 10000)); Insgesamt ein wildes Kuddelmuddel von impliziten Typumwandlungen ;-)
Danke, aber: Temp = log((((10240000) / RawADC) - 10000)); so stehts ja im Beispielcode und ist wohl so korrekt. Da 10240000 eine Zusammenfassung ist von 1024 10000 bzw 1024 Balanceresistor und ich die Formel umstellen wollte habe ich einfach statt 1024 * 10000 geschrieben und habe mich gewundert das nicht mehr das Gleiche rauskommt. Beschäftige mich ja erst seit gestern abend mit solchem Zeugs, dh keinen Plan von Datentypen. Aber habs dann anders ja hinbekommen. Viel wichtiger wäre mir jetzt das mit den 42°C :-/
Ist vielleicht das entscheidende das es irgendein Thermistor ist der sich anders verhält als andere? Oder gibts da nicht so große Unterschiede was eine Differenz von 20°C zur echten Temp erklären würde?
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.