Générer un signal à 1 Hz avec des portes logiques

J’ai recommencé à travailler sur mon horloge à tubes Nixie. Après avoir fait le circuit de puissance pour alimenter les tubes, il me faut maintenant faire la partie horloge. Quand j’avais commencé le projet au début de l’année, je pensais utiliser un simple PIC ou un MSP430 pour faire cette partie contrôle, mais je me suis lancé le challenge de tout faire avec des composants électroniques et ainsi n’écrire aucune ligne de code.

La première chose à faire pour réaliser une horloge est de générer un signal de fréquence 1 Hz pour cadencer le système. Je me suis tourné vers Sonelec pour voir ce qu’il proposait comme circuits et j’ai opté pour sa base de temps 001. J’avais déjà vu ce montage sur la page My Nixie Clock Project de Peter H. Wendt. J’ai donc câblé le premier montage proposé sur Sonelec et… cela n’a pas fonctionné, la sortie restait désespérément inactive. J’ai donc fouillé sur internet pour comprendre qu’était ce type de d’oscillateur et comment ajuster les valeurs des composants pour faire clignoter ma LED en sortie. Au détour d’un forum, j’ai appris le plus compliqué à deviner : savoir qu’il s’agissait d’un oscillateur de Pierce.

Oscillateur de Pierce

Voici le schéma d’un oscillateur de Pierce (merci à Wikipedia pour l’image) :

  • R1 est la résistance de feedback et est souvent notée Rf. Elle est aussi parfois notée Rb pour biasing resistor car c’est la fonction qu’elle remplit.
  • X1 est le cristal.
  • C1 et C2 sont deux condensateurs.

On voit souvent une variante de ce montage avec une résistance supplémentaire, notée Rs pour isolation resistor. Elle se place entre la sortie de l’inverseur et le cristal.

La grande question est : comment dimensionner les composants ? Wikipedia donne une formule assez compliquée pour les capacités :

C_L ou C_load est une caractéristique du cristal et est donné dans la datasheet de celui-ci, Cs est la capacité parasite des éléments du montage, de l’ordre de quelques pF, et Ci et Co sont les capacités d’entrée et de sortie de l’inverseur. On trouve souvent une approximation de la formule en négligeant Ci, Co et Cs et en posant C1 = C2 = C :

C = (2*C_load)

Les valeurs des résistances dépendent de la fréquence d’oscillation. Rf est de l’ordre de quelques MΩ, Rs de l’ordre de quelques dizaines à centaines de kΩ.

Il existe de nombreux documents sur internet expliquant l’oscillateur de Pierce et la manière de calculer les valeurs des différents composants, comme Pierce-Gate Crystal Oscillator, an introduction par Ramon Cerda de Crystek Coporation.

Générer un signal à 2 Hz avec un CD4060

Voici le pinout du CD4060 (merci à Electronic Circuits pour l’image) :

Il fournit l’inverseur nécessaire à la réalisation d’un oscillateur de Pierce. Il suffit de câbler les composants externes que l’on souhaite pour obtenir différentes fréquences d’oscillation, comme décrit dans la datasheet de NXP à la section 12.2 Typical crystal oscillator circuit. L’entrée de l’inverseur est la pin 11, sa sortie est la pin 10 et la pin 9 permet de visualiser le signal oscillant. Ce signal est ensuite passé en interne dans une série de fonctions logiques pour réaliser 14 divisions successives par 2. La plupart des signaux intermédiaires ainsi obtenus sont ressortis sur les pins Qi. Les 3 pins restantes sont un reset et l’alimentation.

Si on divise successivement 32768 Hz par 2 quatorze fois, on obtient 2 Hz. Ca tombe bien et ce n’est pas tout à fait du hasard.

Moi, je n’avais pas la référence exacte des cristaux donc impossible de connaitre C_load.. Je suis retourné à E44, ils n’avaient pas les caractéristiques, ils ont appelé le fournisseur et j’ai alors su que C_load = 12,5 pF et que 25 pF était une bonne valeur pour C1 et C2. Conseil : achetez des cristaux dont vous avez la référence exacte et les différentes caractéristiques. Je n’avais que des 33 pF sous la main, J’ai donc testé avec ceux-ci à la place de 220 pF initiaux et il y avait du mieux, la LED en sortie s’éclairait mais la sortie était totalement instable. Ca démarrait, ça s’arrêtait, ce n’était pas toujours à la bonne fréquence… J’ai essayé avec plusieurs valeurs pour la résistance, mais cela n’y a pas changé grand chose.

J’ai finalement trouvé une note d’application de Freescale (qui est depuis devenu NXP) AN3208 Crystal Oscillator Troubleshooting Guide. J’y ai appris plusieurs choses intéressantes :

  • Dans la plupart des cas, il est recommandé d’avoir des valeurs égales pour C1 et C2 (section 5).
  • Les cristaux de faibles valeurs sont plus sujets à l’overdriving car leur capacité de dissipation est plus faible. Augmenter la résistance série d’isolation permet de résoudre ce problème (section 6).
  • Les cristaux de faibles valeur ont besoin d’une valeur de feedback résistance plus grande car leur impédance est généralement plus grande (section 7).

Le deuxième point en particulier m’a fait tiqué et j’ai ajouté la résistance Rs (que je n’avais pas mis car j’ai lu de nombreuses fois qu’elle était optionnel). 220 kΩ plus tard, mon montage oscillait parfaitement !

Passer de 2 Hz à 1 Hz

Quand on a un signal de fréquence 2 Hz, il suffit de le diviser par 2 pour obtenir… 1 Hz. Bravo, beau calcul. Une bascule D remplit très bien cette fonction lorsqu’on rebranche la sortie inversée /Q sur l’entrée D. Ainsi, la sortie /Q va prendre la valeur inverse de l’entrée D à chaque front montant sur la pin d’horloge C. Or, /Q est reliée à D donc D va également changer de valeur et ainsi de suite. Cela conduit à un signal carré sur /Q qui a une fréquence deux fois plus petite que C. Le CD4013 contient 2 bascules D et est tout à fait indiqué pour réaliser cette opération.

Schéma final

1hz signal

Final, final, pas tout à fait. Pour l’instant, j’en suis là… Je n’ai pas encore affinée les valeurs des résistances et je n’ai pas donc plus testé avec les condensateurs de 25 pF, mais l’idée est là. Les fichiers Eagle sont Github et je pousserai les futures versions quand j’aurai le temps de terminer tout ça (en 2016 ^^).

Quelques liens utiles

Doctronics – 4060B 14-stage ripple-carry binary counter/divider and oscillator

Doctronics 4013 Dual D-type flip-flops

Wikipedia – 4000 series

Microchip – AN949 Making Your Oscillator Work

Michel Stokowski – L’Oscillateur Pierce du PICmicro®

Publicités

3 Réponses

  1. Pingback: Simulation de circuits électroniques avec LTSpiceIV | Pierre Gradot

  2. Pingback: Imprimer un typon avec Eagle | Pierre Gradot

  3. Pingback: Horloge Nixie ! | Pierre Gradot

Laisser un commentaire

Entrez vos coordonnées ci-dessous ou cliquez sur une icône pour vous connecter:

Logo WordPress.com

Vous commentez à l'aide de votre compte WordPress.com. Déconnexion / Changer )

Image Twitter

Vous commentez à l'aide de votre compte Twitter. Déconnexion / Changer )

Photo Facebook

Vous commentez à l'aide de votre compte Facebook. Déconnexion / Changer )

Photo Google+

Vous commentez à l'aide de votre compte Google+. Déconnexion / Changer )

Connexion à %s