Hallo Elektronikfreunde, ich möchte eine RGB-LED-Matrix (5x5) bauen. Jede dieser LEDs soll mit einem eigenen Taster angesteuert werden, und zusätzlich soll es noch (ca. 5) Taster zur Farbauswahl geben. Nun hab ich schon einen ersten Prototypen gebaut, aber nur in der Größe 3x3 und nur mit normalen LEDs. Zur Steuerung habe ich einen nachgebauten Arduino Nano (Atmega328) benutzt. Dieser hat aber nur maximal 13 digitale In-/Outputs und 8 analaoge In-/Outputs. Zusätzlich braucht man für die RGB-Leds ja jeweils drei Ansteuerungs-PINs. Das heißt ich bräuchte 3x25=75 Pins zur Ansteuerung der LEDs plus die der Taster (30). Insgesamt dann also 105. Hier nun meine Frage: Was ist denn die beste Weise das beschriebene Projekt umzusetzen. Man gehe davon aus, dass es in Kleinserie produziert werden soll (20-100 Stück). Ist ein Mikrocontroller überhaupt das richtige Mittel, oder sollte es anderweitig verschaltet werden? Gibt es Mikrocontroller mit dieser Anzahl von IO-Pins? Ab welcher Stückzahl rentiert sich der Einsatz von FPGAs? Hoffe mein Problem ist ein wenig verständlicher geworden, habe bisher eigentlich nur Erfahrung mit Arduino-Boards. Vielen Dank und schöne Grüße, Marct
Eine Ansteuerung von 64 Kanälen findest Du hier: http://mino-elektronik.de/AVR_PWM_64/AVR_PWM_64.htm Auf 75 Kanäle zu erweitern sollte auch möglich sein. Das Einlesen der Taster übernehmen ebenfalls Schieberegister. Mein Favorit ist der CD4021, von denen vier Stück benötigt werden. Wenn es eine kleinere Stückzahl werden soll, und Du selber nicht programmieren möchtest, gib Bescheid.
5 x 5 RGB und einen Haufen Taster? - 25 x WS2812(b) o. ä. -> 1 Pin - 30 x Tasten in einer Matrix anordnen -> 6 Pins - 1 x Controller ab ATTiny24
Marct schrieb: > Ab welcher Stückzahl rentiert sich der Einsatz von FPGAs? Ab gar keiner, dein Problem rechtfertigt weder die Geschwindigkeit noch die Flexibilität eines FPGAs. Zur eigentlichen Frage: WS2812 wurde schon genannt, ansonsten kann man nicht nur die Taster sondern auch die LEDs multiplexen. Bei 25 sollte das eigentlich ganz gut noch funktionieren, wenn man für jede Farbe jeweils 5+5 Leitungen nimmt. Ein ATMEGA 128-16 AU hat 52 IOs, der würde vermutlich reichen (Von den IOs her, von der Rechenleistung sowieso).
In Zeiten VOR WS28nn-Leds habe ich 32 RGB-Leds über 4094er Schieberegister und HSB->RGB Wandlung mit einem ATMEGA8 @16Mhz flimmerfrei gesteuert. Incl. soft-color-change im Interupt. Allerdings alles stringent in Assembler. Heute mit WS28nn ist sowas eine Lachpille, meine ASM-Routinen kriegen das Timing für beliebig viele WS28nn inzwischen auch @8Mhz internem RC-Clock hin, geht also auch bei ATTINY, nur hat man da halt nicht genug RAM um die RGB-Werte zu verwalten. FPGA oder MainFrames dafür anzudenken ist (heute) albern, in meine Nachtgebete schliesse ich immer die RGB-LED-CUBE-Leute ein, die "zu früh=vor WS28nn" hunderte Leitungen verwaltet haben, inzwischen geht das mit EINEM Portbit @paar Mhz Clock...
Karl schrieb: > 5 x 5 RGB und einen Haufen Taster? > > - 25 x WS2812(b) o. ä. -> 1 Pin > - 30 x Tasten in einer Matrix anordnen -> 6 Pins > - 1 x Controller ab ATTiny24 Korrekt, aber 30 Tasten und 6 Pins? Könnte ich auch mit 1 oder halt 2/3 Pins über analoge R-Messung machen. Also mach doch mit Nano Atmega328B einfach weiter! mt p.s Die Nano analog Inputs sind bis auf zwei auch digital Inputs, wenn entsprechend im Setup vorher initialisiert wurde!
Jim Beam schrieb: > Heute mit WS28nn ist sowas eine Lachpille, Insbesondere, wenn ein Feld der 5 x 5 Matrix 20 x 20 cm² groß ist.
Marct schrieb: > Was ist denn die beste Weise das beschriebene Projekt umzusetzen. Man > gehe davon aus, dass es in Kleinserie produziert werden soll (20-100 > Stück). Ist ein Mikrocontroller überhaupt das richtige Mittel, doch, schon. > oder sollte es anderweitig verschaltet werden? Kaum möglich. > Gibt es Mikrocontroller mit dieser Anzahl von IO-Pins? Wozu ? Für 30 Taster braucht man 9 Anschlüsse (etwas übersichtlicher 11), für 25 RGB LEDs wie WS2812 1 Anschluss, es tut also jeder noch so kleine uC, dein Arduino problemlos und er ist schnell genug. > Ab welcher Stückzahl rentiert sich der Einsatz von FPGAs? Gar nicht. Die brauchst du, um deinen Internetverkehr in Echtzeit mitzuschneiden und die verschlüsselten ZIPs zu entpacken und auf Stichworte wie "Terror" zu untersuchen, und das für alle 100000 Teilnehmer der Glasfaser gleichzeitig.
Stimmt genau: 20x20 oder auch 80x80, geht immer. Bei WS28nn Kaskaden/Strips lassen sich nämlich auch wunderbar Abzweigungen bzw. parallel-Strecken bauen, wenn die DATA-Lines geschickt kombiniert sind. Wenn "mitten-im-Strip" ein Dout auf 1+n weitere Din verzweigt, ist aber ein Data-Vorwiderstand ~100R an jeden SUB-Strip sinnvoll. Partielle Vergrösserungen der Lichtfelder (=mehr Leds gleicher Farbe) sind so simpel machbar OHNE JEDE Änderung der Software bzw. des Daten-Durchsatzes.
Jim Beam schrieb: > Heute mit WS28nn ist sowas eine Lachpille, meine ASM-Routinen kriegen > das Timing für beliebig viele WS28nn inzwischen auch @8Mhz internem > RC-Clock hin, geht also auch bei ATTINY, nur hat man da halt nicht genug > RAM um die RGB-Werte zu verwalten. Das mit dem Ram würde ich nicht pauschal unterschreiben, ich generiere die Daten bei 16Mhz auf einem ATTiny45 parallel (8Mhz oder weniger würden auch gehen) zur Ausgabe, man muss sich nur von der Vorstellung lösen, dass die TH+TL so kurz ist, wie man im Datenblatt annehmen möchte, dies gilt so praktisch nur für die TH! (bei allen von mir getesteten LED´s, zuletzt SK6812, gleichermaßen) Sofern die Mustererzeugung im Attiny45 Platz findet kann die Kette theoretisch unendlich lang sein, wenngleich die Definition der Ende-Bedingung dann schwierig wird und der Refresh dann natürlich ebenso lange dauert ;-) Gruß Dominik
Marct schrieb: > ich möchte eine RGB-LED-Matrix (5x5) bauen. Jede dieser LEDs soll mit > einem eigenen Taster angesteuert werden, und zusätzlich soll es noch > (ca. 5) Taster zur Farbauswahl geben. Warum für jede Led in einer Matrix einen eigenen Taster? Wozu?
Dominik schrieb: > ich generiere die Daten bei 16Mhz auf einem ATTiny45 parallel (8Mhz oder > weniger würden auch gehen) zur Ausgabe... DAS ist natürlich eine Nummer geiler, als ich es bisher gemacht habe! Welche Stelle im Timing-Ablauf ist denn nach Deinen Erfahrungen am unkritischsten, um noch ein paar Aktionen einzufügen? SK6812 sind doch die mit zusätzlichem Weiss, oder? Da will ich demnächst mal ran, hast Du da irgendwas erforscht, was man wissen sollte? Ich habe übrigens in WS28nn-Ketten auch schon erfolgreich Power-Leds und Glühlampen eingebunden, weil es gibt ja die WS2811 auch als SOIC-Chip, statt der LED dann Lastwiderstände genommen und am Abgriff FETs zur Ansteuerung der Heavy-Loads. Man muss dann die Daten halt als 255-n senden. Auch interessant: Die WS2811-Chips gehen auch wunderbar als Servo-Controller...
Jim Beam schrieb: > Dominik schrieb: > ich generiere die Daten bei 16Mhz auf einem ATTiny45 parallel (8Mhz oder weniger würden auch gehen) zur Ausgabe... > DAS ist natürlich eine Nummer geiler, als ich es bisher gemacht habe! > Welche Stelle im Timing-Ablauf ist denn nach Deinen Erfahrungen am > unkritischsten, um noch ein paar Aktionen einzufügen? > > SK6812 sind doch die mit zusätzlichem Weiss, oder? > Da will ich demnächst mal ran, hast Du da irgendwas erforscht, was man > wissen sollte? Hallo, erforscht eher im Sinne von im Internet geforscht, die Lorbeeren gehen an jemand anderen, hab den Link aber gerade nicht parat. Wollte damals einen i2c to led Adapter bauen und nun ja es geht auch ohne Unmengen an RAM zu belegen ;-) Im Prinzip sind die beiden High-Pegel als einziges kritisch (bei einer LED sogar nur der kürzere von beiden). Die längstmögliche Pause zwischen den 32 oder 24bit Paketen ist meist mit 50us angeben, das stimmt allerdings nicht, meist warten die Chips nur 5us. Was da allerdings auch nicht zu sehen ist, diese Pause kann auch zwischen den Bits eingelegt werden kann, und 5us zwischen zwei Bits sind ne Ewigkeit. Also muss man nur den Fluss aufrechterhalten und darf keine Pausen im Datenstrom von>5us generieren. Hat der uC sonst noch viel Auslastung bietet sich hierzu ein kleiner Ringpuffer im Speicher an, der bei mir z.B. aber meist nur 16 oder 32 werte umfasst, egal wie lang die Kette ist. Bei Interesse an unkommentiertem qnd-Code kann ich mal ein Beispiel Posten. Ja, „rgb“w mit 32bit Paketen Gruß Dominik
Dominik schrieb: > Bei Interesse an unkommentiertem qnd-Code kann ich mal ein Beispiel > Posten. Um den Thread nicht mit NEO-Pixeln vollzumüllen hab ich das mal hier geparkt: Beitrag "[AVR-GCC] Gelassen läufts (Man braucht nicht für jedes Neo-Pixel 3 oder 4 byte Ram)" Gruß Dominik
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.