Overblog
Suivre ce blog Administration + Créer mon blog
24 avril 2015 5 24 /04 /avril /2015 12:30

On m'a confié une horloge de gare de marque Bodet dans le but de la ranimer. Ce type d'horloge dispose d'une sorte de moteur pas à pas qui s'alimente avec des impulsions, au rythme d'une impulsion toute les 30s, chaque impulsion étant de polarité inversée par rapport à la précédente, et d'une durée d'environ 500 ms.

Une recherche avec la référence inscrite sur le moteur de l'horloge m'a permis de trouver que ces impulsions doivent être de 0.9V/65mA aux bornes du moteur. L'impédance du moteur étant de 15 Ohms.

Après avoir fait le tour des solutions disponibles sur le marché, je me suis dit qu'ont peut faire bien moins cher, probablement mieux, et surtout bien plus fun!

Les objectifs fixés sont:

  • Faible coût
  • Alimentation 9V (requis pour piloter l'horloge)
  • Application automatique des changements d'heure.
  • Très bonne stabilité de l'horloge (2 ppm soit environ 1 minute/an)
  • Interrupteur Marche/Arrêt
  • Interrupteur de mise en mode avance rapide pour mise à l'heure.

Le micro-contrôleur:

J'avais initialement pensé à un ATTiny 85 pour contrôler le tout, mais malheureusement il me manque une broche.

J'ai voulu essayer l'ATTiny 2313 mais il est difficilement trouvable chez mes fournisseurs habituels, alors j'ai finalement opté pour le bon vieil ATMega328P, en mode horloge interne à 1 MHz, c'est déjà très largement surdimensionné pour la tâche, mais à 3 Euros à peine le circuit ça ne vaut pas la peine de s'en priver.

Le pilotage du moteur:

Le moteur de l'horloge est piloté par un pont en H de type SN 754410.

L'horloge RTC:

Et pour avoir une grande stabilité j'utilise une horloge RTC thermo-compensée de type DS3231.

Je n'ai pas besoin de lire l'heure car tout ce que je peux envoyer au moteur de l'horloge sont une série d'impulsions pour faire avancer les aiguilles, mais je vais quand même me servir de l'heure dans l'horloge RTC pour savoir quand changer d'heure.

Le choix du DS3231 s'explique aussi par le fait qu'il a un générateur d'impulsions programmable.

Je vais le programmer pour générer des impulsions à la fréquence de 1Hz, qui vont me servir à réveiller l'ATMega qui entre chaque impulsion sera dans un état de sommeil profond pour peu consommer (sleep-mode POWER_OFF).

Changement d'heure:

Quant au changement d'heure, eh bien j'ai déjà une fonction qui me calcule l'offset en minutes à appliquer à l'heure UTC pour obtenir l'heure locale. Je vais utiliser les variations de cet offset pour savoir quand changer d'heure.

Et pour appliquer le changement d'heure à une horloge qui ne peut aller que dans un seul sens par pas de 30s je vais simplement mettre l'horloge en marche "rapide" pour avancer d'une heure, et la mettre en pause pendant 1h pour retarder d'1h. Simple non ;)

Je vais aussi y ajouter un port ICSP pour pouvoir la reprogrammer facilement si nécessaire.

Schéma:

Schéma

Schéma

Vue Breadboard de Fritzing du premier PoC

Vue Breadboard de Fritzing du premier PoC

Pour faire le schéma et le circuit imprimé, j'ai utilisé l'excellent logiciel Kicad, open-source.

C'est vraiment très bien fait et bien documenté. Je n'ai pas eu de mal à faire les composants spécifiques dont j'avais besoin (connecteur ICSP et connecteur pour l'horloge RTC).

Je voulais une carte au format Arduino, afin de tenir facilement dans un boitier tout fait.

Voici le circuit routé:

Circuit routé avec PcbNew (KiCad)

Circuit routé avec PcbNew (KiCad)

Et comme je suis sympa le code, les fichiers KiCad et le typon au format PDF sont disponibles sous Licence GPL sur GitHub.

Une fois le typon prêt et vérifié, j'ai essayé par 4 fois de le transférer sur du cuivre par la méthode d'impression laser + fer à repasser, mas j'ai finalement renoncé tellement le transfert était mauvais.

J'ai cherché quelle entreprise pouvait me faire le circuit imprimé pour un prix modique (malheureusement le fablab local ne propose par de réaliser des CI), et je suis finalement passé par circuit-électronique.fr Eh bien pour 23 euros port compris, en quelques jours j'ai eu mon circuit réalisé par un pro, étamé et percé, même avec les trous oblongs du connecteur d'alim!

J'ai été vraiment très agréablement surpris et je vous recommande leur service.

Pour le boîtier, j'ai choisi un boîtier acrylique pour Arduino. J'ai dû bricoler pour pouvoir le fermer car mon circuit est trop épais avec l'horloge RTC par dessus, mais ça m'a tout de même évité de faire mon propre boîtier.

Boîtier

Boîtier

Il ne reste plus qu'à intégrer le tout dans l'horloge et admirer le travail :)

Démo de l'horloge en mode avance rapide pour mise à l'heure:

Partager cet article
Repost0