Adruino mit Temperatursensor

Gast #2710130
Lesenswert?

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?
Gast #2710133
Lesenswert?

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 :-/
Gast #2710224
Lesenswert?

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).
Gast #2710240
Lesenswert?

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
Gast #2710281
Lesenswert?

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?
Gast #2710286
Lesenswert?

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 :-/
Gast #2710395
Lesenswert?

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
Angehängte Dateien:
#2710415
Lesenswert?

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 ...
Gast #2710452
Lesenswert?

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 :-/
Gast #2710549
Lesenswert?

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?

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren