Electronika
Nixie klok: aansturen van de buizen
TechTalk
De bedoeling is een digitale klok met nixie aanduiders te bouwen uit afbraak componenten. We hebben reeds een schakelende voeding aangepast om de nodige spanningen te leveren (zowel laag- als hoogspanning), hier gaan we de nixie buizen aansturen.
-

-

Het aanpassen van een schakelende voeding wordt op deze pagina besproken.

Op de meeste electronica-websites wordt aangegeven dat men een 74141 moet gebruiken om een nixie buis aan te sturen, maar dit is niet waar. De 74141 zal wel voldoen in de meeste gevallen, maar bij bepaalde combinaties (driver IC en nixie buis) blijven de cijfers die gedoofd moeten zijn lichtjes oplichten.

Het gebruik van de 74141 en de alternatieven op de 74141 komen hier aan bod.

De 74141 (of de CD4028BE) heeft een 4 bits BCD kode nodig als ingang (binary coded decimal). Als een ongeldige kode gestuurd wordt (bijvoorbeeld IIII), dan wordt de uitlezing onderdrukt (als je gelukt hebt). Dit kan men gebruiken om een getal te doen knipperen.

Om 7 6 BCD kodes te leveren hebben we 23 20 communicatielijnen met de processor nodig. Dit is doenbaar met bepaalde processoren, maar men moet niet vergeten dat men een aantal lijnen (die als input of output geschakeld kunnen worden) nodig heeft voor de bediening (3 lijnen) en om een real time klok aan te sluiten (2 lijnen). De Arduino die we willen gebruiken heeft echt te weinig lijnen.

De real time klok heeft een hogere betrouwbaarheid dan de ingebouwde klok van de processor en dankzij een batterijtje van 3V blijft de klok lopen bij stroomonderbreking. De kristalfrekwentie in al deze klokken bedraagt 32.768kHz die gemakkelijk omlaag geconvertreerd kan worden.

We gebruiken 3 latches van het type CD4099BE als 8 bits geheugen om het aantal communicatielijnen tot 7 te beperken.

  • Met de W lijn (Write) kunnen we het IC selecteren (dit correspondeert met een CE of Chip Enable).
  • De datalijn die naar alle IC's loopt geeft aan of we een I of een O moeten schrijven.
  • De drie adreslijnen geven aan welke bit van het IC we willen veranderen.
De programmatie is redelijk complex want we gebruiken een vreemde adressering. Om de seconden te wijzigen (eenheden) moet het derde IC geselecteerd worden met de corresponderende W lijn. Dan moeten we de BCD kode aanmaken (4 bits met laagste waarde). We gaan achtereenvolgens de 4 bits schrijven door de BCD kode van de bits op de "adresbus" te zetten, de juiste waarde op de "databus" zetten, en dan de bit schrijven met de write lijn. (de databus is overigens maar één bit breed...)

Laten we als voorbeeld nemen dat we een "5" willen schrijven op de eenheden positie van de seconden. De 74141 driver moet een kode 0101 op zijn lijnen krijgen:

  1. We zetten de waarde 000 op de adresbus
  2. We zetten een 1 op de databus
  3. We wachten 1µs (blijkt uiteindelijk niet nodig te zijn)
  4. We geven een schrijfopdracht door de W-lijn laag te maken gedurende 1µs.
  5. We zetten de lijn W opnieuw hoog en wachten 1µs (het wachten is hier ook niet nodig in de praktijk)
  6. We herhalen de operatie met adresbus 001 (data = 0)
  7. We herhalen de operatie met adresbus 010 (data = 1)
  8. We herhalen de operatie met adresbus 011 (data = 0)
Om het cijfer 4 (BCD 0100) te doen oplichten (tientallen seconden) moeten we het volgende doen:
  1. Adres 100, een 0 schrijven
  2. Adres 101, een 0 schrijven
  3. Adres 110, een 1 schrijven
Het adres (BCD code) 111 wordt niet gebruikt voor de tientallen seconden, want die lopen maar van 0 tot 5. Dit adres kunnen we bijvoorbeeld gebruiken om de cijfer te doven, want er wordt geen cathode aangestuurd met deze kode. Hetzelfde geldt voor de BCD kodes boven 1001 voor de eenheden: de 74141 schakelt geen uitgang als hij dergelijke kodes ontvangt.

We willen ook de dag van de week aangeven, maar we hebben een latch te kort. Gelukkig hebben we uitgangen van iedere 4099 over: de tientallen seconden en minuten hebben voldoende aan 3 bits en voor de tientallen uren hebben we genoeg met 2 bits. We hebben dus 4 lijnen gerecupereerd, waarvan we d'er 3 gebruiken om de dag van de week te coderen en één voor een alarm.

Uiteindelijk hebben we de dag van de week niet gebruikt, waardoor we met 6 buizen in plaats van 7 toekomen, maar de uitleg blijft erbij, voor het geval u een ontwerp zou willen maken met indicatie van de dag van de week.

Om een cijfer te doen knipperen (geselecteerd om te wijzigen), geeft men alternerend de kode van de cijfer en een ongeldige kode (dan wordt geen uitgangslijn geselecteerd en blijft de nixiebuis donker). Dit is ook mogelijk voor de dag van de week, waarbij men hier ook een ongebruikte kode heeft, namelijk 000.

Dit maakt de programmatie nogal complex, maar het is eenvoudiger een regel kode te wijzigen dan een IC te vervangen.

De IC's CD4099BE die we als latch gebruiken is gebouwd in CMOS technologie. CMOS verbruikt bijna geen stroom, maar is niet echt snel (zeker niet onder 5V). Om fouten te vermijden moet iedere schrijfopdracht gevolgd worden door een pauze van 1µs. Dit vormt in de praktijk geen probleem, want we moeten slechts 6 of 7 cijfers doorsturen.

De 74141 die we gebruiken om de nixie buizen aan te sturen heeft geen uitgangen in een logische volgorde 12345..., maar volledig door elkaar. Als je een flatcable gebruikt is het beter van de draden aan te sluiten in de volgorde van de pennetjes, om dan de correctie uit te voeren aan de kant van de buisvoetjes (die veel bredere contacten hebben).

Het vervolg: CMOS en TTL technologie door elkaar.

Links to relevant pages - Liens vers d'autres pages au contenu similaire - Links naar gelijkaardige pagina's