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
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:
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.