Indholdsfortegnelse:

Nixie bargraf ur: 6 trin (med billeder)
Nixie bargraf ur: 6 trin (med billeder)

Video: Nixie bargraf ur: 6 trin (med billeder)

Video: Nixie bargraf ur: 6 trin (med billeder)
Video: Часы Nixie от Arduino | Самый простой дизайн 2024, Juli
Anonim
Nixie bargraf ur
Nixie bargraf ur
Nixie bargraf ur
Nixie bargraf ur

Rediger 9/11/17 Med hjælp fra Kickstarter har jeg nu frigivet et kit til dette ur kit! Det inkluderer et driverbræt og 2 Nixie IN-9-rør. Alt du skal tilføje er din egen Arduino/Raspberry Pi/anden. Sættet kan findes, men klik på dette link!

Så jeg har set masser af Nixie -ure online og syntes, de så godt ud, men jeg ville ikke bruge $ 100+ på et ur, der ikke engang indeholder rørene! Så med lidt elektronikviden jagede jeg rundt på de forskellige nixie -rør og kredsløb. Jeg ville lave noget lidt anderledes end det store udvalg af generelt lignede nixieure. Til sidst valgte jeg at bruge Nixie IN-9 søjlediagramrør. Disse er lange tynde rør, og højden af det glødende plasma afhænger af strømmen gennem rørene. Røret til venstre er i trin i timer, og røret til højre er i minutter. De har kun to ledninger og gør det derfor lettere at opbygge et kredsløb. I dette design er der en time og et minuts rør, hvor højderne af plasmaet i hvert rør repræsenterer den aktuelle tid. Tiden holdes ved hjælp af en Adafruit Trinket mikrokontroller og realtidsur (RTC).

Trin 1: Samling af delene

Samling af delene
Samling af delene

Der er to sektioner, først elektronikken og for det andet montering og efterbehandling. De krævede elektroniske komponenter er: Adafruit Trinket 5V - $ 7,95 (www.adafruit.com/products/1501) Adafruit RTC - $ 9 (www.adafruit.com/products/264) 2x Nixie IN -9 søjlediagram ~ $ 3 pr. Rør på eBay 1x Nixie 140v strømforsyning ~ $ 12 på eBay 4x 47 uF elektrolytkondensatorer 4x 3,9 kOhm modstande 2x 1 kOhm potentiometer 2x Transistor MJE340 NPN højspænding ~ $ 1 hver 1x LM7805 5v regulator ~ $ 1 1x 2,1 mm stik ~ $ 1 1x projektkasse med pcb ~ $ 5 1x 12v DC strømforsyning (jeg fandt en gammel fra en længe glemt gadget) Loddemetal, tilslutningstråd osv. Montering: Jeg besluttede at montere elektronikken i en lille sort plastikboks og derefter montere rørene på en antik urbevægelse. For at markere timen og minutter brugte jeg kobbertråd viklet rundt om rørene. Monteringsdele: Antik urbevægelse - $ 10 eBay Kobbertråd - $ 3 eBay Hot limpistol

Trin 2: Kredsløb

Kredsløb
Kredsløb
Kredsløb
Kredsløb
Kredsløb
Kredsløb
Kredsløb
Kredsløb

Det første trin er at bygge Nixie -strømforsyningen. Dette kom som et fint lille kit fra eBay, inklusive lidt PCB og havde bare brug for at komponenterne loddes til brættet. Denne særlige forsyning er variabel mellem 110-180v, styrbar med en lille gryde på brættet. Brug en lille skruetrækker til at justere output til ~ 140v. Inden jeg gik til hele vejen, ville jeg teste mine nixie -rør, for at gøre dette byggede jeg et simpelt testkredsløb ved hjælp af et rør, transistor og et 10k potentiometer, jeg havde liggende. Som det kan ses i den første figur, er 140v -forsyningen fastgjort til røranoden (højre ben). Katoden (venstre ben) forbindes derefter til kollektorbenet på MJE340 -transistoren. En 5v forsyning er forbundet til en 10k pot, der deler sig med jorden i transistorbasen. Endelig forbindes transistoremitteren gennem en 300 ohm strømbegrænsende modstand til jorden. Hvis du ikke er fortrolig med transistorer og elektronik gør det ikke rigtig noget, bare led det op og ændr plasmahøjden med grydeknoppen! Når det virker, kan vi se på at lave vores ur. Hele urkredsløbet kan ses i det andet kredsløbsdiagram. Efter lidt research fandt jeg en perfekt tutorial på Adafruit -læringswebstedet, der gjorde næsten præcis, hvad jeg ville gøre. Vejledningen kan findes her: https://learn.adafruit.com/trinket-powered-analog-m… Denne vejledning bruger en Trinket-controller og en RTC til at styre to analoge amp-målere. Ved hjælp af pulsbreddemodulation (PWM) til at kontrollere nålens afbøjning. Spolen på amp -måleren gør PWM i gennemsnit til et effektivt DC -signal. Men hvis vi bruger PWM direkte til at drive rørene, betyder højfrekvensmodulationen, at plasmastangen ikke forbliver "fastklemt" til rørets bund, og du får en svævende stang. For at undgå dette gennemsnitede jeg PWM i gennemsnit ved hjælp af et lavpasfilter med en lang tidskonstant for at få et næsten DC -signal. Dette har en afbrydelsesfrekvens på 0,8 Hz, det er fint, da vi kun opdaterer uret hvert 5. sekund. Da søjlediagrammer har en begrænset levetid og muligvis skal udskiftes, og ikke hvert rør er nøjagtigt det samme, inkluderede jeg en 1k gryde efter røret. Dette gør det muligt at justere plasmahøjden for de to rør. For at tilslutte nipsgenstande til realtidsuret (RCT) forbindes Trinket-pin 0 til RTC-SDA, Trinket-pin 2 til RTC-SCL og Trinket-5v til RTC-5v og Trinket GND til RTC-jorden. For denne del kan det være nyttigt at se Adafruit-urinstruktionen, https://learn.adafruit.com/trinket-powered-analog-…. Når Trinket og RTC er korrekt forbundet, ledes nixie -rørene, transistorer, filtre osv. Op på et brødbræt, og følger omhyggeligt kredsløbsdiagrammet.

For at få RTC og Trinket i tale skal du først downloade de korrekte biblioteker fra Adafruit Github. Du skal bruge TinyWireM.h og TInyRTClib.h. Først vil vi kalibrere rørene, uploade kalibreringsskitsen i slutningen af denne instruktive. Hvis ingen af skitserne i slutningen virker, så prøv Adafruit urskitsen. Jeg har justeret Adafruit urskitsen til at fungere mest effektivt med nixie -rørene, men Adafruit -skitsen vil fungere fint.

Trin 3: Kalibrering

Kalibrering
Kalibrering

Når du har uploadet kalibreringsskitsen, skal gradueringerne markeres.

Der er tre tilstande til kalibrering, den første sætter begge nixie -rør til den maksimale ydelse. Brug denne til at justere gryden, så plasmahøjden i begge rør er den samme, og at den er lidt under maksimalhøjden. Dette sikrer, at responsen er lineær over hele urområdet.

Den anden indstilling kalibrerer minutterøret. Det skifter mellem 0, 15, 30, 45 og 60 minutter hvert 5. sekund.

Den sidste indstilling gentager dette for hver times forøgelse. I modsætning til Adafruit -uret bevæger timeindikatoren sig i faste trin en gang hver time. Det var svært at få et lineært svar for hver time, når man brugte en analog måler.

Når du har justeret gryden, skal du uploade skitsen for at kalibrere i minutter. Tag den tynde kobbertråd og skær en kort længde. Wrap dette rundt om røret og vrid de to ender sammen. Skub dette til den korrekte position og brug en varm limpistol til at placere en lille klat lim for at holde det rigtige sted. Gentag dette for hvert minut og time trin.

Jeg glemte at tage billeder af denne proces, men du kan se på billederne, hvordan ledningen er fastgjort. Selvom jeg brugte meget mindre lim bare til at fastgøre tråden.

Trin 4: Montering og efterbehandling

Montering og efterbehandling
Montering og efterbehandling
Montering og efterbehandling
Montering og efterbehandling
Montering og efterbehandling
Montering og efterbehandling

Når rørene alle er kalibreret og fungerer, er det nu tid til permanent at lave kredsløbet og montere på en eller anden form for base. Jeg vælger en antik urbevægelse, da jeg kunne lide blandingen af antik, 60'erne og moderne teknologi. Når du overfører fra brødbrættet til stripbrættet, skal du være meget forsigtig og tage dig tid til at sikre, at alle forbindelser er foretaget. Kassen jeg købte var lidt lille, men med en omhyggelig placering og lidt tvang lykkedes det mig at få det hele til at passe. Jeg borede et hul i siden til strømforsyningen og et andet til nixie -lederne. Jeg dækkede nixie -ledningerne med varmekrympning for at undgå shorts. Når elektronikken er monteret i boksen, limes den til bagsiden af urets bevægelse. Til montering af rørene brugte jeg varm lim og limede spidserne af snoet tråd til metallet, idet jeg var omhyggelig med at sikre, at de var lige. Jeg har sandsynligvis brugt for meget lim, men det er ikke særlig mærkbart. Det kan være noget, der kan forbedres i fremtiden. Når det hele er monteret, skal du indlæse Nixie -urskitsen i slutningen af denne instruktive og beundre dit dejlige nye ur!

Trin 5: Arduino Sketch - Kalibrering

#define HOUR_PIN 1 // Timevisning via PWM på Trinket GPIO #1

#define MINUTE_PIN 4 // Minutvisning via PWM på Trinket GPIO #4 (via timer 1 -opkald)

int timer = 57; int minutter = 57; // sæt minimum pwm

ugyldig opsætning () {pinMode (HOUR_PIN, OUTPUT); pinMode (MINUTE_PIN, OUTPUT); PWM4_init (); // opsæt PWM -udgange

}

void loop () {// Brug denne til at justere nixie -gryderne for at sikre, at den maksimale rørhøjde matcher analogWrite (HOUR_PIN, 255); analogWrite4 (255); // Brug denne til at kalibrere minutintervaller

/*

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

*/

// Brug denne til at kalibrere timestigningerne /*

analogWrite (HOUR_PIN, 57); // 57 er minimum output og svarer til 1 am/pm forsinkelse (4000); // forsinkelse 4 sekunder analogWrite (HOUR_PIN, 75); // 75 er output, der svarer til 2 am/pm forsinkelse (4000); analogWrite (HOUR_PIN, 93); // 93 er output, der svarer til 3 am/pm forsinkelse (4000); analogWrite (HOUR_PIN, 111); // 111 er output, der svarer til 4 am/pm forsinkelse (4000); analogWrite (HOUR_PIN, 129); // 129 er output, der svarer til 5 am/pm forsinkelse (4000); analogWrite (HOUR_PIN, 147); // 147 er output, der svarer til 6 am/pm forsinkelse (4000); analogWrite (HOUR_PIN, 165); // 165 er output, der svarer til 7 am/pm forsinkelse (4000); analogWrite (HOUR_PIN, 183); // 183 er output, der svarer til 8 am/pm forsinkelse (4000); analogWrite (HOUR_PIN, 201); // 201 er output, der svarer til 9 am/pm forsinkelse (4000); analogWrite (HOUR_PIN, 219); // 219 er output, der svarer til 10 am/pm forsinkelse (4000); analogWrite (HOUR_PIN, 237); // 237 er output, der svarer til 11 am/pm forsinkelse (4000); analogWrite (HOUR_PIN, 255); // 255 er output, der svarer til 12 am/pm

*/

}

void PWM4_init () {// Konfigurer PWM på Trinket GPIO #4 (PB4, pin 3) ved hjælp af Timer 1 TCCR1 = _BV (CS10); // ingen prescaler GTCCR = _BV (COM1B1) | _BV (PWM1B); // ryd OC1B ved sammenligning OCR1B = 127; // driftscyklus initialiseres til 50% OCR1C = 255; // frekvens}

// Funktion til at tillade analogWrite on Trinket GPIO #4 void analogWrite4 (uint8_t duty_value) {OCR1B = duty_value; // told kan være 0 til 255 (0 til 100%)}

Trin 6: Arduino Sketch - Ur

// Adafruit Trinket analogt målerur

// Dato- og klokkeslætfunktioner ved hjælp af en DS1307 RTC tilsluttet via I2C og TinyWireM lib

// Download disse biblioteker fra Adafruit's Github -lager og // installer i dit Arduino Libraries -bibliotek #include #include

// For fejlfinding, ikke -kommenteret seriel kode, skal du bruge en FTDI -ven med sin RX -pin tilsluttet Pin 3 // Du skal bruge et terminalprogram (f.eks. Freeware PuTTY til Windows) sat til // USB -porten på FTDI -vennen på 9600 baud. Kommenter ikke ud Serielle kommandoer for at se, hvad der sker // #definere HOUR_PIN 1 // Timevisning via PWM på Trinket GPIO #1 #define MINUTE_PIN 4 // Minutvisning via PWM på Trinket GPIO #4 (via timer 1 -opkald) // SendOnlySoftwareSerial Serial (3); // Seriel transmission på Trinket Pin 3 RTC_DS1307 rtc; // Indstil ur i realtid

ugyldig opsætning () {pinMode (HOUR_PIN, OUTPUT); // definer PWM målerstifter som udgange pinMode (MINUTE_PIN, OUTPUT); PWM4_init (); // Indstil timer 1 til at arbejde PWM på Trinket Pin 4 TinyWireM.begin (); // Start I2C rtc.begin (); // Start DS1307 realtidsur //Serial.begin(9600); // Start seriel skærm med 9600 baud, hvis (! Rtc.isrunning ()) {//Serial.println("RTC IKKE kører! "); // følgende linje indstiller RTC til dato og klokkeslæt, hvor denne skitse blev udarbejdet rtc.adjust (DateTime (_ DATE_, _TIME_)); }}

void loop () {uint8_t hourvalue, minutevalue; uint8_t timespænding, minutevoltage;

DateTime nu = rtc.now (); // Hent RTC -info hourvalue = now.hour (); // Få timen hvis (timeværdi> 12) timeværdi -= 12; // Dette ur er 12 timers minutværdi = nu.minute (); // Få referatet

minutevoltage = kort (minutevalue, 1, 60, 57, 255); // Konverter minutter til PWM -driftscyklus

hvis (timeværdi == 1) {analogWrite (HOUR_PIN, 57); } hvis (timeværdi == 2) {analogWrite (HOUR_PIN, 75); // hver time svarer til +18} if (timeværdi == 3) {analogWrite (HOUR_PIN, 91); }

hvis (timeværdi == 4) {analogWrite (HOUR_PIN, 111); } hvis (timeværdi == 5) {analogWrite (HOUR_PIN, 126); } hvis (timeværdi == 6) {analogWrite (HOUR_PIN, 147); } hvis (timeværdi == 7) {analogWrite (HOUR_PIN, 165); } hvis (timeværdi == 8) {analogWrite (HOUR_PIN, 183); } hvis (timeværdi == 9) {analogWrite (HOUR_PIN, 201); } hvis (timeværdi == 10) {analogWrite (HOUR_PIN, 215); } hvis (timeværdi == 11) {analogWrite (HOUR_PIN, 237); } hvis (timeværdi == 12) {analogWrite (HOUR_PIN, 255); }

analogWrite4 (minutevoltage); // minut analogskrivning kan forblive den samme som kortlægningen fungerer // kode for at sætte processoren i dvale kan være at foretrække - vi forsinker forsinkelse (5000); // tjek tid hvert 5. sekund. Du kan ændre dette. }

void PWM4_init () {// Konfigurer PWM på Trinket GPIO #4 (PB4, pin 3) ved hjælp af Timer 1 TCCR1 = _BV (CS10); // ingen prescaler GTCCR = _BV (COM1B1) | _BV (PWM1B); // ryd OC1B ved sammenligning OCR1B = 127; // driftscyklus initialiseres til 50% OCR1C = 255; // frekvens}

// Funktion til at tillade analogWrite on Trinket GPIO #4 void analogWrite4 (uint8_t duty_value) {OCR1B = duty_value; // told kan være 0 til 255 (0 til 100%)}

Anbefalede: