Testeur de Quartz
Lorsque l’on désire rechercher voire trier les différents quartz à sa disposition, il s’avère que parfois leur marquage s’en trouve partiellement effacé ou même carrément inexistant.
Ce petit instrument n'a bien sûr pas la prétention de rivaliser avec des instruments professionnels plus complexes et plus chers, mais il peut rendre service lorsque l'on se trouve en présence d'un quartz inconnu voire pour en vérifier son bon fonctionnement. Il permet non seulement de vérifier le bon état du composant mais également d'en afficher sa fréquence sur 8 chiffres.
Je désirais réaliser pour mon Labo un appareil à la fois simple et suffisamment précis en utilisant pour la plupart des composants courants disponibles dans mes tiroirs. Il existe bien sûr d’autres projets de ce genre [1], mais pas avec un affichage de la fréquence sur 8 chiffres.
Principe de fonctionnement
INFOS PROJET | ||
Types de composants : CMS | ||
Niveau : ◆◆◆◇◇ | ||
Temps de construction : env. 3 h | ||
Coût : env. 49 € (hors frais de port...) |
Toute l'électronique est articulée autour d'un microcontrôleur PIC16F876A [2] qui compte les impulsions provenant d'un circuit de comptage analogique à 14 étages (74HC4060) [3] après division par 1024 de la fréquence du quartz à analyser. Pourquoi ces choix ?
- j'ai voulu une fois de plus utiliser des composants de récupération dont je dispose au Labo
- le pré-diviseur je l'avais déjà utilisé pour mon inductance-mètre autonome [4] mais avec un HEF4040 qui fonctionnait parfaitement
- le 74HC4060 intégre avec la cellule RC composée de R2/C1/C1 et le quartz à tester un oscillateur Pierce [5] (voir Figure ci-contre), le signal résultant est disponible en pin 15 (Q9) après division ÷1024.
J’ai repris ici partiellement l’idée de Karlheinz Lorenz dont l’article est paru dans Elektor Hors-Gabarit de Juillet/Août 2002 (020076 – 11) [6] - le microcontrôleur choisi (il aurait été possible d’utiliser nombre d’autres processeurs, j’avais récupéré celui-ci…) utilise déjà son prédiviseur 1:256 et ne peut compter au-delà de 65535 en mesure directe (RC0/T1CKI). Pour pouvoir contrôler des quartz jusqu'à plus de 30 MHz il devient nécessaire d'utiliser un diviseur supplémentaire et ceci est réalisé grâce au 74HC4060. En utilisant le compteur avec sa sortie Q9 qui compte jusqu'à 1024, il devient alors possible en théorie de mesurer des fréquences de 67 MHz (65535 × 1024 = 67.10784e6) et cela fonctionne, ceci a été vérifié avec mon générateur de fréquence (voir exemple en Figure 5). En fait et compte tenu de l'erreur infime générée par le système, je n'ai pu dépasser la fréquence d'entrée de 65.530 KHz (en pin 11/RC0 de IC3). L'affichage indiquait alors 67.107.840 ce qui divisé par 1024 donne bien 65535, le maximum que puisse compter le Timer1 en mode 16-bits du microcontrôleur. Compte tenu du coefficient multiplicateur (1024) la résolution de l'instrument est de 1024 Hz. Une variation de la fréquence du D.U.T. de 1 Hz entraîne une variation de l'affichage de 1024 unités.
Oscillateur
La tête de mesure est construite autour du quartz à analyser (D.U.T.) [7] et des deux condensateurs de charge C1/C3 associés à un amplificateur inverseur, la résistance R2 servant à la contre-réaction négative. Ainsi conçu l’ensemble constitue un oscillateur de Pierce et provoque une oscillation.
Microcontrôleur
J’utilise ici un PIC16F876A en version CMS (que j’ai récupéré sur une machine au rebut…), cadencé par un quartz de 20 MHz. La cellule composée du bouton poussoir S1 ainsi que des deux résistances R3/R4 constitue le circuit de réinitialisation, le condensateur C7 permettant de gommer les rebonds du commutateur. Le Bus sériel SPI utilise les broches 12/14 et 16 qui parviennent au module d’affichage via le connecteur SV2, SV1 ne servant quant à lui que de support mécanique. Les impulsions de comptage délivrées par le 74HC4060 parviennent au microcontrôleur via sa broche 11, les broches 17/18 recevant les communications UART.
Affichage
La partie affichage utilise un petit module 8-digits à 7-segments (module Arduino disponible un peu partout sur le net, Aliexpress...ext…) [8] piloté via son Bus SPI, le processeur étant cadencé par un quartz de 20 MHz. Celui-ci est assemblé sur le circuit imprimé selon la technique dite "montage à impériale" (voir Figure 4).
Pour une réduire l’encombrement en hauteur le module sera soudé directement sur le circuit principal. Ce choix permet de minimiser au maximum le routage du PCB, et compte tenu de son très faible coût il serait dommage de s’en priver.
Interface USB-UART
Celle-ci est réalisée à partir d’un circuit spécialisé, le fameux FT232RL [9] et ses composants associés
ou avec un module tout fait, selon votre choix personnel. Il reçoit les signaux de la prise USB type B sur ses broches 15 et 16 (USBDP/USBDM). Deux diodes électroluminescentes (DZ1-1/DZ1-2) indiquent les communications Rx/Tx.
Ce circuit est alimenté par la connexion USB (VUSB) ou par la tension +5V provenant du régulateur LM1117-5.0 (IC4).
Alimentation
L'alimentation est possible par le biais de cette interface USB ou encore par l'intermédiaire d'une source DC12V externe avec toute la partie alimentation régulée de +5V (optionnelle). Une diode Schottky (D3) est installée entre la broche 4 et 20 du FT232 (IC5) pour protéger le +5V provenant de l'USB du PC lorsque le +5V généré par l’alimentation externe est également présent.
Le +5V provient d’un régulateur LDO (LM1117-5.0) [10] capable de débiter jusqu’à 800 mA. Il n’est pas nécessaire ici de lui adjoindre de refroidisseur compte tenu du faible courant produit. Une diode de protection (D2) est insérée aussitôt après le fusible F1, le filtrage étant assuré par les condensateurs C10 à C13.
La consommation de la carte est d'environ 40 mA avec les 8 digits allumés sous +12V ce qui reste raisonnable (en tenant compte de la réduction de la luminosité...), même durant le mode de test avec la totalité de l'afficheur allumé (affichage multiplexé). Vous devrez adapter la valeur du fusible F1 en conséquence si vous désirez ajuster la luminosité à son maximum, mais avec un modèle de 100mA il reste de la marge (j’ai bien sûr testé sur mon exemplaire...).
Schéma de principe
Connectique
Une prise BNC également (en option) est utilisable pour visualiser le signal mesuré sur un oscilloscope, ou encore pour y connecter un fréquencemètre. L'oscillateur aurait pu être réalisé sur la base d'un oscillateur Colpitts mais il m'aurait tout de même fallu un pré-diviseur avant d'envoyer le signal résultant au microcontrôleur, ce qui aurait quelque peu compliqué le schéma de principe ainsi que le routage du PCB.
Firmware
J'ai écrit le petit logiciel (disponible en téléchargement) en langage mikroC. La programmation peut se faire avec le programmateur de votre choix (le mien étant le PICkit4 de Microchip) [11] via le connecteur ICSP [12]. J'ai prévu l'implantation d'un bootloader qui permet grâce à l'étage USB-UART de faciliter une éventuelle modification et/ou mise à jour du code sans avoir besoin d'ouvrir l'appareil ni d'en extraire le microcontrôleur. Un micro-interrupteur accessible au travers du coffret en permet sa réinitialisation lors du processus de programmation. Ceci reste toutefois optionnel car il est bien entendu possible de se passer du bootloader et de programmer directement le microcontrôleur avec le firmware, l’interface USB-UART n’ayant de fait plus d’utilité.
Le firmware est très peu gourmand en ressources :
- Used RAM (bytes): 37 (11%) Free RAM (bytes): 315 (89%)
- Used ROM (program words): 1166 (14%) Free ROM (program words): 7026 (86%)
Le principe est assez simple, la fréquence de mesure du D.U.T. associé à l'oscillateur composé de IC2 (74HC4060) ainsi que de la cellule RC (R2/C1/C2) et divisée ÷1024, le signal résultant étant disponible en pin15 (Q9) de IC2. Ce signal est directement acheminé vers le microcontrôleur IC3 (PIC16F876A) en pin11 (RC0/T1CKI). Un compteur d'impulsions utilisant le Timer1 comptabilise ces impulsions sur une durée de 1 seconde, et en multipliant le nombre d'impulsions par 1024, nous obtenons alors la fréquence du Quartz analysé. Le résultat s'affiche sur les 8 digits 7 segments par l'intermédiaire d'un Bus sériel SPI.
Une détection des mini/maxi est réalisée pour chaque nouvelle mesure générant un affichage approprié :
- huit tirets "--------" signifiant que la fréquence lue est trop basse, cela peut être le cas avec un Quartz de 32.768 KHz par exemple, car l'oscillateur choisi n'en permet pas la mesure.
Ceci peut aussi indiquer l'absence du composant à tester, voire sa défectuosité (voir Figure 8) - "0F. Error" (Overflow error) signifiant que la fréquence lue est trop élevée, le maximum étant 67.10784e6 soit environ 67 MHz (voir Figure 9)
Suivant la valeur de la fréquence à afficher les points des milliers se positionnent automatiquement afin d'en faciliter la lecture.
Programmation
Comme précisé un peu plus haut dans le texte, le microcontrôleur peut être programmé avec un BootLoader mais ce n'est pas une nécessité absolue. Cela permet simplement une mise à jour plus aisée du logiciel via la prise UART-USB. Celui que j'ai utilisé est "Tiny Bootloader" [13] fonctionnant parfaitement sous Windows10 (la version que j’utilise).
Je n'ai cette fois pas oublié de prévoir sur le circuit imprimé un connecteur ICSP pour programmer le PIC. Je n'utilise plus pour cela de barrettes ou autres connecteurs mais prévois simplement l'empreinte des cinq pastilles nécessaires lors de la programmation (MCLR/VCC/GND/PGD/PGC). Ces pastilles ne sont pas parfaitement alignées mais disposent d'un léger décalage l'une par rapport à l'autre, ce qui confère un bon maintien ainsi que de bons contacts lors du raccordement du programmateur.
Pour y connecter mon PICkit4 (voir Figure 6) j'utilise une nappe souple de 5 conducteurs que j'ai fabriquée, tout simplement.
Choix des composants
Dans ce paragraphe j'attire toute votre attention !
Cela concerne le(s) fournisseur(s) et l'origine des composants sensibles comme les microcontrôleurs et bien sûr les circuits logiques CMOS. Pour mon exemplaire personnel il me manquait le 74HC4060D en version CMS. Pour une simple question de coût (chez Farnell, la livraison est gratuite à partir de 75€ HT, chez Mouser c'est à partir de 50€ HT...) J'ai choisi de commander chez Aliexpress... très mauvais choix. Dans le lot de 10 j'en ai testé quatre dont un était totalement défectueux. Tous ceux que j'ai testés présentaient une sur-oscillation excessive sur les broches 10 et 11 (RX/RCX), et donc évidemment j'ai trouvé une valeur affichée totalement erronée en l'absence de quartz à mesurer, si bien qu'en sa présence la mesure était incorrecte. Il est clair une fois de plus que les composants sensibles provenant de sources peu fiables ne sont pas le bon choix pour plusieurs raisons :
- Ces composants proviennent probablement de grands fabricants mais ont très certainement échoué au contrôle qualité effectué systématiquement tout au long de la chaîne de fabrication, et ce sont donc des composants déclassés qui selon moi devraient finir à la poubelle...
- J'ai acheté le lot de 10 pour 3,48€ avec le port offert (mais comment font-ils ?) et en comparaison celui que j'ai fini par commander chez Farnell m'a coûté 0,436€ HT (l’unité), j'ai évidemment payé les frais de port.. Le résultat est clair, l'instrument fonctionne désormais parfaitement bien et reste conforme à mes attentes.
Précaution à prendre
Attention aux décharges électrostatiques (ESD) [14] !
Il m'est déjà arrivé à plusieurs reprises sur mes conceptions ou lors de mes dépannages, sur des camescopes notamment, de cramer des composants fragiles tels que microprocesseurs, mémoires et autres… Je possède pourtant un bracelet antistatique que je relie à la borne de mon fer à souder Weller WECP-20 ainsi qu'une liaison à la terre, mais voilà... il m’arrive d’oublier de le mettre... et le risque de détruire ces composants fragiles (surtout le FT232RL) est grand… fâcheux !
Donc un conseil, si vous en avez un, utilisez-le, sinon il vous faudra en acheter un, cela ne coûte pas très cher et c'est vraiment efficace.
A ce propos je n'ai pas que le bracelet, j'ai aussi un tapis de table antistatique mais pas de tapis de sol... c'est déjà bien, cela permet tout simplement d'avoir l'équipotentialité entre votre poignet et la pointe de votre fer à souder, et reliez-le si possible à la masse du circuit sur lequel vous intervenez (à condition de pouvoir l'y raccorder, cela va de soi...)
Cette précaution ne s'applique pas seulement à cette puce FTDI, mais aussi à tout composant CMOS par exemple, et bien d'autres encore... dans le doute, une seule solution: mettre le bracelet antistatique !
Contrôle
Il convient en premier lieu de vérifier la précision du comptage du logiciel. A la sortie du pré-diviseur IC2 (74HC4060) le signal provenant du D.U.T est divisé par 1024 (sortie Q9 broche 15). En l'absence de ce quartz il est possible d'injecter un signal carré de 10 KHz (0 à +5V, rapport cyclique 50%) avec un générateur de fonctions (ou comme je l'ai fait sur la figure 5 avec un analyseur logique...) en pin 15 de IC2 ou dans la broche 11 de IC3 (désolé j'ai encore oublié de positionner les points de test, j'ai dû souder une broche de mesure directement sur IC3...). Dans ces conditions, l'écran doit indiquer "10.240.000" ou 10.240 MHz. Si c'est le cas tout va bien, sinon essayez un autre quartz de 20 MHz pour l'horloge du microcontrôleur car des disparités peuvent exister.
Circuit imprimé
Réalisation
De part la construction que j'ai choisie, nous sommes en présence d'un montage dit à impériale, le module d'affichage devant en effet être soudé par-dessus le circuit principal.
Il est à noter qu'il n'est pas le seul dans ce cas puisque j'ai aussi prévu le même mode d'assemblage pour le module USB-UART. J'en dispose au Labo mais j'ai préféré utiliser des composants récupérés sur d'anciennes cartes qui me servent de donneuses de composants. Ainsi le circuit imprimé dispose des emplacements prévus pour les deux modes d'assemblage, modulaires ou avec des composants en technologie CMS. La totalité des composants du schéma n'est pas absolument nécessaire (il existe alors la mention "option"), vous pouvez for bien ne pas câbler le module USB-UART mais utiliser une alimentation extérieure pour utiliser l'engin, ou ne pas câbler la partie régulation du +5V et utiliser alors la partie USB-UART avec soit les composants montés sur le circuit imprimé, soir utiliser un petit module (module Arduino disponible un peu partout sur le net...) [15]. Ce sera selon vos choix personnels, j'ai conçu le circuit imprimé en conséquence. Vérifiez bien la compatibilité du module que vous allez acheter car il est possible que certains brochages soient différents de celui que je possède au Labo...
Une des seule difficulté réside dans le soudage du circuit intégré IC5 (FT232RL) car le pas est vraiment faible (0.65 mm) et il convient de disposer d'un fer thermostaté avec une panne suffisamment fine, mais ce composant reste une option qui ne sert qu'à la connexion USB en vue d'éventuelle mise à jour du logiciel et n'est donc pas du tout nécessaire si vous ne programmez pas de BootLoader dans le microcontrôleur.
J’ai dessiné un circuit imprimé (voir Figures 2 et 3) tout spécialement pour être intégré dans un coffret Multicomp MCRH3135 ou Hammond MH3135, coffret que j’utilise souvent dans mes petits appareils. L’appareil fonctionnel est visible en Figure 7.
Finition
Pour concevoir la face avant j'ai simplement utilisé l'excellent éditeur d'image GIMP. L'impression laser effectuée sur un support adhésif polyester argent mat style "aluminium" [16] permet d'obtenir une belle sérigraphie (voir Figure 7).
Quelques photos
LIENS
[1] Autres projets du même genre :
- • https://www.elektormagazine.fr/magazine/elektor-200207/9463
• https://www.elektormagazine.fr/magazine/elektor-200907/11334
• https://www.elektormagazine.fr/magazine/elektor-201007/11570
• https://www.elektormagazine.fr/magazine/elektor-198507/52624
• https://www.elektormagazine.fr/magazine/elektor-198907/53515
• https://www.elektormagazine.fr/magazine/elektor-199207/35213
• https://www.elektormagazine.fr/news/frequencemetre-testeur-quartz-1hz-50-mhz-kit
• https://www.youtube.com/watch?v=SCgJWkJAhj0
• https://www.youtube.com/watch?v=YnCmTHQvP4s
• http://www.michelterrier.fr/radiocol/detail-2020/testeur-quartz.html
• et probablement encore d’autres que je n’ai pas découverts...
[2] PIC16F876A Datasheet :
https://ww1.microchip.com/downloads/aemDocuments/documents/MCU08/ProductDocuments/DataSheets/39582C.pdf
[3] 74HC4060 Datasheet :
https://assets.nexperia.com/documents/data-sheet/74HC_HCT4060.pdf
[4] Inductancemètre :
https://www.pleguen.fr/index.php/materiel-de-mesure/inductancemetre/avec-ecran-lcd
[5] Oscillateur Pierce :
https://fr.wikipedia.org/wiki/Oscillateur_Pierce
[6] Hors-Gabarit 07/2002 :
https://www.elektormagazine.fr/magazine/elektor-200207/9463
[7] D.U.T. : Device Under Test, ce qui signifie "Composant à tester"
[8] Module afficheur :
https://fr.aliexpress.com/w/wholesale-afficheur-7-segments-8-digits.html?osf=auto_suggest&spm=a2g0n.home.header.0
[9] FT232RL Datasheet :
https://ftdichip.com/wp-content/uploads/2020/08/DS_FT232R.pdf
[10] LM1117 Datasheet :
https://www.ti.com/lit/ds/symlink/lm1117.pdf
[11] PICkit4 :
https://www.microchip.com/en-us/development-tool/pg164140
[12] ICSP : In Circuit Serial Programming, ce qui signifie "Programmation série en circuit"
[13] Tiny Bootloader :
http://www.etc.ugal.ro/cchiculita/software/tinybld198.zip
[14] ESD : Electrostatic Discharge (DES : décharges électrostatiques)
[15] Module USB-UART :
https://fr.aliexpress.com/item/1005005956307565.html?spm=a2g0o.productlist.main.47.2dd8ABqNABqN30&algo_pvid=56222952-1b37-4f84-a85f-ffe9f37c05d7&algo_exp_id=56222952-1b37-4f84-a85f-ffe9f37c05d7-23&pdp_npi=4@dis!EUR!6.63!1.99!!!50.42!15.13!@211b801617061714459018220e1637!12000035048469306!sea!FR!142277762!&curPageLogUid=wqmWnFfV05yG&;utparam-url=scene%3Asearch%7Cquery_from%3A
[16] Support adhésif polyester :
http://www.promo-papier.fr/fr/papier-autocollant-imprimante-laser-led/100-polyester-imprimante-laser-argent-mat-adhesif-160-format-a4-25-feuilles.html