Table des matières:

Horloge numérique Arduino synchronisée par la ligne électrique 60 Hz : 8 étapes (avec images)
Horloge numérique Arduino synchronisée par la ligne électrique 60 Hz : 8 étapes (avec images)

Vidéo: Horloge numérique Arduino synchronisée par la ligne électrique 60 Hz : 8 étapes (avec images)

Vidéo: Horloge numérique Arduino synchronisée par la ligne électrique 60 Hz : 8 étapes (avec images)
Vidéo: Horloge DIY 7 segments Arduino + DS3231+SAA1063 et WS2812B 2024, Novembre
Anonim
Horloge numérique Arduino synchronisée par la ligne électrique 60 Hz
Horloge numérique Arduino synchronisée par la ligne électrique 60 Hz

Cette horloge numérique basée sur Arduino est synchronisée par la ligne électrique à 60 Hz. Il dispose d'un affichage à anode commune à 4 chiffres et 7 segments simple et peu coûteux qui affiche les heures et les minutes. Il utilise un détecteur croisé pour détecter quand l'onde sinusoïdale entrante de 60 Hz croise le point de tension zéro et dérive une onde carrée de 60 Hz.

Sur de courtes périodes, la fréquence de l'onde sinusoïdale entrante provenant de la ligne électrique peut varier très légèrement en raison de la charge, mais sur de longues périodes, elle atteint en moyenne 60 Hz très précisément. Nous pouvons en profiter pour dériver une source de synchronisation pour synchroniser notre horloge.

Étape 1: Le schéma de circuit

Le schéma de circuit
Le schéma de circuit

Il existe deux versions du circuit selon que l'on souhaite utiliser un transformateur avec ou sans prise centrale, dans les deux cas le fonctionnement du circuit est quasiment identique. Pour cette construction, j'ai utilisé un adaptateur mural (pas de prise centrale) qui produit du 12V AC. J'utiliserai cette conception (Digital Clock1 Circuit Diagram) pour la description du circuit. Notez qu'il est important d'utiliser un adaptateur mural qui produit du 12V AC et non du 12V DC afin que nous puissions puiser dans l'onde sinusoïdale AC pour la synchronisation. Vous pouvez probablement aussi utiliser un transformateur qui produit du 9V AC, retirer le R19 et le faire fonctionner également, mais le 12V est très couramment disponible. Voici comment fonctionne le circuit:

120V AC à 60Hz est converti en 12V AC par le transformateur TR1. Celui-ci est alimenté à la diode D4 et redressé de sorte que seule la tension +ve est fournie et lissée à environ DC avec ondulation par le condensateur C3. La tension sur C3 est transmise au régulateur de tension 7805 (U6) via la résistance R19. R19 est utilisé pour réduire la tension sur C3 qui dans mon cas a été mesurée à environ 15VDC. Cela peut être régulé par le 7805 mais avec ce niveau d'entrée, le 7805 doit chuter d'environ 10VDC et par conséquent devient très chaud. En utilisant R19 pour faire chuter la tension à environ 10VDC, nous empêchons U6 de trop chauffer. Ce n'est donc pas une technique de conversion de puissance efficace, mais elle fonctionne pour nos besoins. REMARQUE: utilisez ici au moins une résistance de 1/2 W ou plus. Le circuit consomme environ 55 ma, donc la dissipation de puissance dans R19 est d'environ 1/3W sur la base de P=I**2*R ou P = 55ma x 55ma x 120 ohms = 0,363W. Next U6 produit du 5V DC pur avec C4 et C5 sur la sortie pour filtrer tout bruit sur la ligne d'alimentation 5V. Ce 5V DC alimente tous les circuits intégrés de la carte.

De TR1, nous prélevons également un échantillon du signal CA non filtré et l'injectons dans le potentiomètre RV1 qui est utilisé pour ajuster le niveau fourni au détecteur de croisement. R18 et R17 forment un diviseur de tension pour réduire davantage le niveau de tension alternative entrant. N'oubliez pas que cela arrive à 12 V AC et nous devons le réduire à moins de 5 V afin qu'il fonctionne avec notre détecteur croisé qui est seulement alimenté par 5VDC. R15 et R16 fournissent une limitation de courant tandis que D1 et D2 sont destinés à empêcher la surcharge de l'amplificateur opérationnel U5. Dans la configuration illustrée, la sortie de U5 sur la broche 1 alternera entre +5V et 0V chaque fois que l'onde sinusoïdale entrante passe du positif au négatif. Cela génère une onde carrée de 60 Hz qui est transmise au microcontrôleur, U4. Le programme chargé sur U4 utilise ensuite cette onde carrée de 60 Hz pour incrémenter l'horloge toutes les minutes et toutes les heures. La manière dont cela est fait sera discutée dans la section sur le logiciel et dans les commentaires sur le logiciel.

U7 le registre à décalage 74HC595 est utilisé car nous avons un nombre limité de broches numériques sur le microprocesseur, il est donc utilisé pour augmenter le nombre de sorties. Nous utilisons 4 broches numériques sur le microprocesseur mais pouvons contrôler 7 segments sur l'écran via le 74HC595. Ceci est accompli en décalant des modèles prédéterminés de bits, stockés dans le microcontrôleur, et qui représentent chaque chiffre à afficher, dans le registre à décalage.

L'affichage utilisé ici est une anode commune, nous devons donc inverser les niveaux de signal sortant du 74HC595 afin d'activer un segment. Lorsqu'un segment doit être activé, le signal sortant de la broche de sortie 74HC595 sera à +5V, mais nous avons besoin que la broche qu'il alimente sur l'écran soit à 0V afin d'activer ce segment d'affichage. Donc, pour ce faire, nous avons besoin des inverseurs hexagonaux U2 et U3. Malheureusement, un circuit intégré d'onduleur ne peut gérer que 6 inversions, nous en avons donc besoin de deux, même si sur le second, nous n'utilisons qu'une des 6 portes. Du gaspillage malheureusement. Vous pourriez vous demander pourquoi ne pas utiliser ici un écran de type cathode commun et éliminer U2 et U3 ? Eh bien, la réponse est que vous pouvez, il se trouve que j'ai un type d'anode commun dans mon approvisionnement en pièces. Si vous avez ou souhaitez utiliser un écran de type cathode commun, éliminez simplement U2 et U3 et recâblez Q1 - Q4 de sorte que les collecteurs des transistors soient connectés aux broches de l'écran et que les émetteurs des transistors soient connectés à la terre. Q1 - Q4 contrôle lequel des quatre affichages à 7 segments est actif. Ceci est contrôlé par le microcontrôleur, via les broches connectées à la base des transistors Q1 - Q4.

Les boutons d'incrémentation et de réglage seront utilisés pour régler manuellement l'heure correcte lorsqu'il s'agit d'utiliser réellement l'horloge. Lorsque le bouton Set est enfoncé une fois, le bouton Incrément peut être utilisé pour faire défiler les heures affichées à l'écran. Lorsque vous appuyez à nouveau sur le bouton Set, le bouton d'incrémentation peut être utilisé pour faire défiler les minutes affichées à l'écran. Lorsque vous appuyez une troisième fois sur le bouton Set, l'heure est réglée. R13 et R14 tirent les broches du microcontrôleur associées à ces boutons vers le bas lorsqu'elles ne sont pas utilisées.

Notez qu'ici, nous avons retiré U4 (Atmega328p) de la carte prototype typique d'Arduino UNO et l'avons mis sur une carte prototype avec le reste de notre circuit. Pour ce faire, nous devons au minimum fournir le cristal X1 et les condensateurs C1 et C2 pour fournir une source d'horloge pour le microcontrôleur, attacher la broche 1, la broche de réinitialisation, haute et fournir une alimentation 5VDC.

Étape 2: Planifiez votre circuit

Planche à pain votre circuit
Planche à pain votre circuit
Planche à pain votre circuit
Planche à pain votre circuit

Que vous construisiez le circuit exactement comme indiqué dans le schéma de circuit ou que vous utilisiez peut-être un transformateur, un type d'affichage ou d'autres composants légèrement différents, vous devez d'abord tester le circuit afin de vous assurer qu'il fonctionne et que vous comprenez comment il fonctionne.

Sur les photos, vous pouvez voir que le montage d'une maquette nécessitait quelques cartes ainsi qu'une carte Arduino Uno. Ainsi, pour programmer le microcontrôleur ou expérimenter ou apporter des modifications au logiciel, vous aurez d'abord besoin du microcontrôleur IC sur une carte UNO afin que vous puissiez y connecter un câble USB et votre ordinateur pour télécharger le programme ou apporter des modifications logicielles.

Une fois que l'horloge fonctionne sur la maquette et que votre microcontrôleur est programmé, vous pouvez le débrancher et le brancher sur la prise de votre horloge permanente de construction finale sur la carte prototype. Assurez-vous de suivre les précautions antistatiques lorsque vous faites cela. Utilisez un bracelet antistatique lorsque vous manipulez le microprocesseur.

Étape 3: Construction du circuit sur Protoboard

Construction de circuits sur Protoboard
Construction de circuits sur Protoboard
Construction de circuits sur Protoboard
Construction de circuits sur Protoboard

Le circuit est construit sur un morceau de carte prototype et câblé point à point à l'aide de fil enroulé #30 AWG. Il fournit un résultat solide et fiable. Parce que le transformateur que j'ai a une fiche mâle de 5 mm à l'extrémité du câble, j'ai monté le réceptacle femelle correspondant à l'arrière de la carte en coupant, pliant et perçant un morceau de bande d'aluminium plat de 1/2 de large pour faire un custom support, puis boulonné à la carte avec de petits écrous et boulons 4 à 40. Vous pouvez simplement couper le connecteur et souder les fils d'alimentation restants à la carte et vous épargner environ 20 minutes de travail, mais je ne voulais pas que le transformateur soit fixé en permanence au tableau.

Étape 4: Créer une prise pour l'écran et lui donner des jambes

Créer une prise pour l'écran et lui donner des jambes
Créer une prise pour l'écran et lui donner des jambes
Créer une prise pour l'écran et lui donner des jambes
Créer une prise pour l'écran et lui donner des jambes
Créer une prise pour l'écran et lui donner des jambes
Créer une prise pour l'écran et lui donner des jambes

Étant donné que l'écran a 16 broches, 8 de chaque côté, avec un espacement des broches plus large qu'une prise IC standard à 16 broches, nous devons ajuster la taille de la prise pour s'adapter à l'écran. Vous pouvez le faire en utilisant simplement une paire de pinces coupantes pour couper le plastique reliant les deux côtés de la prise, les séparer et les souder séparément à la carte avec un espacement qui correspond à l'espacement des broches sur l'écran. Il est avantageux de le faire pour ne pas avoir à souder directement sur les broches de l'écran et exposer l'écran à une chaleur excessive. Vous pouvez voir la prise sur laquelle j'ai fait cela en haut de la carte dans l'image ci-dessus.

Afin de faire tenir l'écran correctement, j'ai boulonné deux boulons de 1 aux deux trous d'angle inférieurs de la carte prototype, comme indiqué sur les photos, pour créer un support simple. voulez mettre quelque chose de lourd à l'arrière des boulons pour le stabiliser.

Étape 5: Vérification du câblage du circuit imprimé et préparation de l'étalonnage

Vérification du câblage du circuit imprimé et préparation de l'étalonnage
Vérification du câblage du circuit imprimé et préparation de l'étalonnage

Une fois que la carte de circuit imprimé est câblée mais avant de brancher les circuits intégrés ou de l'afficher ou de la mettre sous tension, c'est une bonne idée de vérifier les connexions de la carte avec un DVM. Vous pouvez régler la plupart des DVM pour qu'ils émettent un bip en cas de continuité. Réglez votre DVM dans ce mode, puis en suivant votre schéma de circuit, vérifiez autant de connexions de circuit que possible. Vérifiez qu'il n'y a pas de circuit ouvert, ou à proximité, entre les points +5V et la terre. Vérifiez visuellement que tous les composants sont connectés aux bonnes broches.

Ensuite, connectez votre transformateur au circuit et mettez-le sous tension. Vérifiez que vous avez exactement 5 V CC sur le rail d'alimentation 5 V avec un oscilloscope ou un DVM avant de brancher des circuits intégrés ou l'écran.

Ensuite, branchez UNIQUEMENT le circuit intégré Op-Amp U5 en vue de l'étape suivante. Ici, nous allons vérifier que notre circuit croisé génère une onde carrée et ajuster le potentiomètre RV1 pour un signal 60 Hz propre.

Étape 6: Étalonnage du circuit

Étalonnage des circuits
Étalonnage des circuits
Étalonnage des circuits
Étalonnage des circuits

La seule calibration à faire est de régler le potentiomètre RV1 pour le bon niveau de signal alimentant le détecteur de croisement. Il y a deux façons de faire ça:

1. Placez une sonde d'oscilloscope sur la broche 1 de U5 et assurez-vous de connecter le fil de terre de la sonde d'oscilloscope à la terre du circuit. Ensuite, ajustez RV1 jusqu'à ce que vous ayez une onde carrée propre, comme indiqué dans l'image ci-dessus. Si vous ajustez RV1 trop loin dans un sens ou dans l'autre, vous n'aurez pas d'onde carrée ou une onde carrée déformée. Assurez-vous que la fréquence de l'onde carrée est de 60 Hz. Si vous avez un oscilloscope moderne, il vous indiquera probablement la fréquence. Si vous avez un ancien oscilloscope comme moi, assurez-vous que la période d'onde carrée est d'environ 16,66 ms ou 1/60 s.

2. À l'aide d'un fréquencemètre ou d'un DVM en mode Fréquence, mesurez la fréquence à la broche 1 de U5 et ajustez RV1 pour exactement 60 Hz.

Une fois cet étalonnage terminé, éteignez le circuit et branchez tous les circuits intégrés et l'écran pour terminer la construction du circuit.

Étape 7: Le programme Arduino

Le programme est entièrement commenté afin que vous puissiez comprendre les détails de chaque étape. En raison de la complexité du programme, il est difficile de décrire chaque étape, mais à un niveau très élevé, voici comment cela fonctionne:

Le microprocesseur reçoit l'onde carrée de 60 Hz entrante et compte 60 cycles et incrémente le nombre de secondes tous les 60 cycles. Une fois que le décompte des secondes atteint 60 secondes, ou 3600 cycles, le décompte des minutes est incrémenté et le décompte des secondes est remis à zéro. Une fois que le décompte des minutes atteint 60 minutes, le décompte des heures est incrémenté et le décompte des minutes est remis à zéro. le nombre d'heures est remis à 1 après 13 heures, il s'agit donc d'une horloge de 12 heures. Si vous voulez une horloge de 24 heures, changez simplement le programme pour remettre les heures à zéro après 24 heures.

Il s'agit d'un projet expérimental, j'ai donc essayé d'utiliser une boucle Do-While pour supprimer le rebond des commutateurs sur les boutons Set et Increment. Cela fonctionne raisonnablement bien. Lorsqu'on appuie une fois sur le bouton Set, le bouton Incrément peut être utilisé pour faire défiler les heures affichées à l'écran. Lorsque vous appuyez à nouveau sur le bouton Set, le bouton d'incrémentation peut être utilisé pour faire défiler les minutes affichées à l'écran. Lorsque vous appuyez une troisième fois sur le bouton Set, l'heure est réglée et l'horloge commence à fonctionner.

Les modèles de 0 et 1 qui sont utilisés pour afficher chaque nombre sur les affichages à 7 segments sont stockés dans le tableau appelé Seven_Seg. Selon l'heure actuelle de l'horloge, ces modèles sont transmis au CI 74HC595 et envoyés à l'écran. Lequel des 4 chiffres de l'affichage est activé à un moment donné pour recevoir ces données est contrôlé par le microprocesseur via l'affichage Dig 1, 2, 3, 4 broches. Lorsque le circuit est mis sous tension, le programme exécute d'abord une routine de test appelée Test_Clock qui envoie les chiffres corrects pour éclairer chaque affichage avec un nombre de 0 à 9. Donc, si vous voyez cela lorsque vous mettez sous tension, vous savez que vous avez tout construit correctement.

Étape 8: Liste des pièces

1 - Transformateur 120VAC à 12VAC environ 100ma ou plus1 - Carte prototype environ 3,5" x 3,5"1 - Afficheur 4 chiffres à 7 segments YSD-439K2B-35 ou équivalent (Sparkfun)2 - Petits boutons-poussoirs à montage sur PCB NO (tout)4 - 2N3904 Transistors NPN8 - Résistances 330 ohms2 - 74LS04 Onduleurs Hex1 - 74HC595 Série à parallèle Registre à décalage 8 bits 1 - LM358 OP-AMP (Comparateur)1 - Microcontrôleur ATMEGA328P (Creatron)4 - Résistances 4,7K7 - Résistances 10K1 - Diode 1N4007 ou 1N40012 - 1N4148 diodes1 - Résistance 120 ohm, 1/2W ou 1W1 - Potentiomètre 10K monté sur PCB1 - Condensateur 470uF 25V1 - Régulateur de tension du boîtier 7805 TO2201 - Condensateur 10uF 10V2 - Condensateurs 0,1 uF 10V1 - Cristal 16MHz (Sparkfun)2 - Condensateurs 22pF1 - Prise d'alimentation femelle (En option pour installer une fiche mâle le cas échéant sur votre transformateur mural)2 - Prises IC 16 broches2 - Prises IC 14 broches1 - Prise IC 8 broches1 - Prise IC 28 broches2 - 1" de long environ 4 ou #6 boulons et écrous correspondants2 - 1/ Boulons #4-40 de 4" de long et écrous assortis1 - morceau de bande d'aluminium plat de 1/2" de large coupé sur mesure et percé à la taille

#30 AWG wire wrap wire#22 AWG wireSolder

Conseillé: