Langzeitprojekt: Digitaluhr the hard way mit Transistoren und Nixie-Röhren (Aufbauphase)

  • Weiter gehts.

    Ich habe eine "Uhr" mit zwei Ringzählern mit D-Flipflops implementiert. Das funktioniert recht gut und damit erspare ich mir das Dekodieren der Binärzahlen.

    Zwei Probleme tauchten auf:

    - Zum Starten benötigt ein Ringzähler ein Bit, welches dann beim Taktsignal durch die einzelnen Flipflops "wandert".

    - Wie verknüpft man zwei Ringzähler?


    Das erste Problem habe ich durch eine kleine Zeitschaltung gelöst. Um ein Bit zu "erzeugen", lade ich über einen größeren Widerstand einen Kondensator (100 nF) auf. Da der Kondensator zwischen Masse und Basis des dafür vorgesehenen Transistors ist, ist dieser so lange gesperrt (Ausgang ist HIGH) , bis die Spannung größer als etwa 0,7 V ist und der Transistor öffnet (Ausgang wird LOW). Da ich aber das Ergebnis negiert brauche, ist ein Negator hinterhergeschalten. Das ganze dauert einen Bruchteil einer Sekunde, ist aber ausreichend schnell, um das erste Flipflop eines Ringzählers zu setzen und somit einen Ausgangszustand herzustellen.


    Das zweite Problem hat mir mehr Kopfzerbrechen und Experimentieren bereitet.

    Mein erster Gedanke dazu war, das Taktsignal direkt auf beide Zähler zu geben und dann das Bit auf den zweiten Zähler zu übergeben, wenn der erste Zähler von vorn beginnt. Das brachte nur widersprüchliche Ergebnisse. Beide Zähler liefen quasi voll und blieben dann stehen. Dann habe ich versucht, das Ergebnis des ersten Flipflops weiterzugeben. Dadurch lief der erste Zähler, der zweite lief nur voll.

    Meine letzte Idee war dann, den Überlauf des ersten Zählers als Taktsignal für den zweiten Zähler zu nutzen und den ersten mit der Taktfrequenz zu versorgen. Dies erwies sich als korrekt und im nachhinein auch einleuchtend. Manchmal dauert es eben länger.


    Auf dem Steckbrett habe ich einen Zähler aufgebaut, der gut funktioniert. Diese Schaltung wird sechs bzw. zwölf mal aufgebaut. Pro Röhre zwei Zähler, um den "Slotmaschinen-Effekt" zu implementieren. Darauf kommt dann auch gleich die Ansteuerung für die jeweilige Röhre.


    Derzeitiger Stand der Uhr.


    Der Ringzähler funktioniert. Hier in Grundstellung.

  • So. Habe mich mit neuem Lötzinn eingedeckt. Jetzt kann ich weiter an der Uhr basteln. Nächster geplanter Schritt ist der Aufbau der ersten Zählstufe, also die Sekunden. Dazu werden zwei Zähler benötigt.

    Ich habe mir auch Gedanken zur Umschaltung gemacht und ich denke, ich habe eine passable Lösung gefunden.

    Auch das automatische Abschalten ist gelöst. Ein RS-Flipflop bekommt zu einer bestimmten Uhrzeit ein SET-Signal (Anzeige ein) und später ein RESET-Signal (Anzeige aus). Das sind im Prinzip zwei kleine BC546 und und ein größerer Feldeffekttransistor als Schalter. Also kein großer Aufwand.

    „Ich bin nicht nachtragend, aber ich vergesse nichts.“

  • Update:

    Ich bin damit beschäftigt, die Ansteuerung für die sechs Röhren aufzubauen.

    Es werden insgesamt sieben Zähler gebraucht. Dazu kommt ein kleines "Umschaltwerk", mit dem ich quasi von der Uhrzeit auf den letzten Zähler umschalten kann, damit stündlich alle Ziffern der Röhren hintereinander durchgeschalten werden können. Dazu läuft einfach ein Schieberegister an, das mit "1000000000" initialisiert wird. Mit jedem Taktsignal rückt die 1 eine Stelle weiter und somit leuchtet eben immer eine andere Ziffer auf. Der Einfachheit halber werden bei dem Effekt alle Röhren gleichzeitig angesteuert. Der "Schalter" dazu wird ein einfaches Flipflop sein, da die volle Stunde ja quasi genau 1 Sekunde dauert (also z.B. 12:00:00 Uhr) und der Durchlauf etwas langsamer sein soll (dazu habe ich die drei Abgriffe für die Taktfrequenzen).

    Ist der Vorgang beendet, so soll das Flipflop wieder zurückschalten und die Werte der Uhr werden wieder angezeigt.

    Das ist ebenfalls recht einfach zu lösen. Wenn jede Ziffer der Röhre mit zwei UND-Gliedern verODERt ist, dann kann man zwischen beiden Signalen hin und herschalten.

    Mit dieser Vorgehensweise spare ich mir den Aufbau von ursprünglich 12 geplanten Zählern und kann die Gesamtanzahl auf sieben verringern.


    Hier sind die Schaltungen, die ich für die Zähler erprobt habe:

    Das D-Flipflop bildet die Basis für die Ringzähler. Es besteht vereinfacht aus einem normalen SR-Flipflop, welches einen Negator am Eingang besitzt, damit der Zustand !Q = 1 und Q = 1 (Verbotener Zustand) nicht auftreten kann. Es ist taktgesteuert, das heißt, es ändert seinen Zustand nur, wenn das Taktsignal passend dazu ist.

    Das hat den Vorteil, daß Überträge, z.B. bei vollen Minuten auf Stunden zeitgleich mit dem Taktsignal passieren, also die Schaltverzögerung (die immer auftritt) vernachlässigbar ist. Für spezielle Zwecke sind Setz- und Rücksetz-Eingang separat ausgeführt. Der Kondensator an T2 verzögert das Schalten des Transistors etwas und schafft somit die Zeit, das T1 schalten kann. Damit ist ein stabiler Ausgangszustand erreicht. Flipflops haben beim Einschalten einen zufälligen Zustand, der damit vermieden wird. Darum führt z.B. ein Computer beim Start immer einen Reset durch.


    Der Zähler besteht aus 10 hintereinander geschalteten D-Flipflops (hier nur drei dargestellt), wobei der Ausgang "Q" immer auf den Eingang "D" des nächsten Flipflops geht und der Ausgang des letzten Flipflops auf "D" des ersten Flipflops geht.

    Initialisiert man diese Anordnung mit "1000000000", so dreht sich die 1 mit dem Takt "im Kreis", daher der Name "Ringzähler".

    Der Übertrag auf den nächsten Zähler erfolgt mit dem negierten Ausgang !Q ("Q-Nicht") als Taktsignal. Warum der negierte Wert? Ganz einfach: Der Zähler würde beim "Q"-Ausgang genau dann schalten, wenn also eine "9" angezeigt werden soll. Auf die 28 würde also z.B. die 39 folgen. Daher der negierte Wert um sicherzustellen, daß erst beim Rücksetzen der Übertrag erfolgt.


    Mit dieser kleinen Schaltung erzeuge ich exakt einen Impuls, der gerade ausreicht, um jeweils das erste D-Flipflop eines Zähler auf 1 zu setzen. Damit schaffe ich die Ausgangssituation. Per Taster über den kleinen Kondensator lässt sich die Uhr damit auch bei Bedarf auf 00:00:00 zurücksetzen. (erstes Flipflop = 0, zehntes Flipflop = 9)



    Dies ist ein Monoflop. Es besitzt einen stabilen und einen instabilen Zustand. Es kehrt immer wieder selbstständig nach einer gewissen, festlegbaren Zeit in seinen Ausgangszustand zurück. Diese Schaltung eignet sich hervorragend, um einen Taster zu entprellen und ein Gedrückthalten des Tasters zu vermeiden. Meine finale Version soll einen Impuls mit einer Dauer von etwa 100 ms liefern. Das sollte absolut prellfreie Taster liefern, denn das Monoflop ändert seinen Zustand beim ersten Kontakt des Schalters und es ist ihm egal, ob durch das Prellen nach 1 µs ein weiterer Impuls kommt, oder nicht.

  • -> Uhrzeit


    :topmodel:

    TUSL2-C, PIII-S 1,4GHz, 512MB, Voodoo3 3000 AGP, SB Live!
    TUSL2-C, PIII-S 1,4GHz, 512MB, Voodoo3 3000 AGP, SB Live!
    CUSL2-C, PIII 933MHz, 512MB, Millennium II AGP 4MB, 2x Monster II 12MB, SB Live!
    CUSL2-C, PIII 933MHz, 512MB, Millennium II AGP 4MB, 2x 3D Blaster Voodoo² 12MB, SB Live!
    P3B-F, PIII 800MHz, 512MB, G400 Max 32MB AGP, 2x Monster II 12MB, SB AWE64 Gold
    P2B-F, PIII 600MHz, 512MB, G200 8+8MB AGP, 2x Monster II 8MB, SB 32 PnP

  • Kannst du die Atomuhr, von der diese Zeit stammt auch selber konstruieren, falls nötig? ;) Klingt der technischen Beschreibung nach doch noch ein klein wenig schwieriger als das, was CryptonNite da baut...

    1-6000-banner-88x31-jpg

    Stolzer Besitzer eines 3dfx Voodoo5 6000 AGP Prototypen:

    • 3dfx Voodoo5 6000 AGP HiNT Rev.A-3700 (defekt)

    [//wp.xin.at] - No RISC, no fun!

    QotY: Girls Love, BEST Love; 2018 - Lo and behold, for it is the third Coming; The third great Year of Yuri, citric as it may be! Edit: 2019 wasn't too bad either...

  • Die durch den oben gezeigten Link angezeigte Zeit stimmt sowieso nicht mit der Atomuhr überein, da Daten gesendet (Laufzeitverzögerung), berechnet (das kostet auch Zeit) und angezeigt (Bildaufbau) werden müssen. Außerdem ist der Taktgeber eines PCs auch nicht sonderlich hochwertig. Somit KANN diese Uhr NICHT genau sein und die Webseite ist eine LÜGE.

    „Ich bin nicht nachtragend, aber ich vergesse nichts.“

  • Wie theatralisch! ;)


    Najo, wenn's per NTP synchronisieren (was der Standard schlechthin ist), dann müßte der Fehler von Uhr zum Client unter 100ms liegen. Die Frage ist wie schnell der Webserver die Systemzeit dann ausgelesen und am Webclient angezeigt bekommt. Das macht wohl dann den größeren Teil der Abweichung aus...


    Genaugenommen kann keine Uhr wirklich genau sein. Selbst eine Primäruhr unterliegt einer gewissen Unsicherheit und damit Ungenauigkeit. Wennst dann in 500 Millarden Jahren auf die Uhr schaust, dann geht die auch schon ein paar Sekunden falsch. So gesehen sind Uhren generell eine LÜGE, und was du da baust hintergeht die Menschheit! :spitze:

    1-6000-banner-88x31-jpg

    Stolzer Besitzer eines 3dfx Voodoo5 6000 AGP Prototypen:

    • 3dfx Voodoo5 6000 AGP HiNT Rev.A-3700 (defekt)

    [//wp.xin.at] - No RISC, no fun!

    QotY: Girls Love, BEST Love; 2018 - Lo and behold, for it is the third Coming; The third great Year of Yuri, citric as it may be! Edit: 2019 wasn't too bad either...

  • Man kann Uhren bauen, die in 5 Milliarden Jahren um 1 Sekunde falsch gehen. Nur ist die Sekunde dann nicht mehr wichtig.:topmodel:

    Übrigens sind 100 Millisekunden eine Ewigkeit. Mit so einer Abweichung würden viele Dinge nicht funktionieren.

    Oh, und wenn man eine Uhr bewegt, geht sie langsamer. Das gilt für alle periodischen Vorgänge.:spitze:

    „Ich bin nicht nachtragend, aber ich vergesse nichts.“

  • Najo, im LAN hast typischerweise Synchronisierungsgenauigkeiten im Nanosekundenbereich. NTP ist schon kein Blödsinn. Über's Internet isses halt etwas schwieriger... Mit einem Webserver der das dann einem Client serviert noch viel mehr... Aber das ist eh klar.


    Ist halt auch jedem wurscht. Wenn meine Armbanduhr nach 3 Wochen Laufzeit um 1 Minute falsch geht, ärgert mich das zwar ein wenig, aber für'n Alltag ist's komplett egal.


    Und darum geht's ja in diesem Thread weitestgehend sowieso nicht? Mich würde allerdings ein zu deinem Projekt Gleichartiges interessieren, nur mit einer mechanischen Uhr, statt einer elektronischen. Rein aus Neugierde...

    1-6000-banner-88x31-jpg

    Stolzer Besitzer eines 3dfx Voodoo5 6000 AGP Prototypen:

    • 3dfx Voodoo5 6000 AGP HiNT Rev.A-3700 (defekt)

    [//wp.xin.at] - No RISC, no fun!

    QotY: Girls Love, BEST Love; 2018 - Lo and behold, for it is the third Coming; The third great Year of Yuri, citric as it may be! Edit: 2019 wasn't too bad either...

  • Diese Aufforderung ist selbstverständlich völlig verblendet. Genausogut könntest du einen armen Straßenfeger mit einem IQ von 75 dazu auffordern, einen modernen Mikroprozessor zu entwickeln, oder die Wellengleichung zu lösen (oder noch besser: sie selbst zu entdecken). Der wird nicht weit kommen, und genau so verhält es sich auch hier.


    Manche Menschen werden manche Dinge einfach nicht schaffen. Man sollte nur ungefähr abschätzen können, was man entwickeln kann, und was nicht, damit man sich nicht in ein für einen selbst unlösbares Problem versteigt...


    Ich würde es nur interessant finden, so ein Projekt wachsen zu sehen, das ist alles.


    Deinem kann ich leider nicht einmal im Ansatz folgen, bei einer mechanischen Uhr wäre das vielleicht noch ein klein wenig machbarer, weil die Vorgänge etwas leichter vorstellbar wären..

    1-6000-banner-88x31-jpg

    Stolzer Besitzer eines 3dfx Voodoo5 6000 AGP Prototypen:

    • 3dfx Voodoo5 6000 AGP HiNT Rev.A-3700 (defekt)

    [//wp.xin.at] - No RISC, no fun!

    QotY: Girls Love, BEST Love; 2018 - Lo and behold, for it is the third Coming; The third great Year of Yuri, citric as it may be! Edit: 2019 wasn't too bad either...

  • Nicht quatschen, machen! Man lernt durch Erfahrung und Ausprobieren. Wenn du Grobmotoriker bist, dann wähle einen Maßstab (das schreibt man heute laut Duden mit drei "s"), der dir angemessen ist. Eine Wasseruhr ist ja z.B. auch mechanisch;) Na ja, so unähnlich ist eine mechanische Uhr einer elektronischen Uhr gar nicht. Beide sind plump gesagt Zählmaschinen.


    Ich habe heute begonnen, den Zähler für die Sekunden zu bauen. Verwendet werden die genannten D-Flipflops. WIe schon mal gesagt, werde ich jeder Funktionsgruppe eine Kontroll-Lumi verpassen. Damit kann ich gut deren Funktion prüfen. Auf diese Rasterplatine kommen jetzt 10 Flipflops drauf.

    Von Backfire erhielt ich nen großen Beutel mit grünen Lumis, die werde ich wohl für die 10er Sekunden nehmen und so abwechselnd arbeiten.

  • Hm. Meine Zeit ist begrenzt. Ich nutze sie lieber für Dinge, die mir Spaß machen. So wie du es auch tust, so nehme ich Mal an.


    Das Aneignen der nötigen Fertigkeiten und der Bau einer Uhr würden mir absolut keine Freude bereiten. Mir wäre nur leid um die viele Zeit, die ich (aus meiner Sicht dann) besser würde investiert haben können. "Besser" nicht im Sinne von "produktiver", sondern im Sinne von "spaßiger".


    Ich weigere mich so weit es nur geht in meiner Freizeit etwas zu tun, das mir nur Ärger und Frust bereitet. Freude an der Fertigstellung kannst ja auch nur dann haben, wenn du schon Freude am Bau hast. Zumindest bei mir ist das so.


    Dir dabei zuzuschauen, und gelegentlich blöd von der Seite dazuzuquatschen ist zeitlich vergleichsweise günstig zu machen. ;)

    1-6000-banner-88x31-jpg

    Stolzer Besitzer eines 3dfx Voodoo5 6000 AGP Prototypen:

    • 3dfx Voodoo5 6000 AGP HiNT Rev.A-3700 (defekt)

    [//wp.xin.at] - No RISC, no fun!

    QotY: Girls Love, BEST Love; 2018 - Lo and behold, for it is the third Coming; The third great Year of Yuri, citric as it may be! Edit: 2019 wasn't too bad either...

  • Der erste Zähler ist fertiggestellt und funktionstüchtig. Ich überlege gerade noch, ob ich das Schaltwerk für die Röhre gleich noch integrieren soll. Ist ja noch nen bisschen Platz da.


    Ganz oben links neben der Klemme ist die kleine Schaltung, die das Startbit erzeugt. Sie ist tatsächlich nur direkt nach dem Einschalten aktiv und sonst nie. Sie steuert direkt das Flipflop daneben über den S-Eingang an. Damit ist festgelegt, daß dieses Flipflop beim Start immer aktiv ist, also die Lumi leuchtet.

    Das Bit wandert nun im Uhrzeigersinn im Kreis herum.

    Damit es das auch tut, wenn die Kontrolleuchte am Taktgeber gerade leuchtet, ist am Takteingang (die Klemme mittig links) ein Negator verbaut, der das Signal einfach umdreht. Es funktioniert zwar auch so, aber hey - man darf ja noch Ansprüche haben :D

    „Ich bin nicht nachtragend, aber ich vergesse nichts.“



  • Der Zähler in einem Testaufbau. Ein kleines Netzteil liefert 5 V und 170 V. Ich habe es mal vor vielen Jahren genau für einen solchen Zweck gebaut.

    Scheinbar taucht trotz der Vorkehrungen in seltenen Fällen ein "zweites Bit" zum Start auf, also die Röhre zeigt 0 und 1 gleichzeitig an. Da er aber nach einem Aus- und Einschalten verschwunden ist, stört mich das Problem nicht weiter. Einfach aus- und wieder einschalten und der Fehler ist weg.

    Weil ich mehrere Taktfrequenzen zur Verfügung habe, kann ich den Aufbau auch "übertakten". 32 Hz habe ich mal angelegt und das funktioniert sogar, auch wenn ich dann nichts mehr ablesen kann.