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

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