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ß
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.
@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.
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
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.
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.
[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.
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.
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.
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.
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.
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.
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".
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.
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.
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.
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?
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.
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.
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.
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.
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
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.
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.
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.
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.
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.
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.
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.
@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.
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.
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
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.....
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.