جدول المحتويات:

Nixie Bargraph Clock: 6 خطوات (بالصور)
Nixie Bargraph Clock: 6 خطوات (بالصور)

فيديو: Nixie Bargraph Clock: 6 خطوات (بالصور)

فيديو: Nixie Bargraph Clock: 6 خطوات (بالصور)
فيديو: Pi Zero Nixie Tube thermometer and humidity meter 2024, يوليو
Anonim
Nixie Bargraph Clock
Nixie Bargraph Clock
Nixie Bargraph Clock
Nixie Bargraph Clock

تحرير 9/11/17 بمساعدة Kickstarter ، قمت الآن بإصدار مجموعة لمجموعة أدوات الساعة هذه! تشتمل على لوحة للقيادة و 2 أنابيب Nixie IN-9. كل ما تحتاج إلى إضافته هو Arduino / Raspberry Pi الخاص بك / غير ذلك. يمكن العثور على المجموعة ولكن بالضغط على هذا الرابط!

لقد رأيت الكثير من ساعات Nixie عبر الإنترنت واعتقدت أنها تبدو رائعة ، لكنني لم أرغب في إنفاق 100 دولار + على ساعة لا تتضمن حتى الأنابيب! والدوائر. أردت أن أصنع شيئًا مختلفًا قليلاً عن مجموعة كبيرة من ساعات nixie المتشابهة إلى حد ما بشكل عام. في النهاية ، اخترت استخدام أنابيب الرسم البياني Nixie IN-9. هذه أنابيب رفيعة طويلة ويعتمد ارتفاع البلازما المتوهجة على التيار عبر الأنابيب. الأنبوب الموجود على اليسار بزيادات الساعة والأنبوب الموجود على اليمين بالدقائق. لديهم اثنين فقط من الخيوط وبالتالي يجعل بناء الدائرة أكثر استقامة للأمام. في هذا التصميم ، يوجد أنبوب ساعة ودقيقة ، مع ارتفاع البلازما في كل أنبوب يمثل الوقت الحالي. يتم الاحتفاظ بالوقت باستخدام متحكم 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 ~ 3 دولارات لكل أنبوب على eBay 1x Nixie 140v امدادات الطاقة ~ 12 دولارًا على eBay 4x 47 uF مكثفات المنحل بالكهرباء 4x 3.9 kOhm المقاومات 2x 1 kOhm الجهد 2x الترانزستور MJE340 NPN الجهد العالي ~ 1 دولار لكل 1x LM7805 5v منظم ~ 1 دولار 1 × 2.1 مم مقبس ~ 1 دولار 1x صندوق المشروع مع ثنائي الفينيل متعدد الكلور ~ 5 دولارات 1x مزود طاقة بجهد 12 فولت تيار مستمر (لقد وجدت واحدة قديمة من أداة منسية منذ فترة طويلة) لحام ، وسلك ربط ، وما إلى ذلك التركيب: قررت تركيب الإلكترونيات في صندوق مشروع بلاستيكي أسود صغير ، ثم تركيب الأنابيب على حركة ساعة قديمة. للاحتفال بالساعة والدقائق ، استخدمت سلكًا نحاسيًا ملفوفًا حول الأنابيب. أجزاء التركيب: حركة الساعة العتيقة - 10 دولارات eBay الأسلاك النحاسية - 3 دولارات eBay مسدس الغراء الساخن

الخطوة 2: الدائرة

دائرة كهربائية
دائرة كهربائية
دائرة كهربائية
دائرة كهربائية
دائرة كهربائية
دائرة كهربائية
دائرة كهربائية
دائرة كهربائية

الخطوة الأولى هي بناء مصدر طاقة Nixie. جاء هذا كمجموعة صغيرة لطيفة من eBay ، بما في ذلك القليل من ثنائي الفينيل متعدد الكلور وتحتاج فقط إلى أن يتم لحام المكونات باللوحة. هذا العرض الخاص متغير بين 110-180 فولت ، ويمكن التحكم فيه بوعاء صغير على السبورة. باستخدام مفك لولبي صغير ، اضبط الإخراج إلى 140 فولت تقريبًا. قبل أن أذهب إلى الطريق بالكامل ، كنت أرغب في اختبار أنابيب nixie الخاصة بي ، للقيام بذلك ، قمت ببناء دائرة اختبار بسيطة باستخدام أنبوب واحد ، وترانزستور ، ومقياس جهد 10 كيلو الذي كنت أضعه حوله. كما يتضح من الشكل الأول ، يتم توصيل الإمداد 140 فولت بأنبوب الأنود (الساق اليمنى). ثم يتم توصيل الكاثود (الساق اليسرى) بساق المجمع للترانزستور MJE340. يتم توصيل مصدر 5 فولت بوعاء 10 كيلو مقسم إلى الأرض في قاعدة الترانزستور. أخيرًا ، يتم توصيل باعث الترانزستور من خلال المقاوم الحد من التيار 300 أوم إلى الأرض. إذا لم تكن معتادًا على الترانزستورات والإلكترونيات ، فلا يهم حقًا ، ما عليك سوى توصيلها وتغيير ارتفاع البلازما باستخدام مقبض الإناء! بمجرد أن يعمل ذلك ، يمكننا النظر في صنع ساعتنا. يمكن رؤية دارة الساعة الكاملة في مخطط الدائرة الثانية. بعد إجراء بعض الأبحاث ، وجدت برنامجًا تعليميًا مثاليًا على موقع تعلم Adafruit يفعل بالضبط ما أردت فعله تقريبًا. يمكن العثور على البرنامج التعليمي هنا: https://learn.adafruit.com/trinket-powered-analog-m… يستخدم هذا البرنامج التعليمي وحدة تحكم Trinket و RTC للتحكم في جهازي أمبير تناظري. استخدام تعديل عرض النبضة (PWM) للتحكم في انحراف الإبرة. يقوم ملف مقياس أمبير بتحويل متوسط PWM إلى إشارة تيار مستمر فعالة. ومع ذلك ، إذا استخدمنا PWM مباشرة لقيادة الأنابيب ، فإن التعديل عالي التردد يعني أن شريط البلازما لن يظل "مثبتًا" بقاعدة الأنبوب وسيكون لديك شريط يحوم. لتجنب ذلك ، قمت بحساب متوسط 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 بشكل صحيح ، قم بتوصيل أنابيب nixie والترانزستورات والمرشحات وما إلى ذلك على لوح التجارب باتباع مخطط الدائرة بعناية.

للحصول على RTC و Trinket يتحدثان ، تحتاج أولاً إلى تنزيل المكتبات الصحيحة من Adafruit Github. أنت بحاجة إلى TinyWireM.h و TInyRTClib.h. أولاً ، نريد معايرة الأنابيب ، وتحميل رسم المعايرة في نهاية هذا الدليل. إذا لم تنجح أي من الرسومات في النهاية ، فجرّب رسم ساعة Adafruit. لقد قمت بتعديل مخطط ساعة Adafruit للعمل بشكل أكثر فاعلية مع أنابيب nixie لكن رسم Adafruit سيعمل بشكل جيد.

الخطوة 3: المعايرة

معايرة
معايرة

بمجرد تحميل مخطط المعايرة ، يجب وضع علامة على التخرج.

هناك ثلاثة أوضاع للمعايرة ، أولها يضبط كلا الأنبوبين nixie على أقصى إخراج. استخدم هذا لضبط القدر بحيث يكون ارتفاع البلازما في كلا الأنبوبين متماثلًا ويكون أقل بقليل من الارتفاع الأقصى. هذا يضمن أن تكون الاستجابة خطية على مدار الساعة بالكامل.

يقوم الإعداد الثاني بمعايرة أنبوب الدقائق. يتغير بين 0 و 15 و 30 و 45 و 60 دقيقة كل 5 ثوان.

الإعداد الأخير يكرر هذا لكل زيادة ساعة. على عكس ساعة Adafruit ، يتحرك مؤشر الساعة بزيادات ثابتة مرة كل ساعة. كان من الصعب الحصول على استجابة خطية لكل ساعة عند استخدام مقياس تناظري.

بمجرد ضبط القدر ، قم بتحميل الرسم للمعايرة لدقائق. خذ السلك النحاسي الرقيق وقصه بطول قصير. لف هذا حول الأنبوب وقم بلف الطرفين معًا. حرك هذا إلى الموضع الصحيح واستخدم مسدس الغراء الساخن ضع كمية صغيرة من الغراء لإبقائها في المكان الصحيح. كرر هذا مع كل زيادة دقيقة وساعة.

لقد نسيت التقاط أي صور لهذه العملية ولكن يمكنك أن ترى من الصور كيفية توصيل السلك. على الرغم من أنني استخدمت كمية أقل من الغراء لمجرد إرفاق السلك.

الخطوة 4: التركيب والتشطيب

التركيب والتشطيب
التركيب والتشطيب
التركيب والتشطيب
التركيب والتشطيب
التركيب والتشطيب
التركيب والتشطيب

بمجرد معايرة جميع الأنابيب والعمل ، حان الوقت الآن لعمل الدائرة بشكل دائم والتركيب على شكل من أشكال القاعدة. اخترت حركة الساعة العتيقة حيث أحببت مزيجًا من التحف ، الستينيات والتكنولوجيا الحديثة. عند الانتقال من اللوح إلى لوح الشريط ، كن حذرًا للغاية وخذ وقتك في التأكد من إجراء جميع التوصيلات. كان الصندوق الذي اشتريته صغيرًا بعض الشيء ولكن مع بعض الموضع الدقيق وقليل من الإجبار تمكنت من جعله مناسبًا تمامًا. لقد قمت بحفر ثقب في الجانب لمصدر الطاقة وآخر للخيوط nixie. لقد غطيت أسلاك nixie في الانكماش الحراري لتجنب أي شورت. عندما يتم تثبيت الإلكترونيات في الصندوق ، قم بلصقها في الجزء الخلفي من حركة الساعة. لتركيب الأنابيب ، استخدمت الغراء الساخن وألصقت نقاط السلك الملتوي بالمعدن ، مع الحرص على التأكد من أنها مستقيمة. ربما استخدمت الكثير من الغراء ولكنه ليس ملحوظًا جدًا. قد يكون شيئًا يمكن تحسينه في المستقبل. عندما يتم تركيبها كلها ، قم بتحميل رسم ساعة Nixie في نهاية هذه التعليمات واستمتع بساعتك الجديدة الجميلة!

الخطوة 5: رسم اردوينو - المعايرة

#define HOUR_PIN 1 // عرض الساعة عبر PWM على Trinket GPIO # 1

#define MINUTE_PIN 4 // عرض الدقيقة عبر PWM على Trinket GPIO # 4 (عبر مكالمات Timer 1)

عدد الساعات = 57 ؛ عدد الدقائق = 57 ؛ // تعيين الحد الأدنى pwm

إعداد باطل () {pinMode (HOUR_PIN ، الإخراج) ؛ pinMode (MINUTE_PIN ، الإخراج) ؛ PWM4_init () ، // إعداد مخرجات PWM

}

حلقة فارغة () {// استخدم هذا لتعديل الأواني 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 صباحًا / مساءً (4000) ؛ // تأخير 4 ثوانٍ analogWrite (HOUR_PIN ، 75) ؛ // 75 هو الإخراج الذي يتوافق مع تأخير 2 صباحًا / مساءً (4000) ؛ analogWrite (HOUR_PIN ، 93) ؛ // 93 هو الإخراج الذي يتوافق مع تأخير 3 صباحًا / مساءً (4000) ؛ analogWrite (HOUR_PIN، 111) ؛ // 111 هو الإخراج الذي يتوافق مع تأخير 4 صباحًا / مساءً (4000) ؛ analogWrite (HOUR_PIN ، 129) ؛ // 129 هو الإخراج الذي يتوافق مع تأخير 5 صباحًا / مساءً (4000) ؛ analogWrite (HOUR_PIN ، 147) ؛ // 147 هو الإخراج الذي يتوافق مع تأخير 6 صباحًا / مساءً (4000) ؛ analogWrite (HOUR_PIN ، 165) ؛ // 165 هو الإخراج الذي يتوافق مع تأخير 7 صباحًا / مساءً (4000) ؛ analogWrite (HOUR_PIN ، 183) ؛ // 183 هو الإخراج الذي يتوافق مع تأخير 8 صباحًا / مساءً (4000) ؛ analogWrite (HOUR_PIN ، 201) ؛ // 201 هو الإخراج الذي يتوافق مع تأخير 9 صباحًا / مساءً (4000) ؛ analogWrite (HOUR_PIN ، 219) ؛ // 219 هو الإخراج الذي يتوافق مع تأخير 10 صباحًا / مساءً (4000) ؛ analogWrite (HOUR_PIN ، 237) ؛ // 237 هو الإخراج الذي يتوافق مع تأخير 11 صباحًا / مساءً (4000) ؛ analogWrite (HOUR_PIN ، 255) ؛ // 255 هو الناتج الذي يتوافق مع 12 صباحًا / مساءً

*/

}

باطل PWM4_init () {// إعداد PWM على Trinket GPIO # 4 (PB4، pin 3) باستخدام Timer 1 TCCR1 = _BV (CS10) ؛ // لا يوجد مقياس مسبق GTCCR = _BV (COM1B1) | _BV (PWM1B) ؛ // امسح OC1B عند المقارنة OCR1B = 127 ؛ // تهيئة دورة العمل إلى 50٪ OCR1C = 255 ؛ // تردد }

// وظيفة للسماح لـ analogWrite على Trinket GPIO # 4 void analogWrite4 (uint8_t duty_value) {OCR1B = duty_value؛ // قد يكون الواجب من 0 إلى 255 (من 0 إلى 100٪)}

الخطوة 6: Arduino Sketch - Clock

// Adafruit Trinket التناظرية على مدار الساعة

// وظائف التاريخ والوقت باستخدام DS1307 RTC المتصلة عبر I2C و TinyWireM lib

// قم بتنزيل هذه المكتبات من مستودع Github الخاص بـ Adafruit و // قم بالتثبيت في دليل مكتبات Arduino # تضمين # تضمين

// للتصحيح ، وإلغاء التعليق على الرمز التسلسلي ، استخدم صديق FTDI مع دبوس RX الخاص به المتصل بـ Pin 3 // ستحتاج إلى برنامج طرفي (مثل برنامج PuTTY المجاني لنظام التشغيل Windows) مضبوطًا على // منفذ USB لصديق FTDI على 9600 الباود. قم بإلغاء تعليق الأوامر التسلسلية لمعرفة ما يجري // # حدد HOUR_PIN 1 // ساعة العرض عبر PWM على Trinket GPIO # 1 #define MINUTE_PIN 4 // Minute display عبر PWM على Trinket GPIO # 4 (عبر مكالمات Timer 1) // SendOnlySoftwareSerial Serial (3) ؛ // الإرسال التسلسلي على Trinket Pin 3 RTC_DS1307 rtc ؛ // إعداد ساعة الوقت الحقيقي

إعداد باطل () {pinMode (HOUR_PIN ، الإخراج) ؛ // حدد دبابيس مقياس PWM كمخرجات pinMode (MINUTE_PIN ، الإخراج) ؛ PWM4_init () ، // ضبط المؤقت 1 للعمل PWM على Trinket Pin 4 TinyWireM.begin () ؛ // Begin I2C rtc.begin () ؛ // Begin DS1307 ساعة الوقت الحقيقي //Serial.begin(9600) ؛ // Begin Serial Monitor عند 9600 باود إذا (! rtc.isrunning ()) {//Serial.println("RTC لا يعمل! ")؛ // السطر التالي يعين RTC على التاريخ والوقت الذي تم فيه تجميع هذا الرسم التخطيطي rtc.adjust (DateTime (_ DATE_، _TIME_)) ؛ }}

حلقة باطلة () {uint8_t hourvalue، minutevalue؛ uint8_t ساعة الجهد ، دقيقةالجهد ؛

DateTime now = rtc.now () ؛ // احصل على معلومات RTC hourvalue = now.hour () ؛ // احصل على الساعة إذا كانت (hourvalue> 12) hourvalue - = 12 ؛ // هذه الساعة هي 12 ساعة minutevalue = now.minute () ؛ // احصل على الدقائق

minutevoltage = الخريطة (minutevalue ، 1 ، 60 ، 57 ، 255) ؛ // تحويل الدقائق إلى دورة عمل PWM

إذا (hourvalue == 1) {analogWrite (HOUR_PIN، 57) ؛ } if (hourvalue == 2) {analogWrite (HOUR_PIN، 75)؛ // كل ساعة تقابل +18} if (hourvalue == 3) {analogWrite (HOUR_PIN، 91)؛ }

إذا (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) ؛ // يمكن أن تظل الكتابة التناظرية الدقيقة كما هي مثل أعمال التعيين // قد يكون من الأفضل استخدام الكود لوضع المعالج في وضع السكون - سنقوم بتأخير التأخير (5000) ؛ // تحقق من الوقت كل 5 ثوانٍ. يمكنك تغيير هذا. }

باطل PWM4_init () {// إعداد PWM على Trinket GPIO # 4 (PB4، pin 3) باستخدام Timer 1 TCCR1 = _BV (CS10) ؛ // لا يوجد مقياس مسبق GTCCR = _BV (COM1B1) | _BV (PWM1B) ؛ // امسح OC1B عند المقارنة OCR1B = 127 ؛ // تهيئة دورة العمل إلى 50٪ OCR1C = 255 ؛ // تردد }

// وظيفة للسماح لـ analogWrite على Trinket GPIO # 4 void analogWrite4 (uint8_t duty_value) {OCR1B = duty_value؛ // قد يكون الواجب من 0 إلى 255 (من 0 إلى 100٪)}

موصى به: