Forum: Mikrocontroller und Digitale Elektronik DHT22 Sensor - Auslesen mit 3.3v uC klappt nicht


von fff (Gast)


Lesenswert?

Hallo,

ich versuche einen DHT22 Sensor auszulesen. Mit einem 5v uC klappt es 
problem los. Mit einem 3.3v (Atmega328p) liefert der Sensor keine Werte. 
Auch dann nicht, wenn der DHT22 selbst an 5v hängt.

Ich kann mir das Verhalten nicht erklären. Jemand eine Idee?

von Mike (Gast)


Lesenswert?

fff schrieb:
> Jemand eine Idee?

Hast du das Timing mal überprüft. Vielleicht sind die Fuses falsch 
eingestellt und damit stimmen die Zeiten nicht?

von Moby (Gast)


Lesenswert?

DHT22/AtMega beide an 3,3V geht nicht? Sollte datenblattmäßig aber. Wie 
groß ist Dein Pullup? Mal einen zweiten Sensor probiert?

von fff (Gast)


Lesenswert?

Also mein "Referenzcontroller"  bzw DHT (der an den 5v) läuft ganz ohne 
Pullup zuverlässig.

Bei dem 3v habe ich als Pullup 4k7, 10k und 22k ausprobiert. Ohne 
Erfolg.
DHT22/AtMega beide an 3,3V auch ausprobiert - geht auch nicht.

Der gleiche Sensor an dem 5v Aufbau funktioniert problemlos.

von Felix P. (fixxl)


Lesenswert?

Bei mir läuft die gleiche Kombination, also DHT22 an Atmega328p mit 3,3V 
als Betriebsspannung, problemlos bei Einsatz eines Pullups von 4,7 kOhm.

Wie sieht dein Ansteuercode aus und kannst du feststellen, an welcher 
Stelle im Code der Fehler auftritt?

von fff (Gast)


Lesenswert?

Ich benutze diese Library:

https://github.com/nethoncho/Arduino-DHT22

Der läuft hier rein:
case DHT_BUS_HUNG:
      Serial.println("BUS Hung ");

von Jürgen S. (jurs)


Lesenswert?

fff schrieb:
> Ich benutze diese Library:
>
> https://github.com/nethoncho/Arduino-DHT22
>
> Der läuft hier rein:
> case DHT_BUS_HUNG:
>       Serial.println("BUS Hung ");

Könnte es vielleicht sein, dass Du eine für 16 MHz Arduino-Boards 
geschriebene Library auf einem Atmega328 verwenden möchtest, der mit 
einer anderen Taktfrequenz als 16 MHz getaktet wird? Und das möchtest 
Du, ohne die Timings in der Library an die geänderte Taktfreqzenz 
anzupassen?

von Mike (Gast)


Lesenswert?

Jürgen S. schrieb:
> ... der mit einer anderen Taktfrequenz als 16 MHz getaktet wird?

Die Idee ist nicht neu, aber der TO hat sich dazu noch nicht geäußert.

Mike schrieb:
> Hast du das Timing mal überprüft.

von Felix P. (fixxl)


Lesenswert?

16 MHz sind als Taktfrequenz bei 3,3 V ein bisschen hoch. Das ist 
außerhalb der SOA.

von fff (Gast)


Lesenswert?

Ah das war mir nicht klar, dass die Lib nur für 16mhz verwendet werden 
kann. Was müsste ich denn anpassen, damit es mit 8Mhz funktioniert?

von Felix P. (fixxl)


Lesenswert?

Zur Arduino-Lib und einer möglichen Fixierung auf 16 MHz kann ich nichts 
sagen - ich kenne mich damit nicht aus. Wenn der Fehler "BUS hung" 
ausgegeben wird, heißt das zunächst sowieso, soweit ich den Code richtig 
verstehe, dass die Datenleitung des DHT22 im Ruhezustand aus irgendeinem 
Grund auf Low-Level liegt. Das kann ein Software- (Port wird zu früh auf 
Low gezogen) oder ein Hardwareproblem (Kurzschluss) sein.

Daher solltest du überprüfen:
Ist dein "Referenzaufbau" mit 5V ein komplett anderer Aufbau oder nutzt 
du zweimal denselben Aufbau mit unterschiedlichen Spannungsquellen? 
Läuft auf beiden wirklich die gleiche Software? Sind die 
Fuseeinstellungen identisch?

von Moby (Gast)


Lesenswert?

3,3V ist just die untere Grenze des Betriebsspannungsbereichs, zuweilen 
findet sich sogar die Angabe von 3,5V. Vielleicht gibts bei diesen 
Billig-Sensoren  größere Exemplarstreuungen, ich würde deshalb unbedingt 
mal ein zweites Exemplar testen. Die Reaktion des Moduls auf einen 
genügend langen Low- Startpuls am Oszi zu beobachten könnte glaub ich 
auch nicht schaden.

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.