Forum: Mikrocontroller und Digitale Elektronik Arduino und DHT11 Temp/Feuchtesensor - Nur Nullen?


von Christian J. (elektroniker1968)


Lesenswert?

Hallo,

wenn man alles ausgeschöpft hat hilft nur noch fragenm, denn mangels 
Debuggingmöglichkeit kann ich leider nicht in die Bits hieinkriechen.

Konfiguration: Arduiono Mega 2630 mit DHT11 Sensor an Pin 2
Sensor verkabelt, Pull Up Widerstand von 10k.

Library von dem Arduino Playground installiert, Code von der Demom, 
etwas umgestrickt ohne die komplexen Berechnungen, so einfach wie 
möglich.

Tja, in dht.temperature und dht.humidity steht immer nur Null! Der 
Sensor wird einwadfrei erkannt, ziehe ich das Kabel kommt die 
Fehlermeldung.

Alles ok? Nee... wieso nur Nullen in den Variablen der Klasse DHT? Ist 
doch ein Onw-Wire Bus, easy, code sieht ok aus, Timning stimmt auch.

Was is nu wieder los mit mein Arduino?
1
chk = DHT.read11(DHT11_PIN);
2
    switch (chk)
3
    {
4
    case DHTLIB_OK:  
5
                Serial.print("OK,\t"); 
6
                break;
7
    case DHTLIB_ERROR_CHECKSUM: 
8
                Serial.print("Checksum error,\t"); 
9
                break;
10
    case DHTLIB_ERROR_TIMEOUT: 
11
                Serial.print("Time out error,\t"); 
12
                break;
13
    default: 
14
                Serial.print("Unknown error,\t"); 
15
                break;
16
    }
17
18
    temp = DHT.temperature;
19
    feuchte = DHT.humidity;
20
    Serial.print("Humidity (%): ");
21
    Serial.println((float)DHT.humidity, 2);
22
23
    Serial.print("Temperature (oC): ");
24
    Serial.println((float)DHT.temperature, 2);

Gruss,
Christian

von mike (Gast)


Lesenswert?

Wieso der Pullup?
Bei mir läuft das an nem uno R3 ohne, problemlos.

Gruß
Mike

von Christian J. (elektroniker1968)


Lesenswert?

Weil der One Wire Bus per Defintion einen Pull Up braucht und ich keine 
Ahnung habe ob die Pins diesen zugeschaltet haben oder nicht...

edit: Grad mal durchgeknipst den Widerstand..... es geht! Frag mich aber 
bitte mal einer wieso ??? Da muss ein Pull Up dran laut Datenblatt des 
DHT11, es sei denn der ist schon in diesem blauen Kasten mit drin.

Arduino..... jeden Tag eine neue Entdeckung...

von mike (Gast)


Lesenswert?

Im dht11.cpp wird in zeile 44 der Pinmode auf input gesetzt, waehrend
von vorher  durch digitalwrite der Pin noch auf high steht: Dadurch 
sollte der interne pullup des atmegas aktiviert werden.

Gruß
Mike

von Christian J. (elektroniker1968)


Lesenswert?

Danke für den Tip.

Hier ist ein 5k drin: http://www.micro4you.com/files/sensor/DHT11.pdf
Damit klappt es ja nicht, nur ohne.

Mal ne Frage nebenbei: Gibt es sowas luxuriöses wie den printf Befehl 
mit beliebige langer Parameterliste? Den vermisse ich echt..

Also printf("Temperatur %2.1f Feuchte 2.1f", temperatur, feuchte);

Ansonsten ist die Sprache ja voll C-kompatibel, nur das void setup und 
void loop sind "gewöhnungsbedürftig".

von mike (Gast)


Lesenswert?

Du kannst snprintf verwenden, aber nur mit string und int werten, für 
float  etc. vorher mit dtostrf einen string machen. Evtl. kann man 
irgendwie auch floatingpoint support für snprintf irgendwie mit 
compilerflags freischalten, aber das hab ich gerade nicht parat.


Gruß
Mike

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.