Hallo, ich bin relativ neu "in der branche" und habe da für ein Projekt eine Frage. Ich will über einen Atmega16 die Tasten eines mp3-Players bedienen. Die Kabel habe ich rausgelegt, nur ist mir leider nicht klar, wie ich es jetzt schaffe über den uC zu Schalten. Das Problem dabei ist, dass der Schalter 2,3 Volt schaltet, mein uC aber mit 5V arbeitet. Ich habe in den Foren schon herausgefunden, dass man das über eine open drain/open collector Schaltung irgendwie hinkriegen kann. Also dass der uC nur entwerder hochohmig oder Masse schaltet, und dabei müsste es (in einem gewissen Rahmen) ja egal sein, wieviel Volt der Schalet schaltet. Kann mir also Jemand sagen, wie genau ich den Schalter anlöte, und was ich dem uC sagen sol, damit er weiss was ich vorhabe? vielen Dank Jakob
Die Transistoren des AVRs sind nicht für echet Open Drains zu gebrauchen. Man kann jedoch zwischen Input und Output umschalten, und das Datenregister mit 0 beschreiben. Größere Spannung als VCC + ein Bisschen sind jedoch nicht erlaubt. Wie du die Taster emulierst, kommt ganz auf die Schaltung an... vielleicht reicht es auch einfach GND an einen der Pins zu machen. Open Drain allgemein muss nicht immer richtig sein. Bei meinem PMR-Funkgerät (das billigste, das ich gefunden hab) reicht es bei der PTT-Taste, diese einfach mit GND zu verbinden.
Am einfachsten wäre es in der Tat, wenn der Atmega16 als Stromsenke arbeiten könnte. Das setzt aber voraus, dass der Atmega16 nicht zuviel Strom schlucken muss, weil es Grenzwerte (s. Datenblatt) gibt oberhalb derer, der Atmega16 einen Hitzeschaden bekommt. Also: Wieviel Strom fliesst durch den Schalter, wenn der Schalter geschlossen ist? Und wieviele Schalter können gleichzeitig geschlossen sein und so zu einem Gesamtstrom beitragen?
Alternative: Mit einem 74HC4066 die Schalter brücken. Dann ist es auch egal, wie die verschaltet sind, ob an GND, an VCC oder in Matrix.
PS: Geht natürlich nur, wenn so ein Schalter nicht auch noch die Stromversorgung oder ähnlich hochstromiges schaltet.
Hallo, erstens danke für die schnellen Antworten. Leider habe ich natürlich noch ein paar Folgefragen...:-) @dave unnd stevb Ich dachte auch, dass es am einfachsten wäre, einfach die "aktiven" Seiten der Schalter auf ground zu ziehen. Bei geschlossenem Schalter fließt auch nur ein Strom von 80 uA, dass dürfte nicht zuviel sein, aber das Problem hierbei ist doch, dass bei geöffnetem Schalter rel. zu ground auf der mp3-Player Seite 2,3 V anliegen und beim Atmega16 5V. Und das würde ja bei geöffnetem Schalter Stromfluss in den Player bedeuten und dass wäre halt das Problem (dacht ich zumindest), dass man das nur so machen kann, wenn auf beiden Seiten die gleiche Spannung anliegt. Daher wollt ich open drain o.ä. machen, weil hier doch die "aktive" Seite des Schalters nur hochohmig geschaltet wird und nicht auf die logische 1 des AVRs, was ja 5V bedeuten würde. Kann man das bei AVRs generell nicht? Einen anderen AVR als den Mega16 könnt ich allemnal benutzen, bloß halt leider nur die weil ich zum progarmmieren nur das STK500 habe. @A.K und Rahul Ja, Relais oder Transistoren wären auch eine Lösung. Ich dachte halt, dass ich durch diese open drain Geschichte ganz ohne zusätzliches Bauteil auskommen würde. Spart Arbeit, denn insgesamt geht es doch um einge Schalter mehr...
Der Typ MP3-Player, den ich für Fernsteuerung unter Feldbedingungen mittels Feuerwerks-Zündgerät "anzapfte", hatte die Tasten in einer Matrix. Da die Zündstromkreise 12V liefern, wurden einfache Relais verwendet. Auch eine "angezapfte" Digicam hatte die Taster in einer Matrix, hier kamen FET-Optokoppler ("Foto-MOS-Relais" von NAIS, Pollin) zum Einsatz. Wenn die Taster nicht in einer Matrix liegen (unwahrscheinlich), dann kann man sie meist mit einem externen NPN-Transistor gegen GND schalten. Sicherer ist aber der Einsatz von Transmissionsgattern des CD4066. Dazu sollten Mikrocontroller und zu steuerndes Gerät aber eine gemeinsame Masse haben. ...
Hast du ein Multimeter? Kannst du durch Widerstands und/oder Diodenmessungen herausfinden, ob es diskrete Leitungen für die Schalter sind oder ob es Leitungen für eine Tastaturmatrix sind? Wenn diskrete Leitungen: Das "Schalter geschlossen" hätte ich dadurch gemacht, dass der Atmega am Pin auf Ausgabe eingestellt wird und dort ein log. 0 (LOW) ausgegeben wird, d.h. Verbindung zu GND (gemeinsame Masse vorausgesetzt). Dadurch wirkt der Pin als Stromsenke vgl. Anschluss einer LED im Tutorial. Das "Schalter offen" hätte ich dadurch gemacht, dass der Atmega am Pin eine Eingabe erwartet (die aber nicht ausgewertet wird, bzw. könnte der Atmega darüber feststellen, ob ein Player vorhanden ist). Interne Pullups vom Atmega DEaktiviert, damit KEIN Stromfluss vom Atmega zum Player stattfindet. Die anstehenden 2,3V seitens des Players tun dem Atmega nicht weh, aber auf Dauer der Batterie/dem Akku des Players. Im Prinzip reduziert sich alles auf eine Umschaltung des betreffenden Bits im DDRx Register. Zur Strombegrenzung würde ich trotzdem zunächst mit Serienwiderstand in der Leitung zum Pin arbeiten, denn man weiss noch nicht, wo beim MP3-Player das strombegrenzende Bauteil sitzt - vor dem Schalter oder hinter dem Schalter. Alternative: Ergebnis der Messungen oben auswerten. Auch ist zu überlegen, ob man dem Atmega einen Pin dafür spendiert, um den Player über einen Transistor mit Strom zu versorgen. Damit könnte man ein geordnetes Hochfahren des "Gesamtsystems" realisieren. D.h. ohne die Gefahr, dass ein als erstes eingeschalteter Player versucht, Elektronen in einen noch ausgeschalteten Atmega zu quetschen.
WOW, vielen Dank für die Mühe Stefan. Von so einer ausführlichen Antwort hätte ich nicht zu träumen gewagt. Insbesondere dass mit dem strombegrenzenden Bauteil hätte ich nicht bedacht...Werds jetzt alles schön testen mit dem DDRx umschalten... gracias adios jakob
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.