Forum: Mikrocontroller und Digitale Elektronik AVR: Anfänger - Frage zur Ansteuerung vieler Ein- und Ausgänge


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
von J. W. (ontheway)


Lesenswert?

Hi liebes Forum!

Kurz zu mir, um klar zu stellen, meine Fragen werden vermutlich vielen 
Praktikern dämlich vorkommen: Ich bin Jens, ich habe Physik studiert im 
theoretischen Bereich, habe fast 0 Ahnung von Elektronik, bin aber recht 
fit bei Computern und kann auch bissi programmieren (C, C++, Python, 
damals auf dem 6502 Assembler). Ich möchte mit meinem Kumpel uC 
programmieren. Er ist "klassischer" Elektroniker, hat in seiner 
Ausbildung niemals mit uC gearbeitet und hat echt 0 Ahnung von 
Programmiersprachen, ist nicht seine Welt. Also: Aus dieser Symbiose 
heraus werden wir hoffen, ihr könnt uns helfen.

Meine erste Frage:
Ich möchte einen Atmega16 nehmen. Aber das ist vielleicht unwichtig. Nun 
möchte ich zum Beispiel 50 Tastschalter anbauen, die 50 Leuchtdioden an- 
oder ausschalten. Der Chip hat 4 Ports mit 8 bit. Wenn ich nur einen 
einzigen Port für Ausgang nehme, dann habe ich doch 256 Zustände. In 
meiner Laienlogik kann ich dann 128 Leuchtdioden an und ausschalten. Was 
man also braucht, ist sowas wie eine Logik hinter dem Ausgang (oder 
Eingang). Ich bin da auf Logik-ICs gestoßen... keine Ahnung. Ist das die 
Lösung? Also, so ganz theoretisch, ein Logik-Baustein, der 8 
Eingangs-Pins, und halt zum Beispiel 50 Ausgangs-Pins ;) Ihr versteht 
hoffentlich, was ich meine... wie läuft das in der Praxis? Danke für 
wohlwollende Kommentare!

Liebe Grüße,
Jens

von al3ko (Gast)


Lesenswert?

Um ehrlich zu sein, kann ich dir nicht ganz folgen mit deiner Rechnung 
bzw. deine Intention ganz verstehen, aber ich glaube, dass du etwas 
suchst, das sich Multiplexing nennt.

von Volker K. (Firma: none) (volkers)


Lesenswert?

Jeder Port kann 0 oder 1 werden. Mehrere Ports konnen ein Bitmuster 
ergeben. Das kann man natürlich wieder zerlegen und einen diskreten 
Ausgang draus machen. Thema Multiplexer auch denkbar. Das wird aber ne 
mords Schaltung. Was habt ihr denn vor?

von al3ko (Gast)


Lesenswert?

Volker Kohl schrieb:
> Jeder Port kann 0 oder 1 werden. Mehrere Ports konnen ein Bitmuster
> ergeben. Das kann man natürlich wieder zerlegen und einen diskreten
> Ausgang draus machen. Thema Multiplexer auch denkbar. Das wird aber ne
> mords Schaltung. Was habt ihr denn vor?

Aber wie schließt man denn 50 LEDs an weniger als 40 Pins an?

von Marno (Gast)


Lesenswert?

Nur eine kleine Hilfe bei der Suche:

Tastatur Beispiel
http://www.avr-asm-tutorial.net/avr_de/keypad/keyboard.html

Realisierung einer Ansteuerung von vielen LEDs findet ihr z.B. LED Cubes
http://www.youtube.com/watch?v=6mXM-oGggrM (Beispielvideo)

von Karl H. (kbuchegg)


Lesenswert?

J. W. schrieb:

> Wenn ich nur einen
> einzigen Port für Ausgang nehme, dann habe ich doch 256 Zustände. In
> meiner Laienlogik kann ich dann 128 Leuchtdioden an und ausschalten.

Nö. das funktioniert nicht.
Denn du willst ja mehr als eine LED gleichzeitig brennen oder auch nicht 
brennen lassen.


Was du brauchst ist entweder einen Matrix-Aufbau mit Multiplexing oder 
eine Porterweiterung zb mit SChieberegistern.

AVR-Tutorial: Schieberegister

Für einen Anfänger sind Schieberegister wahrscheinlich einfacher, auch 
wenn der Hardware-Aufwand höher ist.

von Thomas E. (Firma: Thomas Eckmann Informationst.) (thomase)


Lesenswert?

Na, das sind doch die allerbesten Voraussetzungen für euch beide, 
unvoreingenommen an die Sache heranzugehen.

J. W. schrieb:
> Was man also braucht, ist sowas wie eine Logik hinter dem Ausgang (oder
> Eingang). Ich bin da auf Logik-ICs gestoßen... keine Ahnung. Ist das die
> Lösung? Also, so ganz theoretisch, ein Logik-Baustein, der 8
> Eingangs-Pins, und halt zum Beispiel 50 Ausgangs-Pins ;)
Wenn das ferig ist, nennt man das TTL-Grab.

Vergiss mal, daß ein Port 8 Pins hat und daß du damit 256 Ausgänge 
adressieren kannst. Das ist ja gerade dein Gedankengang. ICs mit 8 
Eingängen und 256 "geschalteten" Ausgängen gibt es nämlich so nicht.
Die Frage ist erstmal, was das für Leds sein sollen. High-Power für 
Beleuchtungszwecke oder 2- bzw 20mA für Anzeigen.

Für 50 Taster brauchst du eine Matrix. Der Controller in der Tastatur 
unter deinen Fingern hat auch keine 100 und irgenwas Eingänge.
7 x 7 = 49. Also für 49 Tasten benötigst du 7 Eingänge und 7 Ausgänge.

Tastaturmatrix, Multiplexen sind die Stichworte.
Und vorher: http://www.mikrocontroller.net/articles/AVR-GCC-Tutorial

Und dann step by step. 1 Taste, 1 LED.

mfg.

von Mikel M. (mikelm)


Lesenswert?

al3ko schrieb:
> Aber wie schließt man denn 50 LEDs an weniger als 40 Pins an?

schliess z.B. nen MAX7219 an drei Pin davon an, an dem kannst du dann 64 
LEDs anschliessen. Du kannst die MAX dann kaskadieren und an jedem 64 
LED weitere anschliessen, ... es gibt aber auch noch zig andere 
Lösungen.

von J. W. (ontheway)


Lesenswert?

Hey Leute,

danke schon mal!
Das mit dem multiplexen und der Matrix klingt super.
Aber absolut korrekt: Natürlich sind erste Erfahrungen mit nem Testboard 
das a und o. Meines ist hoffentlich vor dem Wochende da.
Dann geht es los! Heute kam ein Buch, von Schäffler, AVR. Da lese ich 
schon mal bissi schlau, will euch ja nicht wegen jedem kleinen Murks 
befragen. Danke!

Bis bald,
Jens

von amateur (Gast)


Lesenswert?

Auf die Schnelle:
Multiplexen, Seriell-/Paralellwandler oder I²C Erweiterungen.

von Quer (Gast)


Lesenswert?

Mal ne Anregung zum Selbergoogeln:

Hab ein Projekt zu einem "Sternenhimmel" in Erinnerung, das aus dem 
universitären Umfeld stammte. Elektronik und µC-Steuerung schön 
dokumentiert.

von amateur (Gast)


Lesenswert?

Nur noch 2 Sachen:
>In meiner Laienlogik kann ich dann 128 Leuchtdioden an und ausschalten
Ja aber immer nur eine zur gleichen Zeit.
Auch bei anderen Lösungen Vorsicht: 128 Leuchtdioden brauchen richtig 
Strom und die Treiber müssen den auch aushalten.

von MaWin (Gast)


Lesenswert?

> In meiner Laienlogik kann ich dann 128 Leuchtdioden an und ausschalten. Was
> man also braucht, ist sowas wie eine Logik hinter dem Ausgang (oder
> Eingang). Ich bin da auf Logik-ICs gestoßen

Dein Logik-IC heisst 74HC259, der speichert den Zustand der LED. Am 
Eingang für die Tasten heisst er 74HC151.

> wie läuft das in der Praxis?

Sowohl bei LEDs als auch bei Tasten macht man es meist anders. Entweder 
Schieberegister wie 74HC595 für Ausgänge und 74HC165 für Eingänge  weil 
die noch weniger I/O Pins vom uC benötigen

Oder Multiplexing sowohl bei LEDs als auch von Tastern in Matrixanordung 
( also x * y )

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]
  • [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.