Serielle Steuerung von 25 LEDs über einen einzigen Pin


8

Ich habe einen Mikrocontroller mit einem verfügbaren digitalen Pin.

Wie kann ich 25 LEDs steuern?


2
Sind die LEDs separat adressierbar oder möchten Sie sie alle gleichzeitig ein- und ausschalten?
Vincent Van Den Berghe

Die LEDs sollen separat zugänglich sein. Der Mikrocontroller soll sie nicht mit Strom versorgen, sondern lediglich ihren Zustand bestimmen. Mit "digitaler Port" meine ich auch Pin.
Archgoon

Antworten:


11

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.


Danke, genau das habe ich gesucht, aber ich wusste nicht, wie sie heißen.
Archgoon

2
Dafür ist mindestens ein Stift erforderlich. Benötigen Schieberegister nicht mindestens zwei Pins für Takt und Daten?
Blalor

@blalor - Ja, aber diese beiden Pins können von mehreren I2C-Geräten gemeinsam genutzt werden.
Kevin Vermeer

I2C besteht ebenfalls aus zwei Zeilen.
XTL

2
Dallas 1-Draht benötigt nur einen Pin, erweitert sich auf N Geräte.
Tim Williscroft

16

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.


2
I2C kann verwendet werden, wenn keine Pins frei sind, vorausgesetzt, Ihr I2C-Bus wird als solcher verwendet und es liegen keine Adresskonflikte vor.
Kevin Vermeer

5

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.


1

Ich würde nur ein paar Schieberegister miteinander verketten. (Dies reduziert natürlich die Frequenz, mit der Sie die LEDs umschalten können.)


1

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.


0

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?


Danke, ich habe die Klarstellung gemacht und die Schieberegister sind das, wonach ich suche. Vielen Dank.
Archgoon

0

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.


0

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.


0

Sie können einen anderen Mikrocontroller über diesen einzelnen Pin anschließen und über 1wire (oder Ihr eigenes Protokoll, wenn Sie hohe Geschwindigkeit benötigen) mit ihm sprechen. Dann befasst sich dieser andere Mikrocontroller mit LEDs.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.