Inhaltsverzeichnis:

Nixie Bargraph Clock - Gunook
Nixie Bargraph Clock - Gunook

Video: Nixie Bargraph Clock - Gunook

Video: Nixie Bargraph Clock - Gunook
Video: Vintage Display Technology Pt.5: A Nixie-Bargraph Meter-Clock 2024, Juli
Anonim
Nixie Bargraph-Uhr
Nixie Bargraph-Uhr
Nixie Bargraph-Uhr
Nixie Bargraph-Uhr

Edit 11.09.17Mit Hilfe von Kickstarter habe ich jetzt einen Bausatz für diesen Uhrenbausatz veröffentlicht! Es enthält eine Treiberplatine und 2 Nixie IN-9-Röhren. Alles, was Sie hinzufügen müssen, ist Ihr eigenes Arduino/Raspberry Pi/anderes. Das Kit kann gefunden werden, aber klicken Sie auf diesen Link!

Ich habe also viele Nixie-Uhren online gesehen und dachte, sie sehen toll aus, aber ich wollte nicht mehr als 100 US-Dollar für eine Uhr ausgeben, die nicht einmal die Röhren enthält! Also habe ich mit ein wenig Elektronikkenntnissen die verschiedenen Nixie-Röhren aufgestöbert und Schaltungen. Ich wollte etwas anderes machen als die große Auswahl an im Allgemeinen ziemlich ähnlich aussehenden Nixie-Uhren. Am Ende entschied ich mich für Nixie IN-9 Bargraph-Röhren. Dies sind lange dünne Röhren und die Höhe des glühenden Plasmas hängt vom Strom durch die Röhren ab. Das linke Röhrchen ist in Stundenschritten und das rechte Röhrchen in Minuten. Sie haben nur zwei Leitungen und machen so den Aufbau einer Schaltung einfacher. Bei diesem Design gibt es eine Stunden- und eine Minutenröhre, wobei die Höhe des Plasmas in jeder Röhre die aktuelle Zeit darstellt. Die Zeit wird mit einem Adafruit Trinket-Mikrocontroller und einer Echtzeituhr (RTC) gehalten.

Schritt 1: Zusammenbau der Teile

Zusammenbau der Teile
Zusammenbau der Teile

Es gibt zwei Bereiche, erstens die Elektronik und zweitens die Montage und Veredelung. Die erforderlichen elektronischen Komponenten sind: Adafruit Trinket 5V – 7,95 USD (www.adafruit.com/products/1501) Adafruit RTC – 9 USD (www.adafruit.com/products/264) 2x Nixie IN-9 Bargraph ~ 3 USD pro Tube bei eBay 1x Nixie 140V Netzteil ~$12 bei eBay 4x 47 uF Elektrolytkondensatoren 4x 3,9 kOhm Widerstände 2x 1kOhm Potentiometer 2x Transistor MJE340 NPN Hochspannung ~$1 je 1x LM7805 5V Regler ~$1 1x 2.1mm Sockel ~$1 1x Projektbox mit Platine ~$5 1x 12-V-DC-Netzteil (ich habe ein altes von einem längst vergessenen Gerät gefunden) Lötzinn, Anschlusskabel usw. Montage: Ich beschloss, die Elektronik in einer kleinen schwarzen Kunststoff-Projektbox zu montieren und dann die Röhren auf einem antiken Uhrwerk zu montieren. Um die Stunden und Minuten zu markieren, benutzte ich Kupferdraht, der um die Rohre gewickelt war. Befestigungsteile: Antikes Uhrwerk - $ 10 eBay Kupferdraht - $ 3 eBay Heißklebepistole

Schritt 2: Schaltung

Schaltkreis
Schaltkreis
Schaltkreis
Schaltkreis
Schaltkreis
Schaltkreis
Schaltkreis
Schaltkreis

Der erste Schritt besteht darin, das Nixie-Netzteil aufzubauen. Dies kam als netter kleiner Bausatz von eBay, einschließlich einer kleinen Platine und benötigte nur die Komponenten, die an die Platine gelötet werden mussten. Diese spezielle Versorgung ist variabel zwischen 110-180V und mit einem kleinen Pot auf der Platine regelbar. Stellen Sie den Ausgang mit einem kleinen Schraubendreher auf ~ 140 V ein. Bevor ich auf den ganzen Weg ging, wollte ich meine Nixie-Röhren testen, dazu baute ich eine einfache Testschaltung mit einer Röhre, einem Transistor und einem 10k-Potentiometer, das ich herumgelegt hatte. Wie in der ersten Abbildung zu sehen ist, ist die 140-V-Versorgung an der Röhrenanode (rechtes Bein) befestigt. Die Kathode (linker Schenkel) wird dann mit dem Kollektorschenkel des MJE340-Transistors verbunden. Eine 5V-Versorgung ist an einen 10k-Poti angeschlossen, der auf Masse in die Transistorbasis aufteilt. Schließlich wird der Emitter des Transistors über einen 300 Ohm Strombegrenzungswiderstand mit Masse verbunden. Wenn Sie mit Transistoren und Elektronik nicht vertraut sind, spielt es keine Rolle, einfach verdrahten und die Plasmahöhe mit dem Pot-Regler ändern! Sobald das funktioniert, können wir uns die Herstellung unserer Uhr ansehen. Die vollständige Taktschaltung ist im zweiten Schaltplan zu sehen. Nach einiger Recherche fand ich auf der Adafruit Learn-Website ein perfektes Tutorial, das fast genau das tat, was ich tun wollte. Das Tutorial finden Sie hier: https://learn.adafruit.com/trinket-powered-analog-m… Dieses Tutorial verwendet einen Trinket-Controller und eine RTC, um zwei analoge Amperemeter zu steuern. Verwenden der Pulsweitenmodulation (PWM), um die Auslenkung der Nadel zu steuern. Die Spule des Amperemeters mittelt die PWM in ein effektives Gleichstromsignal. Wenn wir jedoch die PWM direkt zum Ansteuern der Röhren verwenden, bedeutet die Hochfrequenzmodulation, dass der Plasmabalken nicht an der Basis der Röhre "geklemmt" bleibt und Sie einen schwebenden Balken haben. Um dies zu vermeiden, habe ich die PWM mit einem Tiefpassfilter mit einer langen Zeitkonstante gemittelt, um ein fast Gleichstromsignal zu erhalten. Dies hat eine Grenzfrequenz von 0,8 Hz, das ist in Ordnung, da wir die Uhrzeit nur alle 5 Sekunden aktualisieren. Da Bargraphen eine endliche Lebensdauer haben und möglicherweise ersetzt werden müssen und nicht jede Röhre genau gleich ist, habe ich nach der Röhre einen 1k-Topf eingefügt. Dies ermöglicht es, die Plasmahöhe für die beiden Röhren anzupassen. Um das Schmuckstück mit der Echtzeituhr (RCT) zu verbinden, verbinden Sie Trinket-Pin 0 mit RTC-SDA, Trinket-Pin 2 mit RTC-SCL und Trinket-5v mit RTC-5v und das Trinket GND mit der RTC-Masse. Für diesen Teil kann es hilfreich sein, die Anleitung zur Uhr von Adafruit zu lesen, https://learn.adafruit.com/trinket-powered-analog-…. Sobald das Trinket und die RTC richtig verdrahtet sind, verdrahten Sie die Nixie-Röhren, Transistoren, Filter usw. auf einem Steckbrett sorgfältig nach dem Schaltplan.

Um RTC und Trinket zum Sprechen zu bringen, müssen Sie zuerst die richtigen Bibliotheken vom Adafruit Github herunterladen. Sie benötigen TinyWireM.h und TInyRTClib.h. Zuerst wollen wir die Rohre kalibrieren, laden Sie die Kalibrierskizze am Ende dieser Anleitung hoch. Wenn keine der Skizzen am Ende funktioniert, versuchen Sie es mit der Adafruit-Uhrenskizze. Ich habe die Adafruit-Uhrenskizze optimiert, um am effektivsten mit den Nixie-Röhren zu arbeiten, aber die Adafruit-Skizze wird gut funktionieren.

Schritt 3: Kalibrierung

Kalibrierung
Kalibrierung

Nachdem Sie die Kalibrierskizze hochgeladen haben, müssen die Teilungen markiert werden.

Es gibt drei Modi für die Kalibrierung, der erste setzt beide Nixie-Röhren auf maximale Leistung. Stellen Sie den Topf damit so ein, dass die Plasmahöhe in beiden Röhren gleich ist und etwas unter der maximalen Höhe liegt. Dadurch wird sichergestellt, dass die Reaktion über den gesamten Taktbereich linear ist.

Die zweite Einstellung kalibriert das Minutenrohr. Sie wechselt alle 5 Sekunden zwischen 0, 15, 30, 45 und 60 Minuten.

Die letzte Einstellung wiederholt dies für jeden Stundenschritt. Im Gegensatz zur Adafruit-Uhr bewegt sich die Stundenanzeige einmal pro Stunde in festen Schritten. Bei Verwendung eines analogen Messgeräts war es schwierig, eine lineare Antwort für jede Stunde zu erhalten.

Sobald Sie den Pot eingestellt haben, laden Sie die Skizze hoch, um sie minutenlang zu kalibrieren. Nehmen Sie den dünnen Kupferdraht und schneiden Sie eine kurze Länge ab. Wickeln Sie diese um das Rohr und drehen Sie die beiden Enden zusammen. Schieben Sie diese in die richtige Position und platzieren Sie mit einer Heißklebepistole einen kleinen Klecks Kleber, um ihn an der richtigen Stelle zu halten. Wiederholen Sie dies für jeden Minuten- und Stundenschritt.

Ich habe vergessen, Bilder von diesem Vorgang zu machen, aber Sie können auf den Bildern sehen, wie der Draht befestigt ist. Obwohl ich viel weniger Kleber verwendet habe, um den Draht zu befestigen.

Schritt 4: Montage und Fertigstellung

Montage und Veredelung
Montage und Veredelung
Montage und Veredelung
Montage und Veredelung
Montage und Veredelung
Montage und Veredelung

Sobald alle Röhren kalibriert sind und funktionieren, ist es jetzt an der Zeit, die Schaltung dauerhaft herzustellen und auf einer Art Sockel zu montieren. Ich habe mich für ein antikes Uhrwerk entschieden, da mir die Mischung aus Antik, 60er und moderner Technologie gefallen hat. Wenn Sie vom Steckbrett zum Streifenbrett wechseln, seien Sie sehr vorsichtig und nehmen Sie sich Zeit, um sicherzustellen, dass alle Verbindungen hergestellt sind. Die Box, die ich gekauft habe, war ein wenig klein, aber mit etwas sorgfältiger Platzierung und etwas Zwang habe ich es geschafft, dass alles passt. Ich bohrte ein Loch in die Seite für das Netzteil und ein weiteres für die Nixie-Kabel. Ich bedeckte die Nixie-Drähte mit Schrumpfschlauch, um Kurzschlüsse zu vermeiden. Wenn die Elektronik in der Box montiert ist, kleben Sie sie auf die Rückseite des Uhrwerks. Um die Rohre zu montieren, benutzte ich Heißkleber und klebte die Punkte des verdrillten Drahtes auf das Metall, wobei darauf geachtet wurde, dass sie gerade waren. Ich habe wahrscheinlich zu viel Kleber verwendet, aber es ist nicht sehr auffällig. Es könnte etwas sein, das in Zukunft verbessert werden kann. Wenn alles montiert ist, laden Sie die Nixie-Uhr-Skizze am Ende dieser Anleitung und bewundern Sie Ihre schöne neue Uhr!

Schritt 5: Arduino-Skizze - Kalibrierung

#define HOUR_PIN 1 // Stundenanzeige über PWM auf Trinket GPIO #1

#define MINUTE_PIN 4 // Minutenanzeige über PWM auf Trinket GPIO #4 (über Timer 1-Aufrufe)

int Stunden = 57;int Minuten = 57; // Mindest-Pwm einstellen

Void setup () {pinMode (HOUR_PIN, OUTPUT); pinMode (MINUTE_PIN, AUSGANG); PWM4_init(); // PWM-Ausgänge einrichten

}

Void loop () {// Verwenden Sie dies, um die Nixie-Töpfe zu optimieren, um sicherzustellen, dass die maximale Röhrenhöhe mit analogWrite (HOUR_PIN, 255) übereinstimmt; analogWrite4(255); // Verwenden Sie dies, um die Minutenschritte zu kalibrieren

/*

analogWrite4(57); // Minute 0 Verzögerung (5000); analogWrite4(107); // Minute 15 Verzögerung (5000); analogWrite4(156); // Minute 30 Verzögerung (5000); analogWrite4(206); // 45 Minuten Verzögerung (5000); analogWrite4(255); // Minute 60 Verzögerung (5000);

*/

// Verwenden Sie dies, um die Stundenschritte zu kalibrieren /*

analogWrite (HOUR_PIN, 57); // 57 ist die minimale Ausgabe und entspricht 1am/pm Verzögerung (4000); // Verzögerung 4 Sekunden analogWrite (HOUR_PIN, 75); // 75 ist die Ausgabe, die 2am/pm delay (4000) entspricht; analogWrite (HOUR_PIN, 93); // 93 ist die Ausgabe, die 3am/pm delay (4000) entspricht; analogWrite (HOUR_PIN, 111); // 111 ist die Ausgabe, die 4am/pm delay (4000) entspricht; analogWrite (HOUR_PIN, 129); // 129 ist die Ausgabe, die 5am/pm delay (4000) entspricht; analogWrite (HOUR_PIN, 147); // 147 ist die Ausgabe, die der Verzögerung um 6 Uhr morgens entspricht (4000); analogWrite (HOUR_PIN, 165); // 165 ist die Ausgabe, die 7am/pm Verzögerung (4000) entspricht; analogWrite (HOUR_PIN, 183); // 183 ist die Ausgabe, die 8am/pm delay (4000) entspricht; analogWrite (HOUR_PIN, 201); // 201 ist die Ausgabe, die 9am/pm delay (4000) entspricht; analogWrite (HOUR_PIN, 219); // 219 ist die Ausgabe, die der Verzögerung um 10 Uhr/pm entspricht (4000); analogWrite (HOUR_PIN, 237); // 237 ist die Ausgabe, die der Verzögerung um 11 Uhr / Uhr (4000) entspricht; analogWrite (HOUR_PIN, 255); // 255 ist die Ausgabe, die 12am/pm entspricht

*/

}

void PWM4_init() {// Einrichten von PWM auf Trinket GPIO # 4 (PB4, Pin 3) mit Timer 1 TCCR1 = _BV (CS10); // kein Vorteiler GTCCR = _BV (COM1B1) | _BV (PWM1B); // OC1B beim Vergleich löschen OCR1B = 127; // Arbeitszyklus auf 50% initialisieren OCR1C = 255; // Häufigkeit }

// Funktion zum Ermöglichen von analogWrite auf Trinket GPIO # 4 void analogWrite4 (uint8_t duty_value) { OCR1B = duty_value; // Pflicht kann 0 bis 255 (0 bis 100 %) betragen }

Schritt 6: Arduino-Skizze - Uhr

// Analoge Zähleruhr von Adafruit Trinket

// Datums- und Uhrzeitfunktionen mit einer DS1307 RTC, die über I2C und der TinyWireM-Lib verbunden ist

// Laden Sie diese Bibliotheken aus dem Github-Repository von Adafruit herunter und // installieren Sie sie in Ihrem Arduino Libraries-Verzeichnis #include #include

// Zum Debuggen, Unkommentieren des seriellen Codes, verwenden Sie einen FTDI-Freund, dessen RX-Pin mit Pin 3 verbunden ist // Sie benötigen ein Terminalprogramm (z Baud. Entkommentieren Sie serielle Befehle, um zu sehen, was los ist //#define HOUR_PIN 1 // Stundenanzeige über PWM auf Trinket GPIO #1 #define MINUTE_PIN 4 // Minutenanzeige über PWM auf Trinket GPIO #4 (über Timer 1-Aufrufe) //SendOnlySoftwareSerial Serial (3); // Serielle Übertragung auf Trinket Pin 3 RTC_DS1307 rtc; // Echtzeituhr einrichten

Void setup () {pinMode (HOUR_PIN, OUTPUT); // PWM-Meter-Pins als Ausgänge definieren PinMode (MINUTE_PIN, OUTPUT); PWM4_init(); // Timer 1 einstellen, um PWM an Trinket Pin 4 zu arbeiten TinyWireM.begin (); // I2C starten rtc.begin(); // DS1307 Echtzeituhr starten // Serial.begin (9600); // Serial Monitor bei 9600 Baud starten if (! rtc.isrunning()) {//Serial.println("RTC läuft NICHT!"); // folgende Zeile setzt die RTC auf das Datum und die Uhrzeit, zu der diese Skizze kompiliert wurde rtc.adjust(DateTime(_DATE_, _TIME_)); }}

Void Schleife () { uint8_t Stundenwert, Minutenwert; uint8_t Stundenspannung, Minutenspannung;

DateTime now = rtc.now(); // Holen Sie sich die RTC-Info hourvalue = now.hour(); // Hole die Stunde if(hourvalue > 12) hourvalue -= 12; // Diese Uhr ist 12 Stunden minutevalue = now.minute(); // Holen Sie sich die Minuten

Minutenspannung = Karte (Minutenwert, 1, 60, 57, 255); // Minuten in PWM-Tastverhältnis umrechnen

Wenn (Stundenwert == 1) {analogWrite (HOUR_PIN, 57); aufrechtzuerhalten. Wenn (Stundenwert == 2) {analogWrite (HOUR_PIN, 75); // jede Stunde entspricht +18} if (hourvalue == 3) { analogWrite (HOUR_PIN, 91); }

Wenn (Stundenwert == 4) {AnalogWrite (HOUR_PIN, 111); aufrechtzuerhalten. Wenn (Stundenwert == 5) { AnalogWrite (HOUR_PIN, 126); aufrechtzuerhalten. Wenn (Stundenwert ==6) { AnalogWrite (HOUR_PIN, 147); aufrechtzuerhalten. Wenn (Stundenwert == 7) { AnalogWrite (HOUR_PIN, 165); aufrechtzuerhalten. Wenn (Stundenwert == 8) {AnalogWrite (HOUR_PIN, 183); aufrechtzuerhalten. Wenn (Stundenwert == 9) {AnalogWrite (HOUR_PIN, 201); aufrechtzuerhalten. Wenn (Stundenwert == 10) { AnalogWrite (HOUR_PIN, 215); aufrechtzuerhalten. Wenn (Stundenwert == 11) {AnalogWrite (HOUR_PIN, 237); aufrechtzuerhalten. Wenn (Stundenwert == 12) {AnalogWrite (HOUR_PIN, 255); }

analogWrite4 (Minutenspannung); // Minute analogwrite kann gleich bleiben wie das Mapping funktioniert // Code, um den Prozessor in den Ruhezustand zu versetzen, könnte vorzuziehen sein - wir werden die Verzögerung (5000) verzögern; // Überprüfen Sie die Zeit alle 5 Sekunden. Sie können dies ändern. }

void PWM4_init () {// Einrichten von PWM auf Trinket GPIO # 4 (PB4, Pin 3) mit Timer 1 TCCR1 = _BV (CS10); // kein Vorteiler GTCCR = _BV (COM1B1) | _BV (PWM1B); // OC1B beim Vergleich löschen OCR1B = 127; // Arbeitszyklus auf 50% initialisieren OCR1C = 255; // Frequenz }

// Funktion zum Ermöglichen von analogWrite auf Trinket GPIO # 4 void analogWrite4 (uint8_t duty_value) { OCR1B = duty_value; // Pflicht kann 0 bis 255 (0 bis 100 %) betragen }

Empfohlen: