Większość czytelników EP na pewno zna lampy Nixie. Na łamach magazynu publikowaliśmy wiele projektów zawierających te interesujące komponenty. Dla tych, którzy ich nie znają, należy tylko wspomnieć – lampy Nixie to urządzenia elektronowe, służące do wyświetlania liczb i innych znaków za pomocą wyładowania jarzeniowego. Pochodzą z lat 50. XX wieku i nie są już używane komercyjnie, jednak hobbyści chętnie stosują je w swoich projektach. W artykule wyjaśnimy jak zasilać komponenty tego typu i jak zaświecać poszczególne cyfry lampy. Dowiemy się także, w jaki sposób wysterować jedną lub kilka lamp Nixie z płytki Arduino, aby w ten sposób połączyć nowoczesne sterowanie z niepowtarzalnym efektem wyświetlania jarzeniowego.
Budowa lampy Nixie
Lampa neonowa to prosty rodzaj lampy wyładowczej, która składa się z dwóch elektrod – anody i katody. Przepływ prądu pomiędzy nimi, na skutek wyładowania jarzeniowego, jonizuje gaz znajdujący się pomiędzy tymi elektrodami i wywołuje emisję światła. Gazem tym na ogół jest neon (stąd nazwa tego rodzaju lamp). Lampa Nixie jest podobna do lampy neonowej ale ma wiele, różnie ukształtowanych elektrod. Zasada działania jest dokładnie taka sama – wysokie napięcie podawane jest na anodę i katodę, a wyładowanie jarzeniowe rozświetla wnętrze lampy wokół katody. Różnica jest taka, że lampa tego rodzaju ma więcej niż jedną katodę – po jednej katodzie na każdy wyświetlany przez lampę znak.
Istnieje duża różnorodność lamp Nixie, dostępne są w najróżniejszych kształtach i formach. Na ogół maja do 10 katod, do wyświetlania cyfr od 0 do 9. Tak jest w przypadku lampy typu IN-1, która posłuży jako przykład w tym artykule (fotografia tytułowa). Jest ona krótką, przysadzistą lampą elektronową z cyframi widocznymi od góry, czyli po przeciwnej stronie do wyprowadzeń złącza, które wtyka się do odpowiedniego gniazda. Taki kształt pozwala na konstrukcję relatywnie kompaktowych układów wyświetlaczy. Lampa Nixie IN-1 ma 11 wyprowadzeń: 1...10 są katodami, a numer wyprowadzenia odpowiada cyfrze, która zapali się, jeśli przez ten styk przepływa prąd (z jednym wyjątkiem – pin 10 jest połączony z cyfrą 0). Wyprowadzenie 11 jest wspólną anodą dla wszystkich katod i powinno być na stałe podłączone do zasilania przez odpowiedni opornik ograniczający prąd. Na rysunku 1 został pokazany schemat tej lampy, wraz z opisem wyprowadzeń.
Na rynku nadal dostępnych jest wiele lamp Nixie. Wiele z nich to tzw. leżaki magazynowe, a pozostałe to lampy używane. Do znacznej większości dostępna jest dokumentacja, często w języku rosyjskim, jeśli mamy do czynienia z lampami radzieckimi (jak w tym przypadku).
Zasilanie lampy Nixie
Lampa Nixie typu IN-1 potrzebuje do działania napięcie anodowe równe około 180 V. W zaprezentowanym układzie jest ono generowane przez przetwornicę impulsową typu boost, bazującą na układzie NCH6100HV. Pozwala ona na uzyskanie napięcia zasilania anody lampy, równego 180 V, z napięcia wejściowego 12 V, którym zasilany jest układ. Napięcie wyjściowe trafia na anodę lampy Nixie przez opornik, ograniczający prąd. W przypadku tej lampy autor zastosował z powodzeniem rezystor 20 kΩ.
Na rysunku 2 został pokazany schemat, jak podłączyć przetwornicę boost do lampy Nixie, aby zaświecić pojedynczą cyfrę. Cyfry załącza się dołączając wyprowadzenia katod do masy. Po podłączeniu masy tak, jak pokazano na ilustracji, powinna zaświecić się cyfra 2 (ponieważ do masy dołączono wyprowadzenie nr 2). Chcąc zapalić dowolną inną cyfrę należy podłączyć masę do innego pinu. Na fotografii 1 pokazano zaświeconą cyfrę 6 (podłączone wyprowadzenie nr 6). Jeśli masa podłączona zostanie do większej liczby pinów, zaświeci się wiele liczb.
Sterowanie lampą Nixie z pomocą scalonego kontrolera
Za pomocą modułu takiego jak Arduino Nano można sterować, która cyfra w lampie Nixie będzie załączona. Teoretycznie można to zrobić za pomocą 10 wyprowadzeń cyfrowych płytki Arduino, podłączonych do każdej katody lampy Nixie. Podświetlenie cyfr następowałoby poprzez podanie sygnału LOW na odpowiednie wyprowadzenie. Jednak wtedy tracimy 10 linii cyfrowych na kontrolowanie tylko jednej lampy. Dodatkowo, warunki pracy mogą uszkodzić Arduino – wysokie napięcie i relatywnie duże prądy mogą uszkodzić wyprowadzenia cyfrowe.
Doskonałym rozwiązaniem okazuje się układ scalony taki jak K155ID1. Pozwala on na sterowanie lampą Nixie za pomocą zaledwie 4 pinów GPIO z Arduino. K155I1 ma 16 wyprowadzeń – dziesięć z nich to wyjścia z aktywną masą, każde dla jednej z 10 katod wyświetlacza. Pozostałe wyprowadzenia to zasilanie i masa, które należy podłączyć do 5 V i GND modułu Arduino, oraz cztery wyprowadzenia do cyfrowego sterowania układem. Schemat podłączenia takiego kontrolera pokazano na schemacie z rysunku 3. Poprzez binarną reprezentację cyfry, którą chcemy załączyć, sterujemy jednym z 10 wyjść z aktywnym stanem – masą.
Na rysunku 4 zostały pokazane wszystkie sekwencje wejściowe i odpowiadające im stany wyjść. Dzięki temu sterowanie jest bardzo proste, a dodatkowo system jest zabezpieczony przed podłączeniem kilku katod jednocześnie.
Oprogramowanie w Arduino IDE
Ostatnim krokiem, przed uruchomieniem układu z rysunku 3 jest napisanie prostego kodu dla płytki Arduino. Dla uproszczenia prezentujemy prosty program, który przełącza wszystkie 10 cyfr po kolei w jednosekundowych odstępach czasu, ale kod ten może być zintegrowany z dowolnym innym programem.
W pierwszej kolejności musimy zadeklarować wyprowadzenia, które są podłączone do wejść układu K155ID1. Nie jest to konieczne, jednak istotnie uprości pisanie dalszej części programu. Następnie należy zadeklarować tablicę digits[10][4], która powiąże cyfry od 0 do 10 z kodami binarnymi. Następnie musimy skonfigurować w sekcji setup() wybrane wyprowadzenia jako wyjścia cyfrowe. Dzięki temu, że zdefiniowaliśmy je wcześniej, możemy posługiwać się ich definicjami – po prostu A...D, niezależnie od tego, jaki to pin.
W przypadku zmiany fizycznych pinów w systemie, wystarczy zmienić definicję i kod będzie poprawnie działał.
#define A 12
#define B 11
#define C 10
#define D 9
int digits [10][4] {
{0,0,0,0},
{0,0,0,1},
{0,0,1,0},
{0,0,1,1},
{0,1,0,0},
{0,1,0,1},
{0,1,1,0},
{0,1,1,1},
{1,0,0,0},
{1,0,0,1}};
void setup() {
pinMode(A, OUTPUT);
pinMode(B, OUTPUT);
pinMode(C, OUTPUT);
pinMode(D, OUTPUT);
}
void loop() {
for(int i=0;i<10;i++) {
digitalWrite(A,digits[i][3]);
digitalWrite(B,digits[i][2]);
digitalWrite(C,digits[i][1]);
digitalWrite(D,digits[i][0]);
delay(1000);
}
}
W ostatnim kroku w pętli głównej programu loop() dopisujemy pętlę for, która inkrementuje zmienną i co jeden i ustawia na wyjściach GPIO zawartość tabeli digits, w której znajdują się wartości kodów binarnych, odpowiadające poszczególnym cyfrom. Pomiędzy poszczególnymi iteracjami pętli układ zatrzymuje się na 1000 ms – polecenie delay(1000). Pełny kod został pokazany na listingu 1, jego efektem jest zaświecanie kolejnych cyfr co 1 s.
Podsumowanie
Zaprezentowany prosty system, pozwala na zintegrowanie wyświetlacza z lampą (lub lampach) Nixie z dowolnym projektem Arduino i nie tylko. Dzięki temu możemy zbudować dowolne urządzenie zachowując retro-stylistykę, niezależnie, jak nowoczesne będzie wnętrze systemu. Pomysły są nieograniczone, od prostego zegara czy stopera po wyświetlacz kursu Bitcoina, spięty z serwisami finansowymi, czy też termometr zintegrowany z naszym domowym systemem automatyki.
Nikodem Czechowski, EP
Źródło projektu: https://bit.ly/3Dwd5Zx