PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : RGB-LED-Cube



Keksstar
13.10.2007, 23:35
Hallo,

beim surfen vor ein paar Tagen sind mein Kumpel und ich auf folgendes gestoßen: http://youtube.com/watch?v=4MGKhFIujM4
Ein wunderschöner 5x5x5 LED-Cube (also 125 LEDs). So weit wir das herausfinden konnten, scheint dass Teil mit Schieberegistern zu arbeiten, was aber leider bedeutet, dass man zur Ansteuerung einen PC benötigt. (den brauch man so oder so, aber bei den Schieberegistern muss er auch laufen ;-) )
Das ist natürlich schade, wenn man den Cube als Ambilight verwenden will. Nun war die Überlegung, dass man einen Microcontroller nimmt. Auf den kann man ja Programme schreiben und braucht zum Betrieb eigentlich keinen PC mehr. (wir haben uns gedacht das man da dann so tolle Sachen wie Steuerung via Soundinput, Randommode und natürlich Programme draufschreiben kann)
Der Cube an sich ist nicht das Problem... mal eben 216 RGB LEDs pro Person bestellen und dann entsprechend Matrixmässig zusammen löten.
Hier eine kurze Erklärung dazu:

Die LEDs sind in mehrere Ebenen angeordnet. Die Kathoden aller LEDs einer Ebene sind miteinander verbunden.

Weiterhin sind die Anoden aller LEDs, die übereinander liegen (also jede in einer anderen Ebene), miteinander verbunden. Diese LEDs bilden zusammen eine Säule. Es gibt also 6x6=36 Säulen, und jede Säule hat 6 LEDs. 36 Säulen x 3 Pins je LED = 108 Anschlüsse

Wenn man nun eine oder mehrere Säulen aktiviert, aber nur eine Ebene, dann leuchtet von jeder aktiven Säule genau die LED, die in der aktiven Ebene liegt.
Das ergibt dann einen schönen 6x6x6 Cube.
Es sind aber RGB-LEDs, dass heisst also, dass man am Ende 108 Anschlüsse haben müsste, oder? Eine 108x6 Matrix also.
Nun ist aber die große Frage: Welcher Microcontroller ist für so eine Aufgabe geeignet? Von Microcontrollern haben wir beide nämlich absolut keine Ahnung und könnten da eure Unterstützung gebrauchen. Vielleicht gibt es hier ja nette hilfsbereite Menschen, die einem auch helfen wenn man absolut nichts von Microcontrollern versteht. :)
Die Übertragung der Daten sollte dann vom PC auf den Cube via Sub-D oder USB funktionieren. (Bluetooth wäre wohl zu kompliziert, aber hätte natürlich auch was, wenn man den Cube dann via Handy steuern könnte :D Muss aber nicht unbedingt sein...)

Wir freuen uns über eure Hilfe.

Gruß,
Andreas und Dennie

Besserwessi
14.10.2007, 09:07
Die Ansteuerung wird wohl auf 36 Säulen x 18 LEDs (6 x 3 Farben) als Matrix hinauslaufen. Eine Ansteuerung über Schieberegister geht auch von einem Microcontroller aus, so schnell wie der parallelport am PC ist da kein Problem. Die Schwierigkeit liegt im Speicherbedarf: Wenn man nur 1 Bit pro LED vorsieht, sind das schon 81 Bytes nur für ein Standbild. Für einen PC ist das kein Problem aber bei den Controllern hat oft nur ein paar kBytes RAM (das Programm ist unabhängig davon im Flash). Mehr Ram läßt sich ansprechen, da wird es aber komplizeirter.
Eine möglichkeit wäre vielleicht eine Flash Speicherkarte für die Daten zu benutzen (müßte dann wohl am PC geschrieben werden). Für die Ansteuerung von einer Sorte (weiss aber gerade nicht welche) ist Software verfügbar.

Als Controller könnten die etwas größeren AVR Controller gehen (z.B. Mega32, Mega16). Es kommen aber wohl noch ein ganz Teil Logic ICs hinzu. Die Geschwindigkeit ist wohl nicht das Problem, eher die Zahl der IO Pins und der maximale Strom.

Rabenauge
14.10.2007, 09:28
http://www.das-labor.org/wiki/Blinken_Borgs
Hilft euch das weiter?

Keksstar
14.10.2007, 12:38
Danke für eure Antworten.

@Rabenauge: Genau daher haben wir die Idee. :)

@Besserwessi:
Das mit dem Parallelport ist ja schön und gut, aber dass ist auch genau der Punkt den wir eben vermeiden wollen. Das ganze soll unabhängig von einem PC laufen.
Deine Möglichkeit mit den Speicherkarten finde ich extremst interessant, dass wäre ja genau das richtige für die Programme. Weisst du wo ich dazu mehr Infos finde?
Wie schon gesagt, von Controllern haben wir so gut wie keine Ahnung. Vielleicht mal paar Namen gehört, aber dass war´s dann auch. Daher hatten wir hier auf eure Hilfe gehofft.

Ich hab mal eben ein bisschen bei Reichelt rumgeschaut und bin auf folgendes gestoßen:
http://www.reichelt.de/?;ACTION=3;LA=2;GROUP=A363;GROUPID=2959;ARTICLE=45 027;START=0;SORT=order_col_artnr_besch;OFFSET=1000 ;SID=20Z1p2pawQARQAADZ6@iMb40151ab8ddbfc28baae2600 1ad847bc
(wenn der Link nicht geht, Art-Nr: ATMEGA 128-16 TQ)
Der hat 53 I/O Ports. Zwei von den Controllern hätten also 106 Ports. (gut, man wird dann wahrscheinlich drei benötigen und muss das ganze dann aufteilen)
Hilft das vielleicht weiter?

Besserwessi
14.10.2007, 13:57
Der paralleport war nur als Vergleich gedacht:
Das was ein PC am Parallelport kann, kann ein ein Microkontroller auch.
Die LEDs direkt mit dem Microkontroller zu treiben wird wahrscheinlich nicht gut gehen, denn der maximale Strom (VCC-pin) ist begrenzt. Da also extra Treiber benötigt werden, kann man dann auch gleich Schieberegister oder latches (z.B. 74HC573) nehmen. Man braucht dann nicht mehr so viele IO Pins am Controller und kann eventuelle 6 identische Platinen für je eine Reihe benutzen.
Es wird aber so oder so eine etwas größere Schaltung und nicht gerade ein Anfängerprojekt.

Als Speicher-karten geht so weit ich weiss: MMC, SD und Compact flash. Da die Programmierung alles andere als einfach ist, sollte man hier auf einen fertigen C-Code zurückgreifen. Einen Überblick was geht gibts z.B. hier: http://www.myplace.nu/mp3/

Es gibt aber sicher noch bessere Quellen für den Zugriff auf eine Speicherkarte.

Keksstar
14.10.2007, 14:26
Würde man jetzt aber statt einem großen Controller kleinere nehmen, mit z.b. nur 32 Ports, dann hätte man im Endeffekt zwar paar Controller mehr (bei 32Ports bräuchte man z.b. 4 Stück und hätte dann 128 Ports), aber die Last für jeden einzelnen müsste sich doch dann verringern, so dass man dann doch ohne Treiber auskommen müsste, oder?
Wie schon gesagt, habe ich von Controllern leider keine Ahnung, würde mich aber trotzdem gerne an das Projekt heranwagen. (bzw wir)
Hättest du vielleicht Lust uns zu helfen?

Besserwessi
14.10.2007, 17:18
Mehrere Controller würden gehen, wird aber nicht einfacher als TTL ICs als Schieberegister oder Latches. Die kritische Größe wird der Strom per VCC/GND pins sein. Beim Mega48 sind das 200 mA, bei den neueren Typen könnte es sogar weniger werden, und da reicht auch der Strom pro pin nicht mehr aus. Das heißt das ein Controller maximal 10 LEDs treiben kann (einige haben AGND+GND, dann eventuell bis zu 20 )
Ich würde die Lösung mit den Schieberegistern bevorzugen, wie sie wohl auch vom PC aus benutzt wird. Wegen dder Ausgangsleitung sind eventuell aber auch die Latches eine alternative, denn da gibt es Bustreibertypen, die mehr Strom Vertrage. Dadurch das die TTL Ics alle ähnlich beschaltet werden, wird der Aufbau einfacher und auch billiger.
Nur als grobe Schätzung würde man als Ics benötigen:
1 x Mega32, 1 x ULN2003(Treiber), 14 x 74HC574 + Netzteil

Ich könnte euch schon noch etwas helfen, habe aber in den nächsten Wochen eher wenig Zeit.

Keksstar
14.10.2007, 18:01
Dann hätte man 16 ICs, das geht doch noch. Ich hab ganz ehrlich mit mehr gerechnet. (gut, Speicherkarten Controller fehlt ja noch, etc.)

Mach dir blos keinen Stress, dass eilt nicht. LEDs werden frühestens nächsten Monat bestellt (gibt son tolles Ebay Angebot, wo es 500 RGB LEDs für ~80€ gibt). Und die restlichen Bauteile dann nach und nach, der Winter ist schließlich lang genug. Außerdem muss man ja noch Schaltpläne etc entwickeln.

Ich geh nochmal nen bissl googlen wegen den Speicherkarten. Dein Link hat mich nicht wirklich weiter gebracht.
Wenn man sowas macht, dann sollte man wenn möglich SD Karten verwenden.

Keksstar
14.10.2007, 19:38
http://www.ulrichradig.de/home/index.php/avr/mmc-sd

Hier gibt´s einen wunderschönen Schaltplan für die Ansteuerung einer SD Card. Ist doch einfacher als gedacht.
Man sollte vielleicht die Variante mit dem LM317 nehmen: http://www.ulrichradig.de/site/atmel/avr_mmcsd/gfx/MMC_Optimal.JPG
Lieber gleich richtig als so einen Bastelkrams wie die andere Schaltung.

Besserwessi
14.10.2007, 20:34
Die Seite mit der Speicherkartenansteuerung sieht schon mal gut aus.
Den Rest der Schaltung könnte man dann eventuell auch so aufbauen, das man die LED treiber mit Schieberegistern entweder an den Parallelport oder eine Microcontroller anschließen kann. Man könnte dann den Mikrokontroller und die LED Treiber unabhängig bauen und bei der Programmierung der Muster erst man am PC testen und erst später auf dem Microcontroller nutzen.

Keksstar
14.10.2007, 21:02
Heisst also:
Wenn man was programmiert, dann den Cube an den PC anschließen damit man auch "sieht" was man macht und wenn einem das dann gefällt, dann speichert man das auf der SD-Karte ab und kann es dann dazu nutzen um den Controller zu füttern welcher die Daten dann umsetzt. Habe ich das so richtig verstanden? Man braucht den Controller also nur zum Stand-alone Betrieb und nicht zum Betrieb am PC? Um jetzt mal ein bisschen rum zu spinnen: Wie wäre das mit Soundsteuerung, Randommode oder gar Bluetooth oder USB? Wirds dann richtig kompliziert oder ist sowas machbar?

Hessibaby
15.10.2007, 07:49
Betrachte die LED-Matrix doch mal als externen Speicher mit 375 Speicherstellen in die Du beliebige Daten schreiben kannst.
Zur Adressierung benötigst Du ganze 9 Bit. Dann 3 Decoder ( für X;Y;Z )
Zur Erzeugung der Muster kannst Du, theoretisch, alle Umweltdaten hernehmen. Helligkeit , Raumtemperatur , Annäherung , Geräusche , WLAN-Traffic. Das ist Deiner Phantasie überlassen.

Gruß

Keksstar
15.10.2007, 13:51
Schöne Ideen dabei :)

Bluesmash
15.10.2007, 19:27
als ich das gesehen habe dachte ich sofort: "sowas muss ich auch haben ;)"

wie willst du denn die einzelnen farben ansteuern? einfach "nur" alle farben ein/aus was jedenfals schon mal 7 farben ergibt... oder willst du jede farbe der led's mit pwm ansteuern? also jede farbe "stufenlos" dimmbar? was auch extrem aufwändig währe und über eine matrix fast nicht realisierbar ist...

gruss bluesmash

Besserwessi
15.10.2007, 19:44
PWM Steuerung geht schon auch in der Matirx. Allerdings wird es dann schwieriger eine hohe Auflösung hinzubekommen. Etwa 4 Bit Auflösung für die Helligkeit sollten aber noch möglich sein, zumindest wenn man nur relativ wenige LEDs hintereinander Leuchten läßt. Gepant war eine Matrix 108 x 6 oder eventuelle 54 x 12. Es geht dann mit einem Microkontroller halt nur Software PWM. Bei 6 Zeilen wäre jede LED jeweils maximal ca. 2 ms an und für 16 Stufen bräuchte man 125 us Zeitauflösung. Das sollte machbar sein, wenn man die Daten alle vorher ins RAM schreibt.

Wenn man bei so vielen Kanälen einen schnellen bzw. hochauflösenden PWM haben will, würde ich ein CPLD oder FPGA vorschalgen, habe da aber noch keine Erfahrungen mit.

Keksstar
15.10.2007, 19:45
Ich hab jetzt einfach mal die Erbauer angeschrieben. Mal schauen was die dazu meinen.
Es hätte natürlich was, wenn die dimmbar wären. Ist aus dem Video ersichtlich ob die da gedimmt werden? Wenn ja, dann muss es über eine Matrix möglich sein.
Wenn es möglich ist: Hätte was. Wenn es nur mit sehr großem Aufwand möglich ist, dann hat sich dass Thema.


Also FPGAs gibts mit bis zu 264 Ports (nur so auf die schnelle geguckt), da müsste also also selbst ein kleinerer reichen für die 108 Ports.

Ich hoffe die Jungs von das-labor.org melden sich möglichst bald. Die nutzen ja auch einen FPGA. http://www.das-labor.org/wiki/Farb_Borg_3d
Natürlich hoffe ich, dass die noch mehr über ihre Steuerung preisgeben.
FPGA+Treiberplatine (Schieberegister???) ist ja nur eine relativ ungenaue Angabe.

Besserwessi
15.10.2007, 20:36
Die sache mit einem FPGA zu lösen ist sicher möglich und elegant, aber nicht ganz einfach. Die haben zwar genug Ports, aber man braucht fast sicher noch extra Treiber dazu und hat damit nicht viel gewonnen, außer genug Geschwindigkeit um uneingeschränkt PWM zu nutzen.
Die TLL latches die ich mit gedacht habe, können ca. 30 mA treiben, das sollte also ohne extra Treiber gehen. Die 6 Ebenen werden natürlich Treiber brauchen, da wird sogar ein ULN2003 nicht mal mehr reichen. Der Aufwand für eingeschränktes PWM wäre ein Sache der Software, die Hardware wäre die gleiche wie für nur An/Aus. Bevor man sich da auf die Details festgelegt hat ist es schwer zu sagen ob man nur 8 oder eventuell 50 Helligkeitsstufen hinkriegt. Besonders bei C ist es nicht so leicht vorherzusehen wie schnell der Code dann tatsächlich wird. Eventuell müßte man halt für PWM auf Assembler ausweichen auch wenn das dann schon recht kompliziert wird.

Schwierig könnte es eventuell werden die Elektromagnetischen Abstrahlungen im erlaubten Rahmen zu halten, ohne den ganzen Cube in einen Drahtkäfig zu stecken.

Keksstar
15.10.2007, 21:03
Zu erst einmal: Ich bedanke mich vielmals für eure große Hilfe. Ich hätte ehrlich gesagt nicht mit so einem Feedback gerechnet. Danke! :)

Wir werden das jetzt mal überdenken mit den Helligkeitsstufen. Ich melde mich dann wieder.

vajk
15.10.2007, 21:29
kleiner Tipp: es gibt z.B. den MBI5031, ein nettes ICs das kann 16 PWM-Kanäle und bis 25 MHz PWM genierieren ...

Und "Besserwessi" hat Recht .. so ein Cube strahlt wies Tier ... und wird so einfach keinen EMV-Test bestehen :-)

Hessibaby
16.10.2007, 07:02
Das mit der Strahlung sprich H-Feld muß man mal relativieren. Im Extremfall sind 375 LED aktiv was einem Maximalstrom von 7,5A für die LED´s entspricht. Dieser ist aber ein Gleichstrom der durch 375 Drähte fließt, da diese aber nicht parallel liegen sondern kreuz und quer heben sich die meisten H-Felder gegenseitig auf. In Summe betrachtet wird das Feld in der Größenordnung einer 20W Halogenlampe liegen.
Wenn ich Zeit habe werde ich probehalber mal 20-30 LED´s mit PWM betreiben und mal meine H-Feldsonde dranhalten.
Gruß

vajk
16.10.2007, 08:42
relativ, ja HessiJones, im Nahfeld (etwa 2m entfernt) mit einem 2m/70cm-Handfunkgerät selbst gehört = relativ viel Störpegel!
Es geht nicht um den Gleichstrom, der da fließt sondern um die Taktfrequenz der LEDs verbunden mit Anschlußdrähten unterschiedlicher Wirk-Längen = genialer Störsender :-)

Keksstar
16.10.2007, 14:17
Hallo alle miteinander.
Ich habe heute morgen folgende Mail von das-labor.org bekommen:


Hallo,


> Um jetzt auch nicht all zu lange um den heissen Brei herum zu reden:
> Ihr habt schon einen Farb-Borg gebaut und wisst wie das mit der
> Ansteuerung läuft. Könnt ihr uns sagen wie ihr den Borg genau
> ansteuert? Gibt es vielleicht Schaltpläne von dem gesamten Aufbau?

Vom Frab-Borg haben wir zZ keine Pläne die euch weiterhelfen....


Unter [1] gibt es aber Schaltpläne von der 8x8x8 einfarbigen Variante. Das ist im Endeffekt eine 64x8 Matrix, wobei beide Matrix Dimensionen mit Schieberegistern implementiert wurden. Beide Seiten brauchen auch Treiberbausteine dahinter: da jede LED max. ein 8-tel der Zeit an ist, werden sie mit dem 8-fachen Strom betrieben. Die Spaltentreiber müssen immer nur 1 LED treiben, die Zeilentreiber im Worst-Case 64!

Dahinter steckt dann ein ATMega32, der das alles steuert. Dabei haben wir nur 4 Helligkeitsstufen implementiert -- das ist fuer den ATMega auch kein Problem.


Die Timing-Anforderungen an die Farb-Borg Steuerung sind deutlich anspuchsvoller (wenn man 256 Helligkeitsstufen will): fd0 beschreibt in [2] wie sich das timing-problem für ein Fnordlicht darstellt. Bei dem Borg muss man eine 125x5 Matrix mit den gleichen Timinganfroderungen ansteuern -- das wird ein ATMega-XY niemals schaffen.

Wir haben das mit einem FPGA geloest: Auf dem FPGA ist eine Matrix-Ansteuerung synthetisiert, die kontinuierlich den Inhalt eines "Video-RAMs" auf Schieberegister raustaktet, die dann die 125x5 Matrix ansteuern. Neben der Matrix-Ansteuerung haben wir auch eine CPU in den FPGA synthetisiert, auf der die Software läuft die in das "Video-RAM" schreibt.

Matrix-Ansteuerungen direkt vom PC aus (Parallel-Port) werden wohl nicht so einfach funktionieren. Zumindest nicht solange da ein normales (d.h.
nicht-realtime) Betriebssystem läuft. Mein Linux z.B. scheduled Prozesse mit > 10ms ungenauigkeit -- viel zu viel fuer eine saubere Matrix-Ansteuerung. (gemessen vor ca. 1 Jahr) Treiber im Kernel Modus können genauer -- aber das möchte ich mir nicht antun....


Viel Spass beim basteln!


j.


[1]https://roulette.das-labor.org/trac/browser/microcontroller/doc/Layouts/borg-3d
[2] http://koeln.ccc.de/prozesse/running/fnordlicht/artikel.xml

Na dann mal willkommen in einem Berg voller Probleme. Selbst wenn man den Hardwareteil packt, ist da immer noch der Softwarepart.

Hab noch nen bissl auf der Seite rumgestöbert und bin auf folgendes gestoßen: https://roulette.das-labor.org/trac/browser/microcontroller/doc/Layouts/farb-borg-3d
Ich habe aber keine Ahnung womit man diese Dateien öffnen könnte.

Besserwessi
16.10.2007, 21:23
Ist halt nicht gerade das beste Projekt für den Einstieg. So Schwierig sieht es aber auch nicht aus. Bei der Software sehe ich vor allem 2 etwas schwierigere Teile: 1. wie die SD Card software in C mit der Treibersteuerung in Assembler verbinden, und das Programm um die Muster zu entwerfen.

Keksstar
16.10.2007, 21:36
Zu dem C Part fällt mir gerade was ein... da muss ich morgen doch glatt mal jemanden Fragen. (wozu geht man sonst auf eine Berufsbildende Schule mit Fachrichtung Informatik :) )

Lassen wir Software erstmal Software sein und kümmern uns um den Hardwareteil.
Also Fakt ist: Man braucht Schieberegister. Das ist in der Grundidee aufgetaucht und auch die Leute die sowas schon gebaut haben meinen sowas.
Schieberegister hin und her geschoben... was ist mit der FPGA Sache? Notwendig oder nicht?
Wir haben übrigens nochmal drüber gesprochen wegen dem dimmen und nicht dimmen. Wenn es möglich ist: Herzlich gerne. Wenn nicht oder nur mit riesigem Mehraufwand verbunden ist, dann wird das wohl wegfallen - oder man lässt es nur in Abstufungen erfolgen. (0%, 25, 50, 75, 100%)
Das man einen Mega32 braucht, ist eigentlich auch klar.

Besserwessi
17.10.2007, 21:38
Ein FPGA ist ein Programmierbare Logicbaustein, der eine größere Menge einfacher Logig ICs ersetzen kann. Ich halte einen FPGA hier aber übertrieben, wenn man nicht gerade sehr viele Helligkeitsstufen braucht. Auch dann sollte der etwas kleinere Bruder (CPLD) genügen, die sind zwar deutlich kleiner, aber auch viel billiger.

Es müssen nicht unbedingt Schieberegister sein, aber die sind eine elegante Lösung um die Zahl der Ausgänge zu erhöhen. Ich hatte erst and Latches gedacht, aber da wird die Verdrahtung ziehmlich umständlich. Die eine Schaltung von oben benutzt übrigens im wesenlichen Latches und nur ein paar Schieneregister.

Die Funktion der Schiberegister wird im RM-Wissen ganz gut beschrieben:
https://www.roboternetz.de/wissen/index.php/Portexpander_am_AVR

Da wird hier sehr viele Ausgänge brauchen, und es auch recht schnell sein soll, würde ich 8 solcher Schieberegister parallel vorschlagen. Auf einer Platine könnte man dann 8 Schieberegister bausteine 74HC595 und dazu 8 Treiberbausteine (ULN2803 oder ähnliches) und die Wiederstände für die LED Ketten unterbringen. Die ULN als Treiber würden auch eine gewisse Trennung von Versorgung der Logic und der LEDs geben. Bei den insgesamt recht hohen Strömen ist das nicht unwichtug.
So wie ich das bisher sehe liegen die Pins an den ICs sehr günstig, sodass eine einsitige Platine mit wenigen drahtbrücken ausreicht. Mit etwas Glück sollte man auch ohne SMD Ics, aber mit SMD Widerständen usw., mit einer halben Europlatine (8x10cm^2) auskommen.
Eine Solche Platine reicht dann für 8x8=64 Ausgänge. Man kann die Schieberegister auch hintereinanderschalten und so fast beliebig viele dieser Platinen hintereinander schalten (nur der takt und das Latch Signal müsten noch einen Leitungstreiber bekommen, da nicht mehr als ca. 10 Eingänge an einem Ausgang hängen sollten. Je nach Größe des Cubes braucht man also 1-2 solcher Treiberplatinen. Der Platinenentwurf sollte mit Eagle eher eine Fleißarbeit sein, aber nicht so schlimm da es aus 8 praktisch identischen Teile besteht. Das Löten könnte auch etwas langwieriger werden, mit 16 Ics mit je 16/18 Pins.

Die Treiber für die Ebene (5 oder 6 je nach Größe) könnte man direkt vom AVR ansteuern. Hier kommen recht große Ströme (je nachdem was man den LEDs gegen mus) ca. 2 - 8 A zusammen. Als Treiber also MOSFETS und ggf. ein 74AC244 als Treiber dazu.

Für erste tests reichen dann eine Treiberplatine und die MPU Platine mit den MOSFET treibern. Man könnte damit auch schon einen einfachen Cube Steuern (8x8x6 Monochrom). Dass sollte auch schon reichen um mit der Software zu beginnen.

Ich habe mal überschlagen wie schnell das ganze wird, und wieviele Helligkeitsstufen man damit hinbekommen könnte. Die geschwindigkeit wird ja im wesenlichen von der inneren Schleife bestimmt. Für einen 20 Mhz Prozessor bin ich für 128x6 Ausgänge auf maximal ca. 20-30 Helligkeitsstufen gekommen (für ein Assembler Programm).
Diese Grenze habe ich für 2 verschiedene Methoden bekommen:
1) Pulsmuster vorweg berechen und dann nur noch Ausgeben (hier ist das RAM die Grenze),
2) Software PWM mit 8 Bit breten Daten, aber nur begrenzt vielen Stufen.

vajk
17.10.2007, 21:47
Hallo, schaut euch mal den Baustein an (schrieb ich schon mal):
MBI5031, ein nettes ICs das kann 16 PWM-Kanäle und bis 25 MHz PWM genierieren (und macht beim PWM noch eine Verteilung = Scrambling) ... LED mit Vorwiderstand dran, geschickte Programmierung und die Farbwerte für RGB gehen in einem Rutsch ... 4096 Graustufen x 8 Ausgänge .... geniale Teile, hab ich schon benutzt.

Besserwessi
18.10.2007, 17:59
So ein HF mäßiges PWM Signal kann man gebrauchen, wenn man eine Störsender bauen will. Man sollte so wenige Signalwechsel auf den Leitungen haben wie möglich. Ich wüßte nicht wie man den mit dem Umschalten der LED Ebenen Syncronisieren kann.

Ich habe schon man die Software zum Ausgeben der Daten entworfen. Ich komme auf ca. 600 Zyklen um 128 Känale Software PWM zu berechen und die 16 Bytes an die Treiber Auszugeben. Bei 100 Hz Widerholfrequenz und 6 Ebenen LEDs erbiebt das ca. 40 Helligkeitsstufen (dem Trick von einem 1,5 fach langen Abschnitt evenetuell auch fast das doppelte) ohne extra Hardwareaufwand. Ich glaube das sollte reichen. Wir werden wohl einen AVR mit 2 kB RAM (z.b. Mega 32 brauchen) auch wenn ein Mega88 etwas schneller wäre.

Für die Treiberplatine stellt sich die Frage ob high oder low side Treiber gebraucht werden. Bei einfarbigen LEDs geht beides, aber bei mehrfarb LEDs hängt es von dem Typ der LEDs ab (gemeinsame Anode oder kathode). Einfacher wären viele low-side Treiber (ULN2803) und wenige high side Treiber (MOSFETs). Die nächste Frage ist die nach dem gewählen Strom für die LEDs bzw. der nötigen Helligkeit. Bei höhen Strömen muss man sich noch um die Abwärme kümmern (bis zu 15 W bei 64 Treibern+Widerständen).

Besserwessi
18.10.2007, 19:06
Ich habe zufällig eine ähnliche Platine mit den Schieberegistern gefunden (nur halb so groß ud ohne Treiber, aber das ist das kleinste Problem. Mit SMD Widerständen sollte man gerade noch 64 Ausgänge auf eine Platine hinkriegen. Leider kein direkter Link: auf http://www.ucapps.de/ unter MIDIO128 - MBHP_DOUT ist ein Layout zu finden.

Keksstar
22.10.2007, 23:30
So ein HF mäßiges PWM Signal kann man gebrauchen, wenn man eine Störsender bauen will. Man sollte so wenige Signalwechsel auf den Leitungen haben wie möglich. Ich wüßte nicht wie man den mit dem Umschalten der LED Ebenen Syncronisieren kann.

Ich habe schon man die Software zum Ausgeben der Daten entworfen. Ich komme auf ca. 600 Zyklen um 128 Känale Software PWM zu berechen und die 16 Bytes an die Treiber Auszugeben. Bei 100 Hz Widerholfrequenz und 6 Ebenen LEDs erbiebt das ca. 40 Helligkeitsstufen (dem Trick von einem 1,5 fach langen Abschnitt evenetuell auch fast das doppelte) ohne extra Hardwareaufwand. Ich glaube das sollte reichen. Wir werden wohl einen AVR mit 2 kB RAM (z.b. Mega 32 brauchen) auch wenn ein Mega88 etwas schneller wäre.

Sorry das ich mich jetzt erst wieder melde... die letzten Tage waren einfach etwas stressig (zwei Geburtstage, dies und jenes... na ja, egal).

Das heisst also, dass wir mit einem Mega32 hinkommen sollten? 40 Helligkeitsstufen ist schon eine Menge. Da wir keine LED Wand bauen wollen um dort irgendwelche Filme abzuspielen sollte das auch durchaus reichen.
Ich werde nachher mal eine kleine Grafik erstellen, damit man sich dass mal anschauen kann wie das mit den Stufen ist.

So... mal ein bissl gebastelt. Was soll ich sagen? 40 Stufen reicht dicke!!!


Gruß,
Andreas

Hessibaby
23.10.2007, 07:32
Das MBI5031 ist schon gut, zumindest liest sich das Datenblatt gut.
Und die 25 MHz sind die fmax. Du kannst bis dahin, muß Du aber nicht.
Oder fährst Du 250 km/h in der Tempo 30 Zone, nur weil Dein Auto das kann ?
Gruß

vajk
23.10.2007, 10:22
Wenn ihr mit Stufen einzelne PWM-Schritte meint, dann werdet ihr nicht wirklich glücklich ...

.. wie fd0 schon schrieb, sollten diese als Quadratur-Reihe steigen.

Hier die Werte für meine 65 PWM-Stufen (über einen Bereich von 4096 PWM-Schritten)!


int pwmstep[65] =
{ 0, 1, 4, 9, 16, 25, 36, 49, 64, 81,
100, 121, 144, 169, 196, 225, 256, 289, 324, 361,
400, 441, 484, 529, 576, 625, 676, 729, 784, 841,
900, 961, 1024, 1089, 1156, 1225, 1296, 1369, 1444, 1521,
1600, 1681, 1764, 1849, 1936, 2025, 2116, 2209, 2304, 2401,
2500, 2601, 2704, 2809, 2916, 3025, 3136, 3249, 3364, 3481,
3600, 3721, 3844, 3969, 4095};


Bei "meinem" firefly nutze ich pro Modul 3 MBIs (für jede Farbe einen) und einen uC .. und davon dann pro Ast 7 Module = 112 RGB-LEDs ..
Auf Grund dessen, daß sich meine LEDs (in 7 Modulen) auf einer Achse befinden und sich diese mit > 300 U/min drehen, habe ich nur rd. 700 us für einen PWM-Zyklus Zeit. Daher waren die 25 MHz Taktrate für mich wichtig.
Und die ICs nehmen einem viel Arbeit ab! Und sie sind kaskadierbar ...

Und wie Hessi' schon schrieb, Du kannst den MBI natürlich auch mit weniger Takt füttern ...

Viel Erfolg!

http://www.antennenkoppler.de/fotos/dwIIdu.jpg

Ergänzend: das Scrambling des ICs macht auch aus "wenig PWM" ein "schönes" Leuchten ...

Und was wichtig ist, mit entsp. Vorwiderständen pro LED kann man die LEDs mit 12 V versorgen ...
.. denn 100 RGB-LEDs = 6 A

(Und von TI gibt es auch einen, jedoch ohne Scambling, der kann 30 MHz PWM TLC5941, wenn er denn zu bekommen ist.)

Keksstar
23.10.2007, 11:58
Jetzt ist natürlich die Frage was besser ist... Schieberegister oder LED-Treiber.
Ich weiss, dass ihr LED-Treiber sagen werdet... aber wenn ich mal die Preise vergleiche ist das schon ein gewaltiger Unterschied, dafür dass der Cube hinter sowieso "nur" rumsteht. (ja ich weiss, ohne Geld soll man mit sowas gar nicht erst anfangen, soll hier auch nicht zur Diskussion stehen) Sind die Schieberegister nicht auch ausreichend? Bzw. was spricht gegen die? Was ist hinterher einfacher in der Programmierung?

vajk
23.10.2007, 12:12
nochmal:
1 PWM-Wert mehr ist-nicht-gleich eine "optisch wahrgenommene" Helligkeitsstufe!

Mit wieviel mA dürfen die einzelnen Ausgänge eines Schieberegisters belastet werden? Gesamtbelastung IC? Na?

xaverlg
23.10.2007, 16:04
ich habe beim herumsuchen noch einen interesanten IC von maxim gefunden. Den MAX6972. Es handelt sich um einen RGBLED Treiber mit PWM stufen und 16 ausgängen.

vajk
23.10.2007, 16:12
... ja das ist mir auch "meiner Suche" auch begegnet .. aber die Maxims sind nicht so schnell, wie ich es brauchte :-)

Keksstar
23.10.2007, 16:50
Wo könnte man denn den MBI5031 beziehen? Ich finde im moment nur ausländische Händler. (würde schon ganz gerne in De einkaufen mangels Kreditkarte etc)

vajk
23.10.2007, 17:49
MBIs findest Du bei firstcomponents.de, contakt H. Reimann .. da hatte ich "meine" her.

Keksstar
23.10.2007, 17:52
Weisst du noch wieviel die Dinger da kosten?

vajk
23.10.2007, 18:01
hmmm .. 0,87 Euro bei Abnahme von 200 Stück ;-) .. einfach Anfragen für Deine Menge ....

Besserwessi
30.10.2007, 14:03
So ganz viele Helligkeitsstufen wird man micht unbedingt brauchen. Die normalen VGA-Grafikkarten haben auch nur 256 je Farbe und ältere Notebookdisplays hatten nur 64 Stufen (6 Bit) je Subpixel und auch die waren gar nicht so schlecht. Wenn man will kann man ja immer noch zusätzlich die gesamte Helligkeit steuern, oder notfalls das ganze auf 2 Controller aufteilen und damit mehr Geschwindigkeit und eine feinere Teilung gewinnen.

Bei den speziellen PWM Ics stellt sich immer noch die Frage wie man die dem Umschalten der Eben (oder Spatlten) syncronisiert, oder soll jede LED einen Eigenen PWM Ausgang bekommen.

Keksstar
30.10.2007, 14:21
Eben... durch diese speziellen ICs bin ich auch noch nicht durchgestiegen...
Bei den Schieberegistern weiss ich ja wenigstens was die machen. Und ich würde auch sagen, dass das die einfachere Variante ist - oder?

vajk
30.10.2007, 17:40
"nicht durchgestiege" .. na dann fragt halt :-)
Natürlich für jede LED ein einzelnen Ausgang, drum hab ich auch 3 MBIs für 16 RGB-LEDs genommen ...
.. im Prinzip werden die wie Schieberegister angesprochen .. nur mit dem Unterschied, daß nur bei einer Farbänderung eine neue Kommandosequenz nötig ist .. das ganze geht sehr einfach ... und das mit den Stufen ist wohl auch nicht agenkommen .... wenn ihr den PWM-Wert nur um 1 Schritt ändert entspricht daß fürs Auge nicht unbedingt einem Unterscheid ... da ist eine Abstufung der Werte nötig - siehe meine Tabelle weiter oben.

Besserwessi
31.10.2007, 11:16
Wenn jede LED einen extra Ausgang kriegt braucht man eine Menge PWM Treiber und auch sehr viele Kabel. Für 16 bis vieleicht 64 LEDs mag das noch gehen, aber bei mehr werden allein die Kabel ein Problem.

Es ist mir schon klar das eine etwa quadartische oder logarithmische abstufung besser wäre, aber per PWM wird es halt Linear, obwohl man zur Not auch das ändern könnte. Auch wenn man nicht mehr alle Stufen mit dem Auge unterscheiden kann, sollten 40 Stufen je Farbe schon ausreichen.
Die ersten Amiga Computer hatten z.B. sogar nur 4 Bit Auflösung je Farbkanal und so grob waren die Farbabstufungen auchnicht.

Keksstar
31.10.2007, 14:16
Irgendwie drehen wir uns immer weiter im Kreis... ich denke, dass wir doch bei den Schieberegistern bleiben sollten der Einfachheit halber... oder habt ihr noch DEN Grund auf Lager warum man die Treiber nehmen sollte?

Besserwessi
31.10.2007, 20:26
Wie gut das mit dem Software PWM geht könnte man auch schon an einer einzelnen LED ausprobieren. Den wesentlichen Teil für die Software PWM Erzeugung und das ansteuern der Schieberegister habe ich übrigens schon fertig. Ist eine in Assembler geschrieben Interruptroutine, nur ca. 200 Bytes lang. Müßte man eigentlich auch in ein C Programm einbinden können, habe da aber noch keine Erfahrung. Eine Schwierigkeit sehe ich noch mit dem RAM der Controller: Wenn man die SD/MMC Karte PC kompatibel halten will (d.h. mit FAT), brauchen die Routinen die recht viel Speicher, und für die Ausgabedaten werden auch noch mal 648 Bytes gebraucht. Eventuell müßte man also einen Mega64 nehmen oder die Speicherkarte ohne FAT ansprechen.

Um die Treiber hinter den Schieberegistern auszuwählen müsste man noch wissen welche type LEDs man nimmt. Einfacher wären welche mit gemeinsamer Anode.

xaverlg
31.10.2007, 21:57
Hi

ich kenne mich leider in der Digitaltechnik nicht so gut aus, kann mir jemand erklären wie das mit den Schieberegistern funktioniert? Kann man damit etwa auch PWM signale erzeugen?

Verständniss:
Wenn man nicht nur die Ebenen sondern auch die LED Reihen Multiplext, bräuchte man in dem angefügten 3x3x3 Würfel auch nur 3 PWMs. Will man das ganze in Farbe aufbauen wäre der Turm nur 3 Ebenen höher. 3 PWMs mit je 8bit sollten in einem AtMega doch machbar sein.

Da immer nur eine Ebene zur Zeit aktiviert ist, sind die anderen zwangsweise dunkel. Dadurch wird der gesammt Würfel dunkler. Das find ich doof.
Kann man die Leds der abgeschalteten Ebenen nachleuchten lassen? Klar, muss dann jede Led eine Schaltung bekommen, aber wie groß muss einen Kapazität sein, damit die LED etwa 15ms nachleuchtet? Ich dachte da an einen fliegende SMD schaltung unter der LED.
Und wie macht man das bei großen LED-Videoleinwänden?

viele Fragen, aber ein großartiges Forum. \:D/

xaverlg
01.11.2007, 19:20
hi

Ich habe bei Mikrocontroller.net (http://www.mikrocontroller.net/topic/80808#675789) einen Artikel für die Ansteuerung eines "fetten RGB Display. ohne PWM mit 5 Farbstufen gefunden, leider verstehe ich nicht was er da schreibt. Kann mir das einer erklären? Am besten ein einfaches Bild.

Besserwessi
01.11.2007, 20:28
Ist wirklich etwas verwirrend. Es wird so etwas wie ein unständlicher selbsgebauter DA Wandler beschrieben, der den Strom durch die LEDs steuert. Wie auch in späteren Beiträgen beschrieben ist das viel zu umständlich für viele Kanäle, und anders als angegeben auch wieder linear.

Insgeheim hatte ich an eine ähnliche Möglichkeit gedacht, allerdings nicht mit Stromregelung, sondern mit kontinuierlich ansteigender Versorgungsspannung während die LEDs an ist. Das würde eine Art nichtlineare PWM Steuerung erlauben. Der Aufwand wäre sogar gar nicht mal so groß da nur eine Spannung gesteuert werden muß. Es gibt aber Probleme mit den Verschiedenen Spannungen der verschiedenfarbigen LEDs oder man müßte ziehmlich viel Leistung an den Widerständen verbraten. Wäre also eher was für nur eine LED Farbe.

Ich glaube allerdings immer noch das auch mit linearer Teilung die Steuerung per PWM ausreichen sollte, immerhin war die Helligkeitssteuerung am Anfang eher als Option gedacht.

uwe44k
27.05.2008, 06:40
Hallo Keksstar,
würde mich intressieren ob du (ihr) jetzt schon eine lösung gefunden habt?

Keksstar
27.05.2008, 09:27
Ich sags mal so: Noch nicht weiter verfolgt das Projekt und somit auch keine Lösung gefunden. In letzter Zeit einfach zuuu viel aufm Zettel. (viel zu viel -.-)

Freaky
09.09.2008, 15:49
Hallo, hat sich nun schon etwas ergeben, wie und mit wlechen bauteilen man einen RGB-Led Cube 5x5x5 oder 6x6x6 bauen kann würde mich sehr freuen wenn mir einer die Teile sagen könnte und villeicht noch eine winzige skizze beifügt. DANKE.