1x DS18B20 mit Pi und Arduino auslesen

  • Guten Morgen,

    im Moment wird die Temperatur für meine Anzuchtbox mittels DS18B20 gemessen und von einem Arduino gesteuert. Zur Kontrolle habe ich einen zweiten DS18B20 verbaut und lasse die Temperatur von einen Raspberry Pi aufzeichnen. Könnte ich auch nur einen DS18B20 verwenden den beide Auslesen können? Zum Beispiel so wie auf dem Bild ?


    Gruß Kai

  • Go to Best Answer
    • Best Answer

    Hallo reed,


    da Du eine gemeinsame Masseleitung vorgesehen hast, könnte das sogar funktionieren.


    ABER:

    Du wirst Probleme bekommen, wenn Arduino oder Raspberry Pi während des Auslesezyklus eines der beiden anderen Systeme, der lt. Datenblatt bis zu 750 ms dauern kann, auf den DS18B20 zugreifen wollen. Ich weiß gar nicht, welche Kaskade an Fehlermeldungen erzeugt werden könnten. Mit Sicherheit aber solche, die darauf hindeuten, dass der Sensor irrigerweise nicht ansprechbar ist. Bei der Fehlerbehandlung würdest Du auf falsche Fährten gelockt werden.


    Das heißt, Du musst Arduino und Raspberry Pi miteinander kommunizieren lassen, ob der eine denn jetzt auslesen darf. ==> Mehraufwand beim Programmieren.


    Dann solltest Du bedenken, dass bei jedem Auslesezyklus ein Strom fließt, der die Eigentemperatur des Sensors steigen lässt. Je nach Auslesefrequenz wirst Du also die Sensor-Eigentemperatur messen und weniger die Umgebung des Sensors. Das solltest Du bei Abfrageraten im Bereich weniger Sekunden im Hinterkopf behalten. Im Minutenabstand spielt das natürlich keine Rolle, ob da jetzt im Abstand von statt 60 s dann im Abstand von 30 s Temperaturen ausgelesen werden


    Da Du mit den entsprechenden Arduino-Shields sowohl Netzwerk-Verbindung als auch lokale Speichermedien (SD-Karte) anschließen kannst, würde ich die GANZE Arbeit beim Arduino belassen. Du kannst sogar an den Arduino kleine Displays anschließen und Temperatur-Zeit-Kurven anzeigen lassen und Schaltflächen und andere Bedienelemente zur Bedienung programmieren.


    Du brauchst also keinen Raspberry Pi (wenn es nur um die Speicherung und Anzeige der Daten geht).


    Wenn Du zusätzliche Sicherheit haben möchtest, dann verwende lieber einen zweiten oder dritten Temperatur-Sensor und vergleiche deren Temperaturen miteinander.


    Für ein Projekt habe ich 16 bzw. 25 Stück DS18B20 verbauen müssen und musste die Temperaturverteilung auf einer Fläche bzw. in einem Volumen erfassen und gegen die Zeit auftragen. Dafür habe ich die Temperatursensoren mit einem Blockkalibrator kalibriert und habe dann jedem Sensor (der ja über eine ein-eindeutige ID identifizierbar ist) für jeden Temperaturbereich einen Kalibrieroffset zugeordnet. Dadurch ist das von unterschiedlich messenden Sensoren verursachte Chaos deutlich reduziert worden.



    Beste Grüße


    Andreas

    Ich bin wirklich nicht darauf aus, Microsoft zu zerstören. Das wird nur ein völlig unbeabsichtigter Nebeneffekt sein.
    Linus Torvalds - "Vater" von Linux

    • Icon-Tutorials (IDE: Geany) - GPIO-Library - µController-Programmierung in Icon! - ser. Devices - kein Support per PM / Konversation

    Linux is like a wigwam, no windows, no gates, but with an apache inside dancing samba, very hungry eating a yacc, a gnu and a bison.

    Edited 2 times, last by Andreas ().

  • Moin!


    Was auch gegen deinen Versuch spricht, der Raspberry mag die 5 Volt vom Arduino nicht!!!


    73 de Bernd

    Ich habe KEINE Ahnung und davon GANZ VIEL!!
    Bei einer Lösung freue ich mich über ein ":thumbup:"

    Vielleicht trifft man sich in der RPi-Plauderecke.

  • reed

    Selected a post as the best answer.
  • Guten Morgen,

    vielen Dank für die Antworten und die Aufklärung.

    Ich habe in dem ersten Plan der Platine auch zwei von einander unabhängige DS18B20 vorgesehen, gestern kam mir der Gedanke ob ich das nicht auch mit einem realisieren könnte.

    Dann bleibt es jetzt bei zwei.


    Gruß Kai

  • Der i2c Bus ist grundsätzlich auch dafür ausgelegt, dass mehrere Master auf einen Slave zugreifen. [ https://de.wikipedia.org/wiki/I%C2%B2C Arbitrierung im Multimaster-Betrieb ]


    Das ist aber beim mitinstallierten i2c-Modul (Treiber) imho nicht der Fall.

    Was aber nicht bedeutet, dass es so ein (Multimaster-)Modul für Linux nicht irgendwo gibt.


    Die Signalspannung darf dann aber 3,3 V für alle Busteilnehmer - ohne Pegelwandler - nicht übersteigen.



    Servus !

    RTFM = Read The Factory Manual, oder so