Forum: Mikrocontroller und Digitale Elektronik Alternative zu DHT22/AM2302?


von Mampf F. (mampf) Benutzerseite


Lesenswert?

Guten Mittag :)

Ich hab zwei AM2302 Sensoren und es ist anscheinend unmöglich, diese 
betriebssicher am Raspi zu betreiben. Mittlerweile hab ich kaum noch 
Kabel dran und sämtliche Stecker, Flachbandkabel, ... eliminiert und es 
geht trotzdem nicht vernünftig.

kennt jemand eine Alternative zu DHT22/AM2302, um Temperatur und 
Luftfeuchtigkeit zu messen?

Vielen Dank im Voraus!
Mampf

von W.A. (Gast)


Lesenswert?

Mampf F. schrieb:
> Ich hab zwei AM2302 Sensoren und es ist anscheinend unmöglich, diese
> betriebssicher am Raspi zu betreiben.

Der AM2302 wird nicht wissen, dass du ihn an einem Raspi versuchst zu 
betreiben. Den interessiert nur seine Versorgungsspannung und die 
Ansteuersignale (Pegel/Timing). Viele Leute betreiben den Sensor seit 
Jahren. Vielleicht liegt es einfach an deinem Aufbau oder an deiner 
Software.

von Oberon (Gast)


Lesenswert?

Hilfe ist nah: Beschreibe dein Problem und poste dein Programm.

von Mampf F. (mampf) Benutzerseite


Lesenswert?

> Viele Leute betreiben den Sensor seit
> Jahren. Vielleicht liegt es einfach an deinem Aufbau oder an deiner
> Software.

Ist mir ja ein Rätsel wie ... Aber ein asynchroner Sensor mit 
Echtzeit-Timing in einem Multi-Task-Betriebssystem ... Das halte ich 
schon für problematisch.

Er geht ja nicht immer nicht ... Manchmal gehen 3 Messungen 
hintereinander im Abstand von 10sek, manchmal gehen 10 Messungen wieder 
nicht.

Gibt es keinen Sensor mit zB I2C oder SPI?

von Mampf F. (mampf) Benutzerseite


Lesenswert?

Oberon schrieb:
> Hilfe ist nah: Beschreibe dein Problem und poste dein Programm.

Mittlerweile besteht das Script nur noch aus dem Aufruf des 
Example-Programs von Adafruit ...

Script:
1
while (( 1 ))
2
do
3
    python AdafruitDHT.py 2302 24
4
    sleep 5
5
done

Sieht dann in etwa so aus:

Temp=23.7*  Humidity=54.4%
Failed to get reading. Try again!
Failed to get reading. Try again!
Failed to get reading. Try again!
Temp=23.7*  Humidity=54.4%
Failed to get reading. Try again!
Failed to get reading. Try again!
Failed to get reading. Try again!
Temp=23.8*  Humidity=54.3%
usw

von Oberon (Gast)


Lesenswert?

Mampf F. schrieb:

> Gibt es keinen Sensor mit zB I2C oder SPI?

Diagnose: schweres DHT22-Trauma.

Therapie: HTU21D (I2C)

von Mampf F. (mampf) Benutzerseite


Lesenswert?

Mampf F. schrieb:
> Oberon schrieb:
>> Hilfe ist nah: Beschreibe dein Problem und poste dein Programm.
>
> Mittlerweile besteht das Script nur noch aus dem Aufruf des
> Example-Programs von Adafruit ...
>
> Script:while (( 1 ))
> do
>     python AdafruitDHT.py 2302 24
>     sleep 5
> done
>
> Sieht dann in etwa so aus:
>
> Temp=23.7*  Humidity=54.4%
> Failed to get reading. Try again!
> Failed to get reading. Try again!
> Failed to get reading. Try again!
> Temp=23.7*  Humidity=54.4%
> Failed to get reading. Try again!
> Failed to get reading. Try again!
> Failed to get reading. Try again!
> Temp=23.8*  Humidity=54.3%
> usw

Zum Aufbau:

Auf den Raspi ist eine Lochraster-Platine aufgesteckt und es gähen 4 
Fädelleitungen zu einer 4Pin-Stiftleiste, an der ein geschirmtes 
Audiokabel angeschlossen ist. Schirm = Masse, rot = +3,3V, weiß ist 
Datenleitung.

Das wars ...

von raspi (Gast)


Lesenswert?

Zitat:
"Achtung: Die Sensoren sind nur alle zwei Sekunden bereit. Achte also 
darauf nicht direkt jede Sekunde eine Abfrage zu starten."

http://tutorials-raspberrypi.de/raspberry-pi-luftfeuchtigkeit-temperatur-messen-dht11-dht22/

Wie lange dauert sleep 5?

von Mampf F. (mampf) Benutzerseite


Lesenswert?

raspi schrieb:
> Wie lange dauert sleep 5?

sleep 5 dauert 5 Sekunden

$ time sleep 5

real  0m5.007s
user  0m0.000s
sys  0m0.000s

: Bearbeitet durch User
von Dirk K. (dekoepi)


Lesenswert?

DHT22 und Konsorten sind tatsächlich ziemlich unpräziser Mist, die bei 
Feuchtigkeit >70% rasch in eine Art Latchup gehen. Ich habe inzwischen 
alle durch BME280 / Si7021 ersetzt - letztere sind nicht einmal teurer, 
aber Größenordnungen besser:
http://www.aliexpress.com/item/1pc-Humidity-Sensor-with-I2C-Interface-Si7021-Arduino-Industrial-High-Precision/32562012725.html

Mit DHT22 hatte ich am Pi nur gelegentlich Probleme, da ich 10m 
verdillten Draht zum Sensor benötigte. Anpassungen am Skript gingen dann 
so weit, dass ich bis 1 1/2 Minuten die Versorgung an- und abgeschaltet 
habe, bis das Lesen funktioniert hat. Kräftige Pullups (auf beiden Enden 
hatte ich am Ende 4,7kOhm von der Datenleitung nach Vcc).
Vielleicht hilft dir das Script:
http://pastebin.com/2wXYWYnp

von Mampf F. (mampf) Benutzerseite


Lesenswert?

Dirk K. schrieb:
> Ich habe inzwischen
> alle durch BME280 / Si7021 ersetzt - letztere sind nicht einmal teurer,
> aber Größenordnungen besser:
> http://www.aliexpress.com/item/1pc-Humidity-Sensor...

Ui, super! Danke für den Tipp!

Die werd ich mir gleich ordern. Für <5EUR bei RS muss ich mich mit dem 
DHT-Mist nicht mehr rumärgern.

Ich hätte noch eine Kleinigkeit probiert ... Den Code für das Sensor 
auslesen noch im Timing zu optimieren.

Aber ein nicht asynchroner Sensor mit I2C ist natürlich Welten besser!

Den besorg ich mir :)

von Djfs D. (djfs)


Lesenswert?

Hallo,

seit dem ich mir das original Netzteil (5,1V/2,5A) für das Raspberry 3B+ 
gekauft habe, habe ich nur noch Probleme mit meinen DHT22 Sensoren.
Vorher hatte mein Raspberry ca. 4,5V Spannungsversorgung (Altes USB 
Netzteil) -> nun 5,1V Original.
Sei dem ich das getauscht habe bekomme ich von 3-4 Sensoren 
(leitungslänge ca. 2m - 7m) immer falsche Messwerte (solche in etwa: 
-11,0°C , 3302,9%)
Nun weis ich nicht mehr was ich noch machen kann,
-Widerstände zwischen 4k7 und 10k probiert,
- 5V und 3,3V Spannung versucht
- 5V Spannung und pullup zu 3,3V
- beides 5V
- Sensoren gewechselt

Nichts bringt was.
Habt ihr noch eine Idee?

Netzteil Brauche ich weil ich sonst Probleme mit dem USB-Stick und 
Nano-CUL habe.


Ich möchte noch hinzufügen ich Nutze AdafruitDHT schon immer.
LolDHT habe ich auch versucht, LolDHT geht jedoch nur bei einen Sensor 
der sonst nicht ging, und der Temperaturwert ist denke nicht korrekt 
(ca. 31°C im Zimmer, es sind aber ca. 22°C)

von Rainer W. (rawi)


Lesenswert?

Francois D. schrieb:
> Sei dem ich das getauscht habe bekomme ich von 3-4 Sensoren
> (leitungslänge ca. 2m - 7m) immer falsche Messwerte (solche in etwa:
> -11,0°C , 3302,9%)

> Habt ihr noch eine Idee?

Was sagen Oszilloskop zur Qualität der Signale und LA zum 
Rohdateninhalt?
Wenn deine Software sich traut, einen Wert von 3302,9% auszugeben, ist 
die Müll.

In den sieben Jahren seit Eröffnung des Threads hat sich beim Angebot 
für Feuchtesensoren einiges geändert, insbesondere gibt es welche mit 
Schnittstellen, die auf Grund einer zusätzlichen Taktleitung beim Timing 
wesentlich unkritischer sind.
https://sensirion.com/de/produkte/katalog/?category=Feuchtigkeit
https://www.bosch-sensortec.com/products/environmental-sensors/humidity-sensors-bme280/

: Bearbeitet durch User
von Djfs D. (djfs)


Angehängte Dateien:

Lesenswert?

Hallo,  Anbei die Messungen über das Oszi. Leider kann ich hierbei nicht 
sehen ob Fehler sind oder was solch Auswirkungen haben kann.

Ich Nutze die Sensoren um im Ganzen Haus, (9x DHT22 Sensoren und 14 
1Wire-Sensoren) um meine Fußboden und Lüftungsanlage zu steuern.

von Rainer W. (rawi)


Lesenswert?

Djfs D. schrieb:
> n_io-5V_B1.jpg

Was heißt Vmax=1.62V und Vmin=-2.92V
Negative Spannungen in reinen Digitalschaltungen sollten dir zu denken 
geben.
Vielleicht solltest du den Eingangskanal deines Oszis erstmal auf DC 
schalten. Dann driftet das Signal auch nicht mehr so wild durch die 
Gegend, wie in io-3_3V.jpg. ;-)
Im Datenblatt des DHT22 ist beschrieben, wie das Data-Signal aussehen 
soll. Guck dir dir Rohdaten an, die dein µC zu empfangen glaubt und 
prüfe, ob das mit dem Signal auf dem Oszi zusammen passt.

: Bearbeitet durch User
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.