Forum: Mikrocontroller und Digitale Elektronik LED Matrix mit dem Raspberry PI


von R. B. (dxx255)


Lesenswert?

Hallo
Ich würde gerne eine Led Matrix mit 10x10 Leds mit dem Raspberry Pi 
ansteuern. Habe Multiplex entdeckt und wollte wissen ob und wie es damit 
möglich wäre eine Led Matrix anzusteuern?
Ich habe dieses Youtube-Video gefunden:
http://www.youtube.com/watch?feature=player_detailpage&v=E1ahqpRWH0A#t=59
Auch diese Seite habe ich gefunden:
http://www.tacticalcode.de/2013/01/led-matrix-grundlagen-mit-multiplexing.html
Das wären Beispiele. Allerdings weiß ich nicht, ob es beim Raspberry Pi 
möglich ist die GND Pins ein- und auszuschalten.
Gibt es noch andere Möglichkeiten?

von Matze (Gast)


Lesenswert?

Ground-Pins ein-/ausschalten?

Dafür verwendet man normale GPIO-Pins. Wenn ich mich recht erinnere hat 
der Raspberry bis zu 17 GPIOs. Damit ist ein Matrixbetrieb (theoretisch) 
schonmal ohne weiterer Hardware möglich. Allerdings muss der maximale 
Strom der Pins beachtet werden.

Der Raspberry ist kein Echtzeitsystem. Wie sich das auf die 
Signalerzeugung für eine LED-Matrix auswirkt kann ich nicht sagen. 
Könnte aber Probleme machen.

von Rene S. (Firma: BfEHS) (rschube)


Lesenswert?

Hallo,

warum nicht einfacher?

- PCF 8575 16bit I/O Expander I2C
- MAX 7219 64 einzel LEDs
- MAX 6955 ...

Die brauchen den Strom nicht vom Pi, sondern werden separat versorgt.
Somit geht der Pi auch nicht so schnell kaputt.

Grüße aus Berlin

von J. K. (rooot)


Lesenswert?

Matze schrieb:
> Dafür verwendet man normale GPIO-Pins. Wenn ich mich recht erinnere hat
> der Raspberry bis zu 17 GPIOs. Damit ist ein Matrixbetrieb (theoretisch)
> schonmal ohne weiterer Hardware möglich. Allerdings muss der maximale
> Strom der Pins beachtet werden.

10x10 mit 17 IO Pins ??

von Eumel (Gast)


Lesenswert?

Die mangelnde Echtzeitfähigkeit des RPI wird dir einen Strich durch die 
Rechnung machen. Nimm ein paar Treiber die das Multiplexen für dich 
erledigen. Sowas wie ein MAX7219

von R. B. (dxx255)


Lesenswert?

Ich denke ich werde einfach soviele i2c io expander anschließen, dass 
ich jede Led einzeln ansteuern kann.
Vielen Dank für die schnelle Hilfe!!

von Eumel (Gast)


Lesenswert?

Roman Brock schrieb:
> Ich denke ich werde einfach soviele i2c io expander anschließen, dass
> ich jede Led einzeln ansteuern kann.
> Vielen Dank für die schnelle Hilfe!!

Dann beachte die maximalen Ströme der Expander, vielleicht schaffen die 
es nicht jede LED mit 20 mA zu versorgen. Außerdem vergiss die 
Vorwiderstände nicht.

von Simon S. (-schumi-)


Lesenswert?

Ich hab vor kurzem 2 SAA1064 von NXP verbaut:
http://www.reichelt.de/ICs-NE-STV-/SAA-1064/3/index.html?&ACTION=3&LA=446&ARTICLE=15778&GROUPID=2915&artnr=SAA+1064

Die sind eigentlich zum Steuern von Siebensegmentanzeigen über I2C 
gedacht, aber da stecken ja auch nur LEDs drin. Pro Baustein hast du 
dann 16 Konstantstromsenken, an die du die LEDs direkt anschließen 
kannst. Wenn du noch 2 Transistoren pro Baustein investierst, kann der 
Bautstein automatisch Multiplexen und so 32 LEDs ansteuern.

Für deine 10x10 LEDs gibst du dich also entweder mit 96 LEDs zufrieden 
(3 Bausteine) oder 4 Bausteine und hast dann 128 Konstantstromsenken, 
also 28 Reserve.

Du kannst dann auch noch für jeden Baustein den Stromwert über I2C 
einstellen, bis 21mA sind drin.

Ich glaube mit denen bist du am besten bedient. Sind nicht vom Preis 
noch erträglich, einfach anzusteuern, und dein Real-Time-Problem hast du 
auch nicht mehr.

BTW: beim Bestellen passende Widerstände nicht vergessen, denn du musst, 
um den Bausteinen verschiedene Adressen zu geben, mit einem 
Spannungsteiler verschiedene Spannungen an einen Pin führen. Siehe dazu 
Datenblatt Seite 5 unter dem Kasten.

von R. B. (dxx255)


Lesenswert?

Danke für den Tipp. Ich glaube ich werds so machen. Ein Problem gibt es 
aber noch.
Ich kenne mich noch nicht so recht mit i2c aus. Ich habe einige 
Tutorials gefunden, allerdings weiß ich nicht, wie ich drei i2c 
bausteine an den Raspbery Pi anschließen kann. Könnte mir das noch 
jemand erklären?

von Simon S. (-schumi-)


Lesenswert?

Das hier plus die nächsten beiden Beiträge sollten für dich interessant 
sein: 
http://www.roboternetz.de/community/threads/57091-Raspberry-Pi-ARM-Linux-Computer-f%C3%BCr-28-Euro/page6?p=550522#post550522

Den Pegelwandler kannst du so übernehmen (der Raspi hat 3V3-Pegel und 
die LED-Treiber arbeiten mit 5V)

Dann kommt ja die Frage und in meiner Antwort darauf schreibe ich ja von 
dem I2C-Treiber. Ich glaube, dass man das inzwischen nicht mehr braucht, 
sondern out-of-the-box funktioniert. Sicher bin ich mir aber nicht..

In dem Codebeispiel gehts darum, einen Roboter via I2C zu steuern, aber 
das Prinzip ist ganz einfach und du musst nur:
 - die #define raushauen, brauchst du ja nicht
 - bei "slave_addr = 0x05;" die Adresse des Bausteins, den du gerade 
ansprechen möchtest eintragen
 - bei "char buffer[] = {0, CMD_MOVE_AT_SPEED, 30, 30};" die Daten 
eintragen die du senden möchtest

Das sollte für erste Tests schon hinhauen.

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
Noch kein Account? Hier anmelden.