mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik DS18B20


Autor: Martin Fritz (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich habe die ersten Versuche mit einem DS18B20 gemacht. Das Auslesen der
Temperatur klappt auch einwandfrei. Ich habe nur ein Problem mit der
Umwandlung der beiden Temperaturegister TH und TL in einen BCD-Code,
damit man die Temperatur an einer 7-Segment-Anzeige anzeigen kann.

Autor: Marc Donner (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
1. Welche Auflösung stellst du dir vor ?
2. 16 od 8Bit prozessor
3. und wo genau hast du das Problem beim auslesen od. beim umwandeln?
TH und TL zusammen sind ein ganz einfacher Integerwert mit vorzeichen.

Autor: Martin Fritz (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Marc,

ich suche nach einer Routine, die den 16Bit-Temperaturwert (TH und TL),
der vom DS18B20 ausgegeben wird, in einen 16Bit-BCD-Wert (4 Zeichen)
umwandelt, damit ich damit über BCD zu 7-Segmentdecoder (4511 o.ä.) die
Temperatur über eine Anzeige ansteuern kann. Ich verwende einen
AT90S8515 und will über zwei 8-Bit-Ports 4 Decoder-ICs ansteuern.

In den Datenblättern habe ich zur Umrechnung die verschiedensten
Formeln und auch hochkomplizierte Beispielprogramme gefunden, aber
irgendwie klappt das nicht so richtig.

Gruß, Martin

Autor: Edgar (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Martin,

bei Atmel gibt's eine AppNote zu BCD
http://www.atmel.com/dyn/resources/prod_documents/...
mit Software in Assembler.

Edgar

Autor: Martin Fritz (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Edgar,

dein Datenblatt bezieht sich auf die normale binär zu BCD Umwandlung.
Aber was aus dem DS18B20 kommt ist keine normale Binärzahl. Ich hab das
Datenblatt vom DS18B20 mal angehängt (Tabelle2 Seite3).

Gruß, Martin

Autor: Edgar (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Martin,

ok, jetzt habe ich verstanden.
Ich habe das in BasCom mal gemacht, den Code aber zuhause ;-(
Aber: es gibt von Dallas eine AppNote (ich weiß, schon wieder ...), die
auch ein C-Beispiel enthält. Soweit ich weiß, war mein BasCom-Programm
daran angelehnt ...
AppNote ist im Anhang.

Welche Sprache verwendest Du?

Gruß,
Edgar

Autor: Marc Donner (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wenn du die zwei bytes vom DS aneinander fügst erhältst du einen
Normalen 16Bit Integer wert. Den in 4 Dezimalen zerlegen und ausgeben.

Marc

Autor: Martin Fritz (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Edgar,

ich verwende das AVR Studio mit Assembler. Hast Du eventuell dafür was?
Mit C kann ich nicht viel anfangen, hab mich immer gesträubt noch eine
Programmiersprache zu lernen.

Hallo Marc,

das sind keine normalen Integerwerte Z.B. ist der binäre Wert 10100010
nicht dezimal 162, sondern +10,125°C.

Gruß, Martin

Autor: Uwe (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi!
Schaue dir mal die beiden Byte genau an(DS Seite 3)
Das High-Byte ist nur das Signatur-Byte (wenn>0=negativ).
Das LSB im LS-Byte zeigt den 0,5°C Schritt(1=0,5°C).
Also:
ROR TH
ROR TL ;das C-Flag zeigt jetzt an ob 0,5°C oder eben nicht
und in TL steht die ganzzahlige und signierte Temperatur in hex
die du nur noch in dez umsetzen musst.
Wenn du natürlich auf Genauigkeit machst, funktioniert das aber nicht
so einfach für reine Anzeige reicht es aber.

MFG Uwe

Autor: Marc Donner (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
th+tl sind eine ganz normale 16bit integer! die Temperatur ist aber
diesen integerwert * 0,0625°C.

Marc

Autor: Paul Baumann (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Martin!

Ich habe ein Bascom Programm in das Codeforum gestellt.
Das macht genau so eine Umwandlung.

MfG Paul

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.