Forum: Projekte & Code Vereinfachte Methode zur Temperaturmessung mit mehreren DS18B20 in C


von Michael S. (Gast)


Angehängte Dateien:

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.

von Michael S. (Gast)


Angehängte Dateien:

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.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.