Hallo zusammen, ich versuche gerade einen DS1820 Temperatursensor zu betreiben, und das Ergebnis über ein Display auszugeben. Nun es scheint alles zu funktionieren, außer, dass ein falscher Wert ausgegeben wird (nämlich 3.0625°C). Ich betreibe alles auf eimen myAVR mk2. Die Datenleitung liegt an PortC Pin0. Code und Schaltung befinden sich im Anhang. Evt. hat mal jemand ein Bisschen Zeit um drüberzuschaun. Danke für eure Hilfe. MfG Ronald
Ich glaube das die Quelltexte für den DS18S20 sind, und bei einem DS1820 nicht laufen. Zudem war da nicht mal mit dem 1820 irgend ein Problem, das dieser vom "S" abgelöst wurde?
Alex W. schrieb: > Ich glaube das die Quelltexte für den DS18S20 sind, und bei einem DS1820 > nicht laufen. Zudem war da nicht mal mit dem 1820 irgend ein Problem, > das dieser vom "S" abgelöst wurde? Laut Conrad sind die gleich: "TEMPERATURSENSOR DS1820 = DS18S20" >zufällig der Faktor 8 zwischen Ist- und Ausgabewert? Kann sein ja! Aber wie kommts dazu? Jetzt brauch ich mal ein Thermometer zum checken. MfG
Hallo, also ich habs jetzt mal mit x8 probiert, und es scheint ziehmlich gut zu passen. trotzdem check ich nicht ganz warum das so ist. MfG Ronald
Steht eventuell auf dem Sensor DS18B20 drauf? Der hat ein anderes Datenformat - drei Nachkomma-Bits mehr (= x8).
Hast Du den ROM Code des Sensors ausgelesen? Moment: Ich glaube, ich habe etwas Mist erzählt. Du hast wohl doch einen DS1820 bzs DS18S20. Das Programm ist für DS18B20 gedacht und rechnet die Daten falsch um. Ja, im Code steht
1 | //Store temperature integer digits and decimal digits
|
2 | digit=temperature[0]>>4; |
Für DS1820/DS18S20 müsste statt 4, eine 1 stehen. Damit werden dann alle Nachkommastellen weggeworfen.
also, hab mal auf
1 | //Store temperature integer digits and decimal digits
|
2 | digit=temperature[0]>>1; |
3 | digit|=(temperature[1]&0x7)<<1; |
umgeändert, und auch das x8 wieder entfernt. Es scheint auch zu funktionieren, aber die Nachkommastellen (4 und 5te) sind nicht 0. ps. vielen Dank Christian
So, im Anhang nochmal die Richtige Methode, um die Temperatur (Siehe auch Datenblatt) auszulesen. MfG Ronald
Ronald E. schrieb: > umgeändert, und auch das x8 wieder entfernt. Es scheint auch zu > funktionieren, Klar, ein A >> 4 * 8 ist gleicht A >>1, weil A*8 = A<<3. >aber die Nachkommastellen (4 und 5te) sind nicht 0. Klar, der erste Code ist ja auch für einen DS18B20 gedacht und arbeitet mit einem DS1820 nicht korrekt. Aber das hast Du ja bereits im zweiten Code korrigiert.
Hier kompakter Code (200 Byte Flash), der aus dem DS18(S/B)20-Scratchpad 12 Bit Auflösung berechnet und in druckbare Zeichen mit 2 Nachkommastellen umwandelt: Beitrag "DS18S20 - extended resolution bei Temperaturen um 0°C" das o.g. temp.h gibt nur 9 Bit aus. Übrigens: Code gehört nicht in ein h-File, sondern in ein c-File.
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.