Hallo zusammen, ich stehe ein wenig auf dem Schlauch, da ich nicht so der Programmiercrack bin. Vielleicht könnt ihr mir einen kleinen Denkanstoß geben. Ich habe 6 Nixies, angesteuert über 2 BCD-Treiber (7414) und 3 Anoden (MPSA42+92 Combo). Ich nutze PORTB an einem Attiny4313 um die Treiber zu setzen. Nun versuche ich die Röhren zu multiplexen. Bisher habe ich nur mit einem Treiberbaustein gearbeitet in einem Testaufbau. Damit leuchten nur 3 Röhren. Der HV-Teil wird bisher noch über die allseits unbeliebte 555-Schaltung realisiert. Am tiny hängt ein C-MOS für den Sekundentakt und ein DCF-Modul. Ich multiplexe nach dem Muster Pause - H10 & S1 - Pause - H1 & S10 - Pause - M10 & M1, dazu nutze ich einen Timer-Interrupt, alle 100 µs (OCR1A = 1 MHz 1 Prescaler 10 kHz - 1). Während der Pausen sind die Anoden ausgeschaltet. Während den Anzeigezeiten schicke ich an PORTB einfach die Dezimalzahlen: PORTB = H10 | (S1 << 4). Während der Anzeigezeiten sind die Anoden für 1 ms durchgeschaltet. Realisiert habe ich das Ganze über ein Switch-Statement, dass die Timer-Interrupts zählt und entsprechend auslöst (erster Interrupt bei case 0 (Pause), H10 & S1 - Interrupt bei case 1, nächste Pause bei case 10, usw.). Ich nutze IN-2 Röhren, die ich vermutlich mit zu kleinem Anodenwiderstand betreibe (die Ziffer 1 wird nicht richtig angezeigt, stattdessen leuchtet der ganze Röhrenboden); der Widerstand ist 22k. Noch habe ich nur 3 Röhren ausprobiert. Ergebnis dieser Programmierung ist: ich habe die richtigen Zahlen aber auf allen 3 Röhren gleichzeitig. Versuche die Pausenzeiten zu erhöhen oder die Anodeneinschaltzeiten zu erhöhen, waren bisher nicht von Erfolg gekrönt. Ab 20 ms Gesamtzykluszeit fangen die Ziffern auch an zu Flackern. Was könnte ich falsch machen ? Habe so etwas noch nie programmiert. Ich danke Euch schon mal im Vorraus für hilfreiche Tipps. Gruß ent
Wie wäre es mit einem Schaltbild? Mir ist nämlich unklar, wie man mit einem 7414 Nixie Röhrensteuern kann. Die Spannungsfestigkeit dieses ICs ist doch recht niedrig.
entropie schrieb: > Was könnte ich falsch machen ? Du betreibst die Röhern multiplex. Das ist es, was Du falsch machen willst. Im Ernst: Die Röhren waren sicher nicht billig. Wenn Du sie lange leben lassen willst, betreibe sie statisch und ändere die Schaltung dahingehend. mfG Paul
Georg G. schrieb: > Mir ist nämlich unklar, wie man mit > einem 7414 Nixie Röhrensteuern kann. Sicher meint er 74141
Genau ich meine den 74141, den russischen Treiberbaustein. Die Hardwarekonfiguration funktioniert, die Uhr ist ein Nachbau. Natürlich kann ich im Aufbau etwas verdreht haben aber ich möchte erstmal die Multiplexansteuerung besser verstehen. Ich habe momentan kein Schaltbild hier aber die Anodenansteuerung erfolgt wie im obigen Bild. Als Basiswiderstand für den MPSA 42 habe ich 10 k genommen.
Hallo, das man Nixies besser nicht im Multiplex betreibt, wenn sie nciht speziell dafür vorgesehen sind, ist eine Frage der Lebensdauer und ausreichend im Netz diskutiert. Mein Bekannter hat auch eine Röhre in seinem Sammelsurium, der fehlt die '0', einfach defekt... Zum Multiplex in Deiner Scahltung: alle Anoden aus. Wert für die erste Stelle an den Decoder. Anode der ersten Stelle für x ms einschalten. Alle Anoden aus. Wert für die zweite Stelle an den Decoder Anode der ersten Stelle für x ms einschalten. usw. usw. über alle Stellen und dann wieder von vorn. Gruß aus Berlin Michael
Ok danke, das probiere ich heute nochmal aus. Bisher habe ich Die respektive Kathode immer parallel mit der respektiven Anode durchgeschaltet und nach Abschalten der Anode, die Cathode noch unverändert gelassen. Vielleicht liegt es daran. Danke schon mal.
Ich tippe hier auf einen Programmierfehler, kannst du dein Programm nicht mal zeigen? Was heisst 'die richtigen Zahlen aber auf allen 3 Röhren gleichzeitig' ? Sieht man mehrere Ziffern gleichzeitig in einer Röhre? Dann stimmt was mit der Anodenansteuerung nicht. Grundsätzlich solltes du es so machen: - alle Anoden aus - Kathoden für erstes Röhrenpaar ausgeben - erste Anode an - auf nächsten Interrupt warten - alle Anoden aus - Kathoden für zweites Röhrenpaar ausgeben - zweite Anode an - auf nächsten Interrupt warten - alle Anoden aus - Kathoden für drittes Röhrenpaar ausgeben - dritte Anode an - auf nächsten Interrupt warten und dann wieder von vorne. Nach dem Ausschalten der Anoden evtl. kurz warten, etwa 10µs, damit die Röhren wiklich aus sind, wenn die nächsten Kathoden angelegt werden. Gibt sonst leicht Geisterbilder. Grudsätzlich ist es besser Nixies nicht zu multiplexen, ich habe jedoch selbst drei 4-stellige Uhren mit ZM1042-Röhren seit mehreren Jahren problemlos am laufen. Multiplexfrequenz ist 1kHz, machst du das wirklich mit 10kHz (100µs Interrupt) ? Eine einstellige Uhr mit einer IN1 hat jedoch nicht lange funktioniert, da war die Röhre tot. Hier vermute ich jedoch eine zu hohe Anodenspannung als Ursache. Die lief hoch, wenn die Röhre dunkel war. Beim ersten Einschalten danach fliesst dann kurz ein zu hoher Anodenstrom. Ich denke, dass war der Grund für den Ausfall. Gruß Uwe
Hallo Uwe, ok danke, ich werde es mal Ausprobieren. Die Uhr läuft quasi bei 00:00:00 los und bei z.B. 00:02:13 sieht man in den rechten drei Röhren (habe die ersten drei nicht angeschlossen) die Zahlen 1,2,3 gleichzeitig dreimal in jeder Röhre. Also 1,2,3 wird in den letzten 3 Röhren gleichzeitig angezeigt. Bei 00:01:02 sieht man dann analog in den letzten 3 Röhren die Zahlen 0,1,2. Das man von den ersten drei Röhren, die nicht angeschlossen sind, nichts sieht, ist auch logisch, denn die laufen über den anderen Kathodentreiber, der nicht angeschlossen ist. Also denke ich auch es ist ein Programmfehler, die Zahlen werden nicht pro Röhre gemuxed, sondern in allen 3 gleichzeitig. Ich habe mein Programm gerade nicht hier aber es ist recht simpel. Im Interruptvektor steht: anode_cnt++; switch(anode_cnt){ case 0: PORTB = H10 | (S1 << 4); anode_cnt++; break; case 1: PORTD |= (1 << ANODE1); anode_cnt++; break; case 10: PORTD &= ~(1 << ANODE1); anode_cnt++; break; case 11: PORTD |= (1 << ANODE2); PORTB = H1 | (S10 << 4); anode_cnt++; break; case 21: Anode 2 aus case 22: Anode 3 an, PORTB = M10 | (M1 << 4); anode_cnt = 0; break; } Der Timer läuft mit 100 µs, nen Grund dafür gibt es nicht, ich habe wie gesagt keine Ahnung vom muxen. Der Timer läuft aber richtig, habe ihn per Serial Output mal gegen den externen 1Hz C-MOS laufen lassen, um die Sekundengenauigkeit des AVR zu testen. Das paßte alles. Vermute mal in meiner bisherigen Logik werden die Ziffern der Kathode durchgeschaltet, 100 µs warten, dann die Anode, 1ms warten, dann wird die Anode ausgeschaltet, 100µs warten und die nächsten Ziffern der Kathode sowie die nächste Anode wird eingeschaltet 1ms warten. Da könnte ich mir vorstellen, die 100µs switching time bringt der 74141 nicht sauber. Ich probier heute mal deinen Vorschlag aus Uwe, bei 1 kHz. Eine Frage habe ich noch, du nutzt keine blanking Intervalle in denen du bewußt für mehrere µs alle Röhren abschaltest. Davon las ich häufiger als Notwendigkeit um das "Ghosten" der Röhren zu vermeiden. Aber es funktioniert bei dir trotzdem ? Danke und Gruß ent
Ein Blanking-Intervall nutze ich, schrieb ich auch. Ich schalte dabei alle Anoden für ca 10µs aus, dann neue Werte an die Kathoden und die nächste Anode an. Danach bleiben Anoden und Kathoden unverändert bis zum nächsten Interrupt. Alle Kathoden ausschalten geht ja beim 74141 nicht wirklich. Wird bei dir anode_cnt++ zweimal im Interrupt aufgerufen, vor und in dem switch()? Dann überspringst du einige Fälle, wohl die, die die Anoden ausschalten... Vorschlag:
1 | anode_cnt++; |
2 | |
3 | switch(anode_cnt){ |
4 | case 0: PORTB = H10 | (S1 << 4); PORTD |= (1 << ANODE1); break; |
5 | case 9: PORTD &= ~(1 << ANODE1); break; |
6 | case 10: PORTB = H1 | (S10 << 4); PORTD |= (1 << ANODE2); break; |
7 | case 19: PORTD &= ~(1 << ANODE2); break; |
8 | case 20: PORTB = M10 | (M1 << 4); PORTD |= (1 << ANODE3); break; |
9 | case 29: PORTD &= ~(1 << ANODE3); anode_cnt=-1; break; |
10 | }
|
Gruß Uwe
Hallo Uwe, Danke für deine Rückmeldung. Stimmt zum blanking Intervall hast du was geschrieben. Habe gerade in meinen Code geschaut und da ist anode_cnt++ nicht doppelt, also habe ihn vorhin falsch abgetippt. Habe jetzt deinen Vorschlag getestet, jeweils im 10 und 1 kHz Bereich und es klappt nicht. Habe im Netz noch für 6 Röhren die Empfehlung 600 us Einschaltzeit und 2500 us Ausschaltzeit gefunden, geht auch nicht. Dauert der ganze Zyklus länger als 20 ms geht auch das Flackern los. Ich vermute mal es liegt dann an meinem experimentieraufbau, die Software müsste ja so stimmen. Hab euch das Chaos mal abfotografiert :). Ich werde am Wochenende nochmal die Verkabelung prüfen. Vielleicht liegt es auch am Anodenwiderstand und dass er zu klein ist mit 22k. Die Ziffer 1 geht ja auch nicht richtig. Gruß ent
H.Joachim S. schrieb: > Kann mal irgendeiner Steckbretter verbieten? Da müsstest du den unbeschäftigtsten EU-Parlamentarier deiner Wahl dazu bringen, einen entsprechende EU-Verordnung in die Wege zu leiten. ;-)
Michael U. schrieb: > das man Nixies besser nicht im Multiplex betreibt, Vollkommen richtig. Mit zweien kann man das noch machen, aber bei zu viel Strom fangen auch die internen Verbindungsdrähte an zu leuchten und werden durch Kathodenzerstäubung abgetragen. Auch können dann durch den hohen Spannungsabfall nicht angesteuerte Kathoden als Anoden wirken und mitleuchten. Michael U. schrieb: > Mein Bekannter hat auch eine Röhre in seinem Sammelsurium, der fehlt die > '0', einfach defekt... Solche Röhren kenne ich auch. Sie steckten in einem Meßgerät, dass über Jahrzehnte zu 999,9% der Zeit 24h am Tag und 365 Tage im Jahr "000" oder "001" anzeigte. Vielleicht ein Dutzend Mal pro Woche wurde dann Messungen mit einer Dauer von jeweils 10s gemacht, bei denen die Nixies auch etwas anderes anzeigen durften. Durch den kontinuierlichen Ionenbeschuss wurde die 0 soweit abgetragen, bis diese Elektrode nur noch ein hauchdünnes Drähtchen war.
:
Bearbeitet durch User
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.