DS1820 liefert nur Müll

OP #1967767
Lesenswert?
• ▲
▼
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
Angehängte Dateien:
OP #1967980
Lesenswert?
• ▲
▼
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
Persönliche Seite #1968024
Lesenswert?
• ▲
▼
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.
OP #1968038
Lesenswert?
• ▲
▼
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
Persönliche Seite #1968503
Lesenswert?
• ▲
▼
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.

Antwort schreiben

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.