mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Was brauche ich von der Seriennummer DS18B20?


Autor: Christian Betzen (chris001)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Leute!

Ich brauche nochmal eure Hilfe!
Ich möchte für eine Heizungssteuerung eine Schaltung mit mehreren 
DS18B20 aufbauen, die über einen Atmega8 ausgewertet werden.

Jetzt zu meinem Problem:

Wenn ich nur einen Sensor anschließe funktioniert alles. 
Beispielprogramm unter Bascom:

---
Do
 1wreset
 1wwrite &HCC
 1wwrite &H44
 1wreset
 1wwrite &HCC
 1wwrite &HBE
 Ar(1) = 1wread(2)

 Waitms 500
 Locate 1 , 1
 Lcd Hex(ar(2)) ; Hex(ar(1))
 Locate 2 , 1
 Shift Ar(1) , Right , 1
 Lcd Ar(1)
Loop
End
---

Um jetzt mehrere Sensoren auszulesen brauche ich ja die Seriennummer. 
Hab ich auch ausgelesen. Was brauche ich denn von der Nummer alles?
Reicht das die letzten zwei Stellen? Oder brauche ich alles was da 
ausgelesen wird. z.B 10E7A9710108006D?

Wie binde ich das in das oben stehende Programm ein?

1wreset
 1wwrite &H6D <------????
 1wwrite &H44
 1wreset
 1wwrite &H6D <-----????
 1wwrite &HBE
 Ar(1) = 1wread(2)

 Waitms 500
 Locate 1 , 1
 Lcd Hex(ar(2)) ; Hex(ar(1))
 Locate 2 , 1
 Shift Ar(1) , Right , 1
 Lcd Ar(1)
Loop
End

Ich dachte event. so. Aber es funktioniert nicht.

Kann mir jemand helfen?

Schö mit Ö...

Chris...

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Laut Datenblatt müssen alle 8 Bytes stimmen.

Du kannst aber auch den ROM-Suchalgorithmus benutzen. Dann mußt Du nur 
einmal feststellen, in welcher Reihenfolge die Sensoren gefunden werden.


Peter

Autor: Christian Betzen (chris001)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi Peter!

Also so?

1wreset
 1wwrite &H0108006D <------????
 1wwrite &H44
 1wreset
 1wwrite &H0108006D <-----????
 1wwrite &HBE
 Ar(1) = 1wread(2)

 Waitms 500
 Locate 1 , 1
 Lcd Hex(ar(2)) ; Hex(ar(1))
 Locate 2 , 1
 Shift Ar(1) , Right , 1
 Lcd Ar(1)
Loop
End

Schö mit Ö...

Chris

Autor: Christian H. (netzwanze) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Christian Betzen schrieb:
> 1wwrite &H0108006D <------????

Äh, nööö.
Ich habe zwar keine Ahnung von Bascom, aber 1wwrite schreibt sicherlich 
nur ein Byte und nicht mehr.

Du musst also schon die komplette Seriennummer als Einzelbytes senden.
Im DS18S20-Datenblatt steht auch drin, was Du da senden musst.

1. Reset-Pulse
2. Skip-ROM
3. Messung durchführen
4. Reset-Pulse
5. Match-ROM
6. ROM-ID
7. READ-SCRATCHPAD
8. Daten lesen
9. weiter mit 4 bis alle Sensoren eingelesen wurden


Das ganze ab 4. kannst Du auch mittels SEARCH-ROM machen. Nach jedem 
Schritt ist genau ein Sensor aktiv und kann nach dem Scratchpad befragt 
werden.

Autor: Tobi D. (fanti)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
jup, habs grad ausprobiert,

du musst die komplette adresse in 2er päckchen schreiben, weil immer nur 
1 byte gesendet wird

nun noch bei deinem ersten programm das "skip rom" durch "match rom" 
ersetzen und es sollte klappen

Autor: Pete K. (pete77)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wie sollen die Sensoren denn befestigt werden und wo?

Du hast von Steuerung geschrieben, oder meinst Du eher ein Datalogger?

Autor: Christian Betzen (chris001)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Die Sensoren sollen als Rohranlegefühler an den Heizungsrohren befestigt 
werden.
Um Vor- und Rücklauf zu messen.

Autor: Wolfgang Schmidt (wsm)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

ich habe vor einiger Zeit mal ein Multi-DS18... Progamm mit Bascom 
geschrieben. Genau das was du suchst.

Das Grundprogramm wurde dazu von mir modifiziert.

Da nur 1-dimensionale Arrays in BASCOM möglich sind, habe ich dies mit 
einem Trick umgangen.

Da die Messkurve nicht linear ist, habe ich auch noch eine 
Fehlerkorrektur ergänzt. Somit wird die quadratische Messkurve 
linearisiert.


Viel Erfolg.

W.

Autor: Wolfgang-G (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>Fehlerkorrektur ergänzt. Somit wird die quadratische Messkurve
>linearisiert.
nur mal so-- womit vergleichst Du die Messkurve?
MfG

Autor: Wolfgang Schmidt (wsm)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Im Datenblatt siehst du eine quadratische Fehlerkurve als Abweichung von 
der linearen Zuordnung der temperatur zu den Messwerten.

Wenn du diese Fehlerkurve mathematisierst und den somit berechenbaren 
Fehler als Korrekturwert benutzt, dann wird deine Messkurve linear.

W.

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.