Hallo,
ich bin bei meinem aktuellen Projekt auf ein Problem gestoßen, trotz einiger Stunden des ausprobierens komme ich auf keine Lösung und möchte euch um eure Hilfe bitten:
Das Projekt:
Für einen Wohnzimmertisch sollen mehrere "interaktive" Licht-Module verbaut werden, die die Bewegung einer Hand usw. erkennen und entsprechend LEDs faden. Jedes Modul besteht aus 1 x ATmega368 und 6 IR/LED-Pixeln
Prinzip: der Controller schaltet einen Transistor, der einen hohen Strom durch 3 IR-Dioden schickt. Ein Fototransistor misst die (IR) Helligkeit, über einen Spannungsteiler bekomt der Controller einen entsprechenden analogwert.
Nun schaltet der Transistor die IR-Dioden aus, der µC misst erneut die Spannung am Fototransistor und vergleicht sie mit der vorherigen.
Besteht eine Differenz wird sie in einen pwm-Wert umgerechnet und an eine LED ausgegeben.
Ich habe den gesammten Aufbau mit einem Arduino getestet, alles funktionierte einwandfrei.
Aus Kostengründen wollte ich in meinen Wohnzimmertisch nicht 10 Arduinos verbauen, deshalb entschied ich mich für einen standalone-ATmega328, den ich (weil ich damit leichter arbeiten kann) einen 8Mhz-Arduino bootloader verpasste. Der µC nutzt seinen internen Oszillator, an ihm sind keine externen Komponenten verbaut.
Das Problem:
Wenn ich in der Standalone-Version die IR-LEDs wie vorher beim Arduino verschalte, dann macht der ATmega nichts mehr.
Schaltung: Transistor (2N3904) C an +5V, B über 220Ohm an µC, E an drei parallele IR-LEDs (TSHA5202), die über 1 Ohm an GND.
Diese Version macht beim Arduino keine Probleme.
Durch die IR-Dioden fließt ein Stom von je etwa 1 A, laut Datenblatt können die das für 1ms ab.
Tausche ich diese Konfiguration an den stand-alone ATmega, dann reagiert die LED nicht mehr auf Annäherung.
Setze ich in den IR-Kreis hinter die Dioden einen 330 Ohm Widerstand ein, dann funktioniert alles wunderbar, nur dass eben die Reichweite durch die
geringere IR-Helligkeit extrem leidet.
Schließe ich diesen R während des Betriebs kurz (als wäre er nicht da), dann "friert" der µC ein, d.h. wenn die gefadete LED leuchtete dann behält sie diese Helligkeit bei, verändert sie aber nicht mehr.
Unterbinde ich diesen Kurzschluss, dann gehts normal weiter, ohne dass ein Reset nötig wäre.
Ich verwende eine externe Spannungsquelle mit Elko, der Stomstoß sollte kein Problem machen.
Und ich möchte nochmal betonen, dass ich NICHT versuche 3 A durch den ATmega zu jagen, der dient nur als I/O-Geber für den Transistor.
Wisst ihr woran es liegen könnte? Im Prinzip müsste die Lösung durch einen Vergleich mit dem Arduino Uno ersichtlich sein, denn dort funtioniert es ja. Wie gesagt, µC und Code sind gleich.
Einfach einen Widerstand akzeptieren fällt aus, da die Reichweite sehr leidet.
Anbei die Quellen, aus denen das Projekt entstanden ist:
Prinzip:
http://www.instructables.com/id/Make-an-Attiny13-b...
http://www.instructables.com/id/Infrared-Proximity...
ATmega328 Standalone
http://www.instructables.com/file/FP6AIB0H0OIZC72
Lesezeichen