Πίνακας περιεχομένων:

Ρολόι Nixie Bargraph: 6 βήματα (με εικόνες)
Ρολόι Nixie Bargraph: 6 βήματα (με εικόνες)

Βίντεο: Ρολόι Nixie Bargraph: 6 βήματα (με εικόνες)

Βίντεο: Ρολόι Nixie Bargraph: 6 βήματα (με εικόνες)
Βίντεο: RACK - Unique (Official Music Video) 2024, Ιούλιος
Anonim
Ρολόι Nixie Bargraph
Ρολόι Nixie Bargraph
Ρολόι Nixie Bargraph
Ρολόι Nixie Bargraph

Επεξεργασία 9/11/17Με τη βοήθεια του Kickstarter έχω κυκλοφορήσει τώρα ένα κιτ για αυτό το κιτ ρολογιού! Περιλαμβάνει έναν πίνακα οδηγών και 2 σωλήνες Nixie IN-9. Το μόνο που χρειάζεται να προσθέσετε είναι το δικό σας Arduino/Raspberry Pi/άλλο. Το κιτ μπορεί να βρεθεί αλλά κάνοντας κλικ σε αυτόν τον σύνδεσμο!

Έτσι, έχω δει πολλά ρολόγια Nixie στο διαδίκτυο και σκέφτηκα ότι φαίνονταν υπέροχα, ωστόσο δεν ήθελα να ξοδέψω 100 $+ για ένα ρολόι που δεν περιλαμβάνει καν τους σωλήνες! Έτσι, με λίγες γνώσεις ηλεκτρονικών κυνήγησα τους διάφορους σωλήνες nixie και κυκλώματα. Wantedθελα να κάνω κάτι λίγο διαφορετικό από τη μεγάλη γκάμα γενικά αρκετά παρόμοιων ρολογιών nixie. Στο τέλος επέλεξα να χρησιμοποιήσω σωλήνες bargraph 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 12 $ σε eBay πυκνωτές ηλεκτρολύτη 4x 47 uF 4x 3.9 kOhm αντιστάσεις 2x 1 kOhm ποτενσιόμετρο 2x Transistor MJE340 NPN υψηλής τάσης ~ 1 $ το καθένα 1x LM7805 5v ρυθμιστή ~ 1 $ 1x 2.1mm πρίζα ~ 1 $ 1x Τροφοδοτικό 12v DC (βρήκα ένα παλιό από κάποιο ξεχασμένο gadget) Συγκολλητικό, καλώδιο σύνδεσης κλπ. Συναρμολόγηση: Αποφάσισα να τοποθετήσω τα ηλεκτρονικά σε ένα μικρό μαύρο πλαστικό κουτί έργου και στη συνέχεια να τοποθετήσω τους σωλήνες σε μια αντίκα κίνηση ρολογιού. Για να σημειώσω την ώρα και τα λεπτά χρησιμοποίησα χάλκινο σύρμα τυλιγμένο γύρω από τους σωλήνες. Τοποθέτηση εξαρτημάτων: Παλαιά κίνηση ρολογιού - σύρμα χαλκού eBay 10 $ - πιστόλι κόλλας eBay 3 $

Βήμα 2: Κύκλωμα

Κύκλωμα
Κύκλωμα
Κύκλωμα
Κύκλωμα
Κύκλωμα
Κύκλωμα
Κύκλωμα
Κύκλωμα

Το πρώτο βήμα είναι η κατασκευή του τροφοδοτικού Nixie. Αυτό ήρθε ως ένα ωραίο μικρό κιτ από το eBay, συμπεριλαμβανομένου ενός μικρού PCB και χρειάστηκε απλά τα εξαρτήματα για να συγκολληθούν στον πίνακα. Η συγκεκριμένη παροχή είναι μεταβλητή μεταξύ 110-180v, ελεγχόμενη με ένα μικρό δοχείο στον πίνακα. Χρησιμοποιώντας ένα μικρό κατσαβίδι ρυθμίστε την έξοδο σε v 140v. Πριν προχωρήσω εντελώς, ήθελα να δοκιμάσω τους σωλήνες nixie, για να το κάνω αυτό έχτισα ένα απλό κύκλωμα δοκιμής χρησιμοποιώντας έναν σωλήνα, τρανζίστορ και ένα ποτενσιόμετρο 10k που είχα τοποθετήσει. Όπως φαίνεται στο πρώτο σχήμα, η παροχή 140v είναι προσαρτημένη στην άνοδο σωλήνα (δεξί πόδι). Η κάθοδος (αριστερό πόδι) συνδέεται στη συνέχεια με το σκέλος συλλέκτη του τρανζίστορ MJE340. Μια τροφοδοσία 5v συνδέεται με ένα δοχείο 10k που χωρίζεται στη γείωση στη βάση του τρανζίστορ. Τέλος, ο πομπός τρανζίστορ συνδέεται μέσω αντίστασης περιορισμού ρεύματος 300 ohm στη γείωση. Εάν δεν είστε εξοικειωμένοι με τα τρανζίστορ και τα ηλεκτρονικά, δεν έχει ιδιαίτερη σημασία, απλώς συνδέστε το και αλλάξτε το ύψος του πλάσματος με το κουμπί της κατσαρόλας! Μόλις λειτουργήσει αυτό, μπορούμε να κοιτάξουμε να φτιάξουμε το ρολόι μας. Το κύκλωμα πλήρους ρολογιού φαίνεται στο δεύτερο διάγραμμα κυκλώματος. Μετά από κάποια έρευνα βρήκα ένα τέλειο σεμινάριο στον ιστότοπο Adafruit learn κάνοντας σχεδόν αυτό που ήθελα να κάνω. Το σεμινάριο μπορείτε να το βρείτε εδώ: https://learn.adafruit.com/trinket-powered-analog-m… Αυτό το σεμινάριο χρησιμοποιεί έναν ελεγκτή Trinket και έναν RTC για τον έλεγχο δύο αναλογικών μετρητών ενισχυτή. Χρησιμοποιώντας διαμόρφωση πλάτους παλμού (PWM) για τον έλεγχο της εκτροπής της βελόνας. Το πηνίο του μετρητή ενισχυτή υπολογίζει κατά μέσο όρο το PWM σε ένα αποτελεσματικό σήμα dc. Ωστόσο, εάν χρησιμοποιούμε το PWM απευθείας για να οδηγήσουμε τους σωλήνες, τότε η διαμόρφωση υψηλής συχνότητας σημαίνει ότι η μπάρα πλάσματος δεν θα παραμείνει "σφιγμένη" στη βάση του σωλήνα και θα έχετε μια αιωρούμενη μπάρα. Για να το αποφύγω αυτό, έβαλα τον μέσο όρο του PWM χρησιμοποιώντας ένα φίλτρο χαμηλής διέλευσης με μεγάλη σταθερά για να λάβω ένα σήμα σχεδόν dc. Αυτό έχει συχνότητα αποκοπής 0,8 Hz, αυτό είναι καλό καθώς ενημερώνουμε την ώρα του ρολογιού μόνο κάθε 5 δευτερόλεπτα. Επιπλέον, δεδομένου ότι οι bargraphs έχουν πεπερασμένη διάρκεια ζωής και μπορεί να χρειαστούν αντικατάσταση και δεν είναι κάθε σωλήνας ακριβώς ο ίδιος, συμπεριέλαβα ένα δοχείο 1k μετά τον σωλήνα. Αυτό επιτρέπει τη ρύθμιση του ύψους πλάσματος για τους δύο σωλήνες. Για να συνδέσετε το μπιχλιμπίδι στο ρολόι πραγματικού χρόνου (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, ο δείκτης ώρας κινείται σε σταθερά βήματα μία φορά κάθε ώρα. Difficultταν δύσκολο να λάβουμε μια γραμμική απόκριση για κάθε ώρα όταν χρησιμοποιούσαμε έναν αναλογικό μετρητή.

Μόλις ρυθμίσετε το δοχείο, ανεβάστε το σκίτσο για βαθμονόμηση για λεπτά. Πάρτε το λεπτό σύρμα χαλκού και κόψτε ένα μικρό μήκος. Τυλίξτε αυτό γύρω από το σωλήνα και στρίψτε τα δύο άκρα μαζί. Σύρετε αυτό στη σωστή θέση και χρησιμοποιώντας ένα πιστόλι ζεστής κόλλας τοποθετήστε μια μικρή κόλλα κόλλας για να τη διατηρήσετε στη σωστή θέση. Επαναλάβετε αυτό για κάθε προσαύξηση λεπτού και ώρας.

Ξέχασα να τραβήξω φωτογραφίες αυτής της διαδικασίας, αλλά μπορείτε να δείτε από τις φωτογραφίες πώς συνδέεται το καλώδιο. Αν και χρησιμοποίησα πολύ λιγότερη κόλλα μόνο για να στερεώσω το σύρμα.

Βήμα 4: Τοποθέτηση και φινίρισμα

Τοποθέτηση και φινίρισμα
Τοποθέτηση και φινίρισμα
Τοποθέτηση και φινίρισμα
Τοποθέτηση και φινίρισμα
Τοποθέτηση και φινίρισμα
Τοποθέτηση και φινίρισμα

Μόλις βαθμονομηθούν όλοι οι σωλήνες και λειτουργούν, είναι τώρα η ώρα να κάνετε μόνιμα το κύκλωμα και να τοποθετήσετε σε κάποια μορφή βάσης. Επιλέγω μια κίνηση αντίκα ρολογιού καθώς μου άρεσε το μείγμα αντίκες, δεκαετίας του '60 και σύγχρονης τεχνολογίας. Όταν μεταφέρετε από το breadboard στο strip, να είστε πολύ προσεκτικοί και να αφιερώσετε χρόνο, διασφαλίζοντας ότι έχουν γίνει όλες οι συνδέσεις. Το κουτί που αγόρασα ήταν λίγο μικρό αλλά με κάποια προσεκτική τοποθέτηση και λίγο ζόρι κατάφερα να τα χωρέσω όλα. Άνοιξα μια τρύπα στο πλάι για το τροφοδοτικό και άλλη για τα καλώδια nixie. Κάλυψα τα καλώδια nixie σε θερμική συρρίκνωση για να αποφύγω τυχόν βραχυκύκλωμα. Όταν τα ηλεκτρονικά είναι τοποθετημένα στο κουτί, κολλήστε το στο πίσω μέρος της κίνησης του ρολογιού. Για την τοποθέτηση των σωλήνων χρησιμοποίησα θερμή κόλλα και κόλλησα τα σημεία του στριμμένου σύρματος στο μέταλλο, προσέχοντας να είναι ίσια. Πιθανότατα χρησιμοποίησα πάρα πολύ κόλλα, αλλά δεν είναι ιδιαίτερα αισθητό. Μπορεί να είναι κάτι που μπορεί να βελτιωθεί στο μέλλον. Όταν είναι όλα τοποθετημένα, φορτώστε το σκίτσο του ρολογιού Nixie στο τέλος αυτού του οδηγού και θαυμάστε το υπέροχο νέο ρολόι σας!

Βήμα 5: Σχέδιο Arduino - Βαθμονόμηση

#define HOUR_PIN 1 // Hour display via PWM on Trinket GPIO #1

#define MINUTE_PIN 4 // Minute display via PWM on Trinket GPIO #4 (μέσω χρονοδιακόπτη 1 κλήσεων)

int ώρες = 57; int λεπτά = 57; // ορίστε ελάχιστο pwm

void setup () {pinMode (HOUR_PIN, OUTPUT); pinMode (MINUTE_PIN, OUTPUT); PWM4_init (); // ρύθμιση εξόδων PWM

}

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 π.μ./μ.μ. (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 π.μ./μ.μ

*/

}

void PWM4_init () {// Ρύθμιση PWM στο Trinket GPIO #4 (PB4, pin 3) χρησιμοποιώντας Χρονοδιακόπτη 1 TCCR1 = _BV (CS10); // χωρίς prescaler 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 - Ρολόι

// Αναλογικό ρολόι μετρητή Adafruit Trinket

// Ημερομηνία και ώρα λειτουργεί χρησιμοποιώντας DS1307 RTC συνδεδεμένο μέσω I2C και το lib TinyWireM

// Κατεβάστε αυτές τις βιβλιοθήκες από το αποθετήριο Github του Adafruit και // εγκαταστήστε στον κατάλογο Arduino Libraries #include #include

// Για εντοπισμό σφαλμάτων, αποσύνδεση σειριακού κώδικα, χρησιμοποιήστε ένα FTDI Friend με το RX pin του συνδεδεμένο στο Pin 3 // Θα χρειαστείτε ένα τερματικό πρόγραμμα (όπως το δωρεάν λογισμικό PuTTY για Windows) που έχει ρυθμιστεί στη // θύρα USB του φίλου FTDI στο 9600 baud Μην σχολιάσετε τις σειριακές εντολές για να δείτε τι συμβαίνει // #define HOUR_PIN 1 // Εμφάνιση ώρας μέσω PWM στο Trinket GPIO #1 #define MINUTE_PIN 4 // Ένδειξη λεπτού μέσω PWM στο Trinket GPIO #4 (μέσω χρονοδιακόπτη 1 κλήσεων) // SendOnlySoftwareSerial Serial (3) · // Σειριακή μετάδοση στο Trinket Pin 3 RTC_DS1307 rtc; // Ρύθμιση ρολογιού πραγματικού χρόνου

void setup () {pinMode (HOUR_PIN, OUTPUT); // καθορίστε τις ακίδες του μετρητή PWM ως pinMode εξόδων (MINUTE_PIN, OUTPUT). PWM4_init (); // Ρυθμίστε το χρονόμετρο 1 να λειτουργεί PWM στο Trinket Pin 4 TinyWireM.begin (); // Έναρξη I2C rtc.begin (); // Έναρξη ρολογιού πραγματικού χρόνου DS1307 //Serial.begin(9600); // Ξεκινήστε τη Σειριακή Παρακολούθηση στα 9600 baud εάν (! Rtc.isrunning ()) {//Serial.println("RTC ΔΕΝ τρέχει! "); // η ακόλουθη γραμμή ορίζει το RTC στην ημερομηνία & ώρα που καταρτίστηκε αυτό το σκίτσο rtc.adjust (DateTime (_ DATE_, _TIME_)); }}

void loop () {uint8_t hourvalue, minutevalue? uint8_t ωριαία τάση, λεπτή τάση?

DateTime now = rtc.now (); // Λάβετε την τιμή ώρας πληροφοριών RTC = now.hour (); // Λάβετε την ώρα εάν (ωριαία τιμή> 12) ωριαία τιμή -= 12; // Αυτό το ρολόι είναι 12 ώρες minutevalue = now.minute (); // Πάρτε τα πρακτικά

minutevoltage = χάρτης (minutevalue, 1, 60, 57, 255); // Μετατροπή λεπτών σε κύκλο εργασίας PWM

if (ωριαία τιμή == 1) {analogWrite (HOUR_PIN, 57); } if (ωριαία τιμή == 2) {analogWrite (HOUR_PIN, 75); // κάθε ώρα αντιστοιχεί στο +18} if (hourvalue == 3) {analogWrite (HOUR_PIN, 91); }

εάν (ωριαία τιμή == 4) {analogWrite (HOUR_PIN, 111); } if (ωριαία τιμή == 5) {analogWrite (HOUR_PIN, 126); } if (ωριαία τιμή == 6) {analogWrite (HOUR_PIN, 147); } if (ωριαία τιμή == 7) {analogWrite (HOUR_PIN, 165); } if (ωριαία τιμή == 8) {analogWrite (HOUR_PIN, 183); } if (ωριαία τιμή == 9) {analogWrite (HOUR_PIN, 201); } if (ωριαία τιμή == 10) {analogWrite (HOUR_PIN, 215); } if (ωριαία τιμή == 11) {analogWrite (HOUR_PIN, 237); } if (ωριαία τιμή == 12) {analogWrite (HOUR_PIN, 255); }

analogWrite4 (minutevoltage); // η ανάλογη εγγραφή λεπτού μπορεί να παραμείνει η ίδια με τις εργασίες χαρτογράφησης // μπορεί να είναι προτιμότερος ο κώδικας για να τεθεί σε λειτουργία ο επεξεργαστής - θα καθυστερήσουμε την καθυστέρηση (5000). // έλεγχος χρόνου κάθε 5 δευτερόλεπτα. Μπορείτε να το αλλάξετε αυτό. }

void PWM4_init () {// Ρύθμιση PWM στο Trinket GPIO #4 (PB4, pin 3) χρησιμοποιώντας Χρονοδιακόπτη 1 TCCR1 = _BV (CS10); // χωρίς prescaler GTCCR = _BV (COM1B1) | _BV (PWM1B); // διαγράψτε το OC1B σε σύγκριση OCR1B = 127; // κύκλος λειτουργίας αρχικοποίηση σε 50% OCR1C = 255; // συχνότητα}

// Λειτουργία που επιτρέπει το analogWrite on Trinket GPIO #4 void analogWrite4 (uint8_t duty_value) {OCR1B = duty_value; // ο δασμός μπορεί να είναι 0 έως 255 (0 έως 100%)}

Συνιστάται: