CraftBeerPi – Anschluss Temperatursensor DS18x20
Verfasst: Samstag 20. August 2016, 13:18
Ich würde mal gerne Teile des Aufbaus für den Raspberry Pi mit CraftBeerPi dokumentieren.
Leider ist es mir nicht gelungen, Bilder im CraftBeerPi Wiki bei Github zu integrieren. Außerdem habe ich auch grad keine Lust das ganze zuerst auf Englisch zu schreiben :)
Daher fange ich also mal hier an, wenn das auch den Nachteil mit sich bringt, dass es nicht von der Community bearbeitet werden kann. Wer kann und mag soll sich frei fühlen, das im Wiki einzubauen.
Genug der Vorrede, los geht‘s:
Anschluss des DS18x20 Temperatursensors an den Raspberry Pi
Zunächst, für die Ungeduldigen die von mir empfohlene Variante zum anschließen. Erläuterungen dann weiter unten.
Der DS18x20 hat 3 Anschlüsse. Vermutlich habt Ihr eine „verpackte“ Variante bei der nur 3 Kabel herausschauen. In den allermeisten Fällen wird die Farbcodierung folgende sein:
rot : Spannungsversorgung
schwarz oder blau : Masse bzw. GND
gelb oder weiß : Datenleitung
Wenn Ihr andere Farben habt müsst Ihr beim Lieferanten eventuell nach der Belegung fragen.
Ich empfehle
Warum benötigt der DS18x20 einen Widerstand zwischen 3,3V und der Signalleitung?
Wie ihr wisst tauschen sich Computer mit Einsen und Nullen aus. So passiert das auch bei der Kommunikation zwischen DS18x20 und dem Pi. Eine“Eins“ bedeutet dabei eine Spannung nahe der Versorgungsspannung. Eine „Null“ eine Spannung nahe 0V (Masse bzw. GND). Damit der DS18x20 nun mit dem Pi „reden“ kann hat er so etwas wie ienen Schalter eingebaut, mit dem er seinen Ausgang gegen seinen GND Anschluss schaltet. Damit „sieht“ der Pi dann an seinem Eingang eben ein Signal nahe 0V. Damit der Pi aber, wenn der Schalter im DS18x20 aus ist, trotzdem etwas sieht ist der Widerstand nötig. Dieser sorgt dann nämlich dafür, das der Pi in diesem Fall 5V sieht. Es gibt noch weitere Gründe, warum dies so gelöst ist, u.a. weil eben auch mehrere DS18x20 angeschlossen werden können, aber das soll hier erst mal reichen. Damit ist aber auch klar, warum man den Widerstand am Pi an den 3,3V Anschluss anschließen muss. Die Eingänge des Pi erwarten als „Eins“ eine Spannung von 3,3V. Damit er die „Einsen“ und „Nullen“ also sauber erkennt ist dies nötig.
Weitere Anschlussmöglichkeiten
Ich empfehle den oben beschriebenen Weg zum Anschließen des DS18x20 deshalb, weil er meiner Meinung nach der robusteste ist. Zudem ist dieser Weg mit kaum Mehraufwand verbunden.
Wer sich umschaut wird auch lesen könne, dass der Anschluss der roten Leitung auch an 3,3V erfolgen kann. Das funktioniert sicher in vielen Fällen. Die Versorgungsspannung des DS18B20 ist mit 3V bis 5,5V angegeben. Damit ist der Abstand bei 5V Versorgung zur Untergrenze einfach deutlich höher. Je nach dem wie lange eure Leitungen sind, wie viele Stecker Ihr in der Kette habt kann das mit den 3,3V schon grenzwertig sein. Wie gesagt, meist wird es tun, aber wenn nicht sucht Ihr euch einen Wolf nach der Ursache. Die Versorgung statt dessen an 5V zu hängen ist dagegen nicht wirklich mehr Aufwand.
Man liest auch, das der DS18x20 in einem „parasitären“ Modus betrieben werden kann. Da spart man sich dann ein Kabel für die Versorgungsspannung, weil der DS18x20 sich sie nötige Energie aus der Datenleitung zieht. Allerdings steht schon im Datenblatt, das dies in den „allermeisten“ Fällen ausreichend ist. Nur wenn der DS18x20 eine Temperaturmessung macht ist ein höherer Strom nötig, als durch den Widerstand bereit gestellt werden kann. Als Abhilfe soll man einen Schalter einbauen, der in dieser Zeit den Ausgang des DS18x20 hart auf die Versorgung schaltet. Diesen müsste dann aber der PI wieder steuern, was bei CraftBeerPi nicht vorgesehen ist und aus meiner Sicht nicht den Aufwand rechtfertigt um eine Leitung zu sparen.
Daher meine Empfehlung wie oben, weil dies die robusteste Variante ist.
Warum schreibst du immer DS18x20?
Es gibt die Temperatursensoren in der Ausführung DS18B20 und DS18S20. Eventuell auch weitere. Soweit ich das verstehe sind die unterscheide die voreingestellten Genauigkeiten. Man kann die Sensoren aber beide „umstellen“ so das es soweit ich glaube egal ist, welchen man verwendet.
Soviel von meiner Seite. Gerne ergänzen, weiterverwenden oder am besten, ins CraftBeerPi Wiki kopieren.
Grüße,
cars10
Leider ist es mir nicht gelungen, Bilder im CraftBeerPi Wiki bei Github zu integrieren. Außerdem habe ich auch grad keine Lust das ganze zuerst auf Englisch zu schreiben :)
Daher fange ich also mal hier an, wenn das auch den Nachteil mit sich bringt, dass es nicht von der Community bearbeitet werden kann. Wer kann und mag soll sich frei fühlen, das im Wiki einzubauen.
Genug der Vorrede, los geht‘s:
Anschluss des DS18x20 Temperatursensors an den Raspberry Pi
Zunächst, für die Ungeduldigen die von mir empfohlene Variante zum anschließen. Erläuterungen dann weiter unten.
Der DS18x20 hat 3 Anschlüsse. Vermutlich habt Ihr eine „verpackte“ Variante bei der nur 3 Kabel herausschauen. In den allermeisten Fällen wird die Farbcodierung folgende sein:
rot : Spannungsversorgung
schwarz oder blau : Masse bzw. GND
gelb oder weiß : Datenleitung
Wenn Ihr andere Farben habt müsst Ihr beim Lieferanten eventuell nach der Belegung fragen.
Ich empfehle
- die rote Leitung an den physikalischen Pin 2 des Raspberry Pi GPIO anzuschließen. Das ist einer der 5V Anschlüsse des GPIO.
- Die schwarze/blaue Leitung empfehle ich an den physikalischen Pin 6 des Raspberry Pi GPIO anzuschließen. Das ist einer der GND Anschlüsse des GPIO.
- Die gelbe/weiße Leitung muss an den physikalischen Pin 7 des Raspberry Pi GPIO angeschlossen werden. Das ist der GPIO04 des GPIO.
- Wichtig ist nun noch ein Widerstand von 4,7 kOhm zwischen den physikalischen Pin 1 des Raspberry Pi GPIO und der gelben/weißen Leitung anzuschließen. Wo Ihr diesen anschließt (also direkt am Pi, oder z.B. an einer Buchse am Gehäuse) ist egal.
Warum benötigt der DS18x20 einen Widerstand zwischen 3,3V und der Signalleitung?
Wie ihr wisst tauschen sich Computer mit Einsen und Nullen aus. So passiert das auch bei der Kommunikation zwischen DS18x20 und dem Pi. Eine“Eins“ bedeutet dabei eine Spannung nahe der Versorgungsspannung. Eine „Null“ eine Spannung nahe 0V (Masse bzw. GND). Damit der DS18x20 nun mit dem Pi „reden“ kann hat er so etwas wie ienen Schalter eingebaut, mit dem er seinen Ausgang gegen seinen GND Anschluss schaltet. Damit „sieht“ der Pi dann an seinem Eingang eben ein Signal nahe 0V. Damit der Pi aber, wenn der Schalter im DS18x20 aus ist, trotzdem etwas sieht ist der Widerstand nötig. Dieser sorgt dann nämlich dafür, das der Pi in diesem Fall 5V sieht. Es gibt noch weitere Gründe, warum dies so gelöst ist, u.a. weil eben auch mehrere DS18x20 angeschlossen werden können, aber das soll hier erst mal reichen. Damit ist aber auch klar, warum man den Widerstand am Pi an den 3,3V Anschluss anschließen muss. Die Eingänge des Pi erwarten als „Eins“ eine Spannung von 3,3V. Damit er die „Einsen“ und „Nullen“ also sauber erkennt ist dies nötig.
Weitere Anschlussmöglichkeiten
Ich empfehle den oben beschriebenen Weg zum Anschließen des DS18x20 deshalb, weil er meiner Meinung nach der robusteste ist. Zudem ist dieser Weg mit kaum Mehraufwand verbunden.
Wer sich umschaut wird auch lesen könne, dass der Anschluss der roten Leitung auch an 3,3V erfolgen kann. Das funktioniert sicher in vielen Fällen. Die Versorgungsspannung des DS18B20 ist mit 3V bis 5,5V angegeben. Damit ist der Abstand bei 5V Versorgung zur Untergrenze einfach deutlich höher. Je nach dem wie lange eure Leitungen sind, wie viele Stecker Ihr in der Kette habt kann das mit den 3,3V schon grenzwertig sein. Wie gesagt, meist wird es tun, aber wenn nicht sucht Ihr euch einen Wolf nach der Ursache. Die Versorgung statt dessen an 5V zu hängen ist dagegen nicht wirklich mehr Aufwand.
Man liest auch, das der DS18x20 in einem „parasitären“ Modus betrieben werden kann. Da spart man sich dann ein Kabel für die Versorgungsspannung, weil der DS18x20 sich sie nötige Energie aus der Datenleitung zieht. Allerdings steht schon im Datenblatt, das dies in den „allermeisten“ Fällen ausreichend ist. Nur wenn der DS18x20 eine Temperaturmessung macht ist ein höherer Strom nötig, als durch den Widerstand bereit gestellt werden kann. Als Abhilfe soll man einen Schalter einbauen, der in dieser Zeit den Ausgang des DS18x20 hart auf die Versorgung schaltet. Diesen müsste dann aber der PI wieder steuern, was bei CraftBeerPi nicht vorgesehen ist und aus meiner Sicht nicht den Aufwand rechtfertigt um eine Leitung zu sparen.
Daher meine Empfehlung wie oben, weil dies die robusteste Variante ist.
Warum schreibst du immer DS18x20?
Es gibt die Temperatursensoren in der Ausführung DS18B20 und DS18S20. Eventuell auch weitere. Soweit ich das verstehe sind die unterscheide die voreingestellten Genauigkeiten. Man kann die Sensoren aber beide „umstellen“ so das es soweit ich glaube egal ist, welchen man verwendet.
Soviel von meiner Seite. Gerne ergänzen, weiterverwenden oder am besten, ins CraftBeerPi Wiki kopieren.
Grüße,
cars10