2016
RaspberryPi:1WireTemperatursensor18B20auslesenunterLinuxundCODESYSflorianmai.de
florianmai.de
IT-Kram,vermischtmit(Netz)Politik
dtoverlay=w1-gpio
https://florianmai.de/2016/02/05/raspberrypi1wiretemperatursensor18b20auslesenunterlinuxundcodesys/
1/12
12.12.2016
RaspberryPi:1WireTemperatursensor18B20auslesenunterLinuxundCODESYSflorianmai.de
Dies aktiviert im Device Tree die 1-Wire-Schnittstelle auf dem Standard-GPIO-Pin, also Pin 7. Nach dieser nderung muss
ein Neustart durchgefhrt werden, der Bus ist nun aktiv.
BelegungderPinsdesDS18B20
https://florianmai.de/2016/02/05/raspberrypi1wiretemperatursensor18b20auslesenunterlinuxundcodesys/
2/12
12.12.2016
RaspberryPi:1WireTemperatursensor18B20auslesenunterLinuxundCODESYSflorianmai.de
In diesem Beispiel schlieen wir den DS18B20 mit drei Adern an die 3,3V Versorgungsspannung des Raspberry Pi an. Bei
greren Leitungslngen empfiehlt es sich, fr die Versorgungsspannung 5V zu nehmen und den Widerstand von DQ auf
eine separate Ader mit 3,3V zu ziehen. Zum Testen reicht dieser Aufbau aber allemal.
SowirdderSensorDS18B20andieGPIO-PinsdesRaspberryPiangeschlossen
Die Verkabelung kann entweder fliegend verltet werden, oder aber (etwas eleganter und einfacher) auf einem Breadboard
aufgesteckt werden. Ich tat letzteres, wenn auch wegen akuten Jumperwire-Mangels nicht besonders ordentlich:
https://florianmai.de/2016/02/05/raspberrypi1wiretemperatursensor18b20auslesenunterlinuxundcodesys/
3/12
12.12.2016
RaspberryPi:1WireTemperatursensor18B20auslesenunterLinuxundCODESYSflorianmai.de
https://florianmai.de/2016/02/05/raspberrypi1wiretemperatursensor18b20auslesenunterlinuxundcodesys/
4/12
12.12.2016
RaspberryPi:1WireTemperatursensor18B20auslesenunterLinuxundCODESYSflorianmai.de
DerDS18B20aufdemBreadboard,verbundenmitdemRsspberryPi
DieAusgabederGertedateidesDS18B20
Stimmen beide Checksummen berein, ist das Ergebnis plausibel und hinter der crc steht YES. Im Fehlerfall wrde dort
NO stehen. In der zweiten Zeile wird die Temperatur angezeigt, teilt man diesen Wert durch 1000 kommt man auf die
Temperatur in C, bei mir also 20,125C.
Das ist eigentlich schon alles. Diese Datei kann man natrlich ber Scripte oder Programme auslesen und weiter
verwenden.
Sensordaten abfragen unter CODESYS
https://florianmai.de/2016/02/05/raspberrypi1wiretemperatursensor18b20auslesenunterlinuxundcodesys/
5/12
12.12.2016
RaspberryPi:1WireTemperatursensor18B20auslesenunterLinuxundCODESYSflorianmai.de
CODESYSProjektanlegenfrDS18B20aufRaspberryPi
https://florianmai.de/2016/02/05/raspberrypi1wiretemperatursensor18b20auslesenunterlinuxundcodesys/
6/12
12.12.2016
RaspberryPi:1WireTemperatursensor18B20auslesenunterLinuxundCODESYSflorianmai.de
Nachdem das Programm angelegt ist,baut sich automatisch die Struktur auf und man sieht auch schon den Punkt fr 1Wire (bzw. Onewire).
Zunchst muss eine Verbindung zum Raspberry Pi hergestellt werden, dafr werden per Doppelklick auf den Raspberry die
Gerteeinstellungen geffnet und die IP des Gertes eingetragen (und die Zugangsdaten, falls nicht zuvor schon einmal
geschehen). Wenn die Verbindung grn angezeigt wird, ist alles in Ordnung.
CODESYSverbindenmitdemRaspberryPiimDeviceManager
Nun kann mit der Konfiguration des 1-Wire Sensors begonnen werden. Per Rechtsklick auf den Eintrag Onewire ffnet
sich das Kontextmen, hier wird ber den Menpunkt Gert anhngen das Gert Onewire_master angehngt.
https://florianmai.de/2016/02/05/raspberrypi1wiretemperatursensor18b20auslesenunterlinuxundcodesys/
7/12
12.12.2016
RaspberryPi:1WireTemperatursensor18B20auslesenunterLinuxundCODESYSflorianmai.de
DasGertOnewire_masteranhngen
Auf die selbe Art wird nun noch der Sensor DS18B20 angehngt: Rechtsklick auf Onewire_master, Gert anhngen,
DS18B20 auswhlen.
Nun sind alle Gerte vorhanden, die bentigt werden. Der Sensor muss nun noch Parametriert werden, die Gertekennung
muss eingetragen werden. Hierzu ffnet man das Device per Doppelklick und trgt im Reiter 1-wire bus Parameter in der
Spalte Wert die Kennung ein, die eben schon in der Konsole angezeigt wurde, bei mir also28-021600bb4dff. Das ganze als
String, also in Hochkommata .
https://florianmai.de/2016/02/05/raspberrypi1wiretemperatursensor18b20auslesenunterlinuxundcodesys/
8/12
12.12.2016
RaspberryPi:1WireTemperatursensor18B20auslesenunterLinuxundCODESYSflorianmai.de
DerSensorDS18B20wirdparametriert,dieGertekennungwirdeingetragen.
Das war eigentlich schon alles, der Sensor sollte nun im Programm benutzbar sein. Den Temperaturwert kann man recht
einfach nutzen, indem man den String rTemp des Sensors ausliest und beispielsweise auf eine Variable schreibt. Der Wert
rTemp ist ein REAL, die Variable muss also auch den Typ REAL haben.
https://florianmai.de/2016/02/05/raspberrypi1wiretemperatursensor18b20auslesenunterlinuxundcodesys/
9/12
12.12.2016
RaspberryPi:1WireTemperatursensor18B20auslesenunterLinuxundCODESYSflorianmai.de
DerTemperaturwertwirdberrTempausgelesen.
https://florianmai.de/2016/02/05/raspberrypi1wiretemperatursensor18b20auslesenunterlinuxundcodesys/
10/12
12.12.2016
RaspberryPi:1WireTemperatursensor18B20auslesenunterLinuxundCODESYSflorianmai.de
DieLivedatendesDS18B20werdenimlaufendenProgrammangezeigt.
Eigentlich recht simpel. Da mehrere Sensoren parallel angeschlossen werden knnen, kann man so einfach die Temperatur
in einem ganzen Haus messen und dank der HTML5-WebVisu von CODESYS 3.5 auch optisch ansprechend im Netzwerk
abrufbar machen. Eine Heizungssteuerung wre natrlich auch ein guter Anwendungszweck.
11/12
12.12.2016
RaspberryPi:1WireTemperatursensor18B20auslesenunterLinuxundCODESYSflorianmai.de
2 Gedanken zu Raspberry Pi: 1-Wire Temperatursensor 18B20 auslesen unter Linux und
CODESYS
Jakub
21.September2016um14:28
Hi
How codesys code should like when reading more than 1 DS18B20?
Is it possible to sent this reading via modbus to anotfer codesys PLC? How can i do this?
https://florianmai.de/2016/02/05/raspberrypi1wiretemperatursensor18b20auslesenunterlinuxundcodesys/
12/12