Archiv verlassen und diese Seite im Standarddesign anzeigen : DS18B20 zeigt 150°C zuviel an
Micralestes
04.04.2007, 17:48
Hallo,
ich habe ein neues Board und habe einen Temperatursensor rangehangen. Den Code habe ich dann einfach aus meinem alten Programm kopiert und fertig. Kann also eigentlich nichts schief gehen dachte ich. Aber er zeigt mir kurz 24,6° an und danach 171,1°. Mein Referenzthermometer zeigt 21,4°an. Also zeigt der DS18B20 150° zuviel an. Woran kann das liegen? Am Timing? Kann man irgendwie kontrollieren ob der Quarz richtig aufgelötet ist?
Ich brauche dringend Hilfe oder ein Strick :-)
Gruß Mirko
Micralestes
04.04.2007, 18:49
Ok, ich habe jetzt mal den neuen Sensor an meine Heizungssteuerung und der zeigt mir auch 150° zuviel an. Jetzt bestehen also folgende Möglichkeiten:
1. Mit dem Sensor stimmt irgendwas nicht! Kalte Lötstelle??? Oder gibts noch andere Möglichkeiten??
2. Es gibt Unterschiede in der Programmierung zwischen DS18S20 und DS18B20??? Ich hab da zwar auf den ersten Blick nichts gefunden, aber...
(Die Heizungssteuerung wird nämlich mit mehreren DS18S20 betrieben)
????????????
Gruß Mirko
Sind es immer 150° zu viel oder sind es bei anderen Temperaturen mehr/weniger Unterschied?
jon
Micralestes
04.04.2007, 19:03
Es sind immer 150° zuviel oder jedenfalls ca.. Kann ich ja nicht 100%-ig kontrollieren. Aber als ich es an die Heizungssteuerung angeschlossen habe waren es auch 174,3° und als ich den richtigen Raumsensor dran hatte waren es dann 24,1°, also ca. 150° Unterschied.
Achso, und wenn ich mit Daumen und Zeigefinger rangehe, dann steigt die Temperatur auch weiter, so als wenn alles normal wäre nur eben mit 150° zuviel.... :-)
Also nicht ganz konstant. Sonst hätte ich gesagt, dass du einfach von dem Ergebnis 150 abziehst. Aber das geht dann wohl nicht.
jon
helimike0705
04.04.2007, 19:09
http://www.mikrocontroller.net/articles/Temperatursensor
lese dir das mal durch, zu den ds18s20 und 18b20
Micralestes
04.04.2007, 19:37
Den Link kenne ich, aber ich weiß nicht wie mir der weiterhelfen soll???
Trotzdem Danke......
:-({|=
helimike0705
04.04.2007, 19:42
nur zum verständnis, hast du einen code für den ds18b20 und einen temp-fühler 18s20.oder wie ist das jetzt bei dir.
Micralestes
04.04.2007, 19:58
Genau umgedreht ich habe einen DS18B20 und der Code funktioniert bei meinen DS18S20.......
Mir ist schon klar das der eine 9bit und der andere 12bit hat, was aber beim Code nicht stören sollte. Eigentlich!!!
Hallo,
ich frage mich, was du für einen Code benutzt, der mit beiden Sensoren umgehen kann. Grundsätzlich sind die Binärwerte beim B-Typ doch um drei Stellen nach links geshiftet.
22° beim B-Typ 0000 0001 0110 0000 entsprechen
22° beim S-Typ 0000 0000 0010 1100 .
Wenn du "normalen" S-Code verwendest wird meistens überprüft, ob das obere byte FF ist und falls nicht gefolgert, dass dann positive Temperaturen vorliegen. Dann wird einmal rechts geshiftet (:2).
Bei 22° ergibt das 0000 0000 1011 0000 (B), also den Wert 176.
Bei 22° ergibt das 0000 0000 0001 0110 (S), also den Wert 22.
Vielleicht ist das dein +150°?
Gruß
Rolf
Micralestes
05.04.2007, 09:12
Hallo,
ja das passiert wenn man Code einfach nimmt und umschreibt. Ich habe mir den Beispiel Code von MCS genommen. Ich glaube #AN111. Der ist für 2 Sensoren DS18B20. Ich habe ihn erweitert und für meine 4 Heizungssensoren (DS18S20) benutzt. Was auch super funktioniert, obwohl der Code eigentlich für die DS18B20 sein sollte. Also bin ich davon ausgegangen, das ich den Code für den DS18B20 einfach so nehmen kann, wie er von MCS erstellt wurde. Leider scheint das nicht zu klappen.
Also werde ich mich mit dem Datenblatt hinsetzen und den Code komplett neu scheiben müssen. Es gibt genug Codebeispiele im Netz, aber die funktionieren alle nicht. Jedenfalls nicht mit meinem DS18B20. Obwohl man den ja einstellen kann. Also ob er mit 9-, 10-, 11- oder 12bit arbeitet. Und wenn man ihn auf 9bit einstellt, müsste es eigentlich der gleiche Code wie für den DS18S20 sein. ABER auch NUR EIGENTLICH!
Oder hat jemand ein Beispiel, was wirklich für den DS18B20 ist???
Aber die Idee, wo die 150° herkommen klingt gut. Vielleicht habe ich ihn doch nicht auf 9bit eingestellt. Muss ich gleich nochmal nachgucken...
Gruß Mirko
Dass du den gleichen Code verwenden kannst, halte ich für ein Gerücht.
Der B- Typ gibt immer 12-bit zurück, nur dass die untersten bits bei den niegrigeren Auflösungen keine Bedeutung haben.
Die angezeigten Werte werden also immer etwa (je nachdem, ob das 0,5°-bit gesetzt ist oder nicht) um den Faktor 8 zu groß sein.
Wenn du genau so rechnest wie in dem Thread µC.net-Forum http://www.mikrocontroller.net/topic/66514#new, dann lass doch die Auflösung auf 12-bit. Dann ergibt sich T6 einfach aus dem eingelesenen Wert dividiert durch 16 (nicht shiften).
Gruß
Rolf
Micralestes
05.04.2007, 16:52
Ach, das ist ja interessant... Hört sich so an als hätte er das gleiche Problem...
Also wenn ich Dich richtig verstanden habe, dann wäre es in dem Bsp. dort:
T6=T/16 ???
Gruß Mirko
Powered by vBulletin® Version 4.2.5 Copyright ©2024 Adduco Digital e.K. und vBulletin Solutions, Inc. Alle Rechte vorbehalten.