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.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.