Vereinfachte Methode zur Temperaturmessung mit mehreren DS18B20 in C

Gast #2366704
Lesenswert?
• ▲
▼
Vereinfachte Methode zur Temperaturmessung mit mehreren DS18B20 in C

Einerseits sind Temperaturmessungen mit dem DS18B20 wirklich einfach 
geworden.
Andererseits ist - sobald man mehrere Sensoren an einem einzigen Bus 
auslesen will - die Verwaltung der Rom-Codes ein klein wenig umständlich 
(aber es muss natürlich irgendwie definiert werden, welcher 
Temperaturwert von welchem Sensor geliefert wurde).

Deutlich bequemer dagegen kann man einen einzelnen Sensor auslesen - mit 
einem "SKIP  ROM" ist die Kenntnis des ROM-Codes nicht erforderlich..

In meinen Anwendungen benötige ich nie mehr als 8 Sensoren.
Daraus ist die Idee entstanden, alle Sensoren an einem Port - aber 
jeweils an separaten Pins anzuschließen.
Was natürlich bedeutet, dass die Anzahl der freien Portpins auch die 
Anzahl der anschließbaren Sensoren begrenzt.
Zur Vereinfachung des Programmcodes kommt eine weitere Einschränkung:
alle benutzten Pins müssen Teil eines gemeinsamen Ports sein.

Im angehängten Beispiel verwende ich an einem ATmega x8 den PORTC.
An diesem Port sind die Pins PC0 bis PC5 frei, es können also bis zu 6 
Sensoren angeschlossen werden.
(An PORTB sind alle 8 Pins verfügbar, aber hier ist auch der 
Programmieradapter angeschlossen, was während der Programmentwicklung zu 
Problemen führen würde.)

Der Vorteil der vorgeschlagenen Lösung:
Der Programmcode ist knapper und verständlicher.
Sensoren können ohne Kenntnis des ROM-Codes problemlos getauscht bzw. 
zusätzlich angestöpselt werden.

Zumindest für meine Anwendungen hat sich mit diesem Ansatz das Handling 
der DS18B20 noch einmal deutlich vereinfacht.

Weitere Hinweis finden sich in der Readme.pdf.


Michael S.
Angehängte Dateien:
Gast #2368724
Lesenswert?
• ▲
▼
Hallo allerseits,

da ich gerade dabei war, habe ich noch eine Programmvariante erstellt, 
mit der man die Temperatursensoren nicht nur an einem einzigen, sondern 
an zwei unterschiedlichen Ports anschließen und auslesen kann.

Denn es kommt ja in der Praxis häufiger vor, dass die Ports durch Quarz, 
serielle Schnittstelle etc. fragmentiert sind und nur noch wenige freie 
Pins zur Verfügung stehen.


Michael S.
Angehängte Dateien:

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.