Temperatursteuerung mit dem DS18B20 Temperaturfühler

Heute ist Stammtischzeit:
Jeden Donnerstag 20:30 Uhr hier im Chat.
Wer Lust hat, kann sich gerne beteiligen. ;)
  • Ich teste auf einem RPi B eine Temperatursteuerung mit dem DS18B20 Temperaturfühler

    Der ist an GPIO 4 angeschlossen (4,7 KOhm zwischen +3,3V und Data)

    Das Relais das die Heizung steuert ist an GPIO 18

    Wenn ich den Raspberry neu starte funktioniert erstmal alles super

    Das Betriebssystem ist DietPi nicht Raspbian was aber ebenfalls auf Jessie basiert

    Die Solltemperatur wird gehalten und das Relais schaltet aus bzw. ein.

    ls -l /sys/bus/w1/devices/ zeigt den Sensor korrekt an
    root@DietPi:~# ls -l /sys/bus/w1/devices/ total
    lrwxrwxrwx 1 root root 0 Jun 25 12:32 28-80000007ad66 -> ../../../devices/w1_bus _master1/28-80000007ad66

    Nach einer gewissen Zeit jedoch bricht das Python script ab mit der Meldung

    IOError: [Errno 2] No such file or directory: '/sys/bus/w1/devices/28-80000007ad66/w1_slave'

    Heisst ja das der Sensor nicht mehr erkannt wird

    Ich habe 4 verschiedene Fühler und 2 verschiedene Raspberries ausprobiert und immer dasselbe

    Ist das Kernelmodul für den Fühler vielleicht nicht richtig eingebunden ?

    /boot/config.txt

    dtoverlay=w1-gpio,gpiopin=4,pullup=on

    /etc/modules

    wire
    w1-gpio
    w1-therm

    Ist der Eintrag in /etc/modules überhaupt nötig ?

    Habe sehr wiedersprüchliche Dinge gelesen um den Fühler einzubinden
    Je nach Kernelversion usw..

    Hat jemand Tipps oder Vorschläge ?

  • Temperatursteuerung mit dem DS18B20 Temperaturfühler? Schau mal ob du hier fündig wirst!

  • Hallo Perlian,

    die Spannungsversorgung des DS18B20 ist sehr entscheidend für einen stabilen Betrieb.

    Kannst Du mal die Schaltung posten? Am Besten mit dem Programm Fritzing.

    Und poste bitte Deine Schaltung, nicht die des von Dir verwendeten Tutorials. Entscheidend ist da auch der Widerstand zwischen VCC und DQ. Und die Kabellänge, Kabelqualität, ...

    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

    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.


  • Sind die 4,7K nicht für 5V gedacht?


    Nein ist im Datenblatt so angegeben


    Zudem schreibst Du, dass das Relais an den GPIO angeschlossen ist. Ist das wörtlich zu nehmen?


    ja..........Relais laufen über Optokoppler
    relais [Anzeige]



    Mach doch zumindest mal ein Foto, auf dem alle Kabelwege und Komponenten halbwegs vernünftig zu erkennen sind. Der Aufbau scheint ja relativ überschaubar zu sein.

    Ist es ........wie vorher schon beschrieben
    +3,3 V
    +5V
    GND für Fühler
    GND für Relais
    GPIO 4
    GPIO 18

    An der Verkabelung liegts wohl auch nicht denn es funktioniert ja bis irgendwann

    Wenn ich in Fritzing mal sowas wie einen Temperaturfühler finde schick ich nen Plan

  • Servus,


    ...
    dtoverlay=w1-gpio,gpiopin=4,pullup=on
    ...

    ich meine mich zu erinnern, dass der pullup-Parameter nur bei parasitärer Speisung verwendet werden sollte ( -> click <- ). Möglicherweise erzeugt das schon eine gewisse Instabilität.
    Wie hoch ist die Abfragefrequenz. Der DS18B20 ist ziemlich empfindlich, wenn es ihm zu schnell geht ...

    Ansonsten ist das imho ein Programmfehler ...
    Statt davon auszugehen, dass alle Sensoren schon da sein werden, prüfe ich in meinen Programmen immer ab, wieviele und welche Sensoren aktuell ansprechbar sind und lese nur diese aus.
    Interessant in diesem Zusammenhang evtl. noch Dein Programm ... vielleicht ist da ja auch noch was anderes im Argen.

    //EDIT:


    ...
    Wenn ich in Fritzing mal sowas wie einen Temperaturfühler finde schick ich nen Plan


    Keine Ausreden ... der DS18B20 ist in Fritzing vorhanden ...

    btw: das Thema Relais direkt mit den GPIOs schalten wurde hier schon hunderte male widergekäut ... das kann gutgehen, muss es aber nicht ... ( bitte Forensuche nutzen, und nicht noch einen Thread lostreten )
    Ultimativer Test: einfach die Relais mal komplett abklemmen ....

    Ach ja: und der Log wäre sicher auch eine Fundstelle für Hinweise.

    cu,
    -ds-

  • Ich habe die Relais abgeklemmt und dafür ein Multimeter angeschlossen

    Und auch dann zeigt sich das Phänomen das der Sensor nach ein paar Stunden nicht mehr erkannt wird

    In /var/log/messages erscheint folgende interessante Meldung

    kernel: [20820.642351] w1_master_driver w1_bus_master1: w1_search: max_slave_count 64 reached, will continue next search.

    Anscheinend wird nach anderen Sensoren gesucht und bei 64 abgebrochen ???

    Scheint so als ob man dem Raspberry beibringen muss das nur ein Sensor angeschlossen ist

  • Servus,
    ich würde mal sagen, dass die Meldung ok ist, es sei denn sie taucht vor dem Fehler mehrfach auf ... irgendwie muss der RPi ja feststellen, welche Sensoren da sind um die entsprechenden virtuellen Dateien anzulegen.
    Interessant wären Fehlermeldungen, soweit vorhanden.

    Bleiben noch Schaltung und Code ( in Code-tags ) ...

    cu,
    -ds-


  • Servus,
    ich würde mal sagen, dass die Meldung ok ist, es sei denn sie taucht vor dem Fehler mehrfach auf ... irgendwie muss der RPi ja feststellen, welche Sensoren da sind um die entsprechenden virtuellen Dateien anzulegen.
    Interessant wären Fehlermeldungen, soweit vorhanden.

    Bleiben noch Schaltung und Code ( in Code-tags ) ...

    cu,
    -ds-

    Der Code ist aus einem anderen Projekt übernommen Youtube

    Temperaturabfrage

    Steuerung

    Webseite

  • Tjaa ... zum Code kann ich leider nicht viel sagen. Python ist eines der Dinge, um das ich einen grossen Bogen mache ;) ...
    Ich hatte so was offensichtliches erwartet wie dass das virtuelle File zwar geöffnet aber nicht geschlossen wird. Allerdings wäre da vermutlich die Fehlermeldung eine andere. open()/close() ist aber vorhanden, soweit ich das beurteilen kann.
    Einen fest kodierten Sensore abzufragen ist imho eh keine gute Idee ...
    Um einen kurzzeitigen Ausfall abzufangen würde ich zumindest vorher prüfen, ob die virtuelle Datei überhaupt vorhanden ist und eine gewisse Anzahl Durchläufe die Messung überspringen.

    Was mich ausserdem etwas irritiert ist dieser Steuerungs-Code, der scheinbar noch ein Modul lädt, falls nicht vorhanden ...
    Also das alles so ist, wie es sein sollte ... da bin ich definitiv der falsche Anspechpartner.
    Allerdings wimmelt es hier ja von Python-Leuten ... da bekommst Du sicherlich noch Input.

    Fritzing/eagle Bild fehlt noch ...

    cu,
    -ds-


  • Was mich ausserdem etwas irritiert ist dieser Steuerungs-Code, der scheinbar noch ein Modul lädt, falls nicht vorhanden ...
    Also das alles so ist, wie es sein sollte ... da bin ich definitiv der falsche Anspechpartner.
    Allerdings wimmelt es hier ja von Python-Leuten ... da bekommst Du sicherlich noch Input.

    Fritzing/eagle Bild fehlt noch ...

    Ja es sind noch zusätzliche Files vorhanden die aber für die Funktion eher unrelevant sind und nur der Darstellung der Webseite dienen

    Aber:

    Seit heute morgen läuft die Schaltung mit diesen Einstellungen störungslos
    Zumindest ohne das Relaismodul nur mit angeschlossenem Multimeter


    /etc/modprobe.d/1-wire.conf
    options wire max_slave_count=1

    /boot/config.txt
    dtoverlay=w1-gpio,pullup=1,gpiopin=4

    /etc/modules
    wire
    w1-gpio pullup=1
    w1-therm

  • Hallo Perlian,

    ich mache das immer so, dass ich das Verzeichnis durchscanne, in dem sich die Sensor-IDs als Verzeichnis-Namen befinden. Und nur aus diesen Verzeichnissen werden die Messwert-Dateien ausgelesen und auf Plausibilität geprüft, bevor die Werte übernommen werden.
    Ich habe es bisher noch nicht erlebt, dass da mal Verzeichnisse verloren gingen. Aber die Software würde in dem Fall, dass keine Sensoren ausgelesen werden können, eben auch keinen Versuch machen, in ein nicht existentes Verzeichnis zu gehen, um sich dort eine Watsch'n abzuholen.

    Und im Quellcode eine Sensor-ID fest zu hinterlegen, ist - wie Dreamshader schon treffend bemerkte, keine gute Idee. Für einen Testaufbau mag das OK sein - aber für eine Anwendung, von der man aufgrund von Unwägbarkeiten in der Schaltung davon ausgehen darf, dass der Sensor nicht immer angetroffen wird, ist das keine empfehlenswerte Vorgehensweise.

    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

    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.

    Einmal editiert, zuletzt von Andreas (26. Juni 2016 um 18:34)

  • Ah .... doch noch so was wie eine Schaltung ;) ..
    Hm ... nun ja. Bleibt imho etwas mysteriös, das Ganze.
    Ich hab' bisher zum pullup-Parameter immer nur von parasitärer Speisung des Sensors gelesen, was bei Dir nicht der Fall ist. Ich hab' den auch noch nie verwendet, weder an einem Test-Pi mit einem und auch nicht bei 20 Sensoren im Aufbau bei meinem Bruder.

    Aber ok ... wenn es jetzt funktioniert ...
    Dann setz' das auf erledigt und gut ists ...

    Na dann viel Spass/Erfolg noch,
    -ds-

Jetzt mitmachen!

Du hast noch kein Benutzerkonto auf unserer Seite? Registriere dich kostenlos und nimm an unserer Community teil!