Was ist ein effizienter Weg, um die Uhr durch 1000 oder mehr zu teilen?

7

Kontext: Dies ist ein Hausbrauprojekt, das KEINE Mikrocontroller als Lernübung enthält. Ich muss eine Zeit von bis zu 20 Sekunden bis zur nächsten 100stel Sekunde messen und das gemessene Zeitintervall anzeigen. Ich verwende eine 4-stellige 7-Segment-LED für die Anzeige.

Ich habe einen 100-kHz-Kristall und möchte die Zehner-, Einsen-, Zehntel- und Hundertstelsekunden (dh 23,36 Sekunden) auf einer 4-stelligen 7-Segment-LED-Anzeige anzeigen. Ich dachte, ich könnte den 4026-Chip, einen Dezimalzähler und einen LED-Treiber verwenden. Allerdings muss ich 3 davon verketten, um 100 Hz zu erreichen, und dann weitere 4 verketten, um die 4 Ziffern der Anzeige zu erhalten. 7 ICs (plus Multiplex-Logik, da das Display gemeinsame abcdefg-Leitungen verwendet, plus Zurücksetzen usw.) scheinen eine Menge zu sein.

Vermisse ich einen viel einfacheren Weg, dies zu erreichen? Die 'Regeln' sind: alle ICs oder andere Komponenten, aber keine Software (keine MCUs).

Vielen Dank.

Henry
quelle
1
Klingt nach einem Job für eine CPLD.
Dorn
3
Wenn die Genauigkeit nicht wichtig ist, kann ein einfacher Binärzähler die Aufgabe übernehmen. Das Teilen durch 2 ^ 10 ist ungefähr das Teilen durch 1000 (1024 um genau zu sein). pdf1.alldatasheet.com/datasheet-pdf/view/66436/INTERSIL/…
Jippie
1
Über 20 Sekunden wären das nach meiner Berechnung 2048 "verpasste" Zyklen, die 2 Hundertstelsekunden (0,02048 Sekunden) entsprechen. Nicht schlecht! Ich hatte auf Millisekundengenauigkeit gehofft - ich werde eine andere Option in Betracht ziehen, aber ich kann diese verwenden, danke!
Henry
1
Oder ein winziger Mikrocontroller. Ich würde mich für einen ATtiny13 entscheiden, nur weil ich sie herumliegen habe, aber es gibt noch kleinere, die den Job perfekt machen können.
Jippie
2
@jippie Außer dass das OP ausdrücklich keine MCUs sagte .
Tcrosley

Antworten:

4

Halte es einfach. Sie können ICs finden, die 100 kHz durch 1000 teilen, wie den programmierbaren Division-by-N-Zähler 74HC4059 , aber die meisten davon kosten Sie einen Arm und ein Bein, wo ein paar billige 74HC390- Zähler ausreichen . Der HC390 ist ein doppelter BCD-Zähler, sodass Sie für den zweiten nur die Hälfte des IC benötigen, dieser ist jedoch billiger als ein einzelner BCD-Zähler.

stevenvh
quelle
Ich mag die Idee, es einfach zu halten, ich wusste nicht, dass es solche Doppeldekadenzähler gibt, danke!
Henry
10

Wenn Sie eine Schaltung implementieren möchten, wie Sie sie mit handelsüblichen Chips beschreiben, würde ich schätzen, dass drei Dekaden-Zählerchips erforderlich sind (zwei davon werden zum Teilen durch fünf und einer zum Teilen durch verwendet -vier), zwei 74HC595-Chips (Schieberegister mit Latch), ein 74HC374 (8-Bit-Latch), ein Segmenttreiberchip, einige Transistoren und Widerstände zum Ansteuern von fünf LED-Ziffern-Commons und wahrscheinlich etwa 3-4 verschiedene "Klebelogiken" "Chips (Quad NAND, Quad XOR usw.)

Die Grundschaltung sieht ungefähr so aus ; Wie dargestellt, würde es eher mit 20 kHz als mit 100 kHz betrieben, aber ein Dekadenzähler, der als Division durch fünf verdrahtet ist, würde dies leicht beheben.

Die LEDs blinken Ziffern in der Reihenfolge 1000stel 100stel Zehntel Einheiten Zehner. Obwohl ich in diesem Schema einen 20-Bit-Latch mit auf Eingänge zurückgespeisten Ausgängen verwende, wäre es einfacher, einen Schieberegisterchip für 16 der Bits zu verwenden. Der Schieberegisterchip (74HC595) bietet auch den Vorteil eines freien Ausgangs-Latch (entspricht dem unten rechts).

Wenn man das "UND" - und "ODER" -Gatter oben rechts im Schaltplan weglassen würde, würde es binär zählen. Jedes Bit ist das xor von sich selbst und der vorherige Übertrag, und der neue Übertrag sollte das "und" des vorherigen Übertrags und des vorherigen Bits sein, außer dass auf dem ersten Bit jeder "Rahmen" der Übertrag erzwungen werden sollte. Sehr einfache Logik, mit der jedes Längeninkrement von einem Schieberegister ausgeführt werden kann. Eine leichte "Falte" in dieser Variante besteht darin, dass die Schaltung alle vier Bits zwischenspeichert (da alle vier Bits als Dezimalstelle angezeigt werden müssen) und auch testet, ob eine zwischengespeicherte Ziffer 9 ist und ein Übertrag gesetzt ist; In diesem Fall wird "vorgetäuscht", dass die nächsten vier Bits vom Shifter alle Einsen sind.

Wenn die Zählwerte nicht angezeigt werden müssen, ist es möglicherweise einfacher, nur einen Zehner-Zähler für jede Ziffer zu kaskadieren. Andererseits bietet diese Schaltung den Vorteil, dass fünf Ziffern auf einem einzigen Anzeigetreiber gemultiplext werden können. Falls gewünscht, könnte es leicht angepasst werden, um eine beliebige Anzahl von Ziffern zu verarbeiten, indem einfach mehr Schieberegister hinzugefügt und die Zeitschaltung eingestellt werden.

Superkatze
quelle
Vielen Dank für die sehr umfassende Antwort, die mich zufällig in dieses großartige Schaltungssimulator-Applet eingeführt hat. Ich verstehe die Antwort noch nicht ganz, aber ich gebe ihr eine +1 :)
Henry
@ Henry: Freut mich zu helfen. Übrigens ermöglicht das Applet als undokumentierte Funktion die Einstellung der Größe von "Latch", "Decade Counter", "ADC", "DAC" und einigen anderen Dingen. Wenn Sie im Dateimenü "Exportieren" auswählen, erhalten Sie eine Zeile für jeden Draht oder jedes Teil. Das erste, was in der Zeile steht, wird sagen, was das Ding ist. Die meisten Chips, Tore und Dinge haben dort eine Nummer. Der Rest der Zeile beschreibt die Einzelheiten der Sache. In vielen Fällen gibt es einen Parameter, der die Größe angibt (auch für Teile, deren Größe sonst nicht bearbeitet werden kann). Versuchen Sie es zu ändern ...
Supercat
... dann klicken Sie auf die Schaltfläche "IMPORT" und sehen Sie, was passiert. Beachten Sie, dass einige Teile wie der "Decade" -Zähler einen Parameter für jeden Ausgangspin enthalten, der den Anfangszustand anzuzeigen scheint. Die Parameter müssen vorhanden sein (einer pro Ausgabe), aber die Werte werden ignoriert. Dies ist wichtig, wenn der Dekadenzähler auf eine Division durch 16 geändert wird. Damit das Gerät erneut importiert werden kann, müssen sechs weitere Nullen hinzugefügt werden (eine für jede hinzugefügte Ausgabe).
Supercat