Hallo zusammen, ich möchte auf einem ATmega8A den Temperatur/Feucht.sensor AM2302 (DHT22) zum Laufen bringen. Ich habe aus diesem Projekt (Beitrag "Feuchtesensor AM2302/DHT22 avr-gcc") den Sourcecode verwendet, um das Sensorsignal auszulesen. Verwendet habe ich dabei den Teil, wo das Signal an sich ausgelesen wird. Der Code ist etwas geändert worden, hauptsächlich wg. Port-Änderungen, zusätzliche Kommentare, Debugging-Ausgaben und Timing-Anpassungen. Der Funktionsaufruf "am2302()" läuft durch, allerdings sind alle ausgelesenen Bits "1". Das ist mein aktuelles Problem. Im Datenblatt (http://www.adafruit.com/datasheets/Digital%20humidity%20and%20temperature%20sensor%20AM2302.pdf) wird davon gesprochen, dass wenn das Sensorsignal des AM2302 dauerhaft auf VCC ist, die Verdrahtung nicht korrekt ist. Wenn das der Fall wäre, würde aber der Aufruf "am2302()" einen anderen Fehler werfen. Für diesen Fehler konnte ich online keine Hilfe finden. Mein MCU-Aufbau ist als Eigenbau anhand des AVR-Tutorials entstanden. Der Code leider gemischt-sprachig kommentiert, dank der Verwendung von Code-Snippets unterschiedlicher Quellen. Im Programm müsste in Z. 125 (am2302.c) das Sensorsignal immer auf VCC sein; an anderer Stelle wird das Bit nicht positiv gesetzt. Beim delay in Z. 120 habe ich verschiedene Zeiten versucht. Laut Datenblatt steht der Pegel für logisch "0" 26-28us auf VCC, für logisch "1" steht er ~70us auf VCC. Als externen Pull-Up Widerstand habe ich 1.1k, 4.7k und 10k ausprobiert. Ich habe vier verschiedene Sensoren durchprobiert, mit allen zeigt sich ein identisches Verhalten. Danke für eure Hilfe, Ferdinand
Moin Ferdinand, du hattest auf meiner Homepage erwähnt, dass du den Sensor mit einem Arduino schon benutzt hast? Wenn ja hast du exakt den selben mit der selben Verschaltung einfach an den Atemga angeschlossen? Manchmal ist es ja das einfachst und vielleicht hast du einfach Pin 2 oder 3 vertauscht? Ansonsten tausche mal bitte alle Kabelverbindungen auf deinem Bredboard aus. Je nach dem was für Kabel zu verwendest haben die schon mal einen Wackelkontakt. Poste ggf. mal ein Foto von deiner Schaltung. Leider habe ich gerade keine Zeit deinen Code zu testen. Falls du aber morgen immer noch nicht weiter sein solltest, dann nimm doch mal einen funktionierenden Code ohne Veränderungen. Also nicht mal die Pinbelegung ändern. Vielleicht ist dann ja doch ein Fehler beim umschrieben hinein gekommen. LG Kalle
Hallo Kalle, vielen Dank nochmal für deine Hilfestellungen. Inzwischen konnte ich meine Probleme lösen und der AM2302 läuft. Die Verdrahtung hat soweit gepasst. Ich hatte das Gefühl, dass ich mit den Timings in am2302.c nicht zurecht komme und habe beim Auslesen des Sensorsignals einen anderen Weg eingeschlagen. In meinem Programm nutze ich den Interrupt INT0 und detektiere alle Flanken, die während des Auslesevorgangs auftreten. Solange das Signal sauber ist, sind das ja nicht viele (85). Dann nutze ich noch Timer / Counter 1 und schätze die Zeiten der Pegel. Damit kann ich mir dann mein Nutzsignal erzeugen. VG, Ferdinand
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.