Hallo Virtulex,

der Zeilenstrom ist so hoch, weil ja immer nur eine Zeile an ist. Das bedeutet 16 LEDs * 20mA = 320mA. Jetzt kommt aber noch dazu, dass die 16 Zeilen sich die Zeit teilen müssen. Um also die gleiche Helligkeit wie bei Dauerbetrieb der LEDs zu erreichen muss man den Strom der LED mit 16 Mulitplizieren und auch die Vorwiderstände entsprechend auslegen. 16 * 320mA = 5,12A! Bei mir waren die Vorwiderstände glaube ich 2,2 Ohm @ 5V. Es kommt aber auch auf deine verwendeten LEDs an. Die Daten zu meinen müsste ich bei Interesse rauskramen, wenn ich sie überhaupt noch finde.

Zu beachten ist beim Spaltentreiber, dass er den 16-fachen Strom auch liefern kann (320mA pro Spalte) Der von mir vorgeschlagene kann das. Die Zeilentreiber müssen dann entsprechend auch dimensioniert werden. Bei 5A kommen da eigentlich nur FETs in Frage. Damit sparst du dir auch den Vorwiderstand am Gate. Der müsste eh Richtung 10 Ohm sein, damit man die Ladung des Gates schnell genug umladen werden kann. Dann kann man ihn auch gleich ganz weglassen.

(100 Hz * 10 Stufen PWM * 16 Zeilen = 16kHz)

Zum Watchdog und der Sicherheit: Wenn dir die Software abstürzt oder ein anderer (logischer) Fehler vorliegt bleibt durch die Latches der Schieberegister eine LED dauerhaft an (320mA anstatt 20mA). Das macht sie nur ganz kurz mit und dann rauchts an der Stelle. Wenn du Pech hast eine ganze Zeile.

Ein Watchdog "resettet" den Controller automatisch, wenn er nicht regelmäßig in der Software zurück gesetzt wird. Damit kann man also einen Absturz erkennen und somit größere Gefahr für die LEDs vermeiden, indem man direkt beim Start des Programms (also nach dem Reset) erst mal alles abschaltet. Das zurücksetzen des Watchdog muss demnach an eine passende Stelle gesetzt werden. Ich empfehle für mehr Informationen die Datenblätter der AVR-Controller.

Ein Watchdog schützt dich aber nicht vor logischen Fehlern. Beim Prototyp ist es also empfehlenswert die Vorwiderstände der LEDs steckbar zu machen und erst mal so zu bestücken, dass eine LED maximal 20mA erhält. Das wird zwar nur schwach glimmen, spart aber eine Menge Arbeit und Frust. Wenn dann die Software stabil läuft kann man die Widerstände auf den tatsächlichen Strom umbauen.

Viele Grüße
Andreas