Forum: Mikrocontroller und Digitale Elektronik Arduino, DHT11 kein Signal, kaputt?


von Willi (Gast)


Lesenswert?

Nabend zusammen,

habe mir drei etwas unterschiedliche pro mini 328 gekauft und bei einem 
war neben dem ch340g auch ein DHT11 dabei, dachte ist doch prima, ein 
digitaler Sensor zum Lernen. Hab das Display meines alten 3310 
problemlos zum Laufen gekriegt, aber der Sensor scheint nicht zu 
funktionieren, habe mehrere Libraries und Beispielcodes probiert, aber 
irgendwie kommt da nichts, ohne Behandeln der Exception erscheint auf 
dem Display "isnanisnan" (oder nur "nannan" weiss grad net mehr). Ist 
der Sensor einfach nur kaputt oder check ich da was nicht? Den Pin passe 
ich im Code natürlich an, hab auch einfach alle schon durchprobiert in 
verschiedenen Varianten, außer die, die vom Display belegt sind. Kann 
ich irgendwie prüfen, ob der Sensor defekt ist oder was habe ich ansich 
noch für Möglichkeiten?

Danke und lieben Gruß

von google (Gast)


Lesenswert?

Teste den Sensor ohne das Display, mit Ausgabe der Messdaten über den 
seriellen Anschluss. Die Timings der verschiedenen Bibliotheken (Sensor, 
Display) vertragen sich vermutlich nicht.

von Dieter S. (Gast)


Lesenswert?

Lass dir die Daten vom Sensor auf dem SerialMonitor anzeigen.

von Rudi A. (Gast)


Lesenswert?

hast du dran gedacht, zwischen data und vcc einen 10k widerstand zu 
packen?

von Willi (Gast)


Lesenswert?

@Rudi Ja, das ist so ein fertiges Modul.

Das mit dem seriellen Monitor habe ich übersprungen, gleich das Display 
angesprochen. Werds nachher mal versuchen, Danke vorerst.

von Dieter S. (Gast)


Lesenswert?

Willi schrieb:
> Das mit dem seriellen Monitor habe ich übersprungen, gleich das Display
> angesprochen. Werds nachher mal versuchen, Danke vorerst.

das ist eine einfache Lösung, deinen Sketch schnell zu debuggen.

Dies in dein Setup:
Serial.begin(9600);

Und hier den Inhalt der Sensor-variablen anzeigen:
Serial.println(Variable);

Weitere Informationen:
https://www.arduino.cc/en/Reference/Serial

von Willi (Gast)


Angehängte Dateien:

Lesenswert?

Ok, hab jetzt einfach den Beispielcode der DHT-Bibliothek genommen und 
nur den Port geändert, der serielle Monitor spuckt was aus, weil die 
Zeichen hier nicht dargestellt werden können, häng ich mal ein Bild 
dran. Es zeigt aber dasselbe an, wenn ich den Sensor abziehe und 
übrigens auch mit "meinem" Code, wo das Dispay angesprochen wird, hab 
einfach mal beides probiert serial.print und lcd.print, nur ist der loop 
langsamer, oder so, die Zeichenfolgen erscheinen langsamer. Da es 
dieselben Zeichen sind, nehme ich mal an, dass es der Error ist. Weiss 
nicht, ob das normal ist, aber der Serielle Monitor zeigt bei mir keinen 
normalen Text an, also sowas wie Serial.print("temperature:"); wird 
nicht angezeigt. Hab den Sensor an Pin 2 des pro Mini angeschlossen, 
physische Pin 32 laut dieser Grafik http://i.stack.imgur.com/oOtkU.png , 
und diesen im Code angegeben.

von Dieter S. (Gast)


Lesenswert?

Dann stimmt mit deinem Code oder mit deinem Aufbau etwas nicht.
Zeig doch mal den Code, den du verwendest.
Wenn es geht auch mal ein Schaltbild.

von Dieter S. (Gast)


Lesenswert?

Nochmal...
Welche Library verwendest du?
Ich teste gerade mit der aktuellen von Github und da zeigt mir das 
Display "DHTxx test!" an.
Und das auch ohne Sensor.

Also entweder du verwendest eine falsche Lib oder der Aufbau ist falsch.

von Willi (Gast)


Lesenswert?

[c]
#include <DHT11.h>
int pin=2;
DHT11 dht11(pin);
void setup()
{
   Serial.begin(9600);
  while (!Serial) {
      ; // wait for serial port to connect. Needed for Leonardo only
    }
}

void loop()
{
  int err;
  float temp, humi;
  if((err=dht11.read(humi, temp))==0)
  {
    Serial.print("temperature:");
    Serial.print(temp);
    Serial.print(" humidity:");
    Serial.print(humi);
    Serial.println();
  }
  else
  {
    Serial.println();
    Serial.print("Error No :");
    Serial.print(err);
    Serial.println();
  }
  delay(DHT11_RETRY_DELAY); //delay for reread
}

[\c]

Das ist der Beispielcode von der adafruit Library, ist auch auf Github, 
hab aber drei probiert, die erste war von das Beispiel von der Arduino 
Website, der zweite von Arduino Playground.

Das Schaltbild ist ganz einfach, mein mini sieht exakt so aus wie auf 
dem Bild im letzten Beitrag, der DHT ist der hier 
http://i01.i.aliimg.com/wsphoto/v0/1823629035_1/Compatible-DHT11-Digital-Temperature-Humidity-Sensor-Module-Black-Blue.jpg 
ganz Außen rechts ist Ground in der Mitte VCC und ganz links ist an Pin 
2 am mini angeschlossen.

von Willi (Gast)


Lesenswert?

Ich kapier auch nicht, warum der Serielle Monitor keinen Text anzeigt, 
wenn ich das mache

void setup() {
  // put your setup code here, to run once:
   Serial.begin(9600);
  while (!Serial) {
      ; // wait for serial port to connect. Needed for Leonardo only
    }
}

void loop() {
  // put your main code here, to run repeatedly:
Serial.print("Hallo");
}

zeigt der mir nur extem schnell durchlaufendes Zeichenwirrwarr, das 
Display zeigt Text.

von Dieter S. (Gast)


Lesenswert?

Die Baudrate am Monitor stimmt?

Dann ist da was faul.

von Dieter S. (Gast)


Lesenswert?

Den Sketch kannst du fehlerfrei hochladen?

von Willi (Gast)


Lesenswert?

Die Baudrate habe ich beim Standartwert belassen, 9600. Hochladen geht 
problemlos. Benutzt du auch die Adafruit Library? Ansonsten gib mal 
bitte den Link zu deiner, probiere ich die auch.

von Werner M. (Gast)


Lesenswert?

Willi schrieb:
> Weiss nicht, ob das normal ist, aber der Serielle Monitor zeigt bei mir
> keinen normalen Text an, also sowas wie Serial.print("temperature:");
> wird nicht angezeigt.

Nein, normal ist das nicht. Warum sollt der Serielle Monitor bei den 
DHT11-Ausgaben komische Zeichen anzeigen und bei 
Serial.print("temperature:"); einfach nichts. Wenn alles mit rechten 
Dingen zugeht, müssten bei der Ausgabe von "temperature:" auf dem 
Seriellen Monitor auch irgendwelche Zeichen auftauchen. Und dann wäre 
natürlich interessant zu wissen, welche Zeichen bei laufender Ausgabe 
von "temperature:" auf dem Monitor auftauchen.

von Willi (Gast)


Lesenswert?

Ok, das mit dem Text habe ich hinbekommen, bin mal die Möglichkeiten im 
SM durchgegangen und bei 19200 zeigt es Text und zwar "Error No :4", 
also kein Signal vom DHT.

von Willi (Gast)


Lesenswert?

Hab auch grad fedtgestellt, dass die Baudrate des SM eine höher sein 
muss als die Serial.begin()

von Werner M. (Gast)


Lesenswert?

Willi schrieb:
> Ok, das mit dem Text habe ich hinbekommen, bin mal die Möglichkeiten im
> SM durchgegangen und bei 19200 zeigt es Text und zwar "Error No :4",
> also kein Signal vom DHT.

Wenn der SM bei Einstellung 19200 die Daten richtig anzeigt, während im 
Programm 9600 steht, würde das bedeuten, dass mit deinem Takt 
irgendetwas nicht stimmt. Lass doch mal eine LED mit delay() blinken und 
prüfe, ob die Zeit etwa stimmt oder auch einen Faktor zwei falsch ist.

von Willi (Gast)


Lesenswert?

Das kann ich die direkt sagen, wegen dem Display habe ich das Teil von 
16Mhz, 5V auf 8Mhz, 3,3V umgestellt, habs grad geändert, die Baudrate 
stimmt jetzt überein, aber immernoch "Error No :4".

von Dieter S. (Gast)


Lesenswert?

Willi schrieb:
> Das kann ich die direkt sagen, wegen dem Display habe ich das Teil
> von
> 16Mhz, 5V auf 8Mhz, 3,3V umgestellt, habs grad geändert, die Baudrate
> stimmt jetzt überein, aber immernoch "Error No :4".

Dann solltest du den Arduino auch mit 3,3 Volt betreiben.

von Werner M. (Gast)


Lesenswert?

Willi schrieb:
> Das kann ich die direkt sagen, wegen dem Display habe ich das Teil von
> 16Mhz, 5V auf 8Mhz, 3,3V umgestellt,

Wenn du die Hardware änderst, musst du das natürlich auch der 
Arduino-IDE in der Boardbeschreibung mitteilen. Sonst weiss die davon 
nichts und es gibt Chaos.

von Dieter S. (Gast)


Lesenswert?

Sorry falsch gelesen.
Ist es denn ein 5 Volt oder 3,3 Volt Type?

von Dieter S. (Gast)


Lesenswert?

Und man kann nicht einfach einen 5 Volt Type mit 3,3 Volt betreiben, da 
muss auch der Quarz bzw. Resonator stimmen.

von Willi (Gast)


Lesenswert?

Das ist so ein Set mit dem ch340g und nem Schalter, mit dem man zwischen 
5 und 3,3V umschalten kann. Der pro mini 328 ist dafür ausgelegt, das 
stelle ich dann natürlich in der IDE unter "Prozessor:" um und lade den 
Code erstmal hoch. Aber der Sensor scheint nicht zu reagieren, wenn ich 
davon ausgehe, dass der kaputt ist, mir nen neuen bestelle und das geht 
dann immernoch nicht, beiss ich mich in den Podex... Aber ich klingele 
den erstmal durch und check den Widerstand.

von Dieter S. (Gast)


Lesenswert?

Willi schrieb:
> Das ist so ein Set mit dem ch340g und nem Schalter, mit dem man
> zwischen
> 5 und 3,3V umschalten kann. Der pro mini 328 ist dafür ausgelegt, das
> stelle ich dann natürlich in der IDE unter "Prozessor:" um und lade den
> Code erstmal hoch. Aber der Sensor scheint nicht zu reagieren, wenn ich
> davon ausgehe, dass der kaputt ist, mir nen neuen bestelle und das geht
> dann immernoch nicht, beiss ich mich in den Podex... Aber ich klingele
> den erstmal durch und check den Widerstand.

Bitte mal genau, wofür ist der Pro Mini ausgelegt?

von Willi (Gast)


Lesenswert?

Der Widerstand stimmt, 10k, und keine Wackler oder so.

von Dieter S. (Gast)


Lesenswert?

Willi schrieb:
> Der Widerstand stimmt, 10k, und keine Wackler oder so.

Heißt aber nicht, dass er ok ist.

Meine letzte Frage bitte beantworten.

von Willi (Gast)


Lesenswert?

Der pro mini 328 ist ein Klon aus China und kann sowohl 5V, 16Mhz als 
auch 3,3V 8Mhz, ich weiss nicht, ob alle Modelle, aber der, mit dem ich 
experimentiere auf jeden Fall, wie erwähnt war es ein Set mit dem ch340g 
und auf diesem ist ein Wechselschalter für die Spannung, Frequenz.

von Dieter S. (Gast)


Lesenswert?

Willi schrieb:
> Der pro mini 328 ist ein Klon aus China und kann sowohl 5V, 16Mhz
> als
> auch 3,3V 8Mhz, ich weiss nicht, ob alle Modelle, aber der, mit dem ich
> experimentiere auf jeden Fall, wie erwähnt war es ein Set mit dem ch340g
> und auf diesem ist ein Wechselschalter für die Spannung, Frequenz.

Das ist ein GROSSER IRRTUM, der kann nur 5 oder 3,3 Volt, aber dann 
immer 8 MHz.
Den Quarz schaltest du nicht um.

von Willi (Gast)


Lesenswert?

Jaja, so schnell ist der Willi nicht ;P
Dieses Set ist es http://m.aliexpress.com/item/1922492918.html

Ist denn der Pin 2 für den DHT geeignet? Müsste eigentlich.

von Dieter S. (Gast)


Lesenswert?

Willi schrieb:
> Jaja, so schnell ist der Willi nicht ;P
> Dieses Set ist es http://m.aliexpress.com/item/1922492918.html
>
> Ist denn der Pin 2 für den DHT geeignet? Müsste eigentlich.

Der Link geht nicht, man muss sich anmelden.

Der Pin "D2" geht ganz sicher dafür.

von Dieter S. (Gast)


Lesenswert?

Poste doch einen Screenshot, wenns nicht anders geht.

von Willi (Gast)


Angehängte Dateien:

Lesenswert?

Seltsam, bin nicht angemeldet und sehe es, gib einfach bei google 
"ch340g pro mini 328 aliexpress" ein, ging mir mehr um die Angaben, 
nicht das Bild.

von Willi (Gast)


Lesenswert?

Ouh man, jetzt habe ich es endlich, sieht so aus, als ob der Sensor 
nicht mit 3,3V geht, das Seltsame ist aber, dass es ersr ging, nachdem 
ist pin= veränderte und dann wieder 2 geschrieben habe, bei den falschen 
Pins bleibt der SM einfach leer, also nichtmal eine Fehlermeldung.

von Willi (Gast)


Lesenswert?

Vielen lieben Dank Dieter für deine Mühe und Zeit. Als nächstes mache 
ich Spannungsteiler fürs Display und sehe zu, dass ich die Werte dort 
angezeigt kriege. Melde mich bestimmt bald wieder, irgendwas wird sicher 
wieder sein :P

von Dieter S. (Gast)


Lesenswert?

Ok, war eben mal weg.
Aber dann scheint es ja jetzt zu funktionieren.
Der Quarz ist ein 16 MHz, damit ist lt. Datenblatt des Atmega328 nur für 
5 Volt geeignet. Bei 3,3 Volt ist er außerhalb der Toleranz.
Der funktioniert dann nicht mehr sicher.

Und wie ich es eben bei Ali gelesen habe, die Spannungsangabe ist nur 
für den CH340G und nicht für den Pro Mini, der ist nur für 5 Volt.

von Willi (Gast)


Lesenswert?

Mhh, ja ich glaub auch, hab mich da wohl verlesen oder irgendwas nicht 
richtig verstanden, hatte mich vorher schon informiert und mehrfach 
gelesen, dass das beides können soll und auf den Rückseiten aller drein 
Module, hab drei unterschiedliche bestellt, steht unter einander "8M, 
3,3V, 16M, 3,3V" bzw. die Einheiten ausgeschrieben, auf einem sind da so 
Kästchen davor, als ob man da ankreuzen soll, was es ist, auf dem 
anderen steht da " [-] " davor und auf dem dritten kleine 
Aufzählungspunkte. Das Interessante ist, dass es schon funktioniert, das 
Display läuft ja problemlos, aber eben wie du schreibst, nicht richtig. 
Naja, hauptsache es geht jetzt. Und so lernt man es. Werde mir im Laufe 
der Zeit so ein paar Sensoren und Module, die ein paar Euros kosten, 
kaufen und damit rum experimentieren, als nächstes habe ich RTC im Auge, 
werde da wohl der Empfehlung vor Arduino folgen, aber das hat noch Zeit.

von Joachim B. (jar)


Lesenswert?

Willi schrieb:
> mit dem man zwischen
> 5 und 3,3V umschalten kann. Der pro mini 328 ist dafür ausgelegt,

nur wenn ein 8MHz Quarz drauf ist dann kann er 3,3V und 5V und dass muss 
man auch in der IDE wählen.

Ein pro mini 328 mit 16MHz Quarz kann nicht mit 3,3V laufen, oder ist 
aus der Spez.

von Willi (Gast)


Lesenswert?

Ja, wie geschrieben, es funktioniert, aber nicht richtig. Werde mal 
Fotos von den Modulen machen, so richtig verstehen tue ich sie und die 
Unterschiede nicht, kann aber die Größe der Bilder auf dem Handy nicht 
ändern, also muss ich sie bearbeiten sonst könnt ihr nichts erkennen, 
weil sie nicht auf den Bildschirm passen, aber erst Morgen.

von Dieter S. (Gast)


Lesenswert?

Willi schrieb:
> Ja, wie geschrieben, es funktioniert, aber nicht richtig. Werde
> mal
> Fotos von den Modulen machen, so richtig verstehen tue ich sie und die
> Unterschiede nicht, kann aber die Größe der Bilder auf dem Handy nicht
> ändern, also muss ich sie bearbeiten sonst könnt ihr nichts erkennen,
> weil sie nicht auf den Bildschirm passen, aber erst Morgen.

Hallo Willi,
wir haben dir doch das schon erklärt.
Auf dem Pro Mini befindet sich ein Quarz oder Resonator. Dieser ist mit 
einer Frequenz bedruckt, entweder 16 oder 8 MHz. Einen Pro Mini mit 16 
MHz kannst du nur mit 5 Volt betreiben, den mit 8 MHz mit 5 oder 3,3 
Volt.

Die Beschriftung auf der Unterseite der Platine ist bei den meisten 
Clonen aus China nie richtig ausgefüllt und daher muss man sich nach dem 
Quarz richten. Kaputt machen kannst du dabei nichts, aber arbeitet der 
Atmega außerhalb der Spezifikation, und das ist bei 16 MHz und 3,3 Volt 
der Fall, ist dieser nicht mehr stabil.

von Willi (Gast)


Angehängte Dateien:

Lesenswert?

Ja, bin halt erst davon ausgegangen, dass das irgendwie halbiert wird, 
bin mal auf ne Seite gestoßen, wo einer nen Quellcode und ne Anleitung 
frei anbietet, wie man mit einem Arduino Uno ne Uhr ohne RTC machen 
kann, dabei rechnet er die Eigenresonanz, oder so, des Uno um. U.A. 
deswegen habe ich auch bei meiner Fehlersuche daran garnicht gedacht. 
Aber gut, jetzt ist das auch geklärt und hilft hoffentlich dem nächsten 
Noob wie ich einer bin :P Hab ja sonst nirgends was dazu gefunden, 
eigentlich müsste man alle solchen Fragen zu einem riesen FAQ 
zusammenfassen. Wobei dann die Fragestellung ein Problem sein könnte, 
oft weiss man ja garnicht, wonach genau man suchen oder fragen muss.

Anbei Bilder der Teile, hätte den Aufbau mal anschalten sollen, ums zu 
demonstrieren, aber egal, kommt noch in den nächsten Fragen.
Bei dem Modul auf dem Breadboard sieht man ja deutlich den Quarz und da 
steht 16.000 drauf, aber auf den anderen sind diese winzigen Bauteile, 
die ich auf den Bildern eingekreist hab, sind das auch Quarze?

Nochmals danke, hab was Wichtiges gelernt.

von Hubert G. (hubertg)


Lesenswert?

Kannst du mal genauer zeigen wie der DHT11 beschalten ist. Sieht auf dem 
Foto eigenartig aus, kann aber sein das es nur verzerrt ist.

: Bearbeitet durch User
von Dieter S. (Gast)


Lesenswert?

Der Quarz auf dem einen Board ist tatsächlich einer und wenn da 16 Mhz 
drauf steht, sollte es auch stimmen. Bei den anderen kannst du es ja 
rausfinden, entweder durch den Blinksketch oder wie schon zuvor über die 
Baudrate. Das sind auf jeden fall Keramikresonatoren.

Und damit kannst du keine vernünftige Uhr bauen können, viel zu ungenau. 
Du solltest dafür unbedingt eine RTC verwenden. Am besten die ds3231, 
die ist recht genau.

von Willi (Gast)


Lesenswert?

@Hubert Ja stimmt, die Lötstellen auf der Rückseite erwecken den 
Eindruck, dass es eine Reihe weiter steckt, steckt aber ab Reihe 10, 
falls du das meinst, dort ist das Signal an Pin 2 (Physik. Pin 32) am 
pro mini angeschlossen, dann der mittlere Pin des Sensors ist VCC und 
der rechte Pin des Sensors ist an GND des mini angeschlossen.

Werd mich mal ein wenig in Quarze und Resonatoren einlesen, grad keine 
Ahnung was die Unterschiede sind, oder ob das zweite ein Oberbegriff ist 
und ob ich es wissen muss, also muss ich es wohl doch wissen :)
Und an die gleiche RTC habe ich auch gedacht, leider kostet der in DE 
das Fünffache wie in China, wollte erst Fragen, was genau das Problem 
mit den DS130X ist, aber da es kaum Preisunterschiede gibt, ist es auch 
egal. Also muss ich wohl wieder ein paar Wochen warten, aber ich habe ja 
auch erstmal genug zu lernen und zu üben, wie die Positionierung der 
Zeichen und Bitmaps auf dem Display, Menü aufbauen irgendwas mit den 
Werten des Sensors machen usw.

von Hubert G. (hubertg)


Lesenswert?

Ich habe vom DHT11 eine andere Belegung.
1 VCC
2 Signal
3 NC
4 GND

Vielleicht gibt es da Unterschiede.

von Dieter S. (Gast)


Lesenswert?

Die DS1302 o.ä. ist Schrott. Total ungenau. Mehrere Sek. in einer Woche.
Die DS3231 ist Temperaturkompensiert und sehr genau. Warten lohnt sich.

Ja einlesen (Quarz und Keramikresonator) ist wichtig. Quarze sind 
normalerweise sehr viel genauer und temperaturstabiler.

von Dieter S. (Gast)


Lesenswert?

Aber der ist doch noch nicht zu teuer?
http://www.ebay.de/itm/RTC-mit-Batterie-DS3231-AT24C32-Real-Time-Clock-fur-Arduino-Raspberry-/181919605461?hash=item2a5b40e2d5:g:nXIAAOSwMmBV5V-N

Ist aus DL.
Aber drauf achten, wenn eine Batterie drin ist, Muus die Ladung 
abgeklemmt werden. Oder einen Akku reinsetzen.

von Wolfgang (Gast)


Lesenswert?

Dieter S. schrieb:
> Aber der ist doch noch nicht zu teuer?
> Ebay-Artikel Nr. 181919605461

Ist das der Preis für ein 5er-Pack?

Ich setzte mal diese dagegen: 221549752451

von Dieter S. (Gast)


Lesenswert?

Wolfgang schrieb:
> Dieter S. schrieb:
> Aber der ist doch noch nicht zu teuer?
> Ebay-Artikel Nr. 181919605461
>
> Ist das der Preis für ein 5er-Pack?
>
> Ich setzte mal diese dagegen: 221549752451

Das es aus China billiger geht ist mir schon klar.
Hier geht es aber darum, schnell ran zu kommen und aus DL war es der 
preiswerteste, den ich finden konnte.
Also somit kein Thema.....

von Willi (Gast)


Lesenswert?

Hi. Entschuldigt Leute, hatte keine Zeit.

Ja Hubert, meiner ist ja auf einer Platine mit nem Widerstand drauf und 
die Platine hat nur drei Pins.

Naja, das 5,5-fache des Chinapreises... hab bei Ebay zufällig nen 
Händler aus China gefunden, der sehr viele Teile hat, die ich 
aufgeschoben hab, weil sie mir zu teuer waren und das gibt ne schöne 
Sammelbestellung. "findyours" heisst der Händler, falls es euch 
interessiert, da könnt ich gleich locker nen Fuffi lassen, aber erstmal 
Probekauf, bestelle gleich 2-3 RTC für je 1€ und ein paar andere Teile.

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.