Alternative zu 4017 Dekadenzähler zum Iterieren über Matrixspalten

HINWEIS: Ich habe seit der ursprünglichen Frage einige Änderungen vorgenommen, die Anzahl der Spalten beträgt 114 und nicht 45. Dies kann sich auf einige der folgenden Antworten auswirken.

Ich arbeite an einem Projekt mit einer großen LED-Matrix, die ich mache. Ich verwende 114 Spalten von LEDs und brauche eine Möglichkeit, die Spalten so zu durchlaufen, dass ich eine minimale Anzahl von Pins von meinem AVR verwenden kann.

Ich erinnere mich, dass wir damals, als ich in der Schule war, Dekadenzähler verwendeten, die 4017, ich scheine jetzt zu lesen, dass diese veraltet sind und sie anscheinend durch bcd-Zähler ersetzt wurden. Das ist alles schön und gut, aber ich brauche Pins, keine Effizienz, 4-Bit-BCD-Ausgabe hilft mir nicht, ich brauche mehr als 114 Verbindungen, über die ich iterieren kann.

Also, was verwende ich? Ich brauche etwas entlang der Spaltenlänge, um sie nacheinander zu schalten.

Unten ist ein schnelles SPICE-Schema, das ich zusammengestellt habe, wie ich das einrichten möchte. Der Unterschied besteht darin, dass mein reales Projekt 28 LEDs in jeder Spalte und 114 Spalten, R1-R28 und C1-C114, haben wird.

Ich habe 74HC595 8-Bit-Schieberegister in den Zeilen, die Daten eintakten. Alles, was ich brauche, ist ein geeignetes Gerät, um die 114 Transistoren hochzuschalten, die den Strom senken.

Geben Sie hier die Bildbeschreibung ein

Der 4017 ist kaum veraltet, er ist einer der beliebtesten Chips auf dem Markt, und da die Schaltungen auf Standard-Jelly-Bean-Logik basieren, wird er in Zukunft wartbar sein und Ihre Schaltpläne werden nicht veraltet sein.

Antworten (5)

Der MM5450 kann tun, was Sie wollen.

34 Ausgänge, seriell gespeist, verkettbar.
Fiktiv 3 Pins zum Ansteuern (Takt, Daten, Latch), können aber bei Bedarf mit 1 Pin angesteuert werden. Digikey 4,39 $/1 Dieser in DIP-40, aber auch in LCC erhältlich.

Wenn dies Ihren Anforderungen nicht entspricht, müssen Sie eine vollständigere Beschreibung Ihrer Anforderung bereitstellen.

Die Ausgänge sind Open-Drain, dh entweder ein = niedrig oder aus = Schwimmer oder offener Stromkreis.

Geben Sie hier die Bildbeschreibung ein

Dies sieht nach einer sehr vielversprechenden Option aus, aber die Ausgabe scheint nicht dreistufig zu sein. Wie soll ich vorgehen, um Spalten zu deaktivieren, die ich nicht eingeschaltet haben möchte? Ich müsste sie hoch ausgeben, um keinen Potenzialunterschied auf ihnen zu geben?
@Hamid - sie scheinen es nicht zu buchstabieren, aber es handelt sich um Open-Drain-Ausgänge, dh entweder Leerlauf oder niedrig. Siehe Update zur Antwort.
Ah ja, nach dem Diagramm würde es sicherlich so aussehen. Ich werde mir welche besorgen und ausprobieren.

Wenn der 4017 tut, was Sie wollen, fahren Sie fort und verwenden Sie ihn. Es wird von mehreren Unternehmen aktiv produziert: Texas Instruments , On Semiconductor , NXP (HEF4017B) , NXP (74HC4017) . Wenn ein Chip von mehr als einem Unternehmen (mehrere Quellen) aktiv produziert wird, ist die Wahrscheinlichkeit, dass er veraltet ist, meiner Meinung nach viel geringer als bei Chips, die nur von einem Unternehmen hergestellt werden.

Einer der unter Welcher SIPO-Chip ist besser aufgelisteten Chips, 74HC4094 oder 74HC595 oder etwas anderes? würde auch in Ihrer Anwendung funktionieren: Alle diese Chips, wie der von Russell McMahon erwähnte MM5450, verwenden 3 Pins zum Ansteuern (Uhr, Daten, Latch).

  • Der 74HC595 (auch von mehreren Herstellern erhältlich) ist beliebt für die Ansteuerung von LEDs in POV-Displays. Diese 3 Pins Ihres Mikrocontrollers würden eine Kette von 6 der 74HC595-Chips mit 8 Ausgängen ansteuern, um 48 Ausgänge anzusteuern.
  • Mit dem TLC5925 von TI können Sie den Senkenstrom einstellen. Diese 3 Pins Ihres Mikrocontrollers würden eine Kette von 3 der TLC5925-Chips mit 16 Ausgängen ansteuern, um 48 Ausgänge anzusteuern.
Danke für die ausführliche Antwort. Tatsächlich habe ich nicht vor, den Strom durch die Chips zu senken, sie werden einige Hochleistungstransistoren schalten, die den Strom senken. Da ich ein logisches High auf der aktiven Säule haben möchte und meine Säulen eine gemeinsame Kathode sind, ist dies das logischste Setup. Ich verwende den 74HC595 bereits zum Verschieben der Daten für jede Spalte, bevor ich sie iteriere, sie scheinen ein wenig übertrieben zu sein, um eine Reihe von Ausgängen der Reihe nach hoch zu schalten. Obwohl sie alle funktionieren könnten, suche ich wohl nach der "modernsten", am wenigsten übertriebenen und potenziell billigsten Option.

Ein Grund dafür, dass Russells MM5450 auf die ungerade Anzahl von 34 Ausgängen beschränkt ist, ist, dass es sich nicht um ein Multiplex-Gerät handelt. Der MAX7219 ist gemultiplext und kann 64 LEDs ansteuern. Es verfügt über eine Software-Helligkeitssteuerung und wählbare 7-Segment-Decoder. Und es kann zu teuer sein :-(, sogar mehr als zwei MM5450.

Aber nicht alles ist verloren. Der CD4017 mag veraltet sein, aber eine Reihe von Geräten der CD4000-Serie wurde als HCMOS-Gerät neu aufgelegt, für den CD4017 ist das der 74HC4017 , also können Sie diesen Weg immer noch gehen.

Ein Schieberegister wie das 74HC164 oder 74HC595 wird für Sie mit ziemlicher Sicherheit besser funktionieren als der Dekadenzähler. Jeder der oben genannten bietet Ihnen jeweils acht Ausgänge, und sie können ohne zusätzliche Steuerlogik problemlos an eine beliebige Anzahl von Geräten kaskadiert werden. Wenn Sie den 74HC595 verwenden, können Sie Daten in die Geräte verschieben, ohne dass sie an ihren Ausgängen erscheinen, bis Sie ein "Register Clock" -Signal treffen, das alle verschobenen Daten gleichzeitig zu den Ausgängen kopiert. Für Ihr spezielles Szenario ist dies jedoch wahrscheinlich nicht erforderlich.

Der Grund, warum ich den 4017 kondierte, ist, dass ich jeweils nur einen 1-Ausgang aktiv habe, für die Spalten verwende ich bereits die 595er, weil ich einige oder alle (oder keine) aktiv brauche, aber es scheint übertrieben für einen einzelnen hohen Ausgang zu sein auf den Reihen. Ist es immer noch die beste Option?
@Hamid: Wenn Sie eine Anforderung erzwingen müssen, dass nicht mehr als eine Zeile gleichzeitig aktiv sein darf, können Sie 3-zu-8- oder 4-zu-16-Decoder-Chips verwenden und eine Adresse binär ausgeben (unter Verwendung eines Zählers oder Schieberegister zur Generierung der Adresse). Sie könnten eine 8-Bit-Adresse in 192 Decodierungen umwandeln, indem Sie einen 74HC138 für jeweils acht plus einen weiteren verwenden; Wenn Sie ein paar Inverter hinzufügen, können Sie neun Adressbits in 512 Decodierungen konvertieren. Wenn Sie einen weiteren 74HC138 ohne die Inverter hinzufügen, können Sie elf Adressen in 1536 Decodierungen umwandeln. bei den Invertern ergeben 12 Adressbits 4096 Decodierungen.
@Hamid: Wenn Sie Ihre Zeilen jedoch sequentiell ausgeben und es Ihnen egal ist, dass die Hardware eine Anforderung von jeweils einer Zeile erzwingt, ist ein Platinenlayout mit Schieberegistern einfacher als a Platinenlayout mit Adressdecodern. Außerdem gibt es einige Chips, die Schieberegister mit Hochstromtreibern kombinieren; Mir ist keine Kombination eines Decoders mit Hochstromtreibern bekannt.
Eine andere Idee, die für Ihre fünfundvierzig Zeilen praktikabel sein könnte, wäre die Verwendung eines Eins-aus-Fünf-Selektors, um einen von fünf Hauptleistungstransistoren einzuschalten, von denen jeder neun andere speist, und dann jeden Ausgang von einem Eins-von zu haben -Neun Selektor verbinden mit einem der neun Transistoren von allen fünf Master-Transistoren. Das würde die Anzahl der benötigten digitalen Chips etwas reduzieren, obwohl ein digitaler Chip pro 8 Reihen wirklich nicht so schlecht ist.
Vielen Dank für die Antwort, wie Sie wahrscheinlich bei einem detaillierten Blick auf die Frage sehen können, habe ich meine Zahlen ein wenig aufgepeppt, es gibt 114 Spalten, nicht 45. Überbleibsel aus der Zeit, als ich die Frage zum ersten Mal schrieb, denke ich. Ich verstehe Ihre Ideen, die kaskadierten Transistoren sind eine gute Idee. Ich werde mir auch die Selektoren ansehen. Danke.
@Hamid: Ich würde vorschlagen, Selektoren zu verwenden, wenn es Ihnen wichtig ist, ein Einzelverhalten zu erzwingen, oder Shifter, wenn Sie dies nicht tun. Ich würde erwarten, dass das Hinzufügen von mehr Chips praktischer wäre als das Hinzufügen der kaskadierten Schicht von Treibertransistoren, und bot diesen Vorschlag hauptsächlich der Vollständigkeit halber an, aber wenn Ihre Situation eine der Situationen ist, in denen die Kaskadierung von Transistoren gut funktioniert, gut für Sie.
Ich möchte wirklich eine nach der anderen erzwingen, ein einfacher Schluckauf könnte Probleme verursachen, wenn mehrere aktiviert würden, und aus irgendeinem Grund versuchte es, mehrere Spalten von LEDs gleichzeitig zum Leuchten zu bringen, die dumme Mengen an Strom ziehen. Ich werde das Angebot so schieben, wie ich es mir vorstelle.
@Hamid: Wenn Sie jeweils nur eine Säule beleuchten möchten, können Sie R1-R8 durch einen einzelnen Widerstand ersetzen. Wenn versucht würde, mehr als eine Säule gleichzeitig zu erregen, würde ungefähr die gleiche Menge an Gesamtstrom fließen, als ob eine Säule beleuchtet wäre, willkürlich auf die aktivierten Säulen aufgeteilt. Ebenso würde das Erregen einer beliebigen Anzahl von Zeilen dazu führen, dass der Strom von den aktivierten Spalten (deren Gesamtbetrag fest ist, unabhängig davon, wie viele Zeilen aktiviert sind) auf die LEDs in den aktivierten Zeilen aufgeteilt wird.
Sehr wahr, ich werde dafür sorgen, dass es so gemacht wird, danke. Ich muss nur die beste Methode zum Wechseln der Spalten nacheinander bestimmen, da ich keine endgültige Antwort habe, über die ich das Gefühl habe, noch eine Entscheidung treffen zu können.

Hobbyprojekt oder kommerzielles Produkt? Prüfen Sie im letzteren Fall, ob es sich wirklich lohnt, zusätzliche Chips hinzuzufügen. Eine Version Ihres AVR mit mehr Pins ist wahrscheinlich verfügbar und die zusätzlichen Kosten könnten überraschend niedrig sein.

Sie benötigen einen Treiber zwischen dem Logikausgang und den LEDs? Wenn ja, überprüfen Sie den TPIC6A595, er ist wie ein 74HC595 mit Leistungsausgängen.

Wenn immer noch keine Übereinstimmung besteht, haben Sie wahrscheinlich ein Hobbyprojekt mit geringem Strom. Jedes Mittel zum Ausgeben eines einzelnen Bits auf einer Folge von Pins reicht aus. Davidcary hat einige verlinkt. Ich füge die MCP23017 und MCP23S17 hinzu.

Es ist ein Hobbyprojekt, ja, der AVR hat genug Pins, aber ich möchte sie nicht "verschwenden", indem ich etwas so Einfaches wie das Iterieren über 45+ Spalten mache, eine Kette von Dekadenzählern würde die Arbeit erledigen und bedeuten, dass ich nur verwenden kann 3 der Stifte. Auf diese Weise habe ich Raum, das Projekt in Zukunft auszubauen, was meine Absicht ist. Wenn ich die Handlung nicht verloren habe, brauche ich nur eine Standard-Leistungslogik, um meine Stromsenkentransistoren nach Bedarf der Reihe nach zu schalten. Ich werde meinen SPICE-Schema posten, sobald ich nach Hause komme. Ich werde mir die von dir erwähnten Chips auch ansehen, danke.
Die erste Linie galt hauptsächlich für kommerzielle Produkte. Für ein Hobbyprojekt hat man den Chip vielleicht schon repariert, und ein 80-Pin-TQPF kommt womöglich nicht in Frage, auch wenn es preislich sinnvoller wäre.
Leider ja, mein AVR ist Teil einer Drop-In-Platine, kurz gesagt, es ist ein Einweg-Arduino-Board.