240 RGB-LEDs individuell mit Arduino ansteuern

Schaltungen, Widerstände, Spannung, Strom, ...

Moderator: T.Hoffmann

Antworten
freakywriter
Mini-User
Beiträge: 3
Registriert: Mo, 19.08.13, 08:36

Mo, 19.08.13, 08:41

Hi,

ich habe nicht wirklich viel Plan von Microcontrollern und Schaltungen und hätte mir am Anfang vielleicht was leichteres aussuchen sollen, aber das wäre ja zu einfach
Ich plane 240 RGB-LEDs individuell über einen Arduino Uno R3 zu steuern.
Zur Verfügung stehen mir:

- 300x RGB-LEDs Common Anode 4000mcd
- 25x 74HC595 Register (werde wohl noch mehr kaufen müssen, war nur zum Testen)
- Arduino Uno
- Diverse Netzteile, Kabel, Breadboard, Lötkolben, Musik und was man sonst noch so benötigt

Bisher habe ich mir 2 Möglichkeiten angesehen, Charlieplexing und ShiftRegister

Bei Charlieplexing habe ich rausbekommen, dass jede LED 0,14% der Zeit pro Zyklus zum Leuchten bekommt, was wohl ziemlich dunkel wäre, zudem bräuchte ich 28 Pins, um jede individuell zu steuern, was mein Arduino nicht hergibt. (Ich könnte mein Leuchtmuster vermutlich auch so abstimmen, dass ich anstatt 240 LEDs nur 30 LED-Gruppen habe, aber dann müsste ich mich auf ein Muster fixieren und das so löten, ich würde allerdings lieber verschiedene Muster abbilden)

Bei ShiftRegister bräuchte ich wohl 90 Stück (240 RGB-LEDs = 720 LEDs; je 8 steuerbar pro Register = 90 Register)

Ich weiß allerdings nicht, ob diese Möglichkeiten sinnvoll sind, 90 Register aneinander zu reihen lässt eine ziemlich hohe Reaktionszeit vermuten.

Ich habe mir auch schon diverse LED-Matrix-Kits oder Controller angeguckt, jedoch überschreitet da der Preis von zusätzlichen 100€ was ich bereit bin für dieses Projekt auszugeben.

Hat jemand schon einmal sowas gemacht oder weiß, wie sowas funktionieren könnte?
Wenn ich die ShiftRegister nicht benötige wäre das auch nicht tragische, die 6€ für die 25 kann ich gerade noch so verschmerzen oder in einem anderen Projekt verwenden.
Wenn es einen billigen Controller gibt, dann verzichte ich auch auf meinen Arduino, diesen kann ich dann auch für andere Projekte verwenden.

Ich hoffe ich konnte mich einigermaßen verständlich ausdrücken
Schon mal vielen Dank für eure Hilfe!

P.S. bei Solderlab habe ich schon geguckt, aber von den Boards bräuchte ich 2 Stück und 80€ für jedes ist mir eindeutig zu viel.
Borax
Star-Admin
Star-Admin
Beiträge: 11997
Registriert: Mo, 10.09.07, 16:28

Mo, 19.08.13, 08:54

Hallo freakywriter,
welcome on board!
und hätte mir am Anfang vielleicht was leichteres aussuchen sollen
Das glaube ich allerdings auch.
90 Register aneinander zu reihen lässt eine ziemlich hohe Reaktionszeit vermuten.
Das wäre noch nicht so schlimm. Aber bei der dann resultierenden Buslänge wird es ggf. schon schwierig (die ShiftRegister sind sensibel auf lange Leitungslängen bei der Busleitung - isb bei hohen Taktraten). Ohne gedruckte Platine und SMD ShiftRegister würde ich das auch nicht versuchen... (oder wolltest Du das wirklich auf Lochrasterplatine verlöten?)
Ich würde mir überlegen, eine Kombination aus ShiftRegister und Matrix zu verwenden. Dann brauchst Du nicht ganz so viele ShiftRegister, die LED-Taktung ist noch halbwegs hell (z.B. 12% duty bei 8 Bit Multiplex), aber Du brauchst dann wieder Treiber, weil mehr Strom über die gemeinsamen Leitungen fließen müsste als die ShiftRegister oder die Arduino-Pins alleine vertragen würden.
freakywriter
Mini-User
Beiträge: 3
Registriert: Mo, 19.08.13, 08:36

Mo, 19.08.13, 10:54

Danke für die Antwort Borax,

ich werde mir deinen Vorschlag mit der Matrix mal ansehen, aber deiner Antwort und meinem Wissen nach werde ich wohl nicht drum herum kommen mir das PCB (oder ein ähnliches) von solderlab zu holen, die bieten das PCB auch als Rohling an und eine Anleitung sowie eine Teileliste. Wenn ich das selber verlöten würde, müsste ich für beide Boards ca 90€ ausgeben, was mir zwar eigentlich zu viel ist, aber immer noch besser als nichts ist.

Die LEDs brauchen eh noch eine Weile bis die aus China hergeschifft sind, also werde ich in dieser Zeit gucken, ob es irgendwie eine praktikable Lösung für mich gibt und wenn nicht, dann das Projekt erstmal hinten anstellen.

Edit:
Habe nichts dagegen abertausende von Verbindungen zu löten, habe derzeit nicht wirklich etwas sinnvolles zu tun, wenn ich von der Arbeit komme, also hätte ich alle ShiftRegister wohl auf Lochplatinen gelötet.
Borax
Star-Admin
Star-Admin
Beiträge: 11997
Registriert: Mo, 10.09.07, 16:28

Mo, 19.08.13, 11:27

also hätte ich alle ShiftRegister wohl auf Lochplatinen gelötet
Wie gesagt, das würde vmtl. Probleme mit der Busleitung geben. Hier steht einiges zu diesem Thema:
http://www.mikrocontroller.net/articles ... widerstand
Speziell für Schieberegister am AVR:
http://www.rn-wissen.de/index.php/Portexpander_am_AVR
Lange Leitungen sind problematisch, weil die CLK Leitung empfindlich auf Überschwinger reagiert.
Und bei 90 Chips auf Lochraster würdest Du bestimmt auf mehrere Meter Leitung kommen...
Die Geschwindigkeit wäre nicht so das Problem. Wenn der Arduino mit 16Mhz läuft, kann die SPI Hardware mit bis zu 8Mhz die Bits schieben. Bei 720 Bits würde ein 'Update' gerade mal rund 100 µS dauern. Bei einer Update Rate von sagen wir mal 10% wären das immer noch 1000 Updates pro Sekunde. Weil 100 Updates pro Sekunde ja locker reichen würden, könntest Du den SPI Takt auf etwa 1Mhz runter setzen. Aber auch 1Mhz Takt wäre bei so vielen Chips sehr ambitioniert...
Wenn Du die Zeit hast, dann die PCBs als Rohling nehmen und selber verlöten. Das ist bestimmt genug Arbeit.
Müsste für beide Boards ca 90€ ausgeben
Das halte ich eigentlich für recht preisgünstig.
freakywriter
Mini-User
Beiträge: 3
Registriert: Mo, 19.08.13, 08:36

Di, 20.08.13, 10:11

Ich habe mir die Links mal durchgelesen und habe wohl rausgelesen, dass die Leitung, die die ShiftRegister verbindet unter 20cm lang sein muss.
Ich werde mich erstmal von dem Gedanken verabschieden 240 LEDs zu benutzen, sondern nur so viele, wie ich ShiftRegister benutzen kann, für eine 8x8 Matrix brauch ich wohl 4, 1 für Ground und 3 für die jeweiligen Farben.
Wenn ich später mal viel Zeit und Lust habe, werde ich mir 4 von den Boards zusammenlöten die es bei SolderLab gibt, dann baue ich mir eine Matrix aus 32x16.

Vielen Dank für die Antworten und für alle die es interessiert, der Controller von Solderlab: http://www.solderlab.de/index.php/hardw ... rix-system
Horaz
User
User
Beiträge: 25
Registriert: Di, 05.06.07, 14:37
Wohnort: München
Kontaktdaten:

Mi, 21.08.13, 09:57

ich weis ja nicht wofür, aber kannst du u.U. ein paar Leds zo 2er oder 3er Gruppen zusammenfassen? - damit würdest du dir ein paar Pins sparen

du kannst auch ein paar Latches parallel schalten und damit die Leds oder mehrere 795 antreiben
Damit hättest du viele kurze Busse

http://www.stefan-weigert.de/index.html hier eine gute Schaltung für ein 8x8x8 RGB Led Cube
Borax
Star-Admin
Star-Admin
Beiträge: 11997
Registriert: Mo, 10.09.07, 16:28

Mi, 21.08.13, 11:24

dass die Leitung, die die ShiftRegister verbindet unter 20cm lang sein muss
Man kann durch geeignete Maßnahmen durchaus längere Leitungen verwenden (Taktfrequenz anpassen, Terminierung...), aber wie gesagt, ganz trivial ist das nicht.
für eine 8x8 Matrix brauch ich wohl 4
Ja, ist aber damit eigentlich eine 8x24 Matrix und dafür brauchst Du dann noch zusätzliche Treiber. Sonst hast Du wieder nur höchstens ca. 1/10 der 'Nennlichtstärke'. Im Pulsbetrieb (wie bei Matrixansteuerung üblich) kann man die LEDs locker mit 50mA Strom betreiben (bei einer 8x24 Matrix hast Du ja nur 1/8 duty), aber das können die Schieberegister nicht liefern. Und für das eine 'Masseregister' ist sowieso ein Treiber nötig, sonst sind die LEDs unterschiedlich hell, ja nachdem wie viele der Farben 'an' sind. Für dieses 'Masseregister' kannst Du ein ULN 2803A Darlington-Array nehmen.
MacGyver
Super-User
Super-User
Beiträge: 65
Registriert: Do, 10.06.10, 21:50
Wohnort: Dresden

Do, 22.08.13, 17:44

Hallo, besorg dir RGB LED's mit nem WS2812 drin und steuere die über den Arduino an. Dann hast du alle genannten Probleme mit einem Schlag vom Halse. Diese LED's gibts auch bereits "vom Meter" mit wahlweise 30 o. 60 LED's p. Meter. Die Dinger gibts in der "Bucht", oder beim freundlichen Chinesen. Der Verschaltung ist denkbar einfach: Masse, 5V, serial Input, serial Output. masse u. 5V jeweils alle parallel, die erste kommt mit dem Input an den Arduino, deren Output an den nächsten Input usw.
500-1000 Stck. sind (bei entsprechend dickem Netzteil) so möglich. Es läßt sich jede LED einzeln ansteuern. Eigentlich kannst du immer nur die erste ansteuern. Wenn das nächste Datenpaket kommt, schiebt die 1. ihr altes Paket weiter. Das Ganze als Burst hintereinander, bekommt das Auge garnicht mit, was da zwischendrin in ein paar ms weitergereicht wird. Es wird dann zum Gucken gestoppt und dann wird die Kette von vorne nach hinten komplett neu befüllt.

Gruß Gerald
Antworten