mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik open source/collector bei AVRs


Autor: Jakob M. (Firma: Student) (jakkob)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: D. W. (dave) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.

Autor: Stefan B. (stefan) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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?

Autor: A.K. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.

Autor: A.K. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
PS: Geht natürlich nur, wenn so ein Schalter nicht auch noch die 
Stromversorgung oder ähnlich hochstromiges schaltet.

Autor: Rahul Der trollige (rahul)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Optokoppler...(oder Relais)

Autor: Jakob M. (Firma: Student) (jakkob)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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...


Autor: Hannes Lux (hannes)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.

...

Autor: Stefan B. (stefan) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.

Autor: Jakob M. (Firma: Student) (jakkob)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.