Fabrication industrielle
Internet des objets industriel | Matériaux industriels | Entretien et réparation d'équipement | Programmation industrielle |
home  MfgRobots >> Fabrication industrielle >  >> Manufacturing Technology >> Processus de fabrication

Horloge Nixie avec Arduino | Conception la plus simple

Composants et fournitures

Arduino UNO
× 1
Pièces électroniques UTSOURCE
× 1

À propos de ce projet

Après une longue journée de travail, j'ai finalement réussi à fabriquer une horloge Nixie avec Arduino et une puce d'opto-isolation, pas besoin de pilote Nixie qui est difficile à acheter.

Regardez la vidéo pour des instructions complètes :

Liste des pièces pour faire le projet :

1. Arduino UNO https://amzn.to/2P58O7s

2. Tube Nixie 6 pièces https://amzn.to/3aHyJvX

3. Puce optocoupleur TLP627

4. Module élévateur DC de 12VDC à 390VDC https://amzn.to/30kpdK9

5. Planche à pain https://amzn.to/2uCrnsW

6. Module horloge temps réel DS3231 https://amzn.to/2SIyEzI

Achetez des composants électroniques sur utsource.net

Étape 1. Conception du circuit

Le circuit utilise une puce d'opto-isolation pour contrôler le tube Nixie (en utilisant 150VDC) par Arduino (en utilisant 5VDC). Par connexion matricielle, nous n'avons donc besoin que de 16 sorties d'Arduino pour contrôler 60 lumières de 6 tubes nixie. Le module d'horloge temps réel DS3231 sert à garder l'heure (même éteindre l'alimentation), il est communiqué avec Arduino par le réseau I2C. Arduino lira en temps réel, puis allumera/éteindra les lumières Nixie par séquence en haute fréquence pour que les yeux humains voient 6 nombres comme permanents

Étape 2. Code Arduino

//Chaîne YouTube : engineering2you
#include
#include "DS3231.h"
RTClib RTC ;
DS3231 Clock ;
int heure;
int minute;
int seconde;
const int nixie_0 =2;
const int nixie_1 =3;
const int nixie_2 =4;
const int nixie_3 =5;
const int nixie_4 =6;
const int nixie_5 =7;
const int nixie_6 =8;
const int nixie_7 =9;
const int nixie_8 =10;
const int nixie_9 =11;
const int row_1 =0;
const int row_2 =1;
const int row_3 =14;
const int row_4 =15;
const int row_5 =16;
const int row_6 =17;
const int time_on =2;
void setup() {
pinMode(nixie_0, OUTPUT);
pinMode(nixie_1, OUTPUT);
pinMode(nixie_2, OUTPUT);
pinMode(nixie_3, OUTPUT);
pinMode(nixie_4, OUTPUT);
pinMode( nixie_5, OUTPUT);
pinMode(nixie_6, OUTPUT);
pinMode(nixie_7, OUTPUT);
pinMode(nixie_8, OUTPUT);
pinMode(nixie_9, OUTPUT);
pinMode(row_1, OUTPUT);
pinMode(row_2, OUTPUT);
pinMode(row_3, OUTPUT);
pinMode(row_4, OUTPUT);
pinMode(row_5 , OUTPUT);
pinMode(row_6, OUTPUT);
//Serial.begin(9600); // ne devrait PAS utiliser seiral println, cela affectera la sortie des broches D0 et D1
Wire.begin();
}
void loop() {
//--- ----------------obtenir la valeur de l'horloge----------------------------
DateTime now =RTC.now();
hour =now.hour();
minute =now.minute();
second =now.second();
/ /-------------------afficher le numéro d'horloge ----------------------
entier j; //deuxième nombre à partir de la droite
int k; //premier nombre à partir de la droite
j =deuxième/10;
k =deuxième%10;
//-----------afficher le premier nombre de seconde
off_all();
on_number(0,k+2);
delay(time_on);
//-----------afficher le deuxième nombre de secondes
off_all();
on_number(1,j+2);
delay(time_on);

j =minute/10;
k =minute%10;
//-----------afficher le premier nombre de minutes
off_all();
on_number(14,k+2);
delay(time_on);
//-----------afficher le deuxième nombre de minutes
off_all();
on_number(15,j+2 );
delay(time_on);
j =hour/10;
k =hour%10;
//-----------show first nombre d'heures
off_all();
on_number(16,k+2);
delay(time_on);
//-----------afficher le deuxième nombre d'heure
off_all();
on_number(17,j+2 );
delay(time_on);
}
void on_number(int row, int nixie){
digitalWrite(row, HIGH);
digitalWrite(nixie, HIGH );
}
void off_all(){
digitalWrite(row_1, LOW);
digitalWrite(row_2, LOW);
digitalWrite(row_3, LOW);
digitalWrite(row_4, LOW);
digitalWrite(row_5, LOW);
digitalWrite(row_6, LOW);
digitalWrite(nixie_0, LOW);
digitalWrite(nixie_1 , LOW);
digitalWrite(nixie_2, LOW);
digitalWrite(nixie_3, LOW);
digitalWrite(nixie_4, LOW);
digitalWrite(nixie_5, LOW);
digitalWrite(nixie_6, LOW);
digitalWrite(nixie_7, LOW);
digitalWrite(nixie_8, LOW);
digitalWrite(nixie_9, LOW);
delayMicroseconds(400); //pour éviter l'effet "fantôme" sur d'autres tubes
}

Fondamentalement, le code sera obtenu en temps réel à partir du module DS3231 et s'affichera sur 6 tubes nixie via une puce d'opto-isolation.

Étape 3. Construisez le circuit

C'est juste une expérience, alors j'ai tout fait en maquette. Heureusement, ça marche du premier coup, pas de problème

Dans la prochaine étape, je vais essayer de fabriquer une horloge nixie dans un boîtier en MDF avec une bonne décoration, afin que je puisse la mettre dans ma chambre.

Code

  • Extrait de code n° 1
Extrait de code n°1Texte brut
//Chaîne YouTube : engineer2you#include #include "DS3231.h"RTClib RTC;DS3231 Clock;int hour;int minute;int seconde;const int nixie_0 =2;const int nixie_1 =3; const int nixie_2 =4;const int nixie_3 =5; const int nixie_4 =6;const int nixie_5 =7;const int nixie_6 =8;const int nixie_7 =9;const int nixie_8 =10;const int nixie_9 =11;const int row_1 =0;const int row_2 =1;const int row_3 =14;const int row_4 =15;const int row_5 =16;const int row_6 =17;const int time_on =2;void setup() { pinMode(nixie_0, OUTPUT); pinMode(nixie_1, SORTIE); pinMode(nixie_2, SORTIE); pinMode(nixie_3, SORTIE); pinMode(nixie_4, SORTIE); pinMode(nixie_5, SORTIE); pinMode(nixie_6, SORTIE); pinMode(nixie_7, SORTIE); pinMode(nixie_8, SORTIE); pinMode(nixie_9, SORTIE); pinMode(ligne_1, SORTIE); pinMode(row_2, OUTPUT); pinMode(row_3, OUTPUT); pinMode(ligne_4, SORTIE); pinMode(ligne_5, SORTIE); pinMode(row_6, OUTPUT); //Serial.begin(9600); // ne devrait PAS utiliser seiral println, cela affectera la sortie des broches D0 et D1 Wire.begin();}void loop() { //------------------- obtenir la valeur de l'horloge -------------- DateTime now =RTC.now(); heure =maintenant.heure(); minute =maintenant.minute(); seconde =maintenant.seconde(); //-------------------afficher le numéro d'horloge ---------------------- int j; //deuxième nombre à partir de la droite int k; //premier nombre à partir de la droite j =deuxième/10 ; k =deuxième%10 ; //-----------afficher le premier nombre de la seconde off_all(); on_number(0,k+2); delay(time_on); //-----------afficher le deuxième nombre de secondes off_all(); on_number(1,j+2); delay(time_on); j =minutes/10 ; k =minute%10 ; //-----------afficher le premier nombre de minutes off_all(); on_number(14,k+2); delay(time_on); //-----------afficher le deuxième nombre de minutes off_all(); on_number(15,j+2); delay(time_on); j =heure/10 ; k =heure%10 ; //-----------afficher le premier nombre d'heures off_all(); on_number(16,k+2); delay(time_on); //-----------afficher le deuxième nombre d'heures off_all(); on_number(17,j+2); delay(time_on);}void on_number(int row, int nixie){ digitalWrite(row, HIGH); digitalWrite(nixie, HIGH);}void off_all(){ digitalWrite(row_1, LOW); digitalWrite(row_2, LOW); digitalWrite(row_3, LOW); digitalWrite(row_4, LOW); digitalWrite(row_5, LOW); digitalWrite(row_6, LOW); digitalWrite(nixie_0, LOW); digitalWrite(nixie_1, LOW); digitalWrite(nixie_2, LOW); digitalWrite(nixie_3, LOW); digitalWrite(nixie_4, LOW); digitalWrite(nixie_5, LOW); digitalWrite(nixie_6, LOW); digitalWrite(nixie_7, FAIBLE); digitalWrite(nixie_8, LOW); digitalWrite(nixie_9, LOW); délaiMicrosecondes (400); //pour empêcher l'effet "fantôme" sur d'autres tubes}

Processus de fabrication

  1. horloge de vision Arduino pov
  2. horloge IV9 Numitron DIY la plus simple avec Arduino
  3. Conception de harnais avec la série E3.
  4. Horloge de mots simple (Arduino)
  5. Horloge Arduino avec heures de prière islamique
  6. horloge maîtresse
  7. Contrôler l'accepteur de pièces avec Arduino
  8. Arduino Temp. Moniteur et horloge en temps réel avec affichage 3.2
  9. Réveil simple avec DS1302 RTC