Wortuhr mit Arduino Uno?

Hallo,

ich möchte die Wortuhr nachbauen, welche 11x11+4 led hat, also 125.
Multiplexing möchte ich nicht verwenden (hat mehrere Gründe).
Soll ich eher einen Arduino nehmen mit diesem (40-Bit-I/O-Expander) Portexpander oder anstatt dem Arduino einen Mikrikontroller?

Und die Gründe wären, kein Multiplexing zu nutzen?? Ich denke das Problem besteht hier, dass keinerlei Basics vorhanden sind. Arduino, bzw. der Atmega328P wie im Uno ist ein Mikrocontroller und in der AVR Familie schon ein relativ mächtiger. Was ist mit WS2812B Leds?

Auch ich würde WS2812 nehmen. Die sind einfach anzusteuern und man kann Farbspiele machen, brauchen aber ordentlich Strom. Bei 126 LEDs sind das 7,5A.
Grüße Uwe

Hi Kai,
darf ich dich an diese Thread verweisen. Da haben wir schon mal einige Möglichkeiten durchgesprochen.
>KLICK<
Ich baue mir auch gerade noch eine weitere Uhr.
Die erst habe ich mit zwei Multiplex Matrixen gemacht mir Hilfe des MAX7221. Die Uhr die ich jetzt baue ist mit den WS2812B aus dem andren Thread. Die Holzplatte baut ein anderer Kumpel mit dem ich die Uhr zusammenbaue insgesamt bauen wir drei Uhren. Die Frontplatte habe ich mit bei ein Sammelbestelllug von Mikrocontroller de mitbestellt.
Meine Uhr hat eine 11*10er Matrix mit 114 LEDs
Code ist fast fertig fehlt nur noch der Encoder fürs Stellen dort war vorher eine One Button Routine drin
Gruß
DerDani

Noch Bilder aufgrund der Begrenzung.

Zur Hardware
-114 ES2812B LED auf Platine
-RTC DS3231
-Arduino Pro Micro

Gruß
DerDani

Diese Bilder sind von der ersten Uhr.

Wenn ich jetzt den Arduino Pro Micro verwende, wie viel mA darf dann über einen I²C Portexpander angeschlossen werden? Gehen wir von diesem (40-Bit-I/O-Expander) aus. Bei rund 120 LED mit jeweils ~ 20-25mA hätten wir dann insgesamt fast 3 Ampere. Kann ich irgendwie zusätzlichen Strom einspeisen, oder schafft der Arduino das?

Der Arduino schafft das nicht einmal ansatzweise! Pi*Daumen aller höchstens 500mA

Was mach ich dann, um genügend Leistung aufzubringen?

Du brauchst eine geeignetes 5V Netzteil das die LED, den LED-Treiber und den Arduino versorgt.
Wenn Du weißt daß Du sicher immer nur max 30 LED einschaltest, kannst Du das Netzteil auch nur für diese bemessen.
Der I2C Bus ist nicht für die Spannungsversorgung gedacht.

Grüße Uwe

Gibt es denn einen Portexpander mit einer eigenen Spannungsversorgung?

ComanderKai77:
Gibt es denn einen Portexpander mit einer eigenen Spannungsversorgung?

Alle Portexpander haben eine eigene Spannungsversorgung - ohne funktioniert Halbleitertechnik nicht. :wink:
Es geht hier aber um die Strombelastbarkeit der einzelnen Kanäle, weshalb bereits Treiberstufen erwähnt wurden. Vorgeschlagen werden desöfteren fertige Treiber im DIL-Gehäuse wie z.B. der ULN2803, je nach Vorrat tun es auch separate bipolare Transistoren oder Mosfets.

Du nimmst ein 5V Netzteil und gehst damit auf den 5V Pin des Arduinos.

Alternativ könnte man zwei Netzteile nehmen (eines für den Arduino und vielleicht die Port-Expander und eines für die LEDs) und dann die Massen verbinden. Das bringt in diesem Fall aber nichts.

Bei dem Port-Expander musst du mal ins Datenblatt schauen was insgesamt an Strom kann:
http://www.nxp.com/documents/data_sheet/PCA9505_9506.pdf

the outputs arecapable of sourcing 10 mA and sinking 15 mA with a total package load of 600 mA to allow direct driving of 40 LEDs.

Jeder einzelne Pin macht max. 15mA. Ingesamt 600mA. Das geht also mit 40 LEDs direkt. Extra Treiber wären bei diesem IC also nicht nötig.
Das hier macht mehr:
http://www.nxp.com/documents/data_sheet/PCA9698.pdf
25mA und 1A insgesamt.

Wenn du dich bei solchen einfachen Grundlagen nicht auskennst, kannst du das Ding überhaupt einbauen und programmieren? Das ist ein SMD IC mit sehr vielen Pins. Nicht einfach zu handhaben

Schon interessant diese ICs, kannte ich bisher noch nicht. Sind aber nicht steckbrettkompatibel durch das TSSOP56-Gehäuse und von Einsteigern auch schlecht lötbar.
Und da kommen vielleicht die leicht zu verarbeitenden WS2812 wieder ins Spiel... :wink:

Ich verstehe auch nicht, warum er den Vorschlag von volvodani nicht annimmt.
Die WS2812 Matrix auf den kleinen Platinchen ist viel weniger Aufwand als mit dem Portexpander zu arbeiten.

Die WS2812 sind wie ein Schieberegister zu sehen, und kein Multiplexing - also das was er sucht.

Die Frage warum er kein Multiplexing will ging unter.
Die Nachteile die ich mir vorstellen kann sind. z.b weniger Helligkeit und Video Aufnahmen von den Led's schauen auch oft nicht so gut aus.

rudirabbit:
Ich verstehe auch nicht, warum er den Vorschlag von volvodani nicht annimmt.
Die WS2812 Matrix auf den kleinen Platinchen ist viel weniger Aufwand als mit dem Portexpander zu arbeiten.

Die WS2812 sind wie ein Schieberegister zu sehen, und kein Multiplexing - also das was er sucht.

Die Frage warum er kein Multiplexing will ging unter.
Die Nachteile die ich mir vorstellen kann sind. z.b weniger Helligkeit und Video Aufnahmen von den Led's schauen auch oft nicht so gut aus.

Man kann statt WS2812 auf einzelnen Platienchen wie volvodani genommen hat eine LED-Streifen nehmen und die Buchstaben auf der Word Uhr im richtigen Abstand machen.

Grüße Uwe

Um nochmal einen Aspekt für die WS2812 Stripes einzuwerfen:

Die aktuelle FastLED-Lib bietet eine Methode um den Strom zu begrenzen (Die Lib rechnet aus welchen Strom die LEDs ziehen würden wenn man sie wie gewünscht leuchten lassen würde und rechnet dann bei Überschreitung die Gesamthelligkeit vor der Ansteuerung runter). Damit wird
sichergestellt, dass ein LED-Stripe nicht mehr als die eingestellte Leistung verbraucht.
Die Methode heisst: set_max_power_in_milliwatts

Gruß
Jarny

Damit wird
sichergestellt, dass ein LED-Stripe nicht mehr als die eingestellte Leistung verbraucht.
Die Methode heisst: set_max_power_in_milliwatts

Habe ich noch nicht gesehen, sehr geil ! Karma++

Hallo Jarny,

die Libary mag zwar den eventuell auftretenen Strom berechnen können (sehe ich gerade aber weniger als nützlich), denoch kann das ganze zu Problemen führen. Jeder der mal den WS2812B nur an VCC und GND hat, weiß´wie gern sich die Leds von alleine einschalten :wink:

Da würde ich dann immer noch eine Polyfuse oder Feinsicherung mit einplanen, wenn das Netzteil unterdimensioniert wird, was nicht umbedingt zu raten ist.

Der Hintergrund, warum Multiplexing nicht genutzt werden soll, ist mir aber nach wie vor schleierhaft. Wenn es darum geht, die CPU zu entlasten. Für sowas gibt es spezielle Matrix/7Segment ICs. Hier würden bereits 2 MAX7219/21 vollkommen ausreichen. Die Teile können über SPI angesteuert werden. (21er Variante mit richtigem SPI, die 19 Variante mit einer sehr nah an SPI gehaltenen Ansteuerung (soweit ich es in Erinnerung habe, ist lediglich CS invertiert). Die ICs gibt es als DIP oder SMD Variante. Vorwiderstände erspart man sich, da alles über "Steuerwiderstand" am IC geregelt wird. Helligkeit kann in 16 Stufen angepasst werden. Das Muser muss nur einmal übertragen werden. Erst bei einer Änderung müssen die beiden ICs neu beschrieben werden und mit bis 10MHz sind die ICs deutlich schneller als die PortExpander im FastMode.

Es scheint mir mittlerweile einzuleuchten, dass meine Ursprungsidee ein wenig "merkwürdig" war. Ich hätte nicht gedacht, dass es die LED Strips so günstig gibt (http://de.aliexpress.com/item/5M-30Pixel-M-150-5050-RGB-SMD-WS2811-IC-Built-in-WS2812B-WS2812-white-PCB-Addressable/1998180289.html) dementsprechend werde ich jetzt solche nehmen und die dann zerschneiden. Als Steuereinheit den Arduino micro pro.

Um noch mal auf das Multiplexing einzugehen: Ich fand aus vom Aufbau relativ schwierig, da man viele Fehlerquellen einbauen kann; Beim Portexpander dagegen muss man einfach die LED (ggf. mit Widerstand) anschließen.

An dieser Stelle möchte ich mich für Eure Hilfe(n) bedanken.

LG

Kai

Bei Portexpander braucht mein meist für Jede Led einen extra Widerstand. Ausnahmen gibt es aber, zB die TLC5916 von TI. Aber das wird dann alles teurer als mit den WS2812B Leds :wink: