Агуулгын хүснэгт:

Nixie Bargraph Цаг: 6 алхам (зурагтай)
Nixie Bargraph Цаг: 6 алхам (зурагтай)

Видео: Nixie Bargraph Цаг: 6 алхам (зурагтай)

Видео: Nixie Bargraph Цаг: 6 алхам (зурагтай)
Видео: CaG and Jack wiv equalizer shirts in road 2024, Долдугаар сарын
Anonim
Никси Барграфын цаг
Никси Барграфын цаг
Никси Барграфын цаг
Никси Барграфын цаг

9/11/17 -ийг засах Kickstarter -ийн тусламжтайгаар би энэ цагны иж бүрдлийг гаргав. Үүнд жолоочийн самбар, 2 Nixie IN-9 хоолой багтсан болно. Таны нэмэх ёстой зүйл бол өөрийн Arduino/Raspberry Pi/бусад юм. Багцыг олж болно, гэхдээ энэ линк дээр дарна уу!

Тиймээс би онлайнаар Nixie -ийн олон цагийг харсан бөгөөд гайхалтай харагдаж байна гэж бодсон ч гуурс оруулдаггүй цаг дээр 100 доллар зарцуулахыг хүсээгүй! ба хэлхээ. Би ерөнхийдөө ижил төстэй харагддаг nixie цагуудаас арай өөр зүйл хийхийг хүсч байсан. Эцэст нь би Nixie IN-9 bargraph хоолой ашиглахаар шийдсэн. Эдгээр нь урт нимгэн хоолой бөгөөд гялалзсан плазмын өндөр нь хоолойгоор дамжих гүйдлээс хамаарна. Зүүн талд байгаа хоолой нь цагийн алхмаар, баруун талд байгаа хоолой нь хэдэн минутын дотор байна. Тэд зөвхөн хоёр хөтөчтэй тул хэлхээг илүү урагш чиглүүлдэг бөгөөд энэ загварт цаг, минутын хоолой байдаг бөгөөд хоолой бүрт плазмын өндөр нь одоогийн цагийг илэрхийлдэг. Цагийг Adafruit Trinket микроконтроллер ба бодит цагийн цаг (RTC) ашиглан хадгалдаг.

Алхам 1: эд ангиудыг угсрах

Эд ангиудыг угсрах
Эд ангиудыг угсрах

Эхний хэсэг нь электроник, хоёрдугаарт угсрах, дуусгах гэсэн хоёр хэсэгтэй. Шаардлагатай электрон бүрэлдэхүүн хэсгүүд нь: Adafruit Trinket 5V - 7.95 доллар (www.adafruit.com/products/1501) Adafruit RTC - 9 доллар (www.adafruit.com/products/264) 2x Nixie IN -9 bargraph ~ eBay 1x дээрх хоолой бүрт $ 3. Nixie 140v цахилгаан хангамж ~ eBay дээр $ 12 4x 47 uF электролитийн конденсатор 4х 3.9 кОм эсэргүүцэл 2х 1 кОм потенциометр 2х транзистор MJE340 NPN өндөр хүчдэл ~ 1х 1м LM7805 5v зохицуулагч тус бүр ~ 1 $ 2.1x залгуур ~ $ 1 1x төслийн хайрцаг pcb 12V тогтмол гүйдлийн цахилгаан хангамж (би удтал мартагдсан төхөөрөмжөөс хуучныг нь олсон) Гагнах, холбох утас гэх мэт. Суурилуулах: Би цахилгаан хэрэгслийг жижиг хар хуванцар төслийн хайрцагт холбож, дараа нь хоолойг эртний цагийн хөдөлгөөнд холбохоор шийдсэн. Цаг, минутыг тэмдэглэхийн тулд би хоолойнуудыг ороосон зэс утсыг ашигласан. Холбох эд анги: Эртний цагийн хөдөлгөөн - 10 доллар eBay Зэс утас - 3 доллар eBay Халуун цавуу буу

Алхам 2: Хэлхээ

Хэлхээ
Хэлхээ
Хэлхээ
Хэлхээ
Хэлхээ
Хэлхээ
Хэлхээ
Хэлхээ

Эхний алхам бол Nixie цахилгаан хангамжийг бий болгох явдал юм. Энэ нь eBay -ийн жижигхэн ПХБ -ийг багтаасан жижигхэн иж бүрдэл болсон бөгөөд зөвхөн бүрэлдэхүүн хэсгүүдийг самбар дээр гагнах шаардлагатай байв. Энэхүү тодорхой хангамж нь 110-180В хооронд хэлбэлздэг бөгөөд самбар дээрх жижиг тогоо ашиглан хянах боломжтой. Жижиг шургуулагч ашиглан гаралтыг ~ 140v болгоно. Би бүхэлд нь явахаасаа өмнө никси хоолойгоо туршиж үзэхийг хүсч байсан бөгөөд үүнийг хийхийн тулд би байрлуулсан нэг хоолой, транзистор, 10 к потенциометр ашиглан энгийн туршилтын хэлхээг бүтээсэн. Эхний зургаас харахад 140v тэжээлийг хоолойн анод (баруун хөл) хавсаргасан болно. Дараа нь катод (зүүн хөл) нь MJE340 транзисторын коллекторын хөлтэй холбогддог. Транзисторын баазад газардуу хуваасан 10 к саванд 5 вольтын тэжээл холбогдсон байна. Төгсгөлд нь транзистор ялгаруулагчийг 300 Ом гүйдлийн хязгаарлагч резистороор холбож газардуулдаг. Хэрэв та транзистор, электроникийн талаар сайн мэдэхгүй бол энэ нь хамаагүй, зүгээр л утсаар холбоод плазмын өндрийг тогооны бариулаар солино уу! Үүнийг ажиллуулсны дараа бид өөрсдийнхөө цагийг харах боломжтой. Бүрэн цагийн хэлхээг хоёр дахь хэлхээний диаграмаас харж болно. Судалгааны дараа би Adafruit learn вэбсайтаас яг хийхийг хүссэн зүйлээ хийж буй төгс гарын авлага олж авлаа. Хичээлийг эндээс олж болно: https://learn.adafruit.com/trinket-powered-analog-m… Энэхүү заавар нь Trinket хянагч ба RTC ашиглан аналог хоёр ампер тоолуурыг хянадаг. Зүүний хазайлтыг хянахын тулд импульсийн өргөн модуляцийг (PWM) ашиглах. Ампер тоолуурын ороомог нь ХОУХ -ийг дунджаар үр дүнтэй тогтмол гүйдлийн дохио болгодог. Гэсэн хэдий ч хэрэв бид ХБХ -ийг шууд хоолойг жолоодоход ашигладаг бол өндөр давтамжийн модуляци нь плазмын бар нь хоолойн сууринд "хавчуулагдаагүй" хэвээр үлдэх бөгөөд та нисдэг баартай болно гэсэн үг юм. Үүнээс зайлсхийхийн тулд би ХОУХ -ны дунджаар тогтмол дамжуулалттай бага нэвтрүүлэх шүүлтүүр ашиглан бараг тогтмол гүйдлийн дохио авсан. Энэ нь 0.8 Гц давтамжтай, зөвхөн 5 секунд тутамд цагийг шинэчилж байдаг тул энэ нь зүгээр юм. Нэмж дурдахад барграфын ашиглалтын хугацаа хязгаарлагдмал тул солих шаардлагатай байж магадгүй бөгөөд хоолой бүр ижил биш тул би хоолойны дараа 1к савыг оруулсан болно. Энэ нь хоёр хоолойн плазмын өндрийг тохируулах боломжийг олгодог. Бөмбөгөр утсыг бодит цагийн утсаар (RCT) холбохын тулд Trinket-pin 0-ийг RTC-SDA, Trinket-pin 2-ийг RTC-SCL, Trinket-5v-ийг RTC-5v руу холбож, Trinket GND-ийг RTC газарт холбоно уу. Энэ хэсэгт Adafruit цагны зааврыг үзэх нь тустай байж магадгүй, https://learn.adafruit.com/trinket-powered-analog-…. Trinket ба RTC -ийг зөв утсаар холбосны дараа хэлхээний диаграмыг сайтар дагаж мөрдөх самбар, транзистор, шүүлтүүр гэх мэтийг утсаар холбоно уу.

RTC болон Trinket -ийг ярихын тулд эхлээд зөв номын санг Adafruit Github -аас татаж авах хэрэгтэй. Танд TinyWireM.h ба TInyRTClib.h хэрэгтэй. Эхлээд бид хоолойнуудыг тохируулахыг хүсч байна. Хэрэв төгсгөлд нь ноорогуудын аль нь ч ажиллахгүй бол Adafruit цагны ноорогыг туршиж үзээрэй. Би Adafruit цагны ноорогыг nixie хоолойтой хамгийн үр дүнтэй ажиллахаар тохируулсан боловч Адафрутын ноорог сайн ажиллах болно.

Алхам 3: Калибровк хийх

Тохируулгын
Тохируулгын

Та шалгалт тохируулгын зургийг байршуулсны дараа төгсөлтийг тэмдэглэх шаардлагатай.

Калибровк хийх гурван горим байдаг бөгөөд эхнийх нь nixie хоолойг хамгийн их гаралтанд тохируулдаг. Үүнийг ашиглан савыг хоёр хоолой дахь плазмын өндөр ижил байх ба хамгийн дээд өндрөөс арай доогуур байхаар тохируулна. Энэ нь хариу үйлдэл бүх цагийн хүрээнд шугаман байх болно.

Хоёр дахь тохиргоо нь минутын хоолойг тохируулна. Энэ нь 5 секунд тутамд 0, 15, 30, 45, 60 минутын хооронд өөрчлөгддөг.

Сүүлийн тохиргоо нь үүнийг цаг тутамд давтана. Adafruit цагнаас ялгаатай нь цагийн заагч тогтмол цагт нэг удаа тогтмол хөдөлдөг. Аналог тоолуур ашиглах үед цаг тутамд шугаман хариулт авахад хэцүү байсан.

Савыг тохируулсны дараа ноорогыг хэдэн минутын турш тохируулахын тулд байршуулна уу. Нимгэн зэс утсыг аваад богино уртыг хайчилж ав. Хоолойг тойруулан боож, хоёр үзүүрийг нь мушгина. Үүнийг зөв байрлал руу гулсуулж, халуун цавуугаар буу хийж, цавууны жижиг хэсгийг зөв газар хадгална. Үүнийг минут, цаг тутамд давт.

Би энэ үйл явцын талаар зураг авахаа мартсан боловч утаснуудыг хэрхэн яаж хавсаргасан болохыг та зургуудаас харж болно. Хэдийгээр би утсыг холбохдоо цавуу бага хэрэглэдэг байсан.

Алхам 4: Суулгах, дуусгах

Суулгах ба дуусгах
Суулгах ба дуусгах
Суулгах ба дуусгах
Суулгах ба дуусгах
Суулгах ба дуусгах
Суулгах ба дуусгах

Хоолойнуудыг бүгдийг нь тохируулаад, ажиллуулсны дараа хэлхээг байнга хийж, ямар нэгэн сууринд бэхлэх цаг болжээ. Би эртний, 60 -аад оны болон орчин үеийн технологийн холимог дуртай байсан тул эртний цагны хөдөлгөөнийг сонгож, талхны самбараас туузан самбар руу шилжүүлэхдээ маш болгоомжтой байж, бүх холболт хийгдсэн эсэхийг шалгаарай. Миний худалдаж авсан хайрцаг жаахан жижигхэн боловч болгоомжтой байрлуулж, бага зэрэг хүчээр хийснээр бүгдийг нь багтааж чадсан. Би хажуу талдаа цахилгаан хангамж, нөгөө нь nixie -ийн цооног өрөмдсөн. Богино өмднөөс урьдчилан сэргийлэхийн тулд би утаснуудын дулааныг багасгаж, цахилгаан хэрэгслийг хайрцагт суулгасны дараа цагны арын хэсэгт наалддаг. Хоолойг холбохын тулд би халуун цавуу хэрэглэж, эрчилсэн утасны үзүүрийг метал дээр нааж, шулуун эсэхийг нь сайтар ажиглав. Би хэт их цавуу хэрэглэсэн байж магадгүй, гэхдээ энэ нь тийм ч мэдэгдэхүйц биш юм. Энэ нь ирээдүйд сайжруулж болох зүйл байж магадгүй юм. Энэ бүгдийг суулгасны дараа энэхүү зааварчилгааны төгсгөлд Nixie цагны ноорогыг ачаалж, өөрийн сайхан цагийг биширээрэй!

Алхам 5: Arduino Sketch - шалгалт тохируулга

#тодорхойлох HOUR_PIN 1 // Trinket GPIO #1 дээрх ХОУХ -ээр дамжуулан цагийн дэлгэц

#тодорхойлох MINUTE_PIN 4 // Trinket GPIO #4 дээр PWM -ээр дамжуулан минутын дэлгэц (Таймер 1 дуудлагаар)

int цаг = 57; int минут = 57; // хамгийн бага pwm -ийг тохируулна уу

хүчингүй тохиргоо () {pinMode (HOUR_PIN, OUTPUT); pinMode (MINUTE_PIN, OUTPUT); PWM4_init (); // ХОУХ -ны гаралтыг тохируулах

}

void loop () {// Үүнийг ашиглан nixie савыг тохируулахын тулд хоолойны хамгийн дээд өндөр нь analogWrite -тэй нийцэж байгаа эсэхийг шалгаарай (HOUR_PIN, 255); analogWrite4 (255); // Үүнийг ашиглан минутын алхамыг тохируулна уу

/*

analogWrite4 (57); // минут 0 саатал (5000); analogWrite4 (107); // 15 минутын саатал (5000); analogWrite4 (156); // 30 минутын саатал (5000); analogWrite4 (206); // 45 минутын саатал (5000); analogWrite4 (255); // 60 минутын саатал (5000);

*/

// Үүнийг ашиглан цагны хэмжээг тохируулна уу /*

analogWrite (HOUR_PIN, 57); // 57 бол хамгийн бага гаралт бөгөөд 1 am /pm хоцролттой (4000) харгалзана; // хойшлуулах 4 секундын analogWrite (HOUR_PIN, 75); // 75 бол 2 am /pm хоцролттой (4000) харгалзах гаралт; analogWrite (HOUR_PIN, 93); // 93 бол 3 am /pm саатал (4000) -тэй тохирох гаралт; analogWrite (HOUR_PIN, 111); // 111 бол 4 am /pm саатал (4000) -тэй тохирох гаралт; analogWrite (HOUR_PIN, 129); // 129 бол 5 am /pm саатал (4000) -тэй тохирох гаралт; analogWrite (HOUR_PIN, 147); // 147 бол 6 am /pm саатал (4000) харгалзах гаралт; analogWrite (HOUR_PIN, 165); // 165 бол өглөөний 7 цаг/4 цагийн хоцролттой (4000) харгалзах гаралт; analogWrite (HOUR_PIN, 183); // 183 бол 8 am /pm саатал (4000) харгалзах гаралт; analogWrite (HOUR_PIN, 201); // 201 бол 9 am /pm саатал (4000) харгалзах гаралт; analogWrite (HOUR_PIN, 219); // 219 бол өглөөний 10 цаг/4 цагийн хоцролттой (4000) харгалзах гаралт; analogWrite (HOUR_PIN, 237); // 237 бол өглөөний 11 цаг/цаг хоцролттой (4000) харгалзах гаралт; analogWrite (HOUR_PIN, 255); // 255 бол 12 am/pm -тэй тохирох гаралт юм

*/

}

void PWM4_init () {// Trinket GPIO #4 (PB4, pin 3) дээр PWM -ийг Timer 1 TCCR1 = _BV (CS10) ашиглан тохируулах; // prescaler байхгүй GTCCR = _BV (COM1B1) | _BV (PWM1B); // харьцуулах OC1B -ийг цэвэр OC1B = 127; // үүргийн мөчлөг 50% хүртэл эхэлнэ OCR1C = 255; // давтамж}

// Trinket GPIO #4 дээр analogWrite -ийг зөвшөөрөх функц analogWrite4 (uint8_t duty_value) {OCR1B = duty_value; // татвар 0 -ээс 255 (0 -ээс 100%хүртэл) байж болно}

Алхам 6: Arduino Sketch - Цаг

// Adafruit Trinket аналог тоолуурын цаг

// I2C болон TinyWireM lib -ээр холбогдсон DS1307 RTC ашиглан огноо, цагийн функцууд

// Эдгээр номын сангуудыг Adafruit -ийн Github репозитороос татаж аваад // Arduino номын сангийн санд суулгаарай #include #include

// Цуваа кодыг дибаг хийх, тайлбарлахгүй байхын тулд Pin 3 -т холбогдсон RX зүү бүхий FTDI Friend -ийг ашиглана уу // Танд FTDI найзынхаа USB порт руу 9600 дугаарт тохируулсан терминал програм (Windows -д зориулсан PuTTY гэх мэт) хэрэгтэй болно. боод. Яаж байгааг харахын тулд цуваа тушаалуудыг орхих // #HOUR_PIN 1 -ийг тодорхойлох // Trinket GPIO #1 дээрх PWM -ээр цаг харуулах #MINUTE_PIN 4 -ийг тодорхойлох // Trinket GPIO #4 дээрх PWM -ээр дамжуулан минутын дэлгэц (Timer 1 дуудлагаар) // SendOnlySoftwareSerial Serial (3); // Trinket Pin 3 дээр цуваа дамжуулалт RTC_DS1307 rtc; // Бодит цагийн цагийг тохируулах

хүчингүй тохиргоо () {pinMode (HOUR_PIN, OUTPUT); // ХОУХ -ны тоолуурыг pinMode (MINUTE_PIN, OUTPUT) гаралт гэж тодорхойлох; PWM4_init (); // Таймер 1 -ийг Trinket Pin 4 TinyWireM.begin () дээр ХОУХШ -ийг ажиллуулахаар тохируулна уу; // Эхлэх I2C rtc.begin (); // DS1307 бодит цагийн цагийг эхлүүл //Serial.begin(9600); // (! Rtc.isrunning ()) {//Serial.println("RTC ажиллахгүй байна! ") Бол Цуваа мониторыг 9600 baud -аас эхлүүлээрэй;"); // Дараах мөр нь энэ ноорогийг эмхэтгэсэн огноо, цагийг RTC болгож тохируулдаг (DateTime (_ DATE_, _TIME_)); }}

void loop () {uint8_t hourvalue, minutevalue; uint8_t цагийн хүчдэл, минутын хүчдэл;

DateTime now = rtc.now (); // RTC мэдээллийн цагийн утгыг авах = now.hour (); // Хэрэв (hourvalue> 12) hourvalue -= 12; // Энэ цаг нь 12 цагийн минутын үнэ цэнэ = одоо.минут (); // Минут авах

minutevoltage = газрын зураг (minutevalue, 1, 60, 57, 255); // Минутуудыг ХОУХ -ны үүргийн мөчлөгт хөрвүүлэх

if (hourvalue == 1) {analogWrite (HOUR_PIN, 57); } if (hourvalue == 2) {analogWrite (HOUR_PIN, 75); // цаг бүр +18} -тай тохирч байвал (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 (минутын хүчдэл); // минутын аналог бичих нь зураглалын ажилтай ижил хэвээр байж болно // процессорыг унтраах кодыг ашиглах нь илүү дээр юм - бид хойшлуулах хугацааг хойшлуулах болно (5000); // 5 секунд тутамд цагийг шалгаарай. Та үүнийг өөрчилж болно. }

void PWM4_init () {// Таймер 1 TCCR1 = _BV (CS10) ашиглан Trinket GPIO #4 (PB4, pin 3) дээр ХОУХШ -ийг тохируулах; // prescaler байхгүй GTCCR = _BV (COM1B1) | _BV (PWM1B); // харьцуулах OC1B -ийг цэвэр OC1B = 127; // үүргийн мөчлөг 50% хүртэл эхэлнэ OCR1C = 255; // давтамж}

// Trinket GPIO #4 дээр analogWrite -ийг зөвшөөрөх функц analogWrite4 (uint8_t duty_value) {OCR1B = duty_value; // татвар 0 -ээс 255 (0 -ээс 100%хүртэл) байж болно}

Зөвлөмж болгож буй: