Ich habe einen Mikrocontroller mit einem verfügbaren digitalen Pin.
Wie kann ich 25 LEDs steuern?
Ich habe einen Mikrocontroller mit einem verfügbaren digitalen Pin.
Wie kann ich 25 LEDs steuern?
Antworten:
I2C IO Expander : - Ein gewisser Protokoll-Overhead, der jedoch auf eine sehr große (Tausende) Anzahl von LEDs erweiterbar sein sollte.
Einfaches Schieberegister - Dead Simple Schnittstelle, die LEDs können beim Aktualisieren flackern, wenn der Schieberegistertakt nicht ziemlich schnell ist. Die Verwendung eines doppelt gepufferten Schieberegisters behebt dies.
Schieberegister und I2C sind gut, aber nur, wenn mindestens 2 Pins frei sind. Ich schlage vor, dass der Dallas 1-Wire Port Extender DS2408 eine optimale Lösung ist. Der Code für den 1-Draht-Gerätezugriff in Dallas ist nicht so kompliziert und es gibt viele Beispiele im Internet.
Sie können mehrere DS2408 verwenden, die an einen Pin angeschlossen sind, oder nach einem einzelnen DS2408 mehr Logik implementieren, je nachdem, was Sie möchten.
Mit nur 1 E / A-Pin können Sie ein 1-Draht-Expander / Schieberegister verwenden oder Ihrem I2C-Bus ein anderes Gerät hinzufügen, wie bereits erwähnt. Das einzige, was noch nicht erwähnt wurde, ist die Möglichkeit, Ihrem SPI-Port einen weiteren Slave hinzuzufügen.
SPI wird als 4-Draht-Protokoll bezeichnet. Sie haben zwei Datenleitungen, eine Taktleitung und eine Auswahlleitung (sowie eine gemeinsame Masse, aber das zählt normalerweise nicht). Die ersten drei werden jedoch von allen Geräten am Bus gemeinsam genutzt, sodass jedes Gerät nach dem ersten nur noch eine Spur / Leitung benötigt. SPI erhöht Ihren Bus auch auf Vollduplex, aber das spielt für diese Anwendung keine Rolle.
Wenn Sie wirklich nur 1 Pin zur Verfügung haben, scheint der Dallas 1-Draht-Bus das offensichtlichste zu sein. Da dies jedoch nur eine Ausgabe ist, gibt es billigere Lösungen. Ein serieller PWM-Bus, der sowohl Daten als auch Takt überträgt, ist einfach einzurichten. siehe zum Beispiel die Seite von Roman Black, wie sie auch von Davidcary erwähnt wird. Sie benötigen nur Serial-In-Parallel-Out-Schieberegister wie den 74VHC164 , die Sie für beliebig viele Ausgänge kaskadieren können (einer '164 hat 8 Ausgänge).
In dieser Lösung werden LEDs statisch angesteuert.
Wenn Sie über andere E / A verfügen, die Sie gemeinsam nutzen können, wie z. B. SPI von I2C, können Sie sich für luxuriösere Lösungen wie Maxim's MAX6950 entscheiden . Der MAX6950 verfügt über eine Blink- und Helligkeitssteuerung sowie eine Begrenzung der Anstiegsgeschwindigkeit, um nur einige Funktionen zu nennen. LEDs werden gemultiplext, dh Sie benötigen nur einen 16-poligen Treiber.
Die Antwort lautet wahrscheinlich "eine Reihe von Schieberegistern", aber können Sie Ihre Frage genauer formulieren? Welcher Mikrocontroller? Was meinst du mit "digitaler Port"? Ein einzelner Stift?
25 LEDs können je nach Größe viel Strom für einen einzelnen digitalen E / A-Pin eines Mikrocontrollers verbrauchen. Anstatt sie direkt anzusteuern, sollten Sie wahrscheinlich einen einfachen FET-Schalter verwenden (damit die E / A an das Gate gebunden ist), um die Stromversorgung der LED-Kette zu steuern.
Abhängig von Ihrer Anwendung gibt es andere robustere Möglichkeiten, um dies zu erreichen. Aber wenn Sie einen Fet hineinwerfen, werden Sie wahrscheinlich am schnellsten arbeiten.
Wenn Sie beispielsweise ein variables Signal steuern möchten, gibt es kompliziertere Geräte, manchmal auch als digitale Relais bezeichnet, mit denen Sie es digital schalten können.
Zur individuellen Steuerung von 25 LEDs mit einem einzigen IO-Port. Wie andere vorgeschlagen haben, können Sie einige Schieberegister verwenden. Es gibt kompliziertere Lösungen, bei denen mit einem anderen IC über ein serielles Protokoll (z. B. I2C) kommuniziert wird.
Roman Black beschreibt das shift1-System , mit dem Sie eine beliebige Anzahl von LEDs unabhängig von einem einzelnen Mikrocontroller-Pin steuern können.
@Fake Name, @Tim, @pingswept schlagen alle vor, einige Schieberegister miteinander zu verketten, wobei der DO-Datenausgangspin auf einem den DI-Dateneingangspin auf dem nächsten speist. Der 74HC595 würde gut funktionieren. (Vielleicht würde ein anderer Chip etwas besser funktionieren ).
(@reemrevnivek, bei dieser Art von verkettetem SPI benötigt jedes Gerät nach dem ersten keine weiteren Pins am Mikrocontroller, entgegen der Behauptung vieler Leute - warum hörst du sie dir an? :-).
Normalerweise erfordert dies 4 Pins am Mikrocontroller - MISO, MOSI, SCLK und Latch. Da Sie nur ausgeben, benötigen Sie keinen MISO-Eingangspin.
Roman Black hat herausgefunden, dass ein einzelner Mikrocontroller-Pin mit einem sehr sorgfältigen Timing an einem einzelnen Mikrocontroller-Ausgang und einer sorgfältigen Optimierung einer analogen Schaltung eine einfach aussehende analoge Schaltung ansteuern kann, die den gemeinsamen SCLK, den DI, trennt Pin des ersten Chips in der Kette (MOSI) und das gemeinsame Latch-Signal.
Dann kann dieser Mikrocontroller 25 LEDs von einem einzigen Pin aus steuern.