Ich möchte ein normales Arduino-Board verwenden, um LEDs zu steuern - was sind die meisten Lichter, die ich einzeln vom Board aus steuern kann?
Gibt es ein Tutorial, wie man es anschliesst?
Ich möchte ein normales Arduino-Board verwenden, um LEDs zu steuern - was sind die meisten Lichter, die ich einzeln vom Board aus steuern kann?
Gibt es ein Tutorial, wie man es anschliesst?
Antworten:
Ich glaube, mit Charlie-plexing N Leitungen steuert N * (N-1) LEDs. Es gibt einen guten Artikel auf Wikipedia.
Ein Freund von mir, Jimmie P. Rodgers, hat 126 LEDs auf einem Arduino-Schild angebracht. Er benutzt Charlie-Plexing, um die LEDs zu steuern. Einige Informationen zu seinem Board finden Sie unter - jimmieprodgers.com/2009/12/my-development-process/ (archive.org copy)
Beim letzten Treffen der Boston Arduino User Group zeichnete Jimmie P. Rodgers ein Charlie-Plexing-Diagramm als Matrix mit beschrifteten Netzen. Auf diese Weise gezeichnete Schemata schienen das Konzept gut zu kommunizieren. Ich habe ein paar ähnliche Schaltpläne erstellt - siehe http://wiblocks.luciani.org/FAQ/faq-charlie-plex.html
jimmieprodgers.com
Link in dieser Antwort ist voller Viren.
Mit den Schieberegistern ( http://en.wikipedia.org/wiki/Shift_register ) können Sie so viele parallele Ausgaben von einem einzelnen seriellen Stream abrufen, wie Sie möchten.
Sie müssen sich mit Ihren Leistungsbeschränkungen befassen. Ich habe selbst noch nie ein Arduino verwendet, gehe aber davon aus, dass es genau wie PICs eine Strombegrenzung hat. Außerdem haben Schieberegister selbst eine Strombegrenzung. Wenn Sie darauf stoßen, müssen Sie einen MOSFET verwenden, mit dem Sie die LEDs steuern können, ohne viel Strom direkt von Ihrem Mikrocontroller abziehen zu müssen.
Jeder AVR-Mikrocontroller-Pin darf bis zu 40 mA liefern, und die gesamte vom Chip bezogene oder versenkte Stromversorgung (dh am Boden und an den Vcc-Pins) muss unter 200 mA liegen.
Charlieplexing ist eine großartige Lösung für Situationen, in denen Sie viele LEDs benötigen, aber nur mit jeweils einer leuchtenden LED auskommen . Eine Standard-Arduino-Karte (wie eine Duemilanove) bietet 17 "freie" E / A-Pins, wobei TX, RX, Reset oder Pin 13 nicht berücksichtigt werden. Sie können also 17 * 16 = 272 LEDs anschließen. Dies kann gut funktionieren, insbesondere wenn eine LED leuchtet oder nur einige wenige gescannt werden. Wenn Sie jedoch versuchen, die gesamte Matrix mit einem Muster zu beleuchten, werden Sie feststellen, dass jede Matrix zu einem bestimmten Zeitpunkt auf (etwas weniger als) 1/272 der Zeit geschaltet ist. Wenn also Ihr Antriebsstrom zu einem bestimmten Zeitpunkt 30 mA betrug, leuchtet jede LED Der durchschnittliche Strom würde ungefähr 0,1 mA betragen - ziemlich schwach.
Wenn Sie nicht so viele LEDs benötigen, sondern stattdessen mehr Helligkeit benötigen, ist herkömmliches Multiplexen möglicherweise die bessere Option. In diesem Fall verwenden Sie einige Ihrer Zeilen als Zeilen und einige als Spalten in einer Matrix. Wenn Sie einen 10-mA-LED-Strom verwenden, können Sie eine Matrix aus 4 Spalten und 13 Zeilen definieren, wobei alle 4 LEDs in einer Zeile gleichzeitig leuchten können, und Sie können die Zeilen durchsuchen. Dann ist jede Zeile 1/13 der Zeit mit einem Strom von 10 mA belegt, sodass der durchschnittliche LED-Strom 0,76 mA betragen kann, ABER Sie erhalten nur 4 * 13 = 104 LEDs. (Auf jeden Fall heller pro LED als mit Charlieplexing.)
Die Grenze im letzten Beispiel liegt bei 40 mA pro Pin am AVR -, da jeder Pin für die Zeilenansteuerung 4x10 = 40 mA liefert. Wenn Sie zulassen, dass externe Transistoren (die billig und klein sein können) zu den Zeilenausgängen hinzugefügt werden, können Sie diese bestimmte Grenze umgehen und heller werden. Sie können beispielsweise ein 8x9-Array mit 8 Zeilen und 9 Spalten und insgesamt 72 LEDs erstellen. Eine der 8 Zeilen ist gleichzeitig eingeschaltet und wird über den Transistor ausgewählt. Es können bis zu 9 LEDs in einer bestimmten Reihe gleichzeitig eingeschaltet sein und mit 20 mA betrieben werden, sodass 180 mA vom Transistor kommen und Sie unter den Stromgrenzwerten des AVR bleiben. Der durchschnittliche Strom pro LED beträgt jetzt 20 mA / 8 = 2,5 mA - normalerweise recht hell.
Es gibt hier ein sehr schönes, detailliertes Tutorial , das einen Abschnitt über die Verwendung eines Arduino zum Ausführen eines 8x8x8-LED-Würfels enthält. (Verpassen Sie nicht den YouTube-Film, den sie haben)
Mit 17 I / O-Pins und 17 NPN-Transistoren (Emitterfolger zur Stromverstärkung) sollte es kein besonderes Problem geben, 272 LEDs in willkürlichen Kombinationen bei einem Tastverhältnis von 1/17 und einem Durchschnittsstrom von 0,7 mA (200 mA / 272) anzuzeigen, der durch begrenzt ist Die Fähigkeit des Chips, jeweils 200 mA abzusenken. Wenn Sie eine Diode hinzufügen, um einen Spannungsabfall von 0,7 Volt zu erzielen, können Sie weitere 17 LEDs hinzufügen (Tastverhältnis auf 1/18 reduzieren), obwohl die Helligkeit nicht ganz mit den anderen übereinstimmt.
Während Windell Oskay argumentiert, dass ohne zusätzliche Transistoren maximal 104 LEDs möglich sind, hat Tom Igoe Fotos einer Matrix von 128 LEDs veröffentlicht, die direkt von einem einzelnen Arduino Mega gesteuert werden - ohne zusätzliche Transistoren, diskret oder integriert.
Betrügt Tom Igoe kurzzeitig, indem er den im Datenblatt angegebenen "absoluten Maximalstrom pro Pin" überschreitet?