DHT22 hängt sich auf

  • Hallo zusammen,

    ich habe seit einiger Zeit das Problem, dass sich mein DHT22 regelmäßig aufhängt.
    Wenn es so weit ist, dann lässt er sich weder über

    Code
    /home/pi/Adafruit-Raspberry-Pi-Python-Code/Adafruit_DHT_Driver/./Adafruit_DHT 22 21

    noch

    Code
    /home/pi/lol_dht22/./loldht 29

    auslesen.

    Ein Neustart des Pis hilft dann auch nicht mehr, lediglich das komplette Trennen vom Strom.
    Der DHT22 wurde schon mal getauscht: Kein Unterschied zu erkennen.

    Verkabelt ist er mit einem 4k7 Widerstand zwischen Data Pin und 3V3.

    Kann jemand Abhilfe schaffen?

  • Tach'chen,

    das Problem ist bekannt, ich habe das aber inzwischen unter Kontrolle, so dass das bei meinem 24/7 Pi nur noch selten passiert.
    Ich verwende nur noch

    https://github.com/sweetpi/rpi_dht22

    das zwar auf dem loldht code basiert, aber nach meinen Erfahrungen besser funktioniert als der Adafruit code.

    Und: Ich habe einen 100 nF Kerko zwischen VCC und GND am DHT22 gesteckt. Das wurde in diesem Datenblatt
    vorgeschlagen (Punkt 6, Seite 5):

    https://www.sparkfun.com/datasheets/Sen…ature/DHT22.pdf

    Beste Grüße,

    /luetzel

  • Das Problem hatte ich auch manchmal, aber eher selten. Öfter habe ich dass ich manchmal Werte von 300 Grad oder so bekomme. Ich mache schon im:mer 10 Messungen in einer Minute und mittle dann. Aber dennoch gibt es Ausreisser.

  • Hallo Lützel,

    habe mich gerade extra aufgrund deiner Antwort in Forum registriert, verzweifle an dem Ding. :)
    Hatte meinen DHT22 schon in 3 Varianten angeschlossen:
    1: Telefonkabel 3v3 , powered Datenleitung (4,7k ohm Wiederstand)

    2: Telefonkabel 5V Power, 3v3 powered Datenleitung 4,7k ohm Wiederstand)
    3: Selbes Setup wie in 2, nur seit Gestern zu 0,5 Kabelquerschnitt gewechselt, da ich dachte es könnte daran liegen. (Aktuell)

    Kabellänge: 3,8m

    Wie von dir empfohlen habe ich soeben auf rpi_dht22 gewechselt und hoffe auf mehr Stabilität.
    Was mich nun interessiert, wie würde ich den Kerko in meinem Fall anwenden? einfach zwischen 3,3 und GND direkt beim Raspi ? Habe alles gelötet und mit Schrumpfschläuchen,wenn ich ihn dort zu den GPIO-Kabeln dazu steckenkönnte wäre ich schon zufrieden :)

    Danke dir!

    LG
    Klaus

  • Tach'chen Klaus,

    also die Kerkos werden wohl immer möglichst in der Nähe des Bauteils zwischen GND und VCC plaziert. Warum das so ist - keine Ahnung -
    aber ich habe das auf den meisten Schaltplänen so gesehen.
    Der Kerko hilft sicherlich, aber möglicherweise gibt es noch andere Ursachen, die den Betrieb stören. Eine weitere Lösung ist, den DHT22
    über einen GPIO pin mit Spannung zu versorgen. Mit einem Python-Skript kann man den Sensor dann von der Stromversorgung trennen,
    wenn der sich mal aufgehängt hat. Dafür gibt es diese Library:

    http://abyz.co.uk/rpi/pigpio/examples.html

    Die kann man recht einfach mit:

    make && sudo make install

    auf dem Pi installieren. Danach startet man mit

    sudo pigpiod

    diesen GPIO daemon.

    Unter Examples gibt es ein Python Script (2014-07-11) für den DHT22, welches sich um den
    "Power-Up" des Sensors kümmert, bevor eine Messung durchgeführt werden kann. Kleinstes
    Messintervall ist 3 Sekunden.

    Im englishsprachigem Raspberry Forum habe ich Berichte gelesen, dass dieses Skript sehr zuverlässig läuft.

    Beste Grüße,

    luetzel

  • Hey,

    wow vielen Dank, das ging schnell. Ich war mal eben bei einem "bekannten Elektrohändler" und habe zwei Kelkos geholt. :)

    Vielen Dank - das ist ein guter Ansatz und werde ich in Erwägung ziehen.

    Ich habe ein kleines Bild für die ist-Situation angehängt, könntest du mir nur noch bitte sagen wo ich den kelko am besten anbringen soll?

    LG,
    Klaus

  • Ich würde empfehlen, den Keramikkondensator so dicht wie möglich am DHT22 direkt zwischen 5V und GRD zu schalten.
    (so mache ich das jedenfalls immer und es tut).

    Betreff Mittelwert usw.:

    Ich messe 10 mal (speichern in eine Liste), sortiere die Liste (auf oder absteigend ist egal) und nehme dann den Mittelwert über die Index-Werte 3, 4, 5, 6, 7 (also den mittleren Bereich, 1. Listenelement =Index 1).

    Mit dieser Methode (Median/Mittelwert) werden Ausreisser eliminiert und die "guten" Werte gemittelt.

    Zusätzlich prüfe ich, ob der Sensor "nan" zurück gibt, diese Messungen werden dann verworfen (allerdings nur max. 5 mal..., um ein hängenbleiben bei defektem Sensor zu vermeiden).

    LG, das Zen

  • Zitat

    Ich habe ein kleines Bild für die ist-Situation angehängt, könntest du mir nur noch bitte sagen wo ich den kelko am besten anbringen soll?

    LG,
    Klaus

    Wie schon geschrieben, möglichst dicht am Bauteil. Wenn Du aber sonst angeschlossen ist,
    kann man die Kerkos auch in die Powerrails auf dem Breadboard stecken.

    Der verlinkte Python-Code http://abyz.co.uk/rpi/pigpio/code/DHT22_py.zip
    sollte aber in jedem Fall die Lockups verhindern. Sollten dennoch mal keine
    Werte vom Sensor geliefert werden, werden diese abgefangen.

    Der GPIO Pin für die Stromversorgung und Daten wird in der Zeile

    Code
    s = DHT22.sensor(pi, 18, LED=None, power=25)

    festgelegt.


    /luetzel

  • OK, werde nach der Arbeit einlöten, also wirklich zwischen 5v und GND, zwischen 3,3 und GND nicht?
    Das Python-Script werde ich auch einsetzen.

    Danke für eure Unterstützung, ohne den Thread hätte der Seitenschneider was zu Fressen bekommen. :baeh2:


    LG
    Klaus

  • Zitat


    OK, werde nach der Arbeit einlöten, also wirklich zwischen 5v und GND, zwischen 3,3 und GND nicht?
    Das Python-Script werde ich auch einsetzen.

    Mit 5V habe ich den Sensor ehrlich gesagt nie betrieben. Bei mir verbindet der 4,7k Widerstand +3.3V und Data.
    der 100 nF Kerko verbindet +3.3V mit GND.

    Wenn das Kabel lang ist, dann kann man wohl auch 5V verwenden. Im oben genannten Python Skript findet
    man folgenden Kommentar dazu:

    Aber wie dort geschrieben steht: Auf eigene Gefahr, denn 5V an einem GPIO Pin sind nicht zu empfehlen!
    Ich würde an deiner Stelle versuchen, den Sensor mit 3.3V zu betreiben und den Kerko zu verwenden.
    Falls es immer noch zu Lock-Ups kommt, dann würde ich das verlinkte Python-Skript verwenden und statt
    +3.3V einen GPIO Pin für die Stromversorgung benutzen.

    /luetzel

  • Mit 5V habe ich den Sensor ehrlich gesagt nie betrieben. Bei mir verbindet der 4,7k Widerstand +3.3V und Data.
    der 100 nF Kerko verbindet +3.3V mit GND.

    Wenn das Kabel lang ist, dann kann man wohl auch 5V verwenden. Im oben genannten Python Skript findet
    man folgenden Kommentar dazu:

    Aber wie dort geschrieben steht: Auf eigene Gefahr, denn 5V an einem GPIO Pin sind nicht zu empfehlen!
    Ich würde an deiner Stelle versuchen, den Sensor mit 3.3V zu betreiben und den Kerko zu verwenden.
    Falls es immer noch zu Lock-Ups kommt, dann würde ich das verlinkte Python-Skript verwenden und statt
    +3.3V einen GPIO Pin für die Stromversorgung benutzen.

    /luetzel


    Habe deinen Rat befolgt, bin doch auf 3,3V zurück, Kondensator ist eingelötet, jetzt heißt es abwarten.

    Nochmal danke für die Unterstützung.

    LG

    Klaus

    Einmal editiert, zuletzt von Klouse (26. Februar 2016 um 22:34)

  • Hallo,
    ich habe bezüglich dieses Problems folgende Beobachtung gemacht, die ich Euch nicht vorenthalten möchte:
    Zunächst hatte ich auch das Problem mit hängenden Sensoren. Nachdem ich einen 100nF Keramikkondensator direkt an den Anschlüssen der Betriebsspannung 3,3V der Sensoren angelötet habe hat es wochenlang ohne Hänger funktioniert. Ich hatte hier im Forum auch die Frage gelesen, warum es Keramikkondensatoren sein sollten. Der Grund dafür ist die geringere induktive Komponente dieser Kondensatoren gegenüber anderen Bauformen. Der Kondensator blockt Störungen auf der Betriebsspannung vom Bauteil ab. Solche Abblockkondensatoren finden sich auch in unmittelbarer Nähe an fast jedem IC auf Leiterplatten.
    Plötzlich traten die Hänger wieder sehr gehäuft auf. Deshalb baute ich ein kleines Relais ein mit dem ich die Versorgungsspannung der Sensoren über ein GPIO-Pin ein und ausschalten kann. Dazu wird die Abfrage der Sensoren in ein separates Programm verlagert und dessen Output überwacht. Kommen keine Sensordaten mehr wird das Relais kurz aus- und eingeschaltet und das Messprogramm mit pkill abgebrochen und neu gestartet. Bis heute habe ich das aber nicht gebraucht. Es läuft seit Tagen wieder störungsfrei.
    Was war geschehen? Ich hatte 2x Änderungen an der Stromversorgung des Pi vorgenommen. Bei der ersten Änderung erhöhte sich die Versorgungsspannung von 5,0V auf 5,25V. Danach traten plötzlich die Hänger wieder auf. Das habe ich natürlich nicht in Zusammenhang gebracht. Mit dem Einbau des Relais nahm ich die zweite Änderung an der Versorgungsspannung vor. Nun sind es wieder 5,0V und die Sensoren laufen ohne Hänger. Da ich hier im Forum auch las, dass dieses Problem nur mit dem DHT22 an Raspi's auftritt (mit anderen Board's gibt es das Problem angeblich nicht!) liegt nun die Vermutung nahe, dass die Spannungsaufbereitung auf dem Raspi die Ursache des Problems sein könnte. Vermutlich schlagen bei höherer Betriebsspannung - was ja zu höheren Strömen am Spannungsregler führt - Störungen leichter auf die 3,3V bzw. die Masse durch. Störungen auf der Masse würden dann auch erklären warum das Problem auch beim Betrieb des Sensors mit 5V zu beobachten ist. Übrigens würde ich vom Betrieb des Sensors mit 5V abraten, da der Sensor im Sendebetrieb dann auch 5V an den GPIO- Eingang liefert. Dieser darf aber bekanntlich nur 3,3V bekommen.

    Es ist bei Euch ja vielleicht den Versuch Wert, den Raspi mal über eine einstellbare Spannungsversorgung zu betreiben. Eure Ergebnisse würden mich interessieren.

    Gruß, kmbach

  • Bis jetzt hat sich mein DHT11 noch nicht aufgehangen, aber der hängt al Atmel und braucht so wenig Strom und wird aus einem Port gespeist.

    Vielleicht könntet ihr auch einen PI GPIO spendieren mit einem 74HC4050 als VCC Treiber weil der GPIO nicht so belastet werden sollte.

    aber nach Datenblatt schafft das auch der GPIO

    Stromversorgung: 3.3 bis 6V DC
    Ausgangssignal: Digitales Signal auf singlewire Bus
    Messbereich: Luftfeuchtigkeit 0 - 100%RH, Temperatur -40 - 80°C
    Abweichung Luftfeuchtigkeit: ±2.0%RH (bei 60% und 25°)
    Abweichung Temperatur: ±0.5℃
    Antwortzeit: <5s
    Stromaufnahme:
    Messung:1 - 1.5 mA
    Durchschnitt: 0.2 - 0.5 mA
    Stand by: 40 - 50 uA

    lasst die PIs & ESPs am Leben !
    Energiesparen:
    Das Gehirn kann in Standby gehen. Abschalten spart aber noch mehr Energie, was immer mehr nutzen. Dieter Nuhr
    (ich kann leider nicht schneller fahren, vor mir fährt ein GTi)

Jetzt mitmachen!

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