İçindekiler:

Nixie Bargraf Saati: 6 Adım (Resimlerle)
Nixie Bargraf Saati: 6 Adım (Resimlerle)

Video: Nixie Bargraf Saati: 6 Adım (Resimlerle)

Video: Nixie Bargraf Saati: 6 Adım (Resimlerle)
Video: Z566M nixie clock - 6 tubes 2024, Temmuz
Anonim
Nixie Bargraf Saati
Nixie Bargraf Saati
Nixie Bargraf Saati
Nixie Bargraf Saati

Edit 9/11/17Kickstarter'ın yardımıyla şimdi bu saat kiti için bir kit çıkardım! Bir sürücü panosu ve 2 Nixie IN-9 tüp içerir. Eklemeniz gereken tek şey kendi Arduino/Raspberry Pi/diğeriniz. Kit bulunabilir ancak bu bağlantıya tıklayarak!

Bu yüzden internette çok sayıda Nixie saati gördüm ve harika göründüklerini düşündüm, ancak tüpleri bile içermeyen bir saate 100 dolardan fazla harcamak istemedim! Bu yüzden biraz elektronik bilgisiyle çeşitli nixie tüplerini araştırdım. ve devreler. Genel olarak oldukça benzer görünen nixie saatlerinden oluşan geniş ürün yelpazesinden biraz farklı bir şey yapmak istedim. Sonunda Nixie IN-9 çubuk grafik tüplerini kullanmayı seçtim. Bunlar uzun ince tüplerdir ve parlayan plazmanın yüksekliği tüplerden geçen akıma bağlıdır. Soldaki tüp saatlik artışlarla ve sağdaki tüp dakika cinsindendir. Sadece iki ucu vardır ve bu nedenle devre kurmayı daha basit hale getirirler. Bu tasarımda, her bir tüpteki plazmanın yükseklikleri şimdiki zamanı temsil eden bir saat ve bir dakika tüpü vardır. Zaman, bir Adafruit Biblo mikro denetleyicisi ve gerçek zamanlı saat (RTC) kullanılarak tutulur.

Adım 1: Parçaları Birleştirme

Parçaların Montajı
Parçaların Montajı

İlki elektronik ve ikincisi montaj ve bitirme olmak üzere iki bölüm vardır. Gerekli elektronik bileşenler şunlardır: Adafruit Biblo 5V - 7,95 $ (www.adafruit.com/products/1501) Adafruit RTC - 9 $ (www.adafruit.com/products/264) 2x Nixie IN-9 bargraf ~ eBay'de tüp başına 3 $ 1x Nixie 140v güç kaynağı ~12$ eBay 4x 47 uF elektrolit kapasitörler 4x 3,9 kOhm dirençler 2x 1 kOhm potansiyometre 2x Transistör MJE340 NPN yüksek voltaj ~her biri 1$ 1x LM7805 5v regülatör ~1$ 1x 2.1mm soket ~1$ pcb'li 1x proje kutusu ~5$ 1x 12v DC güç kaynağı (Uzun zamandır unutulmuş bir cihazdan eski bir tane buldum) Lehim, bağlantı teli vb. Montaj: Elektronikleri küçük siyah plastik bir proje kutusuna monte etmeye karar verdim, ardından tüpleri antika bir saat mekanizmasına monte ettim. Saat ve dakikayı işaretlemek için boruların etrafına bakır tel sardım. Montaj parçaları: Antika saat mekanizması - 10$ eBay Bakır tel - 3$ eBay Sıcak tutkal tabancası

2. Adım: Devre

Devre
Devre
Devre
Devre
Devre
Devre
Devre
Devre

İlk adım, Nixie güç kaynağını oluşturmaktır. Bu, küçük bir PCB de dahil olmak üzere eBay'den güzel bir küçük kit olarak geldi ve sadece bileşenlerin tahtaya lehimlenmesi gerekiyordu. Bu özel besleme 110-180v arasında değişken olup, kart üzerindeki küçük bir pot ile kontrol edilebilir. Küçük bir tornavida kullanarak çıkışı ~ 140v olarak ayarlayın. Tamamen gitmeden önce nixie tüplerimi test etmek istedim, bunu yapmak için bir tüp, transistör ve etrafına serdiğim 10k potansiyometreyi kullanarak basit bir test devresi kurdum. İlk şekilde görüldüğü gibi 140v beslemesi tüp anotuna (sağ bacak) bağlanmıştır. Katot (sol bacak) daha sonra MJE340 transistörünün kollektör bacağına bağlanır. 5v'lik bir besleme, transistör tabanına toprağa bölünen 10k'lık bir tencereye bağlanır. Son olarak, transistör yayıcı, 300 ohm'luk bir akım sınırlama direnci üzerinden toprağa bağlanır. Transistörlere ve elektroniklere aşina değilseniz, gerçekten önemli değil, sadece kabloyu bağlayın ve pot düğmesiyle plazma yüksekliğini değiştirin! Bu çalıştığında, saatimizi yapmaya bakabiliriz. Tam saat devresi ikinci devre şemasında görülebilir. Biraz araştırmadan sonra Adafruit web sitesinde neredeyse tam olarak yapmak istediğim şeyi yapan mükemmel bir eğitim buldum. Öğretici burada bulunabilir: https://learn.adafruit.com/trinket-powered-analog-m… Bu öğretici, iki analog amper ölçeri kontrol etmek için bir Biblo denetleyicisi ve bir RTC kullanır. İğnenin sapmasını kontrol etmek için darbe genişlik modülasyonunu (PWM) kullanma. Amper ölçerin bobini, PWM'nin ortalamasını etkili bir dc sinyaline dönüştürür. Ancak, tüpleri sürmek için doğrudan PWM'yi kullanırsak, yüksek frekans modülasyonu, plazma çubuğunun tüpün tabanına "kenetlenmiş" kalmayacağı ve havada asılı bir çubuğunuz olacağı anlamına gelir. Bundan kaçınmak için, neredeyse bir dc sinyali elde etmek için uzun zaman sabitine sahip düşük geçişli bir filtre kullanarak PWM'nin ortalamasını aldım. Bunun 0,8 Hz'lik bir kesme frekansı vardır, saat zamanını yalnızca her 5 saniyede bir güncellediğimiz için bu iyidir. Ek olarak, çubuk grafiklerin sınırlı bir ömrü olduğundan ve değiştirilmesi gerekebileceğinden ve her tüp tam olarak aynı olmadığından, tüpten sonra 1k'lık bir kap ekledim. Bu, iki tüp için plazma yüksekliğini ayarlamak için ince ayar yapılmasına izin verir. Bibloyu gerçek zamanlı saate (RCT) bağlamak için Biblo pimi 0'ı RTC-SDA'ya, Biblo pimi 2'yi RTC-SCL'ye ve Biblo-5v'yi RTC-5v'ye ve Biblo GND'yi RTC toprağına bağlayın. Bu kısım için Adafruit saat talimatını görüntülemek faydalı olabilir, https://learn.adafruit.com/trinket-powered-analog-…. Biblo ve RTC doğru şekilde bağlandıktan sonra, devre şemasını dikkatlice takip ederek nixie tüplerini, transistörleri, filtreleri vb. bir devre tahtasına bağlayın.

RTC ve Biblo'yu konuşturmak için önce Adafruit Github'dan doğru kitaplıkları indirmeniz gerekir. TinyWireM.h ve TInyRTClib.h'ye ihtiyacınız var. İlk önce tüpleri kalibre etmek istiyoruz, bu talimatın sonunda kalibre taslağını yükleyin. Sondaki çizimlerden hiçbiri işe yaramazsa, Adafruit saat taslağını deneyin. Adafruit saat taslağını nixie tüpleriyle en verimli şekilde çalışacak şekilde değiştirdim ama Adafruit taslağı iyi çalışacak.

Adım 3: Kalibrasyon

kalibrasyon
kalibrasyon

Kalibrasyon taslağını yükledikten sonra derecelerin işaretlenmesi gerekir.

Kalibrasyon için üç mod vardır, ilki her iki nixie tüpünü de maksimum çıktıya ayarlar. Bunu, kabı her iki tüpteki plazma yüksekliği aynı olacak ve maksimum yüksekliğin biraz altında olacak şekilde ayarlamak için kullanın. Bu, yanıtın tüm saat aralığında doğrusal olmasını sağlar.

İkinci ayar, dakika tüpünü kalibre eder. Her 5 saniyede 0, 15, 30, 45 ve 60 dakika arasında değişir.

Son ayar bunu her saat artışı için tekrarlar. Adafruit saatinden farklı olarak saat göstergesi saatte bir sabit artışlarla hareket eder. Analog bir sayaç kullanırken her saat için doğrusal bir yanıt almak zordu.

Tencereyi ayarladıktan sonra, taslağı dakikalarca kalibre etmek için yükleyin. İnce bakır teli alın ve kısa bir uzunlukta kesin. Bunu tüpün etrafına sarın ve iki ucunu birlikte bükün. Bunu doğru konuma kaydırın ve bir sıcak tutkal tabancası kullanarak doğru yerde tutmak için küçük bir tutkal damlası yerleştirin. Bunu her dakika ve saat artışı için tekrarlayın.

Bu işlemin herhangi bir fotoğrafını çekmeyi unuttum ama resimlerden telin nasıl takıldığını görebilirsiniz. Yine de teli tutturmak için çok daha az yapıştırıcı kullandım.

Adım 4: Montaj ve Son İşlem

Montaj ve Son İşlem
Montaj ve Son İşlem
Montaj ve Son İşlem
Montaj ve Son İşlem
Montaj ve Son İşlem
Montaj ve Son İşlem

Tüplerin tümü kalibre edildikten ve çalıştıktan sonra, artık devreyi kalıcı olarak yapma ve bir tür taban üzerine monte etme zamanıdır. Antika, 60'lar ve modern teknolojinin karışımını sevdiğim için antika bir saat mekanizması seçiyorum. Breadboard'dan strip board'a geçiş yaparken çok dikkatli olun ve tüm bağlantıların yapıldığından emin olun. Aldığım kutu biraz küçüktü ama biraz dikkatli yerleştirme ve biraz zorlamayla hepsini sığdırmayı başardım. Güç kaynağı için yan tarafa ve nixie kabloları için birer delik açtım. Kısa devre olmaması için nixie kablolarını ısıyla daralan makaronla kapladım. Elektronikler kutuya monte edildiğinde saat mekanizmasının arkasına yapıştırın. Tüpleri monte etmek için sıcak tutkal kullandım ve bükülmüş telin noktalarını düz olduklarından emin olarak metale yapıştırdım. Muhtemelen çok fazla yapıştırıcı kullandım ama çok belirgin değil. Gelecekte geliştirilebilecek bir şey olabilir. Her şey monte edildiğinde, bu talimatın sonuna Nixie saat taslağını yükleyin ve güzel yeni saatinize hayran kalın!

Adım 5: Arduino Sketch - Kalibrasyon

#define HOUR_PIN 1 // Trinket GPIO #1'de PWM aracılığıyla saat gösterimi

#define MINUTE_PIN 4 // Trinket GPIO #4'te PWM aracılığıyla dakika gösterimi (Zamanlayıcı 1 çağrıları aracılığıyla)

int saat = 57;int dakika = 57; // minimum pwm'yi ayarla

geçersiz kurulum () { pinMode(HOUR_PIN, OUTPUT); pinMode(DAKİKA_PIN, ÇIKIŞ); PWM4_init(); //PWM çıkışlarını ayarla

}

void loop () { // Maksimum tüp yüksekliğinin analogWrite (HOUR_PIN, 255) ile eşleştiğinden emin olmak için nixie kaplarını değiştirmek için bunu kullanın; analogWrite4(255); // Dakika artışlarını kalibre etmek için bunu kullanın

/*

analogWrite4(57); // dakika 0 gecikme (5000); analogWrite4(107); // 15 dakika gecikme (5000); analogWrite4(156); // dakika 30 gecikme (5000); analogWrite4(206); // 45 dakika gecikme (5000); analogWrite4(255); // dakika 60 gecikme (5000);

*/

// Saat artışlarını kalibre etmek için bunu kullanın /*

analogWrite(HOUR_PIN, 57); // 57, minimum çıktıdır ve 1am/pm gecikmesine (4000) karşılık gelir; // 4 saniye geciktirme analogWrite(HOUR_PIN, 75); // 75, 2am/pm gecikmesine (4000) karşılık gelen çıktıdır; analogWrite(HOUR_PIN, 93); // 93, 3am/pm gecikmesine (4000) karşılık gelen çıktıdır; analogWrite(HOUR_PIN, 111); // 111, 4am/pm gecikmesine (4000) karşılık gelen çıktıdır; analogWrite(HOUR_PIN, 129); // 129, 5am/pm gecikmesine (4000) karşılık gelen çıktıdır; analogWrite(HOUR_PIN, 147); // 147, 6am/pm gecikmesine (4000) karşılık gelen çıktıdır; analogWrite(HOUR_PIN, 165); // 165, 7am/pm gecikmesine (4000) karşılık gelen çıktıdır; analogWrite(HOUR_PIN, 183); // 183, 8am/pm gecikmesine (4000) karşılık gelen çıktıdır; analogWrite(HOUR_PIN, 201); // 201, 9am/pm gecikmesine (4000) karşılık gelen çıktıdır; analogWrite(HOUR_PIN, 219); // 219, 10:00/pm gecikmesine (4000) karşılık gelen çıktıdır; analogWrite(HOUR_PIN, 237); // 237, 11am/pm gecikmesine (4000) karşılık gelen çıktıdır; analogWrite(HOUR_PIN, 255); // 255, 12am/pm'ye karşılık gelen çıktıdır

*/

}

void PWM4_init() { // Zamanlayıcı 1'i kullanarak Trinket GPIO #4 (PB4, pin 3) üzerinde PWM'yi kurun TCCR1 = _BV (CS10); // ön ölçekleyici yok GTCCR = _BV (COM1B1) | _BV (PWM1B); // karşılaştırmada OC1B'yi temizle OCR1B = 127; // görev döngüsü %50 OCR1C = 255 olarak başlatılır; // Sıklık }

// Trinket GPIO #4'te analogWrite'a izin verme işlevi void analogWrite4(uint8_t görev_değeri) { OCR1B = görev_değeri; // görev 0 ila 255 arasında olabilir (0 ila %100) }

Adım 6: Arduino Sketch - Saat

// Adafruit Biblo analog sayaç saati

// I2C ve TinyWireM lib aracılığıyla bağlı bir DS1307 RTC kullanan tarih ve saat işlevleri

// Bu kütüphaneleri Adafruit'in Github deposundan indirin ve // Arduino Kütüphaneleri dizininize kurun #include #include

//Hata ayıklamak, seri kodu kaldırmak için, RX pini Pin 3'e bağlı olan bir FTDI Friend kullanın // FTDI arkadaşının 9600'deki // USB portuna ayarlanmış bir terminal programına (Windows için ücretsiz PuTTY gibi) ihtiyacınız olacak baud. Neler olduğunu görmek için seri komutları kaldırın //#define HOUR_PIN 1 // Trinket GPIO #1'de PWM aracılığıyla saat gösterimi #define MINUTE_PIN 4 // Trinket GPIO #4'te PWM aracılığıyla dakika gösterimi (Zamanlayıcı 1 çağrıları aracılığıyla) //SendOnlySoftwareSerial Serial (3); // Biblo Pin 3'te seri aktarım RTC_DS1307 rtc; // Gerçek zamanlı saati ayarla

geçersiz kurulum () { pinMode(HOUR_PIN, OUTPUT); // PWM metre pinlerini çıkış olarak tanımlayın pinMode(MINUTE_PIN, OUTPUT); PWM4_init(); // Zamanlayıcı 1'i Trinket Pin 4 TinyWireM.begin() üzerinde PWM çalışacak şekilde ayarlayın; // I2C'yi Başlat rtc.begin(); // DS1307 gerçek zaman saatini başlat //Serial.begin(9600); // Seri İzlemeyi 9600 baud'da başlatın if (! rtc.isrunning()) { //Serial.println("RTC çalışmıyor!"); // aşağıdaki satır RTC'yi bu çizimin derlendiği tarih ve saate ayarlar rtc.adjust(DateTime(_DATE_, _TIME_)); }}

void döngüsü () { uint8_t saat değeri, dakika değeri; uint8_t saatvoltaj, dakikavoltaj;

DateTime şimdi = rtc.now(); // RTC bilgisini al saat değeri = şimdi.hour(); // Saati alın if(hourvalue > 12) hourvalue -= 12; // Bu saat 12 saatlik dakika değeri = şimdi.dakika(); // Dakikaları al

dakikavoltaj = harita(dakika değeri, 1, 60, 57, 255); // Dakikaları PWM görev döngüsüne dönüştür

if(saatdeğeri == 1){ analogWrite(HOUR_PIN, 57); } if(saatdeğeri == 2){ analogWrite(HOUR_PIN, 75); // her saat +18'e karşılık gelir } if(hourvalue == 3){ analogWrite(HOUR_PIN, 91); }

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

analogWrite4(dakikavoltaj); // dakika analogyazı, eşleme çalışmalarıyla aynı kalabilir // işlemciyi uyku moduna geçirecek kod tercih edilebilir - gecikmeyi geciktireceğiz(5000); // her 5 saniyede bir zamanı kontrol edin. Bunu değiştirebilirsiniz. }

void PWM4_init() { // Zamanlayıcı 1'i kullanarak Trinket GPIO #4 (PB4, pin 3) üzerinde PWM'yi kurun TCCR1 = _BV (CS10); // ön ölçekleyici yok GTCCR = _BV (COM1B1) | _BV (PWM1B); // karşılaştırmada OC1B'yi temizle OCR1B = 127; // görev döngüsü %50 OCR1C = 255 olarak başlatılır; // Sıklık }

// Trinket GPIO #4'te analogWrite'a izin verme işlevi void analogWrite4(uint8_t görev_değeri) { OCR1B = görev_değeri; // görev 0 ila 255 arasında olabilir (0 ila %100) }

Önerilen: