Mundarija:

Niksi Bargraf soati: 6 qadam (rasmlar bilan)
Niksi Bargraf soati: 6 qadam (rasmlar bilan)

Video: Niksi Bargraf soati: 6 qadam (rasmlar bilan)

Video: Niksi Bargraf soati: 6 qadam (rasmlar bilan)
Video: Часы ИН-13 Никси 2024, Iyul
Anonim
Niksi Bargraf soati
Niksi Bargraf soati
Niksi Bargraf soati
Niksi Bargraf soati

11/11/17 tahrir qiling Kickstarter yordamida men hozir bu soat to'plami uchun to'plamni chiqardim! U haydovchi taxtasi va 2 ta Nixie IN-9 naychasini o'z ichiga oladi. O'zingizning Arduino/Raspberry Pi/boshqasini qo'shishingiz kerak. To'plamni topish mumkin, lekin bu havolani bosing!

Shunday qilib, men Internetda ko'plab Niksi soatlarini ko'rdim va ular ajoyib ko'rinadi deb o'yladim, lekin men hatto naychalarni o'z ichiga olmaydigan soatga 100 dollar sarflashni xohlamadim! Shunday qilib, elektronika haqida ozgina bilimga ega bo'lib, men har xil nixie naychalarini ovladim. va davralar. Men bir -biriga o'xshash, o'xshash nixie soatlaridan biroz farq qilmoqchi edim. Oxir-oqibat men Nixie IN-9 bargraf naychalarini ishlatishni tanladim. Bu uzun ingichka naychalar va porlab turgan plazmaning balandligi quvurlar orqali o'tadigan oqimga bog'liq. Chapdagi naycha soatlik qadam bilan, o'ngdagi quvur esa bir necha daqiqada. Ular faqat ikkita o'tkazgichga ega, shuning uchun kontaktlarning zanglashiga olib keladi, bu dizaynda har bir trubadagi plazma balandligi hozirgi vaqtni ifodalovchi soat va daqiqali quvur bor. Vaqt Adafruit Trinket mikrokontrolderi va real vaqt soati (RTC) yordamida saqlanadi.

1 -qadam: qismlarni yig'ish

Qismlarni yig'ish
Qismlarni yig'ish

Ikkita bo'lim mavjud, birinchi navbatda elektronika, ikkinchidan o'rnatish va tugatish. Adafruit Trinket 5V - 7,95 AQSh dollari (www.adafruit.com/products/1501) Adafruit RTC - 9 dollar (www.adafruit.com/products/264) 2x Nixie IN -9 bargrafi - eBay 1x trubkasi uchun ~ 3 dollar. Nixie 140v quvvat manbai ~ eBayda 12 dollar 4x 47 uF elektrolit kondansatkichlari 4x 3.9 kOhm rezistorlar 2x 1 kOm potentsiometr 2x tranzistorli MJE340 NPN yuqori kuchlanishli ~ har biri 1 dollarlik LM7805 5v regulyatori ~ $ 1x 2.1 mmli rozetkasi ~ $ 1x loyihali qutisi 1 dona 12V shahar quvvat manbai (men eskirganini esdan chiqardim) lehim, ulanish simlari va hk. O'rnatish: men elektronikani kichik qora plastmassa loyiha qutisiga, so'ngra naychalarni antiqa soat harakatiga o'rnatishga qaror qildim. Soat va daqiqalarni belgilash uchun men quvurlar atrofiga o'ralgan mis simni ishlatardim. O'rnatish qismlari: Antik soat harakati - 10 dollar eBay Mis sim - 3 dollar eBay Hot elim

2 -qadam: O'chirish

O'chirish
O'chirish
O'chirish
O'chirish
O'chirish
O'chirish
O'chirish
O'chirish

Birinchi qadam - Nixie quvvat manbaini qurish. Bu eBay -dan kichik to'plam, shu jumladan kichik PCB va faqat komponentlarni taxtaga lehimlashi kerak edi. Bu alohida ta'minot 110-180V oralig'ida o'zgarib turadi, bortda kichik idish bilan boshqariladi. Kichik tornavida yordamida chiqishni ~ 140v ga sozlang. To'liq borishdan oldin, men nixie naychalarini sinab ko'rmoqchi edim, buning uchun men bitta trubka, tranzistor va o'zim yotqizgan 10k potentsiometr yordamida oddiy sinov sxemasini qurdim. Birinchi rasmda ko'rinib turibdiki, 140v kuchlanish quvur anodiga (o'ng oyoq) biriktirilgan. Keyin katod (chap oyoq) MJE340 tranzistorining kollektor oyog'iga ulanadi. 5 voltli tranzistor bazasida erga bo'linadigan 10k qozonga ulangan. Nihoyat, tranzistorli emitent 300 ohmlik cheklovli rezistor orqali erga ulanadi. Agar siz tranzistorlar va elektronika bilan tanish bo'lmasangiz, buning ahamiyati yo'q, uni simga ulang va plazma balandligini qozon tugmasi bilan o'zgartiring! Bu ishlagandan so'ng, biz soatni ishlab chiqarishni ko'rib chiqishimiz mumkin. To'liq soat sxemasini ikkinchi sxemada ko'rish mumkin. Bir oz tadqiqotdan so'ng, men Adafruit learn veb -saytida men xohlagan narsani bajaradigan mukammal qo'llanmani topdim. Qo'llanmani bu erda topishingiz mumkin: https://learn.adafruit.com/trinket-powered-analog-m… Bu qo'llanmada ikkita analog amper o'lchagichni boshqarish uchun Trinket tekshirgichi va RTC ishlatiladi. Ignaning burilishini nazorat qilish uchun puls kengligi modulyatsiyasi (PWM) yordamida. Amper o'lchagichining lasanlari o'rtacha PWMni samarali shahar signaliga aylantiradi. Ammo, agar biz PWM -ni quvurlarni haydash uchun to'g'ridan -to'g'ri ishlatsak, yuqori chastotali modulyatsiya shuni anglatadiki, plazma chizig'i trubaning tagiga "mahkamlanmaydi" va sizda aylanuvchi chiziq bo'ladi. Bunga yo'l qo'ymaslik uchun men deyarli doimiy signalni olish uchun PWMni past o'tkazgichli filtr yordamida uzoq vaqt davomida o'zgarmaganman. Bu 0,8 Gts chastotaga ega, bu juda yaxshi, chunki biz har 5 soniyada soat vaqtini yangilaymiz. Bundan tashqari, bargraflarning cheklangan umr ko'rish muddati bor va ularni almashtirish kerak bo'lishi mumkin va har bir naycha aynan bir xil emas, men trubadan keyin 1k idish qo'ydim. Bu ikki quvur uchun plazma balandligini sozlash imkonini beradi. Trinketni real vaqt soatiga (RCT) ulash uchun Trinket-pin 0-ni RTC-SDA ga, Trinket-pin 2-ni RTC-SCL-ga va Trinket-5v-ni RTC-5v-ga va Trinket GND-ni RTC-ga ulang. Bu bo'limda Adafruit soat ko'rsatmalarini ko'rish foydali bo'lishi mumkin, https://learn.adafruit.com/trinket-powered-analog-…. Trinket va RTC to'g'ri ulanganidan so'ng, sxemaga diqqat bilan amal qilib, nixie trubkalarini, tranzistorlarni, filtrlarni va hokazolarni taxtaga ulang.

RTC va Trinket bilan gaplashish uchun avval to'g'ri kutubxonalarni Adafruit Github -dan yuklab olishingiz kerak. Sizga TinyWireM.h va TInyRTClib.h kerak. Birinchidan, biz naychalarni sozlashni xohlaymiz, bu ko'rsatma oxirida kalibrlash eskizini yuklaymiz. Agar oxiridagi eskizlarning hech biri ishlamasa, Adafruit soatining eskizini ko'ring. Men Adafruit soati eskizini nixie naychalari bilan eng samarali ishlashi uchun sozladim, lekin Adafruit eskizi yaxshi ishlaydi.

3 -qadam: Kalibrlash

Kalibrlash
Kalibrlash

Kalibrlash eskizini yuklaganingizdan so'ng bitiruvlar belgilanishi kerak.

Kalibrlashning uchta rejimi mavjud, birinchisi ikkala nixie naychasini maksimal chiqishga o'rnatadi. Ikkala trubadagi plazma balandligi bir xil va maksimal balandlikdan bir oz pastroq bo'lishi uchun idishni sozlash uchun undan foydalaning. Bu javob butun soat oralig'ida chiziqli bo'lishini ta'minlaydi.

Ikkinchi parametr daqiqa trubkasini sozlaydi. U har 5 soniyada 0, 15, 30, 45 va 60 daqiqa orasida o'zgarib turadi.

Oxirgi sozlash har bir soatlik qadam uchun buni takrorlaydi. Adafruit soatlaridan farqli o'laroq, soat ko'rsatkichi soatiga bir marta qat'iy qadam bilan harakat qiladi. Analog hisoblagichdan foydalanganda har bir soat uchun chiziqli javob olish qiyin edi.

Qozonni sozlagandan so'ng, eskizni bir necha daqiqaga kalibrlash uchun yuklang. Yupqa mis simni oling va qisqa uzunlikni kesib oling. Naychani aylantirib, ikki uchini bir -biriga buring. Buni to'g'ri joyga siljiting va issiq yopishtiruvchi tabancadan foydalanib, kerakli joyga yopishtirish uchun kichik yopishqoq bo'lak qo'ying. Buni har bir daqiqa va soat ortishi uchun takrorlang.

Men bu jarayonni suratga olishni unutganman, lekin siz simlardan qanday bog'langanini rasmlardan bilib olasiz. Garchi men simni ulash uchun kamroq elim ishlatgan bo'lsam ham.

4 -qadam: o'rnatish va tugatish

O'rnatish va tugatish
O'rnatish va tugatish
O'rnatish va tugatish
O'rnatish va tugatish
O'rnatish va tugatish
O'rnatish va tugatish

Quvurlar kalibrlangandan va ishlagandan so'ng, kontaktlarning zanglashini doimiy ravishda amalga oshirish va qandaydir tayanchga o'rnatish vaqti keldi. Men antiqa soat harakatini tanlayman, chunki menga antiqa, 60 -yillar va zamonaviy texnologiyalarning kombinatsiyasi yoqdi, chunki taxtadan taxtaga o'tkazishda juda ehtiyot bo'ling va barcha ulanishlar bajarilishini ta'minlashga shoshilmang. Men sotib olgan quti biroz kichkina edi, lekin ehtiyotkorlik bilan joylashtirib, hammasini joyiga qo'yishga muvaffaq bo'ldim. Men yon tomondan quvvat manbai uchun teshik ochdim, ikkinchisi esa nixie simlari uchun. Qisqa bo'lishining oldini olish uchun nixie simlarini issiqlik qisqarishida yopib qo'ydim. Elektron qutiga o'rnatilganida uni soatning orqasiga yopishtiring. Quvurlarni o'rnatish uchun men issiq elim ishlatardim va o'ralgan simlarning uchlarini metallga yopishtirdim, ehtiyot bo'ldim. Ehtimol, men juda ko'p elim ishlatganman, lekin bu unchalik sezilmaydi. Bu kelajakda yaxshilanishi mumkin bo'lgan narsa bo'lishi mumkin. Hammasi o'rnatilgandan so'ng, Nixie soatining eskizini yuklang va sizning yangi soatingizga qoyil qoling!

5 -qadam: Arduino eskiz - kalibrlash

#define HOUR_PIN 1 // Trinket GPIO #1 da PWM orqali soatni ko'rsatish

#define MINUTE_PIN 4 // Trinket GPIO #4 da PWM orqali daqiqali displey (Taymer 1 qo'ng'iroqlari orqali)

int soat = 57; int daqiqa = 57; // minimal pwmni belgilang

void setup () {pinMode (HOUR_PIN, OUTPUT); pinMod (MINUTE_PIN, OUTPUT); PWM4_init (); // PWM chiqishlarini sozlash

}

void loop () {// Maksimal trubaning balandligi analogWrite (HOUR_PIN, 255) ga mos kelishiga ishonch hosil qilish uchun nixie kostryulkalarini burish uchun buni ishlating; analogWrite4 (255); // Buni daqiqalar sonini sozlash uchun foydalaning

/*

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

*/

// Buni soatlik o'sishlarni sozlash uchun ishlating /*

analogWrite (HOUR_PIN, 57); // 57 - minimal chiqish va 1 am/pm kechikish (4000) ga to'g'ri keladi; // kechiktirish 4 soniya analogWrite (HOUR_PIN, 75); // 75 - bu 2 am/pm kechikish (4000) ga to'g'ri keladigan chiqish; analogWrite (HOUR_PIN, 93); // 93 - bu 3 am/pm kechikish (4000) ga to'g'ri keladigan chiqish; analogWrite (HOUR_PIN, 111); // 111 - bu ertalab soat 4 da kechikish (4000) ga to'g'ri keladigan chiqish; analogWrite (HOUR_PIN, 129); // 129 - bu ertalabki soat 5 da kechikish (4000) ga to'g'ri keladigan chiqish; analogWrite (HOUR_PIN, 147); // 147 - bu 6 am/pm kechikish (4000) ga to'g'ri keladigan chiqish; analogWrite (HOUR_PIN, 165); // 165 - bu ertalabki soat 7 da (4000) kechikishga to'g'ri keladigan chiqish; analogWrite (HOUR_PIN, 183); // 183 - 8 am/pm kechikish (4000) ga to'g'ri keladigan chiqish; analogWrite (HOUR_PIN, 201); // 201 - bu ertalabki soat 9:00 (4000) ga to'g'ri keladigan chiqish; analogWrite (HOUR_PIN, 219); // 219 - bu 10:00/kechikish kechikishiga mos keladigan chiqish (4000); analogWrite (HOUR_PIN, 237); // 237 - chiqish 11 am/pm kechikish (4000) ga to'g'ri keladi; analogWrite (HOUR_PIN, 255); // 255 - bu soat 12:00 ga to'g'ri keladigan chiqish

*/

}

void PWM4_init () {// Taymer 1 TCCR1 = _BV (CS10) yordamida Trinket GPIO #4 (PB4, pin 3) da PWM -ni sozlash; // oldindan hisoblagich yo'q GTCCR = _BV (COM1B1) | _BV (PWM1B); // taqqoslashda OC1B ni tozalash OCR1B = 127; // vazifa aylanishi 50% OCR1C = 255 ga boshlanadi; // chastota}

// Trinket GPIO #4 -da analogWrite -ga ruxsat berish funktsiyasi analogWrite4 (uint8_t duty_value) {OCR1B = duty_value; // boj 0 dan 255 gacha bo'lishi mumkin (0 dan 100%gacha)}

6 -qadam: Arduino eskiz - soat

// Adafruit Trinket analog hisoblagichli soat

// I2C va TinyWireM lib orqali ulangan DS1307 RTC yordamida sana va vaqt funktsiyalari

// Bu kutubxonalarni Adafruit Github omboridan yuklab oling va // Arduino kutubxonalar katalogingizga o'rnating #include #include

// Nosozliklarni tuzatish uchun ketma -ket kodni yozish uchun FTDI Friend -ni RX -pinli Pin 3 -ga ulangan holda ishlating // FTDI do'stining 9600 -dagi USB -portiga o'rnatilgan terminal dasturi kerak bo'ladi (Windows uchun PuTTY kabi). bod Nimalar borligini ko'rish uchun ketma -ket buyruqlarni bekor qilmang // #HOUR_PIN 1 ni belgilang // Trinket GPIO #1 da PWM orqali soat ko'rsatuvi #minutE_PIN 4ni aniqlang // Trinket GPIO #4 da PWM orqali daqiqali displey (Taymer 1 qo'ng'iroqlari orqali) // SendOnlySoftwareSerial Serial (3); // Trinket Pin 3 -da ketma -ket uzatish RTC_DS1307 rtc; // Haqiqiy vaqtni sozlash

void setup () {pinMode (HOUR_PIN, OUTPUT); // PWM o'lchagich pinlarini pinMode chiqishlari sifatida belgilang (MINUTE_PIN, OUTPUT); PWM4_init (); // Taymer 1ni Trinket Pin 4 TinyWireM.begin () da PWM ishlashiga sozlang; // I2C boshlang rtc.begin (); // DS1307 real vaqtini boshlang //Serial.begin(9600); // Serial monitorni 9600 boddan boshlang, agar (! Rtc.isrunning ()) {//Serial.println("RTC ishlamayapti! "); // keyingi satrda RTC bu eskiz tuzilgan sana va vaqtga o'rnatiladi rtc.adjust (DateTime (_ DATE_, _TIME_)); }}

void loop () {uint8_t hourvalue, minutevalue; uint8_t soatlik kuchlanish, minutevoltaj;

DateTime now = rtc.now (); // RTC ma'lumotlarini oling hourvalue = now.hour (); // Soatni oling, agar (hourvalue> 12) hourvalue -= 12; // Bu soat 12 soatlik minutevalue = now.minute (); // Daqiqalarni oling

minutevoltaj = xarita (minutevalue, 1, 60, 57, 255); // PWM ish aylanishiga daqiqalarni aylantirish

if (hourvalue == 1) {analogWrite (HOUR_PIN, 57); } if (hourvalue == 2) {analogWrite (HOUR_PIN, 75); // har bir soat +18} ga to'g'ri keladi, agar (soat qiymati == 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 (minutevoltage); // daqiqali analog yozish xaritalash ishlari bilan bir xil bo'lib qolishi mumkin // protsessorni uxlatish uchun kod afzal bo'lishi mumkin - biz kechiktirishni kechiktiramiz (5000); // har 5 soniyada vaqtni tekshiring. Siz buni o'zgartirishingiz mumkin. }

void PWM4_init () {// Taymer 1 TCCR1 = _BV (CS10) yordamida Trinket GPIO #4 (PB4, pin 3) da PWM -ni sozlash; // oldindan hisoblagich yo'q GTCCR = _BV (COM1B1) | _BV (PWM1B); // taqqoslashda OC1B ni tozalash OCR1B = 127; // vazifa tsikli 50% OCR1C = 255 ga boshlanadi; // chastota}

// Trinket GPIO #4 -da analogWrite -ga ruxsat berish funktsiyasi analogWrite4 (uint8_t duty_value) {OCR1B = duty_value; // boj 0 dan 255 gacha bo'lishi mumkin (0 dan 100%gacha)}

Tavsiya: