Mündəricat:

Nixie Bargraph Saatı: 6 Addım (Şəkillərlə birlikdə)
Nixie Bargraph Saatı: 6 Addım (Şəkillərlə birlikdə)

Video: Nixie Bargraph Saatı: 6 Addım (Şəkillərlə birlikdə)

Video: Nixie Bargraph Saatı: 6 Addım (Şəkillərlə birlikdə)
Video: EleksMaker EleksTube IPS 6-Bit IPS Retro Glows Analog Nixie Tube elekstube clock 2024, Iyul
Anonim
Nixie Bargraph Saatı
Nixie Bargraph Saatı
Nixie Bargraph Saatı
Nixie Bargraph Saatı

Kickstarter -in köməyi ilə bu saat dəsti üçün bir dəst buraxdım! Sürücü lövhəsi və 2 Nixie IN-9 borusu daxildir. Əlavə etməyiniz lazım olan tək şey öz Arduino/Raspberry Pi/digəridir. Kit tapa bilərsiniz, ancaq bu linki vurun!

İnternetdə bir çox Nixie saatı gördüm və çox gözəl göründüyünü düşündüm, amma hətta borular daxil olmayan saata 100 dollar+ xərcləmək istəmədim! Buna görə də bir az elektronika biliyimlə müxtəlif nixie boruları ətrafında ovladım. və sxemlər. Ümumiyyətlə olduqca oxşar görünüşlü nixie saatlarından bir az fərqli bir şey etmək istədim. Sonda Nixie IN-9 bargraph borulardan istifadə etməyi seçdim. Bunlar uzun nazik borulardır və parlayan plazmanın hündürlüyü borulardan keçən cərəyana bağlıdır. Solda olan boru saatlarla, sağdakı boru isə dəqiqədir. Yalnız iki qurğuşun var və buna görə də bir dövrə qurmağı daha da irəli aparırlar. Bu dizaynda, hər borudakı plazmanın yüksəklikləri cari vaxtı təmsil edən bir saat və bir dəqiqə borusu var. Vaxt Adafruit Trinket mikrokontrolörü və real vaxt saatı (RTC) ilə saxlanılır.

Addım 1: Parçaların yığılması

Parçaların yığılması
Parçaların yığılması

İki hissə var, birincisi elektronika, ikincisi isə montaj və bitirmə. Lazım olan elektron komponentlər bunlardır: Adafruit Trinket 5V - 7.95 dollar (www.adafruit.com/products/1501) Adafruit RTC - 9 dollar (www.adafruit.com/products/264) 2x Nixie IN -9 bargraph ~ eBay 1x -də boru başına 3 dollar Nixie 140v enerji təchizatı ~ eBay -də 12 dollar 4x 47 uF elektrolit kondansatörləri 4x 3.9 kOhm rezistorlar 2x 1 kOhm potensiometr 2x Transistor MJE340 NPN yüksək gərginlik ~ 1 ədəd hər biri 1x LM7805 5v tənzimləyici ~ $ 1 x 2.1 mm yuva ~ 1 $ x 1 ədəd layihə qutusu 12v DC enerji təchizatı (çoxdan unudulmuş bir gadgetdan köhnə birini tapdım) Lehim, bağlama teli və s. Montaj: Elektronikanı kiçik bir qara plastik layihə qutusuna, sonra boruları antik bir saat hərəkətinə bağlamağa qərar verdim. Saatı və dəqiqələri qeyd etmək üçün borulara bükülmüş mis teldən istifadə etdim. Montaj hissələri: Antik saat hərəkəti - 10 dollar eBay Mis tel - 3 dollar eBay İsti yapışqan silahı

Addım 2: Dövrə

Dövrə
Dövrə
Dövrə
Dövrə
Dövrə
Dövrə
Dövrə
Dövrə

İlk addım Nixie enerji təchizatı qurmaqdır. Bu, kiçik bir PCB də daxil olmaqla eBay -dən gözəl bir kiçik dəst kimi gəldi və yalnız lövhəyə lehimlənməli olan komponentlərə ehtiyac duydu. Bu xüsusi təchizat lövhədə kiçik bir qazan ilə idarə oluna bilən 110-180v arasında dəyişkəndir. Kiçik bir tornavida istifadə edərək çıxışı ~ 140v -ə tənzimləyin. Bütün yola getməzdən əvvəl nixie borularımı sınamaq istədim, bunun üçün bir borudan, tranzistordan və ətrafımda çəkdiyim 10k potensiometrdən istifadə edərək sadə bir sınaq dövrəsi qurdum. Birinci şəkildə göründüyü kimi, 140v təchizatı boru anoduna (sağ ayağa) bağlıdır. Katod (sol ayaq) daha sonra MJE340 tranzistorunun kollektor ayağına qoşulur. Transistor bazasına yerə bölünən 10k qazana 5V -lik bir enerji təchizatı qoşulur. Nəhayət, tranzistor yayıcısı 300 ohm cərəyan məhdudlaşdıran bir rezistor vasitəsilə yerə bağlanır. Transistorlar və elektronika ilə tanış deyilsinizsə, bunun heç bir əhəmiyyəti yoxdur, sadəcə tel bağlayın və qazan düyməsiylə plazma hündürlüyünü dəyişdirin! İşlədikdən sonra saatımızı düzəltməyə baxa bilərik. Tam saat dövrəsini ikinci dövrə diaqramında görmək olar. Bəzi araşdırmalardan sonra Adafruit öyrənmək saytında demək olar ki, etmək istədiyim şeyi edən mükəmməl bir dərs tapdım. Dərsliyi burada tapa bilərsiniz: https://learn.adafruit.com/trinket-powered-analog-m… Bu təlimatda iki analoq amp sayğacını idarə etmək üçün Trinket nəzarətçisi və RTC istifadə olunur. İğnənin əyilməsini idarə etmək üçün nəbz genişliyi modulyasiyasından (PWM) istifadə etmək. Amper sayğacının bobini, PWM -ni effektiv bir DC siqnalına çevirir. Boruları idarə etmək üçün PWM -dən birbaşa istifadə etsək, yüksək tezlikli modulyasiya o deməkdir ki, plazma çubuğu borunun əsasına "bərkidilməyəcək" və sizdə uçan bir çubuq olacaq. Bunun qarşısını almaq üçün, demək olar ki, DC siqnalı almaq üçün uzun müddət sabit olan aşağı keçid filtrindən istifadə edərək PWM -ni orta hesabla aldım. Bu, 0.8 Hz kəsmə tezliyinə malikdir, bu çox yaxşıdır, çünki hər 5 saniyədə bir saat vaxtını yeniləyirik. Əlavə olaraq, bargrafların sonlu ömrü var və dəyişdirilməsi lazım ola bilər və hər boru eyni deyil, borudan sonra 1k qab əlavə etdim. Bu, iki boru üçün plazma hündürlüyünü tənzimləməyə imkan verir. Bibloyu real vaxt saatına (RCT) bağlamaq üçün Trinket-pin 0-ı RTC-SDA-ya, Trinket-pin 2-ni RTC-SCL-ə və Trinket-5v-ni RTC-5v-ə və Trinket GND-ni RTC-yə qoşun. Bu hissədə, Adafruit saat təlimatına baxmaq faydalı ola bilər, https://learn.adafruit.com/trinket-powered-analog-…. Biblo və RTC düzgün bir şəkildə bağlandıqdan sonra, sxem sxemini diqqətlə izləyərək çörək taxtasına nixie borularını, tranzistorları, filtrləri və s.

RTC və Trinket ilə danışmaq üçün əvvəlcə Adafruit Github -dan düzgün kitabxanaları yükləməlisiniz. TinyWireM.h və TInyRTClib.h lazımdır. Əvvəlcə boruları kalibr etmək, bu təlimatın sonunda kalibrləmə eskizini yükləmək istəyirik. Sonda heç bir eskiz işləmirsə, Adafruit saat eskizini sınayın. Adafruit saat eskizini nixie borularla ən təsirli işləməsi üçün düzəltdim, amma Adafruit eskizi yaxşı işləyəcək.

Addım 3: Kalibrləmə

Kalibrləmə
Kalibrləmə

Kalibrləmə eskizini yüklədikdən sonra məzunların işarələnməsi lazımdır.

Kalibrləmə üçün üç rejim var, birincisi hər iki nixie borusunu maksimum çıxışa qoyur. Qazanı hər iki borudakı plazma hündürlüyünün eyni olması və maksimum hündürlüyün bir qədər aşağı olması üçün tənzimləmək üçün istifadə edin. Bu, cavabın bütün saat aralığında xətti olmasını təmin edir.

İkinci parametr dəqiqə borusunu kalibr edir. Hər 5 saniyədə 0, 15, 30, 45 və 60 dəqiqə arasında dəyişir.

Son ayar bunu hər saatlıq artım üçün təkrarlayır. Adafruit saatından fərqli olaraq saat göstəricisi saatda bir dəfə sabit artımlarla hərəkət edir. Analog sayğacdan istifadə edərkən hər saat üçün xətti cavab almaq çətin idi.

Qazanı düzəltdikdən sonra bir neçə dəqiqə ərzində kalibr etmək üçün eskizi yükləyin. İncə mis tel götürün və qısa bir uzunluq kəsin. Bu borunun ətrafına sarın və iki ucunu bir -birinə bükün. Bunu doğru yerə sürüşdürün və isti bir yapışqan tabancasından istifadə edərək kiçik bir yapışqan qoyun. Bunu hər dəqiqə və saat artımı üçün təkrarlayın.

Bu prosesin hər hansı bir şəklini çəkməyi unutmuşam, ancaq telin necə bağlandığını şəkillərdən görə bilərsiniz. Tel bağlamaq üçün daha az yapışqan istifadə etsəm də.

Addım 4: Montaj və bitirmə

Montaj və Bitirmə
Montaj və Bitirmə
Montaj və Bitirmə
Montaj və Bitirmə
Montaj və Bitirmə
Montaj və Bitirmə

Boruların hamısı kalibrləndikdən və işlədikdən sonra dövrəni daimi olaraq düzəltməyin və bir növ bazaya montaj etməyin vaxtıdır. Antik, 60 -cı illərin və müasir texnologiyanın qarışığını bəyəndiyim üçün antik bir saat hərəkəti seçirəm. Çörək taxtasından lövhəyə keçərkən çox diqqətli olun və bütün əlaqələrin qurulmasını təmin etmək üçün vaxt ayırın. Aldığım qutu bir az kiçik idi, amma diqqətli yerləşdirmə və bir az məcbur etməklə hamısını uyğunlaşdırmağı bacardım. Yan tərəfdə enerji təchizatı üçün bir deşik açdım və nixie ucları üçün. Hər hansı bir şortdan qaçmaq üçün nixie tellərini örtdüm. Elektronik qutuya quraşdırıldıqda saatın arxasına yapışdırılır. Boruları quraşdırmaq üçün isti yapışqan istifadə etdim və bükülmüş telin uclarını metala yapışdırdım, düz olduğundan əmin olmaq üçün diqqətli oldum. Çox güman ki, çox yapışqan istifadə etdim, amma çox da nəzərə çarpmır. Gələcəkdə təkmilləşdirilə biləcək bir şey ola bilər. Hamısı quraşdırıldıqda, bu təlimatın sonunda Nixie saat eskizini yükləyin və sevimli yeni saatınıza heyran olun!

Addım 5: Arduino Sketch - Kalibrləmə

#define HOUR_PIN 1 // Trinket GPIO #1 -də PWM vasitəsilə saat görüntüsü

#define MINUTE_PIN 4 // Trinket GPIO #4 -də PWM vasitəsilə dəqiqəlik ekran (Timer 1 zəngləri vasitəsilə)

int saat = 57; int dəqiqə = 57; // minimum pwm təyin edin

void setup () {pinMode (HOUR_PIN, OUTPUT); pinMode (MINUTE_PIN, ÇIXIŞ); PWM4_init (); // PWM çıxışlarını qurun

}

void loop () {// Maksimum borunun hündürlüyünün analogWrite (HOUR_PIN, 255) ilə uyğun olduğundan əmin olmaq üçün nixie qablarını çimdikləmək üçün bunu istifadə edin; analogWrite4 (255); // Dəqiqə artımlarını kalibr etmək üçün bundan istifadə edin

/*

analogWrite4 (57); // dəqiqə 0 gecikmə (5000); analogWrite4 (107); // 15 dəqiqə gecikmə (5000); analogWrite4 (156); // 30 dəqiqə gecikmə (5000); analogWrite4 (206); // dəqiqə 45 gecikmə (5000); analogWrite4 (255); // dəqiqə 60 gecikmə (5000);

*/

// Saat artımlarını kalibr etmək üçün bundan istifadə edin /*

analogWrite (HOUR_PIN, 57); // 57 minimum çıxışdır və 1 am /pm gecikməsinə (4000) uyğundur; // gecikmə 4 saniyə analogWrite (HOUR_PIN, 75); // 75, 2 am /pm gecikməsinə (4000) uyğun gələn çıxışdır; analogWrite (HOUR_PIN, 93); // 93, 3 am /pm gecikməsinə (4000) uyğun gələn çıxışdır; analogWrite (HOUR_PIN, 111); // 111, 4 am /pm gecikməsinə (4000) uyğun gələn çıxışdır; analogWrite (HOUR_PIN, 129); // 129, 5 am /pm gecikməsinə (4000) uyğun gələn çıxışdır; analogWrite (HOUR_PIN, 147); // 147, 6 am /pm gecikməsinə (4000) uyğun gələn çıxışdır; analogWrite (HOUR_PIN, 165); // 165, 7 am /pm gecikməsinə (4000) uyğun gələn çıxışdır; analogWrite (HOUR_PIN, 183); // 183, 8 am /pm gecikməsinə (4000) uyğun gələn çıxışdır; analogWrite (HOUR_PIN, 201); // 201, 9 am /pm gecikməsinə (4000) uyğun gələn çıxışdır; analogWrite (HOUR_PIN, 219); // 219, 10 am /pm gecikməsinə (4000) uyğun gələn çıxışdır; analogWrite (HOUR_PIN, 237); // 237, 11 am /pm gecikməsinə (4000) uyğun gələn çıxışdır; analogWrite (HOUR_PIN, 255); // 255, 12 am/pm -ə uyğun gələn çıxışdır

*/

}

void PWM4_init () {// Taymer 1 TCCR1 = _BV (CS10) istifadə edərək Trinket GPIO #4 (PB4, pin 3) üzərində PWM qurun; // prescaler yoxdur GTCCR = _BV (COM1B1) | _BV (PWM1B); // müqayisədə OC1B sil OCR1B = 127; // vəzifə dövrü 50% OCR1C = 255 olaraq işə salınır; // tezlik}

// Trinket GPIO #4 -də analogWrite -ə imkan verən funksiya analogWrite4 (uint8_t duty_value) {OCR1B = duty_value; // rüsum 0 ilə 255 arasında ola bilər (0 ilə 100%arasında)}

Addım 6: Arduino Sketch - Saat

// Adafruit Trinket analog sayğac saatı

// I2C və TinyWireM lib vasitəsi ilə əlaqəli DS1307 RTC istifadə edərək tarix və vaxt funksiyaları

// Bu kitabxanaları Adafruit -in Github deposundan yükləyin və // Arduino Kitabxanalarınızın kataloquna daxil edin #include #include

// Hata ayıklamaq, seriya kodunu qeyd etmək üçün, Pin 3 -ə bağlı RX pinli bir FTDI Dostu istifadə edin // FTDI dostunun // USB portuna 9600 -də // quraşdırılmış bir terminal proqramına (Windows üçün pulsuz PuTTY kimi) ehtiyacınız olacaq. baud. Nələr olduğunu görmək üçün Serial əmrlərini ləğv edin // #HOUR_PIN 1 təyin edin // Trinket GPIO #1 -də PWM vasitəsilə saat görüntüsü #MINUTE_PIN 4 -ü təyin edin // Trinket GPIO #4 -də PWM vasitəsilə dəqiqəlik ekran (Taymer 1 zəngləri ilə) // SendOnlySoftwareSerial Serial (3); // Trinket Pin 3 -də seriya ötürülməsi RTC_DS1307 rtc; // Real vaxt saatı qurun

void setup () {pinMode (HOUR_PIN, OUTPUT); // PWM sayğac pinlərini pinMode (MINUTE_PIN, ÇIXIŞ) kimi təyin edin; PWM4_init (); // Taymer 1 -i Trinket Pin 4 TinyWireM.begin () üzərində PWM işləməsi üçün təyin edin; // Başla I2C rtc.begin (); // DS1307 real vaxt saatına başlayın //Serial.begin(9600); // (! Rtc.isrunning ()) {//Serial.println("RTC işləmir! ") Olduqda Serial Monitoru 9600 baudda başlayın; // aşağıdakı xətt RTC -ni bu eskizin tərtib edildiyi tarix və saata təyin edir rtc.adjust (DateTime (_ DATE_, _TIME_)); }}

void loop () {uint8_t hourvalue, minutevalue; uint8_t saat gərginliyi, minutevoltage;

DateTime indi = rtc.now (); // RTC məlumatını alın saat dəyəri = indi.hour (); // Əgər saatı alın (hourvalue> 12) hourvalue -= 12; // Bu saat 12 saatdır minutevalue = now.minute (); // Dəqiqələri əldə edin

minutevoltage = xəritə (minutevalue, 1, 60, 57, 255); // Dəqiqələri PWM vəzifə dövrünə çevirin

if (hourvalue == 1) {analogWrite (HOUR_PIN, 57); } if (hourvalue == 2) {analogWrite (HOUR_PIN, 75); // hər saat +18} -ə uyğundur (hourvalue == 3) {analogWrite (HOUR_PIN, 91); }

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

analogWrite4 (minimum gərginlik); // dəqiqəlik analoq yazma, Xəritəçəkmə işləri ilə eyni qala bilər // prosessoru yuxuya qoymaq üçün koda üstünlük verilə bilər - gecikməni gecikdirəcəyik (5000); // hər 5 saniyədə bir vaxt yoxlayın. Bunu dəyişə bilərsiniz. }

void PWM4_init () {// Taymer 1 TCCR1 = _BV (CS10) istifadə edərək Trinket GPIO #4 (PB4, pin 3) üzərində PWM qurun; // heç bir prescaler yoxdur GTCCR = _BV (COM1B1) | _BV (PWM1B); // müqayisədə OC1B sil OCR1B = 127; // vəzifə dövrü 50% OCR1C = 255 olaraq işə salınır; // tezlik}

// Trinket GPIO #4 -də analogWrite -ə imkan verən funksiya analogWrite4 (uint8_t duty_value) {OCR1B = duty_value; // rüsum 0 ilə 255 arasında ola bilər (0 ilə 100%arasında)}

Tövsiyə: