Hallo. Folgendes Problem: Ich möchte einen Rückwärtszähler realisieren
der von 90 auf 0 zählt. Dazu verwende ich zwei 7 Segment Anzeigen, sowie
JK Flips Flops und BCD zu 7 Segment Decoder.
Es geht mir nur um den Schaltungsaufbau, nicht um irgendwelche ICs oder
Bauteile.
Bis jetzt habe ich es soweit hinbekommen, allerdings fängt er bei 11 an
zu zählen, geht dann auf 10 09 08 07 ... und dann auf 99 98 97. Ich
würde gerne einen Taster einbauen, damit ich auf Knopfdruck den Zähler
starten kann. Im Anfangszustand soll 90 da stehen, wenn ich den Knopf
drücke, erst nach einem Taktzyklus (bei mir eine Sekunde) auf 89.. Wenn
er bei 00 angekommen ist soll er einfach stehen bleiben.
Das ganze soll später genau 90 Minuten gehen, ich verwende Sekunden, um
es zu testen.
In den Screenshots ist auch die Zustandsübergangstabelle. Das Schaltbild
ist etwas unübersichtlich. Das Programm ist nicht so gut.
Ich habe leider nirgends ein Hinweis gefunden, habe mich deswegen hier
im Forum registriert.
Vielen Dank im Vorraus.
Hat das irgendeinen akademischen Grund, warum du das so realisieren
willst? Dann, und nur dann lohnt es sich damit zu beschäftigen.
Soll es was tatsächlich prkatisches werden, sind das 30 Zeilen Code in
einem Tiny2313, geschrieben in ner halben Stunde. Und die Platine ist
auch viel schneller fertig als mit deinem TTL-Kram.
H.Joachim Seifert schrieb:> Hat das irgendeinen akademischen Grund, warum du das so realisieren> willst? Dann, und nur dann lohnt es sich damit zu beschäftigen.>> Soll es was tatsächlich prkatisches werden, sind das 30 Zeilen Code in> einem Tiny2313, geschrieben in ner halben Stunde.
Ja, aber nur für jemandem der vorher mindestens ein Vierteljahr
µC-Programmierung gelernt hat. Auf jeden Fall liesse sich obiges
Projekt auch recht einfach mit fertigen Zähler-ICs verwirklichen.
Gruss
Harald
In der tat. Also ich wollte bewusst ohne programmieren machen, einfach
nur um zu wissen, ob ich das machen kann. Ich habe ein Semester
Digitaltechnik hinter mir, jetzt will ich das in die Praxis umsetzen.
David G. schrieb:> In der tat. Also ich wollte bewusst ohne programmieren machen, einfach> nur um zu wissen, ob ich das machen kann. Ich habe ein Semester> Digitaltechnik hinter mir, jetzt will ich das in die Praxis umsetzen.
Schau in den Tietze/Schenk. Dort sind solche Zähler gut beschrieben.
(Jedenfalls in meiner zweiten Auflage)
Harald Wilhelms schrieb:> H.Joachim Seifert schrieb:>>> Hat das irgendeinen akademischen Grund, warum du das so realisieren>> willst? Dann, und nur dann lohnt es sich damit zu beschäftigen.>>>> Soll es was tatsächlich prkatisches werden, sind das 30 Zeilen Code in>> einem Tiny2313, geschrieben in ner halben Stunde.>> Ja, aber nur für jemandem der vorher mindestens ein Vierteljahr> µC-Programmierung gelernt hat. Auf jeden Fall liesse sich obiges> Projekt auch recht einfach mit fertigen Zähler-ICs verwirklichen.> Gruss> Harald
Ich will das bevor ich mir Zähler ICs kaufe und das Projekt verdrahte
und verlöte wissen, ob es möglich ist und wie es funktioniert. Ich will
das lieber erst mal im Detail wissen.
Außerdem hat mein kleines Simulationsprogramm nicht viel zur Verfügung.
Es gibt ein Zähler, allerdings asynchron.
Ist das bislang nur simuliert?
Die Takterzeugung für die 10er-Stelle wird so nicht gehen. Durch
Laufzeitunterschiede ergibt sich praktisch immer ein Puls zum
ungewünschten Zeitpunkt und wenn auch nur ein sehr kurzer. Da muss
zumindest der Takt der ersten Stelle irgendwie mit rein.
Mag in der Simulation noch gehen in der Praxis kaum.
Deer Startwert ist hier eigentlich Zufall.
Und wie zählt er genau? Nach 07 kommt 99? Kann eigentlich nicht sein,
auch wenn ich mir die Logik nicht ganz genau angesehen habe. Das untere
Bit sollte sich bei jedem Takt ändern.
Zum Starten auf 90 must du einen auf die J/K-Eingänge entsprechende
Signale legen und dann einmal takten. Ohne Takt geht bei JK-FFs nichts.
Und die Null musst du erkennen und dann entweder den Takt unterdrücken
oder deine Zustandstabelle entsprechend erweitern, so dass nach 00
wieder 00 kommt.
Harald Wilhelms schrieb:> David G. schrieb:>> In der tat. Also ich wollte bewusst ohne programmieren machen, einfach>> nur um zu wissen, ob ich das machen kann. Ich habe ein Semester>> Digitaltechnik hinter mir, jetzt will ich das in die Praxis umsetzen.>> Schau in den Tietze/Schenk. Dort sind solche Zähler gut beschrieben.> (Jedenfalls in meiner zweiten Auflage)
Ich weiß wie Zähler funktionieren, ich krieg es aber einfach nicht hin.
Ich weiß nicht, warum mein Zähler bei 11 einfängt, und wie ich das
ändern kann. Außerdem will ich ja einen Taster einbauen. Ich habe schon
einiges versucht, es aber einfach nicht hinbekommen.
David G. schrieb:> Ich> würde gerne einen Taster einbauen, damit ich auf Knopfdruck den Zähler> starten kann. Im Anfangszustand soll 90 da stehen, wenn ich den Knopf> drücke,
Um den Startwert festlegen zu können wäre ein Preset und Clear-Eingang
des FFs praktisch.
http://www.ti.com/lit/ds/symlink/sn74hc112.pdf
Die verbindest du so mit deinem Starttaster, dass der gewünsche
Startwert eingestellt wird.
Uwe Nagel schrieb:> Ist das bislang nur simuliert?> Die Takterzeugung für die 10er-Stelle wird so nicht gehen. Durch> Laufzeitunterschiede ergibt sich praktisch immer ein Puls zum> ungewünschten Zeitpunkt und wenn auch nur ein sehr kurzer. Da muss> zumindest der Takt der ersten Stelle irgendwie mit rein.> Mag in der Simulation noch gehen in der Praxis kaum.> Deer Startwert ist hier eigentlich Zufall.> Und wie zählt er genau? Nach 07 kommt 99? Kann eigentlich nicht sein,> auch wenn ich mir die Logik nicht ganz genau angesehen habe. Das untere> Bit sollte sich bei jedem Takt ändern.> Zum Starten auf 90 must du einen auf die J/K-Eingänge entsprechende> Signale legen und dann einmal takten. Ohne Takt geht bei JK-FFs nichts.> Und die Null musst du erkennen und dann entweder den Takt unterdrücken> oder deine Zustandstabelle entsprechend erweitern, so dass nach 00> wieder 00 kommt.
Ist alles nur simuliert.
Nach 07 kommt 06 05 04 03 02 01 00 99 98,...
Die zweite Zahl, also die Zehner, hatte ich davon abhängig gemacht, wenn
die andere Zahl 0 wird.
Achim S. schrieb:> David G. schrieb:>> Ich>> würde gerne einen Taster einbauen, damit ich auf Knopfdruck den Zähler>> starten kann. Im Anfangszustand soll 90 da stehen, wenn ich den Knopf>> drücke,>> Um den Startwert festlegen zu können wäre ein Preset und Clear-Eingang> des FFs praktisch.>> http://www.ti.com/lit/ds/symlink/sn74hc112.pdf>> Die verbindest du so mit deinem Starttaster, dass der gewünsche> Startwert eingestellt wird.
Das habe ich auch schon gelesen, Problem ist, ich kenne nur die normalen
JK FlipFlops und mein Simulationsprogramm auch.
Also erst mal vielen Dank für die schnellen Antworten, ich denke die
Sache wird komplizierter als ich dachte (mein Digitaltechnik wissen
reicht bei weitem nicht aus).
Die Pläne von TI von den ICs sind für einen Neuling schwierig.
Ich dachte, ich kann meinen Schaltplan einfach um ein paar Drähte
erweitern und schon würde alles stimmen.
Ich denke, das kann ich nicht mit meinem Logik Simulator realisieren.
Gibt es noch eine andere Möglichkeit, zwei Segmentanzeigen von 90 auf 0
zählen zu lassen, wenn es geht erst mal ohne programmieren. Wenn das
allerdings zu aufwendig ist, werde ich es programmieren, aber damit
kenne ich mich zu wenig aus (außer Arduino).
Kann man aus jedem JK FlipFlop ein JK FlipFLop mit CLR Eingang erzeugen
oder sind das spezielle FlipFlops?
Harald Wilhelms schrieb:> H.Joachim Seifert schrieb:>>> Hat das irgendeinen akademischen Grund, warum du das so realisieren>> willst? Dann, und nur dann lohnt es sich damit zu beschäftigen.>>>> Soll es was tatsächlich prkatisches werden, sind das 30 Zeilen Code in>> einem Tiny2313, geschrieben in ner halben Stunde.>> Ja, aber nur für jemandem der vorher mindestens ein Vierteljahr> µC-Programmierung gelernt hat. Auf jeden Fall liesse sich obiges> Projekt auch recht einfach mit fertigen Zähler-ICs verwirklichen.> Gruss> Harald
Was wäre denn so ein fertiger Zähler IC? Ich kenn mich damit noch zu
wenig aus. Gibt es da ein Link? Wie verdrahte ich dann die Zähler
zusammen? In meinem Schaltbild habe ich ja auch zwei Zähler. Oder ist
das ein Zähler, der von 90 auf 0 zählt als fertiges Bauteil?
Poster schrieb:> Da müsste ein 74HCT190 passen. Einer pro Stelle.
Ok. Und für den Takt? Soll ja alle minute was passieren. Und der soll
erst starten, wenn ich den Taster drücke. Und dann bei 90. wie
verschalte ich die ICs hintereinander? Soll der Takt dann von dem
anderen IC abhängen, oder sollen die den gleichen Takt haben?
Oh je, das ist jetzt locker 30 Jahre her das ich mit so was rumgebastelt
habe.
Habe die Zähler früher für Knightrider Lauflichter verwendet :)
Der Takt geht auf den "Einer" Zähler. Der produziert einen Überlauf der
auf den "Zehner" Zähler geht.
Zum Takt findest du hier bestimmt tolle Schaltungen mit dem 555.
Zum starten kannst du dir bestimmt was einfallen lassen mit einen FF das
durch den Taster gesetzt wird und durch den Zähler zurück wenn er 00
erreicht.
Poster schrieb:> Oh je, das ist jetzt locker 30 Jahre her das ich mit so was rumgebastelt> habe.> Habe die Zähler früher für Knightrider Lauflichter verwendet :)>> Der Takt geht auf den "Einer" Zähler. Der produziert einen Überlauf der> auf den "Zehner" Zähler geht.>> Zum Takt findest du hier bestimmt tolle Schaltungen mit dem 555.>> Zum starten kannst du dir bestimmt was einfallen lassen mit einen FF das> durch den Taster gesetzt wird und durch den Zähler zurück wenn er 00> erreicht.
Ok vielen Dank. Letzte Frage: der Überlauf wäre doch dann so, wie in
meinem schaltbild, oder nicht? Also wenn alle Leitungen 0 sind, dass
dann der zweite Zähler startet.
... bei den Inputs (zumindest dem clock Input) auf genügende
Flankensteilheit und ein prellfreies Signal achten.
Das erreichst Du am einfachsten mit einem Schmitt Trigger, z.B dem
74HC14 oder 74HC132 mit einem vorgeschalteten RC.
... ausserdem einen Aufbau mit sauberer Masseführung und die Speisung
bei jedem IC mit einem 100n abblocken.
David G. schrieb:>> Da müsste ein 74HCT190 passen. Einer pro Stelle.
Wohl eher 74x192
> Ok. Und für den Takt? Soll ja alle minute was passieren.
Dann brauchst du irgendwas, das dir einen Minutentakt erzeugt. Wie genau
solls den sein? Reicht Netzfrequenz (50Hz) geteilt durch 3000? Sonst
halt ein Quarz und viele Teiler.
> Und der soll erst starten, wenn ich den Taster drücke.
Dann brauchst du ein Flipflop, das du mit dem Taster setzt und das
seinerseits den Zähler sperrt oder freigibt.
> Und dann bei 90.
Der '192 hat einen Ladeeingang und Daten-Eingänge A-D. Den kannst du so
auf jeden beliebigen Startwert setzen.
Für eine Ein-Knopf-Bedienung würde man aus dem entprellten Tastersignal
einen kurzen Impuls ableiten (Monoflop) der den Vorteiler rücksetzt
(damit der nach genau einer Minute den ersten Zählimpuls abgibt) und mit
diesem Impuls auch die Zähler laden. Den Startwert von 90 kann man ja
fest verdrahten.
> wie verschalte ich die ICs hintereinander? Soll der Takt dann von dem> anderen IC abhängen, oder sollen die den gleichen Takt haben?
Mit dem '192 hast du einen dezidierten Eingang zum Abwärtszählen und
einen ebenso dezidierten Ausgang zum Kaskadieren mehrerer Zähler.
Aber wie Vorredner schon bemerkten, ist sowas heute wesentlich einfacher
mit einem µC zu erledigen. Erst recht, wenn du noch eine Zeitbasis
brauchst.
XL
Axel Schwenke schrieb:> Aber wie Vorredner schon bemerkten, ist sowas heute wesentlich einfacher> mit einem µC zu erledigen. Erst recht, wenn du noch eine Zeitbasis> brauchst.>>> XL
Danke erst mal für den ausfürlichen Beitrag.
Da ich bis jetzt nur Arduinios mit C programmiert habe, habe ich keine
Ahnung von weiteren µC. Erst recht nicht, wie man diese programmiert. Da
brauch man bestimmt irgendeine Vorrichtung, damit man die vom Computer
programmiert.
Ich werde das vermutlich mit dem Arduino Nano machen und zwei BCD zu 7
Segment Decoder. Dann brauch ich am Arduino 8 pins für die beiden
Decoder, und einen für den Taster. Ich denke das ist das einfachste, in
C kann man das relativ leicht programmieren denke ich.
Mit FlipFlops und Gatter Logik ist das schon ziemlich aufwändig.
Das ganze dann an ne 9V Batterie und fertig.
Kann man BCD Decoder ohne weiteres direkt an den Adruino anschließen?
Ich würde dann jeweils 4 Ausgänge vom Arduino im BCD Code ausgeben, und
den Decoder den Rest machen lassen. Geht das?
Wofür Dekoder? Kannst die Anzeigen doch direkt vom Arduino ansteuern.
Die Siebensegmentdekodierung machst du im Prozessor. Braucht zwar 14
Ausgänge, aber die hast du ja.
nimmst 2 Transistoren, und einen ULN2803. Dann brauchst du nur 9 Pins
und multiplext das ganze...ist günstiger, du kannst alle Segmente
ansteuern wie du willst und brauchst keine spezifischen ICs...
Wenn du das garnicht willst, nimmst halt nur einen BCD 7.Segm. Dekoder
und die 2 Transistoren, dann brauchst nur 6 Pins und ein IC weniger als
bei deinem Vorhaben...
JJ
H.Joachim Seifert schrieb:> Wofür Dekoder? Kannst die Anzeigen doch direkt vom Arduino ansteuern.> Die Siebensegmentdekodierung machst du im Prozessor. Braucht zwar 14> Ausgänge, aber die hast du ja.
Ja aber dann brauch ich ja noch einen für den Taster, un der ist dann
nicht mehr Übrig. Außerdem habe ich nicht so eine große
Programmiererfahrung, und wenn ich einen BCD zu 7 Segment Decoder kaufen
kann, brauch ich ihn nicht programmieren.
>>Außerdem habe ich nicht so eine große
Programmiererfahrung,
Dann ist deine Lösung schon gut und auch umsetzbar ´wie du beschrieben
hast...
Welchen Decoder wolltest denn nehmen?
JJ
http://www.blitzlogic.com/7seg_90.htm
was auch hilft:
gehe mal bei google auf die Bildersuche und gebe als Suchwort:
"7 segment avr" ein und schaue dich mal um...
JJ
kenn ich denn die analogen Ausgänge als digitale Eingänge verwenden?
Beim Arduino?
Weil dann hätte ich ja genügend Anschlüsse, und könnte ohne einen
externen Decoder auskommen, der nimmt ja auch zusätzlich Platz weg.
Axel Schwenke schrieb:> Wohl eher 74x192
Ja, steht ja schon im driiten Posting. Wenn man sich ein älteres
Datenblatt des 74192 sucht, findet man dort auch meist die Innen-
schaltung, die man durchaus aus Einzelflipflops und Gattern nach-
bauen kann. Nur MS-Flipflops nur aus Gattern zu bauen wird schwierig.
Gruss
Harald
Na gut...
Es ist immer gut, wenn man die volle Kontrolle über jedes einzelne
Segment hat, das entfällt natürlich bei der Dekoderlösung.
Auch ne Überlegung wert: 2x 4026, eigentlich ein Zähler mit Dekoder.
Zähler löschen, gewünschte Anzahl von Takten ausgeben, fertig. Kommt mit
2 Leitungen aus.
David G. schrieb:> Ich werde das vermutlich mit dem Arduino Nano machen und zwei BCD zu 7> Segment Decoder. Dann brauch ich am Arduino 8 pins für die beiden> Decoder, und einen für den Taster. Ich denke das ist das einfachste
Dann halte dich aber ran. BCD-zu-7-Segment Decoder werden zunehmend
schwerer erhältlich. 74x47 ist der Klassiker. Aber den würde man an
einem Arduino stilecht nur als 74HC oder 74HCT verwenden wollen und da
wurde letztens in einem anderen Thread festgestellt, daß der schwer
erhältlich ist. 74LS gibts noch. Aber da braucht ein Decoder für sich
allein schon mehr Strom als der ganze Arduino.
Wenn ein µC im Spiel ist, bietet es sich natürlich an, die Dekodierung
auch gleich in Software zu machen. Wenn man Pins sparen will, kann man
die zwei Stellen ja multiplexen.
XL
Axel Schwenke schrieb:> David G. schrieb:>> Ich werde das vermutlich mit dem Arduino Nano machen und zwei BCD zu 7>> Segment Decoder. Dann brauch ich am Arduino 8 pins für die beiden>> Decoder, und einen für den Taster. Ich denke das ist das einfachste>> Dann halte dich aber ran. BCD-zu-7-Segment Decoder werden zunehmend> schwerer erhältlich. 74x47 ist der Klassiker. Aber den würde man an> einem Arduino stilecht nur als 74HC oder 74HCT verwenden wollen und da> wurde letztens in einem anderen Thread festgestellt, daß der schwer> erhältlich ist. 74LS gibts noch. Aber da braucht ein Decoder für sich> allein schon mehr Strom als der ganze Arduino.>> Wenn ein µC im Spiel ist, bietet es sich natürlich an, die Dekodierung> auch gleich in Software zu machen. Wenn man Pins sparen will, kann man> die zwei Stellen ja multiplexen.>>> XL
Ich werde es mit einem Arduino Nano versuchen, ohne Decoder. Ich hatte
gedacht, dass das in Software schwieriger zu lösen sei, als wenn ich
einen externen decoder nehme, aber ich glaube das ist nicht so schwer.
Ich muss mir ja nur einmal aufschreiben, wie die einzelnen Zahlen als 0
und 1 an den verschiedenen Ausgängen aussehen, aber da war ja hier auch
schon ein link.
Ich denke das bekomme ich hin, und da der Arduino Nano ziemlich klein
ist, ist das insgesamt kleiner als wenn ich das alles mit IC Zählern
machen würde.