Wie treibe ich einen analogen CD4051-Mux mit Tasten als Kanalwähler?

Ich möchte einen analogen Multiplexer cd4051 als 8-1-Schalter mit Tasten steuern, die als Kanalwähler (1-8) fungieren. Ich weiß, wie man es mit Arduino macht, aber gibt es eine andere Möglichkeit, den Zustand von 8 Tasten zu lesen und ein 3-Bit-Wort als separate digitale Signale bereitstellen?

Ein CPLD wäre eine Möglichkeit, dies zu tun.

Antworten (4)

Wenn Sie dies mit Momentschaltern tun möchten, können Sie dies mit ein paar IC-Paketen (Flip-Flops oder kreuzgekoppelten Gates) tun, um einen 3-Bit-SR-Latch zu haben, und dann die Latches mit Dioden oder Gates ein- und ausschalten so dass das Drücken eines beliebigen Schalters den 3-Bit-Ausgang in den gewünschten Zustand zwingt.

Sie würden insgesamt 6 Widerstände und 3 Dioden pro Schalter für insgesamt 24 Dioden benötigen, oder Sie könnten 6 kreuzgekoppelte NAND-Gatter mit 8 Eingängen und 8 Widerstände (und keine Dioden) verwenden.

Z.B. (ca. 1/3 der Schaltung teilweise dargestellt)

schematisch

Simulieren Sie diese Schaltung – Mit CircuitLab erstellter Schaltplan

Einfachste Lösung - Verwenden Sie einen SPDT-Schalter an jedem der ausgewählten Eingänge (A, B, C). Dadurch können Sie den Kanal manuell auswählen, aber Sie müssen die Auswahl mit einer Kombination der 3 Schalter und nicht mit einer Taste pro Kanal vornehmen.

Schwierigere Lösung - Fügen Sie einen 8-zu-3-Prioritäts-Encoder wie SN74HC148 hinzu . Wenn Sie 8 SPDT-Schalter als Eingänge verwenden, sollte es tun, was Sie wollen, solange Sie nur einen nach dem anderen einschalten. Es ist jedoch etwas umständlicher als nur einen Knopf zu drücken, da Sie den gewünschten Schalter einschalten und den nicht gewünschten ausschalten müssen.

Schwierigste Lösung - Fügen Sie jedem Eingang ein Flip-Flop hinzu. Mit dieser Speicherzelle können Sie mit einem sofortigen Tastendruck eines der 8 Flip-Flops "einstellen". Sie könnten einen 74HC574 verwenden . Wenn die 8 Eingänge normalerweise niedrig sind und das Drücken der Taste den Eingang hoch bringt, brauchen Sie nur ein "Takt" -Signal, das die 8 Tastenzustände einrastet. Nehmen wir also an, Sie verwenden ein 8-Wege-ODER-Gatter zwischen den 8 Tasten die Uhr generieren? Dann erhalten Sie jedes Mal, wenn eine beliebige Taste gedrückt wird, eine steigende Taktflanke, die den neuen Tastenzustand einrastet. Wenn die Ausbreitungsverzögerung Ihres ODER-Gatters länger als die Einrichtungszeit für das Flip-Flop ist, sollte das Timing in Ordnung sein. Möglicherweise stoßen Sie auf Probleme mit dem Prellen des Schalters und benötigen eine analoge Entprellschaltung für jede Taste, aber ich denke, sie wird das Signal von Natur aus entprellen.

Verwenden Sie einen Prioritäts-Encoder wie einen 74xx148

Geben Sie hier die Bildbeschreibung ein

Oder wenn Sie CMOS bevorzugen, einen CD4532

Geben Sie hier die Bildbeschreibung ein

Es sollte immer nur ein Schalter aktiv sein, daher funktionierte dies am besten mit gekoppelten Schaltern, entweder Druckknöpfen wie dem untenstehenden oder einem Drehschalter mit mehreren Positionen.

Geben Sie hier die Bildbeschreibung ein

Aber andererseits muss man sich fragen, wozu man den CD4051 braucht, wenn man all diese Schalter hat?

Geben diese Tasten die anderen 7 frei, wenn eine Taste gedrückt wird? Was ist die Teilenummer? Drehschalter ist eine gute Idee!
@Selvek sie kommen normalerweise in beiden Varianten. Das besondere ist hier zu finden
Oh, das ist ziemlich glatt!

Ich weiß nicht, mit wie vielen E / A-Leitungen Sie von Ihrem Mikro aus arbeiten müssen. Aber ich habe dies getan, bevor ich eine Fernbedienungstastatur verwendet habe. Die Schalter sind in einer Matrix verdrahtet.

(Foto)

Wenn Sie keine Klimmzüge wie beim MSP430 programmieren können, müssen Sie diese hinzufügen. Die Schönheit davon ist zweifach. Sie benötigen kein externes Gerät. Und Sie müssen nicht scannen, wenn eine Taste nicht gedrückt wird. Halten Sie alle Ihre Ausgänge niedrig und setzen Sie Interrupts an Ihren Eingängen. Lassen Sie einen niedrigen Trigger an den Eingängen einen Scan starten. Erster Schalter als geschlossen erkannt, gewinnt. Sie können das Scannen stoppen und einen hochgehenden ausgelösten Interrupt anzeigen lassen, wenn der Schalter losgelassen wird.