mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik DS1820 liefert nur Müll


Autor: Ronald E. (ronald_1)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht 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

Autor: Alex W. (a20q90)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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?

Autor: H.Joachim Seifert (crazyhorse)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
zufällig der Faktor 8 zwischen Ist- und Ausgabewert?

Autor: Ronald E. (ronald_1)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Ronald E. (ronald_1)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: Christian H. (netzwanze) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Steht eventuell auf dem Sensor DS18B20 drauf?
Der hat ein anderes Datenformat - drei Nachkomma-Bits mehr (= x8).

Autor: Ronald E. (ronald_1)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Der genau Text:

DALLAS
DS1820
0938C3
+028AE

Autor: Christian H. (netzwanze) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht 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
//Store temperature integer digits and decimal digits
  digit=temperature[0]>>4;
Für DS1820/DS18S20 müsste statt 4, eine 1 stehen. Damit werden dann alle 
Nachkommastellen weggeworfen.

Autor: Ronald E. (ronald_1)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
also, hab mal auf
//Store temperature integer digits and decimal digits
digit=temperature[0]>>1;
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

Autor: Ronald E. (ronald_1)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
So,

im Anhang nochmal die Richtige Methode, um die Temperatur (Siehe auch 
Datenblatt) auszulesen.

MfG Ronald

Autor: Christian H. (netzwanze) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: eProfi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
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.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.