Table des matières:

Wort-Uhr: 5 étapes
Wort-Uhr: 5 étapes

Vidéo: Wort-Uhr: 5 étapes

Vidéo: Wort-Uhr: 5 étapes
Vidéo: САМОГОН ИЗ РИСА.ТРИ ВИДА. 600 ЛИТРОВ БРАГИ (СОЛОД, КОДЗИ, ФЕРМЕНТЫ) ЧАСТЬ 4 (вторая перегонка) 2024, Novembre
Anonim
Moût-Uhr
Moût-Uhr

Bonjour ensemble!

Ce sera mon premier instructable et si vous avez des idées pour l'améliorer ou le rendre plus facile à comprendre, n'hésitez pas à me contacter !

Bon au début, ce genre d'"horloge" n'est pas mon idée ! J'en ai vu beaucoup sur Internet et ils peuvent être commandés pour seulement quelques dollars dans différentes boutiques en ligne. Mais je ne voulais pas en acheter un, je voulais en fabriquer un moi-même pour apprendre et comprendre comment cela fonctionne.

Un mot aux membres "non allemands"… Désolé pour le fait qu'il ne s'agisse que d'un "German Wort Uhr". Il peut être facilement converti en anglais ou dans toute autre langue, mais comme je suis allemand, je l'ai fait dans ma langue. Si vous avez besoin d'aide pour votre langue, contactez-moi et j'essaierai de vous aider.

Alors commençons…

Étape 1: le schéma

Le schéma
Le schéma

Le schéma est simple et si l'image est trop mauvaise à lire, il y a aussi un fichier PDF.

Commençons par le coin inférieur gauche. Il existe une simple alimentation utilisant un LM7805 pour générer une sortie 5V stable pour le PIC, les registres à décalage (74HC164) et la puce temps réel DS3231. Toutes les LED sont également alimentées à partir de cette partie. D22 à l'extrémité droite sert uniquement à indiquer l'alimentation et peut facilement être laissé de côté si vous ne le souhaitez pas.

Vous pouvez utiliser n'importe quelle alimentation CC pour l'horloge avec moins de 40 V, mais vous devez alors choisir la valeur appropriée pour C7. Il doit avoir une tension nominale d'au moins le double de la tension d'entrée et n'oubliez pas que vous créez de la chaleur dans le LM7805. Vous devez donc essayer de maintenir la tension d'entrée aussi basse que possible, car tout le reste n'est qu'un gaspillage d'énergie. Le meilleur ajustement est quelque chose entre 9V et 12V DC.

Ne vous souciez pas de la polarité de votre alimentation… Le MOSFET canal p (Q1) agit comme une protection contre les fausses polarités et l'horloge ne fonctionnera tout simplement pas et ne subira aucun dommage. Vous pouvez le vérifier sur la LED "power" D22 si elle est montée.

Sur le côté droit du schéma se trouvent les registres à décalage série-in parallèle-out. J'ai décidé de les utiliser car je ne voulais pas utiliser un énorme PIC avec beaucoup de ports I/O. Je voulais en utiliser un plus petit et j'avais encore quelques 16F1829 à la maison donc le choix était déjà clair. Les données (IN_1, IN_2 et IN_3) sont fournies par le PIC (voir section code ci-dessous) et le REGISTER_CLK également. Pour simplifier mon code et la disposition de mon PCB, j'ai utilisé deux des 74HC164 pour les heures et le dernier pour la "logique".

Dans le coin supérieur gauche se trouve le PIC et toutes les pièces nécessaires. J'ai utilisé l'horloge interne donc aucun oszillateur n'est nécessaire. Seulement trois résistances pour SCL, SDA et MCLR. Pour le fait que j'ai utilisé le 32 kHz comme indication de "secondes exactes", il n'y a pas besoin d'une fréquence assez stable et précise pour le PIC.

Au milieu il y a le DS3231 avec un minimum sur les parties externes. En fait j'ai utilisé uniquement les entrées SDA et SCL pour la communication sur I²C et la sortie 32kHZ comme référence d'horloge externe pour Timer1 du PIC16F1829. Pour cette sortie, la fiche technique indique qu'une résistance de rappel externe est nécessaire. Les autres sorties que je n'ai pas utilisées dans ce projet et les ont laissées non connectées.

Au milieu également, les LED… Comme vous pouvez le lire sur le schéma, j'ai utilisé des LED bleues (celles avec un boîtier transparent) et une valeur de résistance de 1k Ohms. Si vous avez l'intention de réaliser ce projet vous-même, vous devez choisir les valeurs de ces résistances en fonction de la couleur et du type de LED que vous choisissez. Gardez également à l'esprit où vous voulez que l'horloge soit configurée. Le mien est debout dans ma chambre à coucher, donc je ne voulais pas que les LED soient trop lumineuses et j'ai choisi une valeur plus grande pour les résistances. Faites quelques essais sur une maquette avec des LED et des valeurs de résistance avant de les monter sur le PCB.

Étape 2: mise en page

Disposition
Disposition
Disposition
Disposition
Disposition
Disposition

Après avoir terminé le schéma, il est temps de router le PCB. Pour cela j'ai utilisé KiCAD (pour les schémas aussi). Il n'y a pas grand chose à dire, il suffit de tracer les lignes.

Pour le fait que j'ai imprimé le boîtier de l'horloge par moi-même, il était assez important où se trouvent les LED sur la couche supérieure. Je n'ai mis les LED et les résistances que sur la couche supérieure, car j'ai commandé mon PCB partiellement monté (toutes les pièces SMD) et parce que la société que j'ai choisie pour cela ne place les pièces que d'un côté et non des deux côtés.

Vous pouvez voir le placement dans les deux images tridimensionnelles que j'ai faites à partir de KiCAD.

Si cela vous intéresse… Il est possible d'exporter le PCB KiCAD vers Eagle et ensuite il est assez facile de construire le boîtier, car vous avez une référence du PCB.

Étape 3: « Logique » du « Wort-Uhr »

La plus grande partie de ce projet était le code du PIC…

Dans un premier temps trouver la "logique" du temps parlé en allemand et la traduire en code.

Malheureusement, il n'a pas été possible de télécharger directement le fichier Excel, mais j'espère que l'export PDF est suffisamment lisible pour vous. Sinon, contactez-moi et je vous enverrai le fichier Excel original. Dans le PDF, vous pouvez voir comment j'ai configuré la logique de mon horloge. Vous pouvez voir comment j'ai parcouru les différentes étapes de temps et comment l'orthographe est. Le calcul à l'intérieur du code (principalement les instructions if-else) peut être dérivé des informations sur le côté droit du tableau. Une partie est pour les minutes et une partie pour les heures.

Comme vous pouvez le voir, ce n'est pas magique et peut être facilement codé en C. Le point "le plus délicat" dans la logique est de savoir comment gérer l'heure comme vous pouvez le voir dans le fichier que ce n'est qu'au début d'une heure que l'heure réelle est affichée. En allemand (ce n'est peut-être qu'une chose spécifique au bavarois), la "prochaine heure" est utilisée assez tôt.

Pour le codage, j'ai utilisé MPLABX comme IDE de choix.

Étape 4: extraits de code

Extraits de code
Extraits de code
Extraits de code
Extraits de code

Je ne posterai pas mon code ici, mais si vous avez l'intention d'écrire votre propre code, je vous donnerai quelques indices sur lesquels j'ai "trébuché" pendant le développement…

D'abord le "registre"-remplissage:

Si vous transférez de nouvelles données dans les registres trop souvent et dans des cycles trop courts, je fais l'expérience que les LED commencent à clignoter. J'ai donc fait quelques "drapeaux de blocage", que seulement chaque minute un nouveau "calcul" du temps parlé est effectué et la mise à jour du registre est effectuée.

Le code pour remplir les registres est dans l'image ci-dessus. Comme vous pouvez le voir, je remplis les 3 registres en parallèle, j'ai donc besoin de 3 broches du PIC pour les données et d'une broche pour CLK. Le 74HC164 prend en charge de nouvelles données sur une transition sur la ligne CLK de 0 à 1.

Le reste du code dépend principalement du PIC, de la logique du "temps parlé" et de la gestion de la communication et des boutons. La communication est principalement assurée par Microchip MPLABX car j'ai utilisé le module MSSP.

Une bonne idée est de lire la fiche technique de DS3231 car les données sont stockées à l'intérieur en tant que BCD, vous devrez donc peut-être les "transformer" dans votre code. Eh bien, en ce qui me concerne, je suis un gars qui apprend par la pratique et bien sûr, je n'ai pas lu la fiche technique… Cela m'a coûté beaucoup de nerfs et d'heures.

Comme vous l'avez peut-être remarqué, il existe deux façons de « garder le temps sur la bonne voie » avec cette implémentation.

  1. Vous pouvez lire l'heure réelle sur le DS3231
  2. Vous pouvez "compter les secondes" dans le PIC lui-même et simplement synchroniser l'heure avec DS3231 de temps en temps

C'est à vous de décider et les deux manières sont pratiques et simples. J'ai utilisé la première option et uniquement l'heure synchronisée lors du réglage de l'heure via les boutons (heure d'écriture sur DS3231) ou toutes les 24 heures (heure de lecture à partir de DS3231), car je voulais implémenter plus de logique par moi-même. J'éteins également mon horloge pendant la nuit (23h00 à 05h00), donc c'était un peu plus facile à mon avis.

Étape 5: Le logement

Enfin, il est temps de jeter un coup d'œil sur le boîtier.

Comme je l'ai mentionné ci-dessus, j'ai fabriqué le boîtier moi-même (à l'aide d'Eagle) et je les ai imprimés avec mon imprimante 3D, je devais donc continuer à regarder les positions des différentes LED.

Vous trouverez ci-joint les fichiers STL si vous souhaitez les utiliser.

J'espère que cette instructable vous aide lors de la construction de votre propre « Wort-Uhr ». S'il y a encore des "questions ouvertes", n'hésitez pas à me contacter. Le meilleur moyen de commenter ci-dessous, car vous n'êtes peut-être pas le seul à avoir une question spécifique.

Conseillé: