Le quartz 16 MHz est la petite pièce métallique qui donne son rythme à un microcontrôleur. Branché entre les deux broches d’horloge d’un ATmega328P, il impose une fréquence de 16 000 000 de cycles par seconde : c’est lui qui fait qu’un programme exécute 16 millions d’instructions par seconde, qu’un delay(1000) dure réellement une seconde et qu’une liaison série à 9600 bauds tombe juste.
Ce modèle est un quartz à deux broches en boîtier métallique traversant, soudable sur une carte à trous métallisés comme sur une plaque d’essai. C’est exactement la référence que porte une carte Arduino Uno, une Nano ou une Mega à côté de son microcontrôleur.
Ce qu’un quartz fait dans un circuit
Un quartz n’est pas un composant actif : il ne génère rien par lui-même. C’est un résonateur mécanique — une lame de quartz taillée à une dimension telle qu’elle vibre naturellement à 16 MHz. Placé dans la boucle d’amplification du microcontrôleur (l’oscillateur interne du boîtier), il force cette boucle à osciller à sa fréquence propre, et c’est cette horloge que le processeur utilise pour tout compter.
La différence avec les autres sources d’horloge est une question de précision :
- Oscillateur RC interne : environ ±10 % — sur 16 MHz, cela veut dire jusqu’à 1,6 MHz d’écart, une horloge qui dérive de plusieurs minutes par jour et une liaison série qui ne tombe plus juste.
- Quartz 16 MHz : ±30 ppm (parties par million), soit 480 Hz d’écart au pire sur 16 MHz — une dérive d’environ 2,6 secondes par jour. C’est la référence qui rend une liaison série, un compteur ou une mesure de temps fiables.
- Résonateur céramique : ±0,5 %, soit environ 16 000 fois moins précis qu’un quartz, mais beaucoup moins cher et suffisant pour faire clignoter une LED.
Caractéristiques techniques
| Fréquence | 16,000 MHz |
|---|---|
| Type | Quartz AT coupé, résonance fondamentale |
| Boîtier | Métallique traversant à 2 broches (famille HC-49) — corps d’environ 11 × 4,5 mm, broches espacées de 4,88 mm |
| Brochage | Deux broches, non polarisées : les deux se soudent indifféremment sur XTAL1 et XTAL2 |
| Tolérance de fréquence | ±30 ppm à 25 °C (valeur habituelle de cette famille) |
| Stabilité en température | ±30 ppm de −20 °C à +70 °C |
| Capacité de charge (CL) | 20 pF typique — 2 condensateurs de 22 pF à la masse en pratique |
| Résistance série (ESR) | 30 à 50 Ω maximum selon le fabricant |
| Capacité shunt (C0) | 7 pF maximum |
| Niveau d’excitation | 100 µW typique (à ne jamais dépasser 500 µW) |
| Résistance d’isolement | Supérieure à 500 MΩ sous 100 V continu |
| Vieillissement | Moins de 3 ppm la première année |
| Température de service | −20 °C à +70 °C |
Les valeurs de tolérance et de capacité de charge varient légèrement d’un fabricant à l’autre : quand la précision finale compte, c’est la référence gravée sur le boîtier et la fiche du fabricant qui font foi, pas cette page.
Applications
- Horloge de microcontrôleur — ATmega328P, ATmega2560, ATmega32u4 : c’est la source d’horloge par défaut des cartes Arduino Uno, Nano et Mega.
- Liaison série fiable — à 16 MHz, la vitesse de 9600 bauds ou 115200 bauds tombe juste ; avec l’oscillateur interne, la communication devient aléatoire.
- Base de temps — timers matériels, mesure de durées, comptage d’impulsions, horloge logicielle.
- Arduino autonome — un ATmega328P seul, un quartz et quelques composants remplacent une carte Uno complète.
- Réparation — un quartz cassé (choc, soudure fissurée) est la panne classique d’une carte Arduino qui ne démarre plus.
- Oscillateurs à portes logiques — montages à inverseur (74HC04, 74HCU04) qui utilisent un quartz comme référence de fréquence.
- Modules radio — certains circuits 2,4 GHz utilisent un quartz de 16 MHz comme référence d’horloge.
Mini-projet : un Arduino autonome cadencé par le quartz
Objectif : faire fonctionner un ATmega328P seul, sur une plaque d’essai, avec ce quartz comme horloge et une LED qui clignote à la seconde. C’est le montage qui prouve que tout est en place — et c’est aussi la façon la moins chère de fabriquer une carte Arduino quand on en a besoin de plusieurs.
Ce qu’il faut
| Le cerveau | ATmega328P en boîtier DIP-28 |
|---|---|
| L’horloge | Le quartz 16 MHz de cette page |
| Les condensateurs de charge | 2 condensateurs céramiques de 22 pF |
| Le maintien au repos | Résistance 1/4 W de 10 kΩ (tirage de RESET vers +5 V) |
| Le voyant | Une LED et une résistance 1/4 W de 220 Ω |
| L’alimentation | Alimentation 5 V — la tension doit rester entre 4,5 V et 5,5 V |
| Le support | Plaque d’essai 830 points |
| Les liaisons | Fils de prototypage mâle-mâle |
| Le programmateur | Un Arduino Uno qui servira de programmateur ISP |
Le câblage
Les numéros de broches ci-dessous sont ceux du boîtier DIP-28, et non ceux d’une carte Arduino. Le repère est l’encoche en demi-lune : la broche 1 est juste à sa gauche, puis on descend dans le sens inverse des aiguilles d’une montre.
| Broche 7 (VCC) | → +5 V |
|---|---|
| Broche 20 (AVCC) | → +5 V (à relier même sans usage de l’entrée analogique) |
| Broches 8 et 22 (GND) | → masse |
| Broche 1 (RESET) | → résistance de 10 kΩ vers +5 V |
| Broche 9 (XTAL1) | → première broche du quartz |
| Broche 10 (XTAL2) | → seconde broche du quartz |
| Condensateur 22 pF nº 1 | de la broche 9 à la masse |
| Condensateur 22 pF nº 2 | de la broche 10 à la masse |
| Broche 19 (PB5, la sortie 13 d’Arduino) | → résistance de 220 Ω → patte longue de la LED → patte courte à la masse |
Deux points de méthode qui évitent la plupart des échecs : les fils du quartz et de ses deux condensateurs doivent être les plus courts possible, et un condensateur de 100 nF placé entre +5 V et la masse, au plus près du boîtier, protège l’horloge des parasites. Le quartz n’a pas de sens : ses deux broches sont équivalentes, contrairement à une LED ou à un condensateur chimique.
Les fusibles : l’étape que l’on oublie
Un ATmega328P neuf sort d’usine cadencé par son oscillateur interne divisé par 8, soit 1 MHz — le quartz n’est alors pas utilisé du tout, et le montage tourne seize fois trop lentement. Pour que le boîtier change de source d’horloge, il faut graver le bootloader, ce qui a pour effet secondaire de poser les bons fusibles.
La procédure tient en quatre étapes :
- Téléverser le sketch d’exemple ArduinoISP dans l’Arduino Uno (menu Fichier, puis Exemples, puis 11.ArduinoISP).
- Relier l’Uno à l’ATmega : D13 vers la broche 17, D12 vers la broche 18, D11 vers la broche 19, D10 vers la broche 1 (RESET), le 5 V vers les broches 7 et 20, et les masses ensemble.
- Dans l’IDE : Outils, Type de carte = Arduino Uno ; Outils, Programmateur = « Arduino as ISP » ; Programmateur, Graver le bootloader.
- Attendre le message de réussite, puis retirer le fil du RESET : le programme peut maintenant être téléversé par le port série (broches 2 et 3 = RXD et TXD) ou directement par le programmateur, avec Téléverser avec un programmateur.
Les fusibles ainsi posés sont ceux de la carte Uno : 0xFF en bas (quartz externe de 16 MHz, oscillation pleine amplitude), 0xDE en haut, 0xFD en étendu. Ce sont eux qui disent au boîtier d’aller chercher son horloge sur les broches 9 et 10 — et donc sur le quartz.
Le programme
À copier dans l’IDE Arduino, puis à téléverser après avoir débranché le fil du RESET :
/*
* Arduino autonome sur plaque d'essai - ATmega328P cadence par un quartz 16 MHz
* Montage : quartz sur les broches 9 et 10, LED sur PB5 (broche 19)
*
* Composants, brochage et fiche complete : www.marocproduits.com
*/
const byte PIN_LED = 13; // PB5 = broche 19 du boitier DIP-28
const unsigned long PERIODE = 1000; // 1 seconde, comptee par le quartz
unsigned long dernier = 0;
bool etat = false;
void setup() {
pinMode(PIN_LED, OUTPUT);
digitalWrite(PIN_LED, LOW);
dernier = millis();
}
void loop() {
// On ne teste pas une egalite mais un ecart de temps : le compteur
// millis() repart a zero au bout de 49 jours sans deranger ce calcul,
// car la soustraction de deux unsigned long reste juste.
if (millis() - dernier >= PERIODE) {
dernier = dernier + PERIODE;
etat = !etat;
digitalWrite(PIN_LED, etat);
}
}Ce que le montage démontre : les clignotements durent une seconde mesurée par le quartz. Si vous remplacez le quartz par rien du tout, le boîtier reste sur son oscillateur interne et la cadence devient instable — c’est le test le plus rapide pour savoir si l’horloge externe fonctionne vraiment.
Variante : passer à 20 MHz
Un quartz 20 MHz sur le même boîtier fonctionne, à deux conditions : l’alimentation doit rester à 5 V (l’ATmega328P ne tient pas 20 MHz sous 4,5 V), et la définition de carte utilisée pour compiler doit annoncer la nouvelle fréquence — sinon les temporisations et la vitesse du port série sont calculées pour 16 MHz et tout devient faux d’un quart. Pour se contenter de faire clignoter une LED, les deux quartz sont interchangeables ; dès qu’un timer ou un port série entre en jeu, la fréquence et le logiciel doivent être d’accord.
Questions fréquentes
Y a-t-il un sens à respecter en soudant le quartz ?
Non. Un quartz est un composant non polarisé : ses deux broches sont électriquement équivalentes, et il fonctionne dans les deux sens. C’est l’inverse d’un condensateur chimique ou d’une LED, où l’inversion se paie par un composant qui ne fonctionne pas.
Quelle valeur pour les deux condensateurs de charge ?
22 pF avec un quartz annoncé pour 20 pF de charge — c’est la valeur retenue sur la carte Arduino Uno. La formule exacte tient compte de la capacité parasite de votre câblage, que l’on estime autour de 5 pF de chaque côté : 2 × (20 − 5) = 30 pF pour un montage parfaitement propre. En pratique, 22 pF donnent une fréquence très légèrement basse mais parfaitement exploitable. Si votre quartz porte une autre valeur de charge gravée, recalculer avec cette valeur.
Pourquoi mon montage est-il seize fois trop lent ?
Presque toujours parce que l’horloge externe n’a pas été activée : le boîtier est resté sur son oscillateur interne à 1 MHz, ou le bit CKDIV8 est actif et divise l’horloge par 8. Un delay(1000) qui dure alors huit ou seize secondes est la signature de ce problème. La solution est de graver le bootloader comme expliqué plus haut.
Mon quartz ne démarre pas : que vérifier ?
Dans l’ordre : les deux condensateurs sont-ils bien présents et à la masse ? Les broches 9 et 10 sont-elles reliées au quartz (et non à autre chose) ? Les connexions sont-elles fermes dans la plaque d’essai ? Le RESET est-il bien tiré vers +5 V par la résistance de 10 kΩ ? L’alimentation est-elle stable entre 4,5 V et 5,5 V ? Enfin, un quartz est un composant fragile : un choc peut le mettre hors service, et c’est la première pièce qu’on remplace quand une carte pourtant correctement câblée refuse de démarrer.
Peut-on mettre un résonateur céramique à la place ?
Oui, un résonateur céramique à trois broches fonctionne dans le même oscillateur : les deux broches extérieures se placent sur XTAL1 et XTAL2, la broche centrale va à la masse, et les condensateurs sont intégrés — il faut donc retirer les deux condensateurs de 22 pF. La précision tombe alors à environ ±0,5 % au lieu de ±30 ppm, ce qui suffit largement pour un affichage ou une LED, mais pas pour compter le temps ni pour garantir une vitesse de liaison série. Le brochage diffère : ne pas les confondre.
Le quartz chauffe-t-il ou s’use-t-il ?
Il ne chauffe pas de façon perceptible et il ne s’use pas mécaniquement. Sa fréquence dérive lentement avec le temps — moins de 3 ppm la première année — et un peu plus avec les écarts de température. Pour un appareil qui doit tenir l’heure sur des années, un module d’horloge à quartz dédié compensé en température est préférable, mais pour toute application électronique courante ce quartz reste largement suffisant.
À combiner avec
Pour le montage de cette page, l’essentiel tient en trois pièces : le microcontrôleur ATmega328P qu’il cadence, une plaque d’essai pour tout câbler sans souder, et un Arduino Uno qui sert de programmateur. Pour une carte déjà montée, gardez plutôt ce quartz comme pièce de rechange : c’est lui qui lâche en premier après un choc.






