Spisu treści:

Zegar słupkowy Nixie: 6 kroków (ze zdjęciami)
Zegar słupkowy Nixie: 6 kroków (ze zdjęciami)

Wideo: Zegar słupkowy Nixie: 6 kroków (ze zdjęciami)

Wideo: Zegar słupkowy Nixie: 6 kroków (ze zdjęciami)
Wideo: P3270045 ZEGAR NIXIE 2024, Lipiec
Anonim
Zegar bargrafowy Nixie
Zegar bargrafowy Nixie
Zegar bargrafowy Nixie
Zegar bargrafowy Nixie

Edytuj 9.11.17Z pomocą Kickstartera wydałem zestaw do tego zestawu zegarowego! Zawiera płytkę sterownika i 2 lampy Nixie IN-9. Wszystko, co musisz dodać, to własne Arduino/Raspberry Pi/inne. Zestaw można znaleźć, ale klikając w ten link!

Widziałem więc wiele zegarów Nixie online i pomyślałem, że wyglądają świetnie, jednak nie chciałem wydawać ponad 100 USD na zegar, który nawet nie zawiera lamp! Tak więc przy odrobinie wiedzy o elektronice polowałem wokół różnych lamp Nixie i obwody. Chciałem zrobić coś nieco innego niż szeroka gama ogólnie dość podobnie wyglądających zegarów nixie. Ostatecznie zdecydowałem się na lampki bargrafowe Nixie IN-9. Są to długie, cienkie rurki, a wysokość świecącej plazmy zależy od prądu płynącego przez rurki. Rura po lewej stronie jest w odstępach godzinowych, a rura po prawej w minutach. Mają tylko dwa przewody, dzięki czemu budowanie obwodu jest prostsze. W tym projekcie jest tuba godzinowa i minutowa, a wysokość plazmy w każdej tubie reprezentuje aktualny czas. Czas utrzymywany jest za pomocą mikrokontrolera Adafruit Trinket oraz zegara czasu rzeczywistego (RTC).

Krok 1: Montaż części

Montaż części
Montaż części

Są dwie sekcje, po pierwsze elektronika, a po drugie montaż i wykończenie. Wymagane komponenty elektroniczne to: Adafruit Trinket 5V - 7,95 USD (www.adafruit.com/products/1501) Adafruit RTC - 9 USD (www.adafruit.com/products/264) 2x bargraf Nixie IN-9 ~ 3 USD za tubę na eBayu 1x Zasilanie Nixie 140V ~ 12 USD na eBayu 4x 47 uF kondensatory elektrolityczne 4x rezystory 3,9 kOhm 2x potencjometr 1 kOhm 2x Tranzystor MJE340 NPN wysokie napięcie ~ 1 USD każdy 1x LM7805 5v regulator ~ 1 USD 1x gniazdo 2,1 mm ~ 1 USD 1x pudełko projektowe z płytką drukowaną ~ 5 USD 1x Zasilacz 12V DC (znalazłem stary z jakiegoś dawno zapomnianego gadżetu) Lut, przewód przyłączeniowy itp. Montaż: Postanowiłem zamontować elektronikę w małym czarnym plastikowym pudełku projektowym, a następnie zamontować lampy na antycznym mechanizmie zegarowym. Do oznaczenia godziny i minut użyłem drutu miedzianego owiniętego wokół rurek. Elementy montażowe: antyczny mechanizm zegarowy - 10 USD Drut miedziany eBay - 3 USD Pistolet do klejenia na gorąco w serwisie eBay

Krok 2: Obwód

Okrążenie
Okrążenie
Okrążenie
Okrążenie
Okrążenie
Okrążenie
Okrążenie
Okrążenie

Pierwszym krokiem jest zbudowanie zasilacza Nixie. To był ładny mały zestaw z eBaya, zawierający małą płytkę drukowaną i wymagał tylko przylutowania komponentów do płyty. Ta konkretna podaż jest zmienna w zakresie 110-180 V, kontrolowana za pomocą małego garnka na planszy. Za pomocą małego śrubokręta ustaw wyjście na ~140v. Zanim poszedłem na całość, chciałem przetestować moje lampy nixie, w tym celu zbudowałem prosty obwód testowy, używając jednej lampy, tranzystora i potencjometru 10k, który leżałem. Jak widać na pierwszym rysunku, zasilanie 140V jest przymocowane do anody lampy (prawa noga). Katoda (lewa noga) jest następnie połączona z nogą kolektora tranzystora MJE340. Zasilanie 5V jest podłączone do potencjometru 10k dzielącego się z masą na podstawę tranzystora. Na koniec emiter tranzystorowy jest podłączony przez rezystor ograniczający prąd o wartości 300 omów do masy. Jeśli nie znasz się na tranzystorach i elektronice, nie ma to większego znaczenia, po prostu podłącz go i zmień wysokość plazmy za pomocą pokrętła! Gdy to zadziała, możemy przyjrzeć się zrobieniu naszego zegara. Pełny obwód zegara można zobaczyć na drugim schemacie obwodu. Po kilku poszukiwaniach znalazłem idealny samouczek na stronie Adafruit Learn, który robi prawie dokładnie to, co chciałem zrobić. Samouczek można znaleźć tutaj: https://learn.adafruit.com/trinket-powered-analog-m… Ten samouczek wykorzystuje kontroler Trinket i RTC do sterowania dwoma analogowymi miernikami wzmacniacza. Wykorzystanie modulacji szerokości impulsu (PWM) do kontrolowania wychylenia igły. Cewka amperomierza uśrednia PWM na efektywny sygnał prądu stałego. Jeśli jednak użyjemy PWM bezpośrednio do napędzania lamp, to modulacja wysokiej częstotliwości oznacza, że pasek plazmy nie będzie „zaciśnięty” na podstawie lampy i będziesz miał drążek wiszący. Aby tego uniknąć, uśredniłem PWM za pomocą filtra dolnoprzepustowego z długą stałą czasową, aby uzyskać sygnał prawie DC. Ma częstotliwość odcięcia 0,8 Hz, jest to w porządku, ponieważ aktualizujemy czas zegara tylko co 5 sekund. Dodatkowo, ponieważ bargrafy mają skończoną żywotność i mogą wymagać wymiany, a nie każda rura jest dokładnie taka sama, załączyłem potencjometr 1k za rurą. Pozwala to na dostosowanie wysokości plazmy dla dwóch rurek. Aby podłączyć Trinket do zegara czasu rzeczywistego (RCT) podłącz Trinket-pin 0 do RTC-SDA, Trinket-pin 2 do RTC-SCL i Trinket-5v do RTC-5v oraz Trinket GND do uziemienia RTC. W tej części pomocne może być zapoznanie się z instrukcją zegara Adafruit, https://learn.adafruit.com/trinket-powered-analog-…. Gdy Trinket i RTC są prawidłowo okablowane, podłącz lampy Nixie, tranzystory, filtry itp. na płytce prototypowej dokładnie zgodnie ze schematem obwodu.

Aby rozmawiać RTC i Trinket, musisz najpierw pobrać odpowiednie biblioteki z Adafruit Github. Potrzebujesz TinyWireM.h i TInyRTClib.h. Najpierw chcemy skalibrować rury, prześlij szkic kalibracji na końcu tej instrukcji. Jeśli żaden ze szkiców na końcu nie zadziała, wypróbuj szkic zegara Adafruit. Poprawiłem szkic zegara Adafruit, aby działał najskuteczniej z lampami nixie, ale szkic Adafruit będzie działał dobrze.

Krok 3: Kalibracja

Kalibrowanie
Kalibrowanie

Po przesłaniu szkicu kalibracyjnego należy zaznaczyć podziałki.

Istnieją trzy tryby kalibracji, pierwszy ustawia obie lampy nixie na maksymalną moc wyjściową. Użyj tego, aby wyregulować garnek tak, aby wysokość plazmy w obu probówkach była taka sama i była nieco poniżej maksymalnej wysokości. Zapewnia to liniową odpowiedź w całym zakresie zegara.

Drugie ustawienie kalibruje rurkę minutową. Zmienia się między 0, 15, 30, 45 i 60 minutami co 5 sekund.

Ostatnie ustawienie powtarza to dla każdego przyrostu godziny. W przeciwieństwie do zegara Adafruit wskaźnik godzin porusza się w stałych odstępach raz na godzinę. Przy korzystaniu z miernika analogowego trudno było uzyskać liniową odpowiedź na każdą godzinę.

Po dostosowaniu garnka prześlij szkic, aby skalibrować przez kilka minut. Weź cienki drut miedziany i przytnij na krótki odcinek. Owiń to wokół rurki i skręć oba końce razem. Przesuń go do właściwej pozycji i za pomocą pistoletu do klejenia na gorąco umieść małą kroplę kleju, aby utrzymać ją we właściwym miejscu. Powtórz to dla każdej minuty i godziny.

Zapomniałem zrobić jakieś zdjęcia tego procesu, ale na zdjęciach widać, jak przymocowany jest przewód. Chociaż użyłem znacznie mniej kleju do samego mocowania drutu.

Krok 4: Montaż i wykończenie

Montaż i wykończenie
Montaż i wykończenie
Montaż i wykończenie
Montaż i wykończenie
Montaż i wykończenie
Montaż i wykończenie

Gdy wszystkie lampy są już skalibrowane i sprawne, nadszedł czas, aby na stałe wykonać obwód i zamontować na jakiejś podstawie. Wybrałem antyczny mechanizm zegarowy, ponieważ podobało mi się połączenie antycznych, 60-tych i nowoczesnej technologii. Przy przenoszeniu z płytki stykowej na płytkę stykową bądź bardzo ostrożny i nie spiesz się, aby upewnić się, że wszystkie połączenia są wykonane. Pudełko, które kupiłem, było trochę małe, ale dzięki starannemu umieszczeniu i niewielkiej sile udało mi się je dopasować. Wywierciłem z boku otwór na zasilacz i drugi na przewody do nixie. Przewody nixie pokryłem folią termokurczliwą, aby uniknąć zwarć. Po zamontowaniu elektroniki w pudełku przyklej ją do mechanizmu z tyłu zegara. Do montażu rurek użyłem gorącego kleju i przykleiłem końcówki skręconego drutu do metalu, uważając, aby były proste. Prawdopodobnie użyłem za dużo kleju, ale nie jest to zbyt widoczne. To może być coś, co można poprawić w przyszłości. Kiedy wszystko zostanie zamontowane, załaduj szkic zegara Nixie na końcu tej instrukcji i podziwiaj swój piękny nowy zegar!

Krok 5: Szkic Arduino - Kalibracja

#define HOUR_PIN 1 // Wyświetlanie godziny przez PWM na Trinket GPIO #1

#define MINUTE_PIN 4 // Wyświetlanie minut przez PWM na Trinket GPIO #4 (poprzez połączenia Timer 1)

int godziny = 57;int minuty = 57; //ustaw minimalne pwm

void setup () { pinMode (GODZINA_PIN, WYJŚCIE); pinMode (MINUTE_PIN, WYJŚCIE); PWM4_init(); //ustaw wyjścia PWM

}

void loop () { // Użyj tego, aby dostosować garnki nixie, aby upewnić się, że maksymalna wysokość rury odpowiada analogWrite(HOUR_PIN, 255); analogZapis4(255); // Użyj tego, aby skalibrować przyrosty minut

/*

analogZapis4(57); // minuta 0 opóźnienie(5000); analogowyZapis4(107); // minuta 15 opóźnienia(5000); analogZapis4(156); // minuta 30 opóźnienia(5000); analogowyZapis4(206); // minuta 45 opóźnienia(5000); analogZapis4(255); // minuta 60 opóźnienia(5000);

*/

// Użyj tego, aby skalibrować przyrosty godzinowe /*

analogZapis(GODZINA_PIN, 57); // 57 to minimalna moc wyjściowa i odpowiada opóźnieniu 1am/pm (4000); //opóźnienie 4 sekundy analogWrite(GODZINA_PIN, 75); // 75 to wyjście odpowiadające 2am/pm delay (4000); analogZapis(GODZINA_PIN, 93); // 93 to wyjście odpowiadające 3am/pm delay (4000); zapis analogowy(GODZINA_PIN, 111); // 111 to wyjście, które odpowiada opóźnieniu 4am/pm (4000); zapis analogowy(GODZINA_PIN, 129); // 129 to wyjście odpowiadające 5am/pm delay (4000); analogZapis(GODZINA_PIN, 147); // 147 to wyjście odpowiadające opóźnieniu 6am/pm (4000); zapis analogowy(GODZINA_PIN, 165); // 165 to wyjście odpowiadające opóźnieniu 7 rano/pm (4000); zapis analogowy(GODZINA_PIN, 183); // 183 to wyjście odpowiadające 8am/pm delay (4000); analogZapis(GODZINA_PIN, 201); // 201 to wyjście odpowiadające opóźnieniu 9am/pm (4000); analogZapis(GODZINA_PIN, 219); // 219 to wyjście odpowiadające opóźnieniu 10am/pm (4000); analogZapis(GODZINA_PIN, 237); // 237 to wyjście odpowiadające opóźnieniu 11am/pm (4000); zapis analogowy(GODZINA_PIN, 255); // 255 to wyjście odpowiadające 12am/pm

*/

}

void PWM4_init() { // Ustaw PWM na Trinket GPIO #4 (PB4, pin 3) przy użyciu Timera 1 TCCR1 = _BV (CS10); // brak preskalera GTCCR = _BV (COM1B1) | _BV (PWM1B); // wyczyść OC1B przy porównaniu OCR1B = 127; // inicjalizacja cyklu pracy do 50% OCR1C = 255; // częstotliwość }

// Funkcja zezwalająca na analogWrite na Trinket GPIO #4 void analogWrite4(uint8_t duty_value) { OCR1B = duty_value; // cło może wynosić od 0 do 255 (0 do 100%) }

Krok 6: Szkic Arduino - Zegar

// Zegar miernika analogowego Adafruit Trinket

// Funkcje daty i czasu za pomocą DS1307 RTC połączonego przez I2C i bibliotekę TinyWireM

// Pobierz te biblioteki z repozytorium Github Adafruit i // zainstaluj w katalogu Arduino Libraries #include #include

//Do debugowania, odkomentuj kod seryjny, użyj przyjaciela FTDI z jego pinem RX podłączonym do Pina 3 // Będziesz potrzebował programu terminala (takiego jak darmowy PuTTY dla Windows) ustawionego na // port USB przyjaciela FTDI na 9600 bodów. Odkomentuj Polecenia szeregowe, aby zobaczyć, co się dzieje //#define HOUR_PIN 1 // Wyświetlanie godziny przez PWM na Trinket GPIO #1 #define MINUTE_PIN 4 // Wyświetlanie minut przez PWM na Trinket GPIO #4 (przez połączenia Timer 1) //SendOnlySoftwareSerial Serial (3); // Transmisja szeregowa na Trinket Pin 3 RTC_DS1307 rtc; // Ustaw zegar czasu rzeczywistego

void setup () { pinMode (GODZINA_PIN, WYJŚCIE); // zdefiniuj piny miernika PWM jako wyjścia pinMode(MINUTE_PIN, OUTPUT); PWM4_init(); // Ustaw timer 1, aby działał PWM na Trinket Pin 4 TinyWireM.begin(); // Rozpocznij I2C rtc.begin(); // Rozpocznij zegar czasu rzeczywistego DS1307 //Serial.begin(9600); // Rozpocznij Monitor szeregowy z prędkością 9600 bodów if (! rtc.isrunning()) { //Serial.println("RTC NIE działa!"); // kolejna linia ustawia RTC na datę i czas skompilowania tego szkicu rtc.adjust(DateTime(_DATE_, _TIME_)); }}

void loop () { uint8_t hourvalue, minutevalue; uint8_t napięcie godzinne, napięcie minutowe;

DataCzas teraz = rtc.now(); // Pobierz informacje RTC hourvalue = now.hour(); // Pobierz godzinę if(hourvalue > 12) hourvalue -= 12; // Ten zegar ma 12 godzin minutevalue = now.minute(); // Zdobądź minuty

napięcie minutowe = mapa(wartość minutowa, 1, 60, 57, 255); // Konwertuj minuty na cykl pracy PWM

if(godzina == 1){ analogWrite(GODZINA_PIN, 57); } if(godzina == 2){ analogWrite(GODZINA_PIN, 75); // każda godzina odpowiada +18 } if(hourvalue == 3){ analogWrite(HOUR_PIN, 91); }

if(godzina == 4){ analogWrite(GODZINA_PIN, 111); } if(hourvalue == 5){ analogWrite(GODZINA_PIN, 126); } if(hourvalue ==6){ analogWrite(GODZINA_PIN, 147); } if(hourvalue == 7){ analogWrite(GODZINA_PIN, 165); } if(hourvalue == 8){ analogWrite(GODZINA_PIN, 183); } if(hourvalue == 9){ analogWrite(GODZINA_PIN, 201); } if(hourvalue == 10){ analogWrite(GODZINA_PIN, 215); } if(hourvalue == 11){ analogWrite(GODZINA_PIN, 237); } if(hourvalue == 12){ analogWrite(GODZINA_PIN, 255); }

analogZapis4 (napięcie minutowe); // minuta analogwrite może pozostać taka sama jak działa mapowanie // kod do usypiania procesora może być preferowany - opóźnimy opóźnienie(5000); // sprawdzaj czas co 5 sekund. Możesz to zmienić. }

void PWM4_init() { // Ustaw PWM na Trinket GPIO #4 (PB4, pin 3) przy użyciu Timera 1 TCCR1 = _BV (CS10); // brak preskalera GTCCR = _BV (COM1B1) | _BV (PWM1B); // wyczyść OC1B przy porównaniu OCR1B = 127; // inicjalizacja cyklu pracy do 50% OCR1C = 255; // częstotliwość }

// Funkcja zezwalająca na analogWrite na Trinket GPIO #4 void analogWrite4(uint8_t duty_value) { OCR1B = duty_value; // cło może wynosić od 0 do 255 (0 do 100%) }

Zalecana: