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

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