Satura rādītājs:

Nixie Bargraph pulkstenis: 6 soļi (ar attēliem)
Nixie Bargraph pulkstenis: 6 soļi (ar attēliem)

Video: Nixie Bargraph pulkstenis: 6 soļi (ar attēliem)

Video: Nixie Bargraph pulkstenis: 6 soļi (ar attēliem)
Video: Arduino Nixie pulkstenis 2024, Jūlijs
Anonim
Nixie Bargraph pulkstenis
Nixie Bargraph pulkstenis
Nixie Bargraph pulkstenis
Nixie Bargraph pulkstenis

Rediģēt 9/11/17 Ar Kickstarter palīdzību es tagad esmu izlaidis šī pulksteņa komplekta komplektu! Tas ietver vadītāja paneli un 2 Nixie IN-9 caurules. Viss, kas jums jāpievieno, ir savs Arduino/Raspberry Pi/cits. Komplektu var atrast, bet noklikšķiniet uz šīs saites!

Tāpēc es tiešsaistē esmu redzējis daudz Nixie pulksteņu un domāju, ka tie izskatījās lieliski, tomēr es negribēju tērēt vairāk nekā 100 USD par pulksteni, kurā pat nav iekļautas caurules! Tātad, ar nelielām zināšanām par elektroniku es medīju dažādās nixie lampās un ķēdes. Es gribēju kaut ko nedaudz atšķirt no plašā visumā diezgan līdzīga izskata pulksteņu klāsta. Beigās es izvēlējos izmantot Nixie IN-9 bargrafa lampas. Tās ir garas, plānas caurules, un kvēlojošās plazmas augstums ir atkarīgs no caurulēs esošās strāvas. Caurule pa kreisi ir ar stundu pieaugumu, un caurule labajā pusē ir minūtēs. Viņiem ir tikai divi vadi, un tāpēc ķēdes veidošana ir daudz tiešāka. Šajā dizainā ir stundas un minūtes caurule, un plazmas augstums katrā mēģenē atspoguļo pašreizējo laiku. Laiks tiek turēts, izmantojot Adafruit Trinket mikrokontrolleru un reālā laika pulksteni (RTC).

1. darbība: detaļu salikšana

Detaļu salikšana
Detaļu salikšana

Ir divas sadaļas, pirmkārt, elektronika un, otrkārt, montāža un apdare. Nepieciešamās elektroniskās sastāvdaļas ir šādas: Adafruit Trinket 5V - 7,95 USD (www.adafruit.com/products/1501) Adafruit RTC - 9 USD (www.adafruit.com/products/264) 2x Nixie IN -9 bargrafs ~ 3 USD par cauruli eBay 1x Nixie 140V barošanas avots ~ 12 USD par eBay 4x 47 uF elektrolītu kondensatori 4x 3,9 kOhm rezistori 2x 1 kOhm potenciometrs 2x tranzistors MJE340 NPN augstspriegums ~ 1 USD katrs 1x LM7805 5v regulators ~ 1 USD 1x 2,1 mm ligzda ~ 1 USD 1x projekta kaste ar PCB ~ 5 USD 1x 12 V līdzstrāvas barošanas avots (es atradu veco no kāda sen aizmirsta sīkrīka) Lodmetāls, savienojuma vads utt. Lai atzīmētu stundu un minūtes, es izmantoju vara stiepli, kas ietīta ap caurulēm. Montāžas detaļas: antīka pulksteņa kustība - 10 USD eBay vara stieple - 3 USD eBay karstās līmes pistole

2. solis: ķēde

Ķēde
Ķēde
Ķēde
Ķēde
Ķēde
Ķēde
Ķēde
Ķēde

Pirmais solis ir izveidot Nixie barošanas bloku. Tas nāca kā jauks mazais komplekts no eBay, ieskaitot nelielu PCB, un vienkārši vajadzēja komponentus pielodēt pie tāfeles. Šis īpašais piedāvājums ir mainīgs starp 110-180v, ko var kontrolēt ar nelielu podu uz tāfeles. Izmantojot nelielu skrūvgriezi, noregulējiet izeju uz ~ 140v. Pirms es devos uz visu ceļu, es gribēju pārbaudīt savas nixie caurules, lai to izdarītu, es izveidoju vienkāršu testa ķēdi, izmantojot vienu cauruli, tranzistoru un 10 k potenciometru, kas man bija. Kā redzams pirmajā attēlā, 140v barošana ir piestiprināta pie caurules anoda (labā kāja). Pēc tam katodu (kreiso kāju) savieno ar MJE340 tranzistora kolektora kāju. 5V barošana ir savienota ar 10k katlu, kas sadalās zemē tranzistora pamatnē. Visbeidzot, tranzistora emitētājs ir savienots ar zemi ar 300 omu strāvas ierobežošanas rezistoru. Ja jūs neesat pazīstams ar tranzistoriem un elektroniku, tam nav īsti nozīmes, vienkārši pievienojiet to vadam un mainiet plazmas augstumu ar katla pogu! Kad tas darbojas, mēs varam paskatīties, kā izgatavot savu pulksteni. Pilnu pulksteņa ķēdi var redzēt otrajā shēmā. Pēc dažiem pētījumiem es atradu perfektu apmācību vietnē Adafruit Learn, darot gandrīz tieši to, ko es gribēju darīt. Pamācību var atrast šeit: https://learn.adafruit.com/trinket-powered-analog-m… Šī apmācība izmanto Trinket kontrolieri un RTC, lai kontrolētu divus analogos pastiprinātājus. Izmantojot pulsa platuma modulāciju (PWM), lai kontrolētu adatas novirzi. Pastiprinātāja spole vidēji veido PWM efektīvā līdzstrāvas signālā. Tomēr, ja mēs izmantojam PWM tieši, lai vadītu caurules, tad augstfrekvences modulācija nozīmē, ka plazmas stienis nepaliks "piespiests" caurules pamatnei, un jums būs svārstīgs stienis. Lai no tā izvairītos, es vidēji aprēķināju PWM, izmantojot zemas caurlaidības filtru ar ilgu laika konstanti, lai iegūtu gandrīz līdzstrāvas signālu. Tā izslēgšanas frekvence ir 0,8 Hz, tas ir labi, jo mēs atjauninām pulksteņa laiku tikai ik pēc 5 sekundēm. Turklāt, tā kā joslu diagrammām ir ierobežots kalpošanas laiks, un tās var būt jāmaina, un ne katra caurule ir tieši tāda pati, es pēc caurules iekļāvu 1k katlu. Tas ļauj pielāgot divu cauruļu plazmas augstumu. Lai pievienotu piekariņu pie reālā laika pulksteņa (RCT), pievienojiet piekariņu 0 ar RTC-SDA, piekariņu-tapu 2 pie RTC-SCL un piekariņu-5v ar RTC-5v, un piekariņu GND pie RTC zemes. Šajā daļā var būt noderīgi apskatīt Adafruit pulksteņa instrukciju, https://learn.adafruit.com/trinket-powered-analog-…. Kad piekariņš un RTC ir pareizi pieslēgti, piestipriniet niķeļa caurules, tranzistorus, filtrus utt. Uz maizes dēļa, rūpīgi ievērojot shēmas shēmu.

Lai sarunātos ar RTC un Trinket, jums vispirms ir jālejupielādē pareizās bibliotēkas no Adafruit Github. Jums ir nepieciešami TinyWireM.h un TInyRTClib.h. Vispirms mēs vēlamies kalibrēt caurules, šīs pamācības beigās augšupielādējiet kalibrēšanas skici. Ja neviena no skicēm beigās nedarbojas, izmēģiniet Adafruit pulksteņa skici. Esmu pielāgojis Adafruit pulksteņa skici, lai visefektīvāk darbotos ar nixie caurulēm, taču Adafruit skice darbosies labi.

3. solis: kalibrēšana

Kalibrēšana
Kalibrēšana

Kad esat augšupielādējis kalibrēšanas skici, atzīmes ir jāatzīmē.

Ir trīs kalibrēšanas režīmi, pirmais nosaka abas nixie caurules līdz maksimālajai jaudai. Izmantojiet to, lai noregulētu katlu tā, lai plazmas augstums abās mēģenēs būtu vienāds un nedaudz zem maksimālā augstuma. Tas nodrošina, ka reakcija ir lineāra visā pulksteņa diapazonā.

Otrais iestatījums kalibrē minūšu cauruli. Tas mainās starp 0, 15, 30, 45 un 60 minūtēm ik pēc 5 sekundēm.

Pēdējais iestatījums to atkārto ar katru stundas pieaugumu. Atšķirībā no Adafruit pulksteņa stundu indikators pārvietojas fiksētos soļos reizi stundā. Izmantojot analogo skaitītāju, bija grūti iegūt lineāru atbildi par katru stundu.

Kad esat noregulējis katlu, augšupielādējiet skici, lai kalibrētu minūtes. Paņemiet plānu vara stiepli un nogrieziet īsu garumu. Aptiniet šo cauruli un pagrieziet abus galus kopā. Bīdiet to pareizajā pozīcijā un, izmantojot karstu līmes pistoli, ievietojiet nelielu līmi, lai tā būtu pareizajā vietā. Atkārtojiet to ar katru minūti un stundu.

Es aizmirsu nofotografēt šo procesu, bet no attēliem var redzēt, kā vads ir piestiprināts. Lai gan stieples piestiprināšanai izmantoju daudz mazāk līmes.

4. solis: montāža un apdare

Montāža un apdare
Montāža un apdare
Montāža un apdare
Montāža un apdare
Montāža un apdare
Montāža un apdare

Kad visas caurules ir kalibrētas un darbojas, ir pienācis laiks pastāvīgi izveidot ķēdi un uzstādīt uz kāda veida pamatnes. Es izvēlos antīku pulksteņa kustību, jo man patika antīko, 60. gadu un moderno tehnoloģiju sajaukums. Pārejot no maizes dēļa uz sloksnes dēli, esiet ļoti uzmanīgs un veltiet laiku, lai visi savienojumi tiktu izveidoti. Kastīte, kuru es nopirku, bija nedaudz maza, taču ar rūpīgu izvietojumu un nelielu piespiešanu man izdevās visu sakārtot. Es urbju sānos caurumu barošanas avotam un otru - nixie vadiem. Es pārklāju nixie vadus siltuma sarukumā, lai izvairītos no šortiem. Kad elektronika ir uzstādīta kastē, pielīmējiet to pulksteņa kustības aizmugurē. Lai uzstādītu caurules, es izmantoju karstu līmi un pielīmēju savītās stieples galus pie metāla, uzmanoties, lai tie būtu taisni. Es, iespējams, izmantoju pārāk daudz līmes, bet tas nav ļoti pamanāms. Tas varētu būt kaut kas, ko nākotnē varētu uzlabot. Kad viss ir uzstādīts, ielieciet Nixie pulksteņa skici šīs pamācības beigās un apbrīnojiet savu jauko jauno pulksteni!

5. darbība: Arduino skice - kalibrēšana

#define HOUR_PIN 1 // Stundu displejs, izmantojot PWM Trinket GPIO #1

#define MINUTE_PIN 4 // Minūtes displejs, izmantojot PWM, izmantojot Trinket GPIO #4 (izmantojot 1. taimera zvanus)

int stundas = 57; int minūtes = 57; // iestatīt minimālo pwm

void setup () {pinMode (HOUR_PIN, OUTPUT); pinMode (MINUTE_PIN, OUTPUT); PWM4_init (); // iestatīt PWM izejas

}

void loop () {// Izmantojiet to, lai pielāgotu nixie podi, lai pārliecinātos, ka maksimālais caurules augstums atbilst analogWrite (HOUR_PIN, 255); analogWrite4 (255); // Izmantojiet šo, lai kalibrētu minūšu pieaugumu

/*

analogWrite4 (57); // minūtes 0 kavēšanās (5000); analogWrite4 (107); // minūtes 15 kavēšanās (5000); analogWrite4 (156); // minūtes 30 kavēšanās (5000); analogWrite4 (206); // minūtes 45 kavēšanās (5000); analogWrite4 (255); // minūtes 60 kavēšanās (5000);

*/

// Izmantojiet šo, lai kalibrētu stundu pieaugumu /*

analogWrite (HOUR_PIN, 57); // 57 ir minimālā izeja un atbilst aizkavēšanās 1 am/min (4000); // kavēšanās 4 sekundes analogWrite (HOUR_PIN, 75); // 75 ir izeja, kas atbilst 2 am/min kavējumam (4000); analogWrite (HOUR_PIN, 93); // 93 ir izvade, kas atbilst 3 am/min kavējumam (4000); analogWrite (HOUR_PIN, 111); // 111 ir izeja, kas atbilst 4 am/min kavējumam (4000); analogWrite (HOUR_PIN, 129); // 129 ir izeja, kas atbilst 5 am/min kavējumam (4000); analogWrite (HOUR_PIN, 147); // 147 ir izeja, kas atbilst 6 am/min kavējumam (4000); analogWrite (HOUR_PIN, 165); // 165 ir izvade, kas atbilst kavējumam 7:00/min (4000); analogWrite (HOUR_PIN, 183); // 183 ir izvade, kas atbilst 8 am/min kavējumam (4000); analogWrite (HOUR_PIN, 201); // 201 ir izvade, kas atbilst 9 am/min kavējumam (4000); analogWrite (HOUR_PIN, 219); // 219 ir izeja, kas atbilst 10:00/min kavējumam (4000); analogWrite (HOUR_PIN, 237); // 237 ir izeja, kas atbilst 11:00/min kavējumam (4000); analogWrite (HOUR_PIN, 255); // 255 ir izvade, kas atbilst 12 am/min

*/

}

void PWM4_init () {// Iestatiet PWM Trinket GPIO #4 (PB4, pin 3), izmantojot 1. taimeri TCCR1 = _BV (CS10); // nav prescaler GTCCR = _BV (COM1B1) | _BV (PWM1B); // notīrīt OC1B salīdzinājumā OCR1B = 127; // darba cikla inicializēšana līdz 50% OCR1C = 255; // biežums }

// Funkcija, lai atļautu analogWrite Trinket GPIO #4 void analogWrite4 (uint8_t duty_value) {OCR1B = duty_value; // nodeva var būt no 0 līdz 255 (no 0 līdz 100%)}

6. darbība: Arduino skice - pulkstenis

// Adafruit Trinket analogo skaitītāju pulkstenis

// Datuma un laika funkcijas, izmantojot DS1307 RTC, kas savienots, izmantojot I2C, un TinyWireM lib

// Lejupielādējiet šīs bibliotēkas no Adafruit Github krātuves un // instalējiet savā Arduino bibliotēku direktorijā #include #include

// Lai atkļūdotu, nekomentējiet sērijas kodu, izmantojiet FTDI draugu ar RX tapu, kas savienots ar 3. taustiņu // Jums būs nepieciešama termināļa programma (piemēram, bezmaksas programmatūra PuTTY operētājsistēmai Windows), kas iestatīta uz // USB portu FTDI draugam pa tālruni 9600 baud. Atceliet sērijas komandas, lai redzētu, kas notiek // #definējiet HOUR_PIN 1 // Stundu displejs, izmantojot PWM, Trinket GPIO #1 #define MINUTE_PIN 4 // Minūtes displejs, izmantojot PWM, izmantojot Trinket GPIO #4 (izmantojot 1. taimera zvanus) // SendOnlySoftwareSerial Serial (3); // Sērijas pārraide uz piekariņa Pin 3 RTC_DS1307 rtc; // Iestatiet reālā laika pulksteni

void setup () {pinMode (HOUR_PIN, OUTPUT); // definēt PWM skaitītāja tapas kā izejas pinMode (MINUTE_PIN, OUTPUT); PWM4_init (); // Iestatiet taimeri 1, lai darbotos PWM uz piekariņa Pin 4 TinyWireM.begin (); // Begin I2C rtc.begin (); // Sākt DS1307 reālā laika pulksteni // Serial.begin(9600); // Sāciet seriālo monitoru ar 9600 bodu, ja (! Rtc.isrunning ()) {//Serial.println("RTC NAV darbojas! "); // nākamā rinda nosaka RTC datumu un laiku, kad šī skice tika apkopota rtc.adjust (DateTime (_ DATE_, _TIME_)); }}

void loop () {uint8_t stundu vērtība, minūtes vērtība; uint8_t stundu spriegums, minūtes spriegums;

DateTime now = rtc.now (); // Iegūstiet RTC informācijas stundu vērtību = now.hour (); // Iegūt stundu, ja (stundu vērtība> 12) stundu vērtība -= 12; // Šis pulkstenis ir 12 stundu minūšu vērtība = tagad.minute (); // Iegūstiet protokolu

minūšu spriegums = karte (minūtes vērtība, 1, 60, 57, 255); // Pārvērst minūtes PWM darba ciklā

ja (stundu vērtība == 1) {analogWrite (HOUR_PIN, 57); } ja (stundu vērtība == 2) {analogWrite (HOUR_PIN, 75); // katra stunda atbilst +18} if (hourvalue == 3) {analogWrite (HOUR_PIN, 91); }

ja (stundu vērtība == 4) {analogWrite (HOUR_PIN, 111); } ja (stundu vērtība == 5) {analogWrite (HOUR_PIN, 126); } ja (stundu vērtība == 6) {analogWrite (HOUR_PIN, 147); } ja (stundu vērtība == 7) {analogWrite (HOUR_PIN, 165); } ja (stundu vērtība == 8) {analogWrite (HOUR_PIN, 183); } ja (stundu vērtība == 9) {analogWrite (HOUR_PIN, 201); } ja (stundu vērtība == 10) {analogWrite (HOUR_PIN, 215); } ja (stundu vērtība == 11) {analogWrite (HOUR_PIN, 237); } ja (stundu vērtība == 12) {analogWrite (HOUR_PIN, 255); }

analogWrite4 (minūšu spriegums); // minūšu analogā rakstīšana var palikt tāda pati kā kartēšanas darbi // priekšroka būtu dodama procesora iemidzināšanas kodam - mēs aizkavēsim aizkavi (5000); // pārbaudiet laiku ik pēc 5 sekundēm. Jūs varat mainīt šo. }

void PWM4_init () {// Iestatiet PWM Trinket GPIO #4 (PB4, pin 3), izmantojot 1. taimeri TCCR1 = _BV (CS10); // nav prescaler GTCCR = _BV (COM1B1) | _BV (PWM1B); // notīrīt OC1B salīdzinājumā OCR1B = 127; // darba cikla inicializēšana līdz 50% OCR1C = 255; // biežums }

// Funkcija, lai atļautu analogWrite Trinket GPIO #4 void analogWrite4 (uint8_t duty_value) {OCR1B = duty_value; // nodeva var būt no 0 līdz 255 (no 0 līdz 100%)}

Ieteicams: