Innholdsfortegnelse:

Nixie Bargraph Clock: 6 trinn (med bilder)
Nixie Bargraph Clock: 6 trinn (med bilder)

Video: Nixie Bargraph Clock: 6 trinn (med bilder)

Video: Nixie Bargraph Clock: 6 trinn (med bilder)
Video: Vintage Display Technology Pt.5: A Nixie-Bargraph Meter-Clock 2024, Juli
Anonim
Nixie Bargraph Clock
Nixie Bargraph Clock
Nixie Bargraph Clock
Nixie Bargraph Clock

Rediger 9/11/17 Med hjelp av Kickstarter har jeg nå gitt ut et sett for dette klokkesettet! Den inkluderer et førerkort og 2 Nixie IN-9-rør. Alt du trenger å legge til er din egen Arduino/Raspberry Pi/annen. Settet kan bli funnet, men klikk på denne lenken!

Så jeg har sett mange Nixie -klokker på nettet og syntes de så flotte ut, men jeg ville ikke bruke $ 100+ på en klokke som ikke engang inkluderer rørene! Så med litt elektronikk -kunnskap jaktet jeg rundt de forskjellige nixie -rørene og kretser. Jeg ønsket å lage noe litt annerledes enn det store utvalget av generelt sett ganske like nixie -klokker. Til slutt valgte jeg å bruke Nixie IN-9 bargraph-rør. Dette er lange tynne rør og høyden på det glødende plasmaet avhenger av strømmen gjennom rørene. Røret til venstre er i trinn på timer og røret til høyre er i minutter. De har bare to ledninger, og det gjør byggingen av en krets mer rett frem. I denne designen er det en time og et minutt rør, med høyden til plasmaet i hvert rør som representerer den nåværende tiden. Tiden holdes ved hjelp av en Adafruit Trinket mikrokontroller og sanntidsklokke (RTC).

Trinn 1: Montering av delene

Montering av delene
Montering av delene

Det er to seksjoner, først elektronikken og for det andre montering og etterbehandling. De nødvendige elektroniske komponentene er: Adafruit Trinket 5V - $ 7,95 (www.adafruit.com/products/1501) Adafruit RTC - $ 9 (www.adafruit.com/products/264) 2x Nixie IN -9 bargraph ~ $ 3 per tube på eBay 1x Nixie 140v strømforsyning ~ $ 12 på eBay 4x 47 uF elektrolyttkondensatorer 4x 3,9 kOhm motstander 2x 1 kOhm potensiometer 2x Transistor MJE340 NPN høyspenning ~ $ 1 hver 1x LM7805 5v regulator ~ $ 1 1x 2,1 mm kontakt ~ $ 1 1x prosjektboks med kretskort ~ $ 5 1x 12v likestrømforsyning (jeg fant en gammel fra en lenge glemt gadget) Lodding, tilkoblingstråd osv. Montering: Jeg bestemte meg for å montere elektronikken i en liten svart plastprosjektboks, og deretter montere rørene på en antikk klokkebevegelse. For å markere timen og minuttene brukte jeg kobbertråd viklet rundt rørene. Monteringsdeler: Antikk klokkebevegelse - $ 10 eBay Kobbertråd - $ 3 eBay Hot limpistol

Trinn 2: Krets

Krets
Krets
Krets
Krets
Krets
Krets
Krets
Krets

Det første trinnet er å bygge Nixie -strømforsyningen. Dette kom som et fint lite sett fra eBay, inkludert litt PCB og trengte bare komponentene som skulle loddes til brettet. Denne spesifikke forsyningen er variabel mellom 110-180v, kontrollerbar med en liten gryte på brettet. Juster utgangen til ~ 140v med en liten skrutrekker. Før jeg gikk hele veien, ønsket jeg å teste nixie -rørene mine. For å gjøre dette bygde jeg en enkel testkrets ved hjelp av ett rør, transistor og et 10k potensiometer jeg hadde liggende. Som det kan sees i den første figuren, er 140v -forsyningen festet til røranoden (høyre ben). Katoden (venstre ben) kobles deretter til kollektorbenet på MJE340 -transistoren. En 5v forsyning er koblet til en 10k pot som deler seg til bakken i transistorbasen. Til slutt kobles transistoremitteren gjennom en 300 ohm strømbegrensende motstand til jord. Hvis du ikke er kjent med transistorer og elektronikk, spiller det ingen rolle, bare koble den til og endre plasmahøyden med gryteknappen! Når det fungerer, kan vi se på å lage klokken vår. Hele klokkekretsen kan sees i det andre kretsdiagrammet. Etter litt undersøkelser fant jeg en perfekt opplæring på Adafruit learn -nettstedet som gjorde nesten akkurat det jeg ønsket å gjøre. Opplæringen finner du her: https://learn.adafruit.com/trinket-powered-analog-m… Denne opplæringen bruker en Trinket-kontroller og en RTC for å kontrollere to analoge amp-målere. Bruke pulsbreddemodulering (PWM) for å kontrollere nedbøyningen av nålen. Spolen til forsterkeren måler gjennomsnittlig PWM til et effektivt likestrømssignal. Men hvis vi bruker PWM direkte til å drive rørene, betyr det at høyfrekvent modulasjon betyr at plasmastangen ikke blir "fastklemt" til bunnen av røret, og du vil ha en svevende stang. For å unngå dette gjennomsnittet jeg PWM i gjennomsnitt ved å bruke et lavpassfilter med en lang tidskonstant for å få et nesten likestrømssignal. Dette har en avbruddsfrekvens på 0,8 Hz, dette er greit ettersom vi oppdaterer klokkeslettet bare hvert 5. sekund. Siden stangediagrammer har en begrenset levetid og kanskje må byttes, og ikke hvert rør er nøyaktig det samme, inkluderte jeg en 1k gryte etter røret. Dette gjør det mulig å justere plasmahøyden for de to rørene. For å koble pynten til sanntidsklokken (RCT), koble Trinket-pin 0 til RTC-SDA, Trinket-pin 2 til RTC-SCL og Trinket-5v til RTC-5v og Trinket GND til RTC-bakken. For denne delen kan det være nyttig å se Adafruit-klokkeinstruksjonene, https://learn.adafruit.com/trinket-powered-analog-…. Når Trinket og RTC er riktig kablet, kobler du nixie -rørene, transistorer, filtre osv. På et brødbrett nøye etter kretsdiagrammet.

For å få RTC og Trinket i tale må du først laste ned de riktige bibliotekene fra Adafruit Github. Du trenger TinyWireM.h og TInyRTClib.h. Først vil vi kalibrere rørene, laste opp kalibreringsskissen på slutten av denne instruksjonsboken. Hvis ingen av skissene på slutten fungerer, kan du prøve Adafruit -klokkeskissen. Jeg har justert Adafruit -klokkeskissen for å fungere mest effektivt med nixie -rørene, men Adafruit -skissen vil fungere bra.

Trinn 3: Kalibrering

Kalibrering
Kalibrering

Når du har lastet opp kalibreringsskissen, må graderingene merkes.

Det er tre moduser for kalibrering, den første setter begge nixie -rørene til maksimal utgang. Bruk denne til å justere potten slik at plasmahøyden i begge rørene er den samme og at den er litt under maksimal høyde. Dette sikrer at responsen er lineær over hele klokkeområdet.

Den andre innstillingen kalibrerer minutterøret. Den endres mellom 0, 15, 30, 45 og 60 minutter hvert 5. sekund.

Den siste innstillingen gjentar dette for hver times økning. I motsetning til Adafruit -klokken beveger timeindikatoren seg i faste trinn en gang hver time. Det var vanskelig å få en lineær respons for hver time ved bruk av en analog måler.

Når du har justert potten, last opp skissen for å kalibrere i minutter. Ta den tynne kobbertråden og kutt en kort lengde. Vikle dette rundt røret og vri de to endene sammen. Skyv dette til riktig posisjon og bruk en varm limpistol til å plassere en liten klatt lim for å holde det på riktig sted. Gjenta dette for hvert minutt og time.

Jeg glemte å ta noen bilder av denne prosessen, men du kan se på bildene hvordan ledningen er festet. Selv om jeg brukte mye mindre lim bare for å feste ledningen.

Trinn 4: Montering og etterbehandling

Montering og etterbehandling
Montering og etterbehandling
Montering og etterbehandling
Montering og etterbehandling
Montering og etterbehandling
Montering og etterbehandling

Når rørene er kalibrert og fungerer, er det nå på tide å permanent lage kretsen og montere på en eller annen form for base. Jeg velger en antikk klokkebevegelse ettersom jeg likte blandingen av antikk, 60 -tall og moderne teknologi. Når du overfører fra brødbrettet til stripebrettet, må du være veldig forsiktig og ta deg god tid til å sikre at alle tilkoblingene er gjort. Boksen jeg kjøpte var litt liten, men med litt forsiktig plassering og litt tvang klarte jeg å få alt til å passe. Jeg boret et hull i siden for strømforsyningen og et annet for nixie -lederne. Jeg dekket nixie -ledningene med varmekrymping for å unngå shorts. Når elektronikken er montert i esken, lim den på baksiden av klokkebevegelsen. For å montere rørene brukte jeg varmt lim og limte punktene på den vridde ledningen til metallet, og pass på at de var rette. Jeg har sannsynligvis brukt for mye lim, men det er ikke veldig merkbart. Det kan være noe som kan forbedres i fremtiden. Når alt er montert, laster du Nixie -klokkeskissen på slutten av denne instruksjonsboken og beundrer den nydelige nye klokken din!

Trinn 5: Arduino Sketch - Kalibrering

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

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

int timer = 57; int minutter = 57; // sett minimum pwm

ugyldig oppsett () {pinMode (HOUR_PIN, OUTPUT); pinMode (MINUTE_PIN, OUTPUT); PWM4_init (); // sette opp PWM -utganger

}

void loop () {// Bruk denne til å finjustere nixie -grytene for å sikre at maksimal rørhøyde samsvarer med analogWrite (HOUR_PIN, 255); analogWrite4 (255); // Bruk denne til å kalibrere minutt -trinnene

/*

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

*/

// Bruk denne til å kalibrere timestigningene /*

analogWrite (HOUR_PIN, 57); // 57 er minimumseffekten og tilsvarer 1 am/pm forsinkelse (4000); // forsinkelse 4 sekunder analogWrite (HOUR_PIN, 75); // 75 er utgangen som tilsvarer 2 am/pm forsinkelse (4000); analogWrite (HOUR_PIN, 93); // 93 er utgangen som tilsvarer 3 am/pm forsinkelse (4000); analogWrite (HOUR_PIN, 111); // 111 er utgangen som tilsvarer 4 am/pm forsinkelse (4000); analogWrite (HOUR_PIN, 129); // 129 er utgangen som tilsvarer 5 am/pm forsinkelse (4000); analogWrite (HOUR_PIN, 147); // 147 er utgangen som tilsvarer 6 am/pm forsinkelse (4000); analogWrite (HOUR_PIN, 165); // 165 er utgangen som tilsvarer forsinkelsen 7 am/pm (4000); analogWrite (HOUR_PIN, 183); // 183 er utgangen som tilsvarer forsinkelsen 8 am/pm (4000); analogWrite (HOUR_PIN, 201); // 201 er utgangen som tilsvarer 9 am/pm forsinkelse (4000); analogWrite (HOUR_PIN, 219); // 219 er utgangen som tilsvarer 10 am/pm forsinkelse (4000); analogWrite (HOUR_PIN, 237); // 237 er utgangen som tilsvarer 11 am/pm forsinkelse (4000); analogWrite (HOUR_PIN, 255); // 255 er utgangen som tilsvarer 12 am/pm

*/

}

void PWM4_init () {// Konfigurer PWM på Trinket GPIO #4 (PB4, pin 3) ved hjelp av Timer 1 TCCR1 = _BV (CS10); // ingen prescaler GTCCR = _BV (COM1B1) | _BV (PWM1B); // fjern OC1B ved sammenligning OCR1B = 127; // driftssyklus initialiseres til 50% OCR1C = 255; // Frekvens }

// Funksjon for å tillate analogWrite on Trinket GPIO #4 void analogWrite4 (uint8_t duty_value) {OCR1B = duty_value; // plikt kan være 0 til 255 (0 til 100%)}

Trinn 6: Arduino Sketch - Klokke

// Adafruit Trinket analog målerklokke

// Dato og klokkeslett -funksjoner ved hjelp av en DS1307 RTC tilkoblet via I2C og TinyWireM lib

// Last ned disse bibliotekene fra Adafruit's Github -depot og // installer i Arduino Libraries -katalogen #include #include

// For feilsøking, ikke -kommentert seriekode, bruk en FTDI -venn med RX -pinnen koblet til pin 3 // Du trenger et terminalprogram (for eksempel freeware PuTTY for Windows) satt til // USB -porten til FTDI -vennen på 9600 baud. Ikke kommenter Serielle kommandoer for å se hva som skjer // #definere HOUR_PIN 1 // Timevisning via PWM på Trinket GPIO #1 #definere MINUTE_PIN 4 // Minuttvisning via PWM på Trinket GPIO #4 (via timer 1 -samtaler) // SendOnlySoftwareSerial Serial (3); // Seriell overføring på Trinket Pin 3 RTC_DS1307 rtc; // Sett opp sanntidsklokke

ugyldig oppsett () {pinMode (HOUR_PIN, OUTPUT); // definere PWM -målerpinner som utganger pinMode (MINUTE_PIN, OUTPUT); PWM4_init (); // Still timeren 1 til å fungere PWM på Trinket Pin 4 TinyWireM.begin (); // Start I2C rtc.begin (); // Start DS1307 sanntidsklokke //Serial.begin(9600); // Start seriell skjerm på 9600 baud hvis (! Rtc.isrunning ()) {//Serial.println("RTC IKKE kjører! "); // følgende linje angir RTC til dato og klokkeslett denne skissen ble kompilert rtc.adjust (DateTime (_ DATE_, _TIME_)); }}

void loop () {uint8_t hourvalue, minutevalue; uint8_t timespenning, minutevoltage;

DateTime nå = rtc.now (); // Få RTC -informasjonen timevalue = now.hour (); // Få timen hvis (timeværdi> 12) timeverdi -= 12; // Denne klokken er 12 timer minutevalue = now.minute (); // Få referatet

minutevoltage = map (minutevalue, 1, 60, 57, 255); // Konverter minutter til PWM driftssyklus

hvis (timeverdi == 1) {analogWrite (HOUR_PIN, 57); } if (timesverdi == 2) {analogWrite (HOUR_PIN, 75); // hver time tilsvarer +18} if (timesverdi == 3) {analogWrite (HOUR_PIN, 91); }

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

analogWrite4 (minutevoltage); // minutt analogskriving kan forbli den samme som kartleggingen fungerer // kode for å sette prosessoren i dvale kan være å foretrekke - vi forsinker forsinkelsen (5000); // sjekk tiden hvert 5. sekund. Du kan endre dette. }

void PWM4_init () {// Konfigurer PWM på Trinket GPIO #4 (PB4, pin 3) ved hjelp av Timer 1 TCCR1 = _BV (CS10); // ingen prescaler GTCCR = _BV (COM1B1) | _BV (PWM1B); // fjern OC1B ved sammenligning OCR1B = 127; // driftssyklus initialiseres til 50% OCR1C = 255; // Frekvens }

// Funksjon for å tillate analogWrite on Trinket GPIO #4 void analogWrite4 (uint8_t duty_value) {OCR1B = duty_value; // plikt kan være 0 til 255 (0 til 100%)}

Anbefalt: