Table des matières:

Horloge Nixie Bargraph : 6 étapes (avec photos)
Horloge Nixie Bargraph : 6 étapes (avec photos)

Vidéo: Horloge Nixie Bargraph : 6 étapes (avec photos)

Vidéo: Horloge Nixie Bargraph : 6 étapes (avec photos)
Vidéo: TUTO et astuces NIXIE CLOCK 2024, Novembre
Anonim
Horloge Bargraphe Nixie
Horloge Bargraphe Nixie
Horloge Bargraphe Nixie
Horloge Bargraphe Nixie

Edit 9/11/17Avec l'aide de Kickstarter, j'ai maintenant sorti un kit pour ce kit d'horloge ! Il comprend une carte pilote et 2 tubes Nixie IN-9. Tout ce que vous devez ajouter est votre propre Arduino/Raspberry Pi/autre. Le kit est à retrouver mais en cliquant sur ce lien !

J'ai donc vu beaucoup d'horloges Nixie en ligne et j'ai pensé qu'elles avaient fière allure, mais je ne voulais pas dépenser plus de 100 $ pour une horloge qui n'inclut même pas les tubes! Donc, avec un peu de connaissances en électronique, j'ai cherché les différents tubes de Nixie et circuits. Je voulais faire quelque chose d'un peu différent de la large gamme d'horloges nixie généralement assez similaires. J'ai finalement choisi d'utiliser des tubes bargraph Nixie IN-9. Ce sont de longs tubes minces et la hauteur du plasma incandescent dépend du courant traversant les tubes. Le tube de gauche est en incréments d'heure et le tube de droite est en minutes. Ils n'ont que deux fils et rendent ainsi la construction d'un circuit plus simple. Dans cette conception, il y a un tube d'une heure et une minute, les hauteurs du plasma dans chaque tube représentant l'heure actuelle. L'heure est conservée à l'aide d'un microcontrôleur Adafruit Trinket et d'une horloge en temps réel (RTC).

Étape 1: Assemblage des pièces

Assemblage des pièces
Assemblage des pièces

Il y a deux sections, d'abord l'électronique et ensuite le montage et la finition. Les composants électroniques requis sont: Adafruit Trinket 5V - 7,95 $ (www.adafruit.com/products/1501) Adafruit RTC - 9 $ (www.adafruit.com/products/264) 2x Bargraph Nixie IN-9 ~ 3 $ par tube sur eBay 1x Alimentation Nixie 140v ~12$ sur eBay 4x condensateurs électrolytiques 47 uF 4x résistances 3,9 kOhm 2x potentiomètre 1 kOhm 2x Transistor MJE340 NPN haute tension ~1$ chacun 1x Régulateur LM7805 5v ~1$ 1x douille 2.1mm ~1$ 1x boîte de projet avec pcb ~5$ 1x Alimentation 12v DC (j'en ai trouvé une vieille d'un gadget oublié depuis longtemps) Soudure, fil de raccordement, etc. Montage: j'ai décidé de monter l'électronique dans une petite boîte de projet en plastique noir, puis de monter les tubes sur un mouvement d'horloge antique. Pour marquer l'heure et les minutes, j'ai utilisé du fil de cuivre enroulé autour des tubes. Pièces de montage: Mouvement d'horloge antique - Fil de cuivre eBay à 10 $ - Pistolet à colle chaude eBay à 3 $

Étape 2: Circuit

Circuit
Circuit
Circuit
Circuit
Circuit
Circuit
Circuit
Circuit

La première étape consiste à construire l'alimentation Nixie. Il s'agissait d'un joli petit kit d'eBay, comprenant un petit PCB et il ne fallait que les composants à souder à la carte. Cette alimentation particulière est variable entre 110-180v, contrôlable avec un petit pot sur la carte. À l'aide d'un petit tournevis, ajustez la sortie à ~ 140 V. Avant d'aller jusqu'au bout, je voulais tester mes tubes nixie, pour ce faire, j'ai construit un circuit de test simple en utilisant un tube, un transistor et un potentiomètre de 10k que j'avais autour. Comme on peut le voir sur la première figure, l'alimentation 140v est fixée à l'anode du tube (jambe droite). La cathode (jambe gauche) est alors connectée à la branche collecteur du transistor MJE340. Une alimentation 5v est connectée à un pot de 10k se divisant à la masse dans la base du transistor. Enfin, l'émetteur du transistor est connecté via une résistance de limitation de courant de 300 ohms à la terre. Si vous n'êtes pas familier avec les transistors et l'électronique, cela n'a pas vraiment d'importance, il suffit de le câbler et de changer la hauteur du plasma avec le bouton du pot ! Une fois que cela fonctionne, nous pouvons envisager de fabriquer notre horloge. Le circuit d'horloge complet peut être vu dans le deuxième schéma de circuit. Après quelques recherches, j'ai trouvé un didacticiel parfait sur le site Web d'apprentissage d'Adafruit, faisant presque exactement ce que je voulais faire. Le tutoriel peut être trouvé ici: https://learn.adafruit.com/trinket-powered-analog-m… Ce tutoriel utilise un contrôleur Trinket et un RTC pour contrôler deux ampères analogiques. Utilisation de la modulation de largeur d'impulsion (PWM) pour contrôler la déviation de l'aiguille. La bobine de l'ampèremètre fait la moyenne du PWM en un signal cc efficace. Cependant, si nous utilisons directement le PWM pour piloter les tubes, la modulation haute fréquence signifie que la barre de plasma ne restera pas "serrée" à la base du tube et vous aurez une barre en vol stationnaire. Pour éviter cela, j'ai fait la moyenne du PWM en utilisant un filtre passe-bas avec une longue constante de temps pour obtenir un signal presque continu. Cela a une fréquence de coupure de 0,8 Hz, c'est bien car nous ne mettons à jour l'heure de l'horloge que toutes les 5 secondes. De plus, comme les bargraphes ont une durée de vie limitée et peuvent avoir besoin d'être remplacés et que tous les tubes ne sont pas exactement les mêmes, j'ai inclus un pot de 1k après le tube. Cela permet d'ajuster la hauteur du plasma pour les deux tubes. Pour câbler le bijou à l'horloge en temps réel (RCT), connectez la broche Trinket 0 à RTC-SDA, la broche Trinket 2 à RTC-SCL et Trinket-5v à RTC-5v et le Trinket GND à la terre RTC. Pour cette partie, il peut être utile de consulter l'instruction d'horloge Adafruit, https://learn.adafruit.com/trinket-powered-analog-…. Une fois que le Trinket et le RTC sont correctement câblés, câblez les tubes Nixie, les transistors, les filtres, etc. sur une planche à pain en suivant attentivement le schéma de circuit.

Pour que le RTC et le Trinket parlent, vous devez d'abord télécharger les bibliothèques appropriées à partir du Github Adafruit. Vous avez besoin de TinyWireM.h et TInyRTClib.h. Nous voulons d'abord calibrer les tubes, téléchargez le croquis de calibrage à la fin de cette instructable. Si aucun des croquis à la fin ne fonctionne, essayez le croquis de l'horloge Adafruit. J'ai modifié le croquis de l'horloge Adafruit pour qu'il fonctionne le plus efficacement possible avec les tubes nixie, mais le croquis Adafruit fonctionnera bien.

Étape 3: Étalonnage

Étalonnage
Étalonnage

Une fois que vous avez téléchargé le croquis d'étalonnage, les graduations doivent être marquées.

Il existe trois modes d'étalonnage, le premier règle les deux tubes Nixie à la puissance maximale. Utilisez-le pour régler le pot afin que la hauteur du plasma dans les deux tubes soit la même et qu'elle soit légèrement inférieure à la hauteur maximale. Cela garantit que la réponse est linéaire sur toute la plage d'horloge.

Le deuxième réglage calibre le tube des minutes. Il change entre 0, 15, 30, 45 et 60 minutes toutes les 5 secondes.

Le dernier réglage répète cela pour chaque incrément d'heure. Contrairement à l'horloge Adafruit, l'indicateur d'heure se déplace par incréments fixes une fois par heure. Il était difficile d'obtenir une réponse linéaire pour chaque heure lors de l'utilisation d'un compteur analogique.

Une fois que vous avez ajusté le pot, téléchargez le croquis pour calibrer pendant quelques minutes. Prenez le fil de cuivre fin et coupez une courte longueur. Enroulez-le autour du tube et torsadez les deux extrémités ensemble. Faites-le glisser dans la bonne position et à l'aide d'un pistolet à colle chaude, placez une petite goutte de colle pour la maintenir au bon endroit. Répétez cette opération pour chaque incrément de minute et d'heure.

J'ai oublié de prendre des photos de ce processus, mais vous pouvez voir sur les photos comment le fil est attaché. Bien que j'aie utilisé beaucoup moins de colle juste pour attacher le fil.

Étape 4: Montage et finition

Montage et finition
Montage et finition
Montage et finition
Montage et finition
Montage et finition
Montage et finition

Une fois que les tubes sont tous calibrés et fonctionnels, il est maintenant temps de faire le circuit de façon permanente et de le monter sur une forme de base. J'ai choisi un mouvement d'horloge antique car j'aimais le mélange de technologie antique, des années 60 et moderne. Lors du transfert de la planche à pain à la planche à bande, soyez très prudent et prenez votre temps pour vous assurer que toutes les connexions sont établies. La boîte que j'ai achetée était un peu petite mais avec un placement prudent et un peu de force, j'ai réussi à tout faire tenir. J'ai percé un trou sur le côté pour l'alimentation et un autre pour les fils nixie. J'ai recouvert les fils nixie de thermorétractable pour éviter tout court-circuit. Lorsque l'électronique est montée dans la boîte, collez-la à l'arrière du mouvement de l'horloge. Pour monter les tubes, j'ai utilisé de la colle chaude et j'ai collé les pointes de fil torsadé sur le métal, en faisant attention à ce qu'elles soient droites. J'ai probablement utilisé trop de colle mais ce n'est pas très visible. C'est peut-être quelque chose qui peut être amélioré à l'avenir. Quand tout est monté, chargez le croquis de l'horloge Nixie à la fin de cette instructable et admirez votre belle nouvelle horloge !

Étape 5: Arduino Sketch - Calibrage

#define HOUR_PIN 1 // Affichage de l'heure via PWM sur Trinket GPIO #1

#define MINUTE_PIN 4 // Affichage des minutes via PWM sur Trinket GPIO #4 (via les appels Timer 1)

int heures = 57;int minutes = 57; //définir le pwm minimum

void setup () { pinMode(HOUR_PIN, OUTPUT); pinMode(MINUTE_PIN, SORTIE); PWM4_init(); //configuration des sorties PWM

}

void loop () { // Utilisez ceci pour ajuster les potentiomètres nixie pour vous assurer que la hauteur maximale du tube correspond à analogWrite(HOUR_PIN, 255); analogWrite4(255); // Utilisez ceci pour calibrer les incréments de minutes

/*

analogWrite4(57); // minute 0 retard (5000); analogWrite4(107); // retard de 15 minutes (5000); analogWrite4(156); // retard de 30 minutes (5000); analogWrite4(206); // minute 45 de retard (5000); analogWrite4(255); // retard de 60 minutes (5000);

*/

// Utilisez ceci pour calibrer les incréments d'heure /*

analogWrite(HOUR_PIN, 57); // 57 est la sortie minimale et correspond à un délai de 1am/pm (4000); //retard 4 secondes analogWrite(HOUR_PIN, 75); // 75 est la sortie qui correspond à 2am/pm delay(4000); analogWrite(HOUR_PIN, 93); // 93 est la sortie qui correspond à un délai de 3h du matin (4000); analogWrite(HOUR_PIN, 111); // 111 est la sortie qui correspond au délai de 4h du matin (4000); analogWrite(HOUR_PIN, 129); // 129 est la sortie qui correspond au retard 5h/h (4000); analogWrite(HOUR_PIN, 147); // 147 est la sortie qui correspond au délai de 6h/h (4000); analogWrite(HOUR_PIN, 165); // 165 est la sortie qui correspond au délai 7h/h (4000); analogWrite(HOUR_PIN, 183); // 183 est la sortie qui correspond à un délai de 8h/h (4000); analogWrite(HOUR_PIN, 201); // 201 est la sortie qui correspond à 9h/pm delay(4000); analogWrite(HOUR_PIN, 219); // 219 est la sortie qui correspond à 10h/pm delay(4000); analogWrite(HOUR_PIN, 237); // 237 est la sortie qui correspond à 11h/pm delay(4000); analogWrite(HOUR_PIN, 255); // 255 est la sortie qui correspond à 12h/pm

*/

}

void PWM4_init() { // Configurer PWM sur Trinket GPIO #4 (PB4, broche 3) en utilisant Timer 1 TCCR1 = _BV (CS10); // pas de prescaler GTCCR = _BV (COM1B1) | _BV (PWM1B); // effacer OC1B lors de la comparaison OCR1B = 127; // cycle d'utilisation initialisé à 50 % OCR1C = 255; // la fréquence }

// Fonction pour autoriser analogWrite sur Trinket GPIO #4 void analogWrite4(uint8_t duty_value) { OCR1B = duty_value; // le devoir peut être de 0 à 255 (0 à 100%) }

Étape 6: Esquisse Arduino - Horloge

// Horloge de compteur analogique Adafruit Trinket

// Fonctions date et heure utilisant un RTC DS1307 connecté via I2C et la lib TinyWireM

// Téléchargez ces bibliothèques à partir du référentiel Github d'Adafruit et // installez-les dans votre répertoire de bibliothèques Arduino #include #include

//Pour le débogage, décommentez le code série, utilisez un FTDI Friend avec sa broche RX connectée à la broche 3 // Vous aurez besoin d'un programme de terminal (tel que le logiciel gratuit PuTTY pour Windows) réglé sur le // port USB de l'ami FTDI à 9600 baud. Décommentez les commandes série pour voir ce qui se passe //#define HOUR_PIN 1 // Affichage de l'heure via PWM sur Trinket GPIO #1 #define MINUTE_PIN 4 // Affichage des minutes via PWM sur Trinket GPIO #4 (via les appels Timer 1) //SendOnlySoftwareSerial Serial (3); // Transmission série sur Trinket Pin 3 RTC_DS1307 rtc; // Configurer l'horloge en temps réel

void setup () { pinMode(HOUR_PIN, OUTPUT); // définit les broches du compteur PWM comme sorties pinMode (MINUTE_PIN, OUTPUT); PWM4_init(); // Réglez la minuterie 1 pour qu'elle fonctionne PWM sur la broche Trinket 4 TinyWireM.begin(); // Commencer I2C rtc.begin(); // Commencer l'horloge temps réel DS1307 //Serial.begin(9600); // Commencer Serial Monitor à 9600 bauds if (! rtc.isrunning()) { //Serial.println("RTC n'est PAS en cours d'exécution!"); // la ligne suivante définit le RTC sur la date et l'heure à laquelle ce croquis a été compilé rtc.adjust(DateTime(_DATE_, _TIME_)); }}

boucle vide () { uint8_t valeurheure, valeurminute; uint8_t heurevoltage, minutevoltage;

DateHeure maintenant = rtc.now(); // Récupère les informations RTC hourvalue = now.hour(); // Récupère l'heure if(hourvalue > 12) hourvalue -= 12; // Cette horloge est de 12 heures minutevalue = now.minute(); // Obtenir les minutes

minutevoltage = map(minutevalue, 1, 60, 57, 255); // Convertir les minutes en cycle d'utilisation PWM

if(hourvalue == 1){ analogWrite(HOUR_PIN, 57); } if(hourvalue == 2){ analogWrite(HOUR_PIN, 75); // chaque heure correspond à +18 } if(hourvalue == 3){ analogWrite(HOUR_PIN, 91); }

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

analogWrite4(minutevoltage); // la minute analogwrite peut rester la même que le mappage fonctionne // le code pour mettre le processeur en veille peut être préférable - nous retarderons delay (5000); // vérifie l'heure toutes les 5 secondes. Vous pouvez changer cela. }

void PWM4_init() { // Configurer PWM sur Trinket GPIO #4 (PB4, broche 3) en utilisant Timer 1 TCCR1 = _BV (CS10); // pas de prescaler GTCCR = _BV (COM1B1) | _BV (PWM1B); // effacer OC1B lors de la comparaison OCR1B = 127; // cycle d'utilisation initialisé à 50 % OCR1C = 255; // la fréquence }

// Fonction pour autoriser analogWrite sur Trinket GPIO #4 void analogWrite4(uint8_t duty_value) { OCR1B = duty_value; // le devoir peut être de 0 à 255 (0 à 100%) }

Conseillé: