Forum: Mikrocontroller und Digitale Elektronik Welcher Mikrocontroller für 25 RGB-LEDs und 30 Taster


von Marct (Gast)


Lesenswert?

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

von m.n. (Gast)


Lesenswert?

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.

von Karl (Gast)


Lesenswert?

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

von jz23 (Gast)


Lesenswert?

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).

von Jim Beam (Gast)


Lesenswert?

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...

von Apollo M. (Firma: @home) (majortom)


Lesenswert?

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!

von m.n. (Gast)


Lesenswert?

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.

von Michael B. (laberkopp)


Lesenswert?

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.

von Jim Beam (Gast)


Lesenswert?

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.

von Dominik (Gast)


Lesenswert?

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

von Mani W. (e-doc)


Lesenswert?

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?

von Jim Beam (Gast)


Lesenswert?

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...

von Dominik (Gast)


Lesenswert?

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

von Dominik (Gast)


Lesenswert?

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