logo_PLG

Electronique

Testeur de Quartz

Etoiles inactivesEtoiles inactivesEtoiles inactivesEtoiles inactivesEtoiles inactives
 

vue de l'instrument terminé...Je vous présente dans cette page un petit instrument capable non seulement de vérifier le bon état d'un quartz (parfois inconnu lorsque son marquage est effacé ou illisible...) mais aussi d'en afficher sa fréquence.

Principe de fonctionnement

 INFOS PROJET
  Types de composants : CMS
  Niveau : ◆◆◆◇◇
  Temps de construction : env. 3 h
  Coût : env. 49 € (hors frais de port...)

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. La tolérance que j'ai pu mesurer sur mon exemplaire est inférieure à 1 ppm.

Toute l'électronique est articulée autour d'un microcontrôleur PIC16F876A qui compte les impulsions provenant d'un circuit de comptage analogique à 14 étages (74HC4060) après division par 1024 de la fréquence du quartz à analyser. Pourquoi ces choix ?

  1. j'ai voulu une fois de plus utiliser des composants de récupération dont je dispose au Labo
  2. le pré-diviseur je l'avais déjà utilisé pour mon inductance-mètre autonome mais avec un HEF4040 qui fonctionnait parfaitement
  3. le 74HC4060 intégre avec la cellule RC composée de R2/C1/C1 et le quartz à tester un oscillateur Pierce (voir Figure ci-contre), le signal résultant est disponible en pin 15 (Q9) après division ÷1024
  4. le microcontrôleur choisi (ceci reste valable même pour les PIC18FXXXX) 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, par 1024 dans le cas présent et c'est la raison de la présence d'un 74HC4060. En mode 16-bit le Timer1 du PIC16F876A ne peut compter au-delà de 65535. En utilisant en amont un 74HC4060 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 fonctions. 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 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 entraine une variation de l'affichage de 1024 unités.

Un 74HC4040 pourrait aussi être utilisé avec sa sortie Q9 (÷1024) mais le brochage de ce composant est différent de celui que j'utilise et il faudrait dans ce cas revoir le routage du circuit imprimé.

La partie affichage utilise un petit module 8-digits à 7-segments (module Arduino disponible un peu partout sur le net, Aliexpress...ext...) commandé via son Bus SPI, le processeur étant cadencé par un quartz de 20 MHz. J'ai écrit le petit logiciel (disponible en téléchargement en bas de page) en langage mikroC. La programmation peut se faire avec le programmateur de votre choix (le mien est le PICkit4 de Microchip) via le connecteur ICSP. 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.

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). Sur mon exemplaire je me suis aperçu qu'en utilisant une alimentation extérieure seule, les LED RX/TX étaient allumées même sans la présence de l'USB... la cause en est que lors de l'alimentation externe la pin 20 (VCC) de IC5 (FT232) ne reçoit pas le +5V nécessaire à son fonctionnement, les pins 22 et 23 (CBUS0/CBUS1) se retrouvant à l'état bas ce qui provoque l'allumage des deux LED. Si leur illumination ne vous dérange pas vous pouvez laisser la diode D3 en place.
En fait j'ai dessiné la partie interface USB-UART depuis le schéma d'une carte "Ready for PIC" de mikroElektronika qui m'a servi lors du développement de ce projet sans prêter trop d'attention à cette particularité, d'où la présence de cette diode prévue pour protéger le +5V provenant de l'USB du PC lorsque le +12V externe est également raccordé à la carte.
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é...), car durant le mode de test avec la totalité de l'afficheur allumé la consommation passe à environ 260 mA (le fusible doit dans ce cas être un modèle d'au moins 500 mA).

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. Du coup l'astuce consiste à constituer cet oscillateur à partir du 74HC4060.

Logiciel

Le petit logiciel que j'ai écrit en langage mikroC et 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 9)
  • "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 10)

Suivant la valeur de la fréquence à afficher les points des milliers se positionnent automatiquement afin d'en faciliter la lecture.
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" fonctionnant parfaitement sous Windows10.
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 7) j'utilise une nappe souple de 5 conducteurs que j'ai fabriquée, tout simplement.

Schéma de principe

Figure 1
Figure 2

Circuit imprimé

Figure 3
Figure 4
Si vous êtes intéressé par ce projet, je peux aussi vous céder 1 (ou plusieurs) exemplaire(s) de ce circuit imprimé, cliquez ici

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...). 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.

Un œil avisé n'aura sans doute pas manqué de remarquer une découpe rectangulaire quasiment au centre du circuit, ceci permet de recevoir le MAX7219 du module afficheur afin de pouvoir intégrer le tout dans le coffret (Hammond MH3135, j'aime bien ce coffret, plusieurs de mes petits instruments en bénéficient...) que j'ai sélectionné.
J'avais prévu lors du routage cette découpe permettant au MAX7219 de pouvoir "respirer" sans se retrouver collé au circuit principal. Il s'avère que lors de l'assemblage ceci est parfaitement inutile car il reste encore un espace d'environ 2 mm entre le MAX7219 et le circuit principal (voir Figure 5).

Programmation

Je vous renvoie à une nouvelle page que j'ai dédiée à cette manipulation, ce sera plus simple et encombrera moins la présente page, le lien est ci-dessous :

Programmation d'un PIC (8-bit)

Choix des composants

Dans ce cours paragraphe j'attire toute votre attention, cela concerne le(s) fournisseur(s) et la provenance des composants sensibles comme les microcontrôleurs et bien sûr les circuits logiques. Pour mon exemplaire personnel il me manquait le 74HC4060 en version CMS. Pour une question simple de coût (chez Farnell le port est gratuit à partir de 75€ HT, chez Mouser c'est à partir de 50€ HT...) j'ai choisi de commander chez Ali... bien mal m'en a pris car sur les 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 pin 10 et 11 (RX/RCX) du 74HC4060D, et donc bien évidemment je retrouvais une valeur affichée totalement erronée en l'absence d'un quartz à mesurer, alors qu'en sa présence la mesure était correcte. Force est de constater une fois encore que les composants sensibles provenant de sources peu fiables ne sont pas le bon choix et cela pour plusieurs raisons :

  1. ces composants proviennent bien évidemment des grands manufacturiers mais ont très certainement échus au contrôle qualité réalisé systématiquement en cours de chaîne de fabrication, et ce sont donc des composants déclassés qui devraient à mon sens terminer à la poubelle...
  2. J'ai acheté les 10 pour 3,48€ avec le port gratuit (mais comment font-ils donc ?) et en comparaison celui que j'ai fini par commander chez Farnell m'a coûté 0.436€ HT (l'unité), j'ai bien évidemment payé les frais de port...

Le résultat est sans appel, l'instrument fonctionne dorénavant parfaitement bien et reste conforme à mes attentes.

Modification (optionnelle)

Je n'ai pas dessiné de nouveau circuit mais ai simplement remplacé la diode D3 par un strap. La conséquence est qu'il est préférable d'éviter d'utiliser les deux modes d'alimentation en même temps, simplement par mesure de précaution même si effectivement le circuit fonctionne correctement ainsi. Si vous souhaitez vraiment utiliser l'USB en même temps que l'alimentation extérieure (ce qui m'arrive souvent lors de mes manips...) je vous conseille de placer une diode dans le circuit d'alim (VUSB) provenant de la prise USB. J'ai modifié le circuit de mon exemplaire (voir le nouveau schéma en Figure 2) en ajoutant une diode Schottky (LS103 Melf) en coupant la piste provenant de la pin 1 de la prise USB.

Pour ajouter la nouvelle diode Schottky D4 (au format MiniMELF SOD-80) j'ai aménagé un ilot (avec mon fidèle DREMEL...) sur le plan de masse à proximité de la prise USB.
Vous pouvez fort bien utiliser une 1N4148 (ou autre...) par exemple si vous n'avez pas de diode Schottky de cette dimension... l'intérêt de cette technologie est bien sur la faible tension inverse (< 370 mV) pour celle que j'ai utilisée.
L'anode de la diode est soudée sur le condensateur C16 (qui correspond à la pin1 VUSB) tandis que sa cathode est reliée à l'ilot précédemment créé. Pour effectuer la connexion entre la cathode de la diode et la ligne d'alimentation de IC5 (FT232), j'ai percé un trou de ∅0.8 mm afin de réaliser une connexion avec la piste d'alimentation située sur l'autre face du circuit imprimé. Ce n'est sans doute pas très joli mais cela fonctionne bien. Pour isoler la nouvelle connexion de la prise USB j'ai utilisé un petit morceau d'adhésif KOPTAN (prise USB déposée au préalable...). En ce qui concerne le strap remplaçant la diode D3, je l'ai soudé légèrement surélevé afin qu'il n'entre pas en contact avec le plan de masse, aucune isolation supplémentaire n'est ainsi nécessaire.

Le résultat est visible sur les Figures 11 et 12 dans les cercles matérialisés en rouge.

Contrôle

Une première vérification possible est de contrôler la justesse de comptage du logiciel. En sortie du pré-diviseur IC2 (74HC4060) le signal provenant du D.U.T est divisé par 1024 (sortie Q9 pin 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 en Figure 6 avec un analyseur logique...) en pin 15 de IC2 ou en pin 11 de IC3 (désolé j'ai encore oublié de positionner des points test, j'ai dû souder une broche de mesure directement sur IC3...). Dans cette condition l'afficheur devrait indiquer "10.240.000" soit 10.240 MHz. Si tel est le cas tout va bien, dans le cas contraire essayez un autre quartz de 20 MHz pour l'horloge du microcontrôleur car des disparités peuvent exister.

Sur cette photo vous pouvez voir l'absence de IC2 (74HC4060) que je n'avais pas encore reçu, je ne disposais que de la version DIP-16 qui m'a servi lors du développement de ce projet.

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 "alu" permet d'obtenir une belle sérigraphie (voir Figure 8).

Quelques photos

Figure 5
Figure 6
Figure 7
Figure 8
Figure 9
Figure 10
Figure 11
Figure 12
 

 

 Package comprenant : 
◊ Schéma de principe et fichiers Gerber sous Eagle v7.7.0
◊ Dessin de la sérigraphie de la face avant
◊ BOM liste des composants
◊ Photos de ma réalisation
Logiciel développé sous mikroC v7.6.0
BootLoader 115200 bauds

 


ICSP : In Circuit Serial Programming, ce qui signifie "Programmation série en circuit"
BootLoader : un BootLoader ou chargeur d'amorçage est un petit bout de code chargé dans la ROM Flash du PIC qui permet de mettre à jour un programme directement depuis le port UART/RS232.
D.U.T : Device Under Testing (composant à tester)
ppm : pourcentage en parties par million. Par exemple, un pourcentage de 0.0001% correspond à 1 ppm
KOPTAN : Ruban YX® KOPTAN adhésif d'isolation thermique en Polyimide résistant aux hautes températures ~280°C, 25 mm x 30 m, chez Aliexpress par exemple...

Source

 

Quelques liens vers les sites de mes amis...

Licence Creative Commons

 Licence CC BY NC SA 3.0 FR DEED L'ensemble de ce site hormis une notification spécifique est mis
à  disposition selon les termes de la Licence Creative Commons
Attribution - Pas d'Utilisation Commerciale - Partage dans les Mêmes Conditions
3.0 France.
Licence Creative Commons