Figure 1 : Un fréquencemètre moderne basé sur ESP32 dépasse facilement les 10 MHz tout en restant simple à construire.
⚠️ AVERTISSEMENT : PROTECTION DE L'ENTRÉE FRÉQUENCEMÈTRE
Un fréquencemètre est souvent connecté à des circuits inconnus. Ne connectez jamais directement une tension supérieure à 3,3V (ou 5V selon votre microcontrôleur) sur la broche d'entrée. Un pic de tension ou une tension continue élevée détruira instantanément le circuit de comptage. Un réseau d'atténuation et des diodes de clampage sont obligatoires (détails dans la section 4).
Bienvenue sur TechFix Hub ! Le fréquencemètre est l'un des instruments de mesure les plus fascinants à construire soi-même. Bien que les modèles commerciaux soient aujourd'hui très abordables, concevoir son propre compteur de fréquence reste un rite de passage essentiel pour comprendre l'électronique numérique : bases de temps, portes logiques, prescalers et affichage.
Cet article s'inspire d'un projet classique publié en 2005. Nous allons d'abord décortiquer le principe de fonctionnement historique (à base de compteurs décimaux), avant de vous proposer une upgrade Maker radicale : un fréquencemètre 50 MHz+ basé sur un ESP32 et un écran OLED, bien plus compact, précis et facile à réaliser aujourd'hui.
⚙️ 1. Comment Fonctionne un Fréquencemètre Numérique ?
Le principe de base est d'une élégante simplicité. Il repose sur trois blocs fonctionnels :
- La Base de Temps (Timebase) : Un oscillateur à quartz très stable (ex: 10 MHz) est divisé pour générer un signal de "porte" (gate) précis, par exemple exactement 1,000 seconde.
- La Porte et le Compteur : Pendant cette seconde exacte, une porte logique (AND) s'ouvre et laisse passer les impulsions du signal inconnu vers un compteur. Si 1 000 000 d'impulsions passent en 1 seconde, la fréquence est de 1 MHz.
- L'Affichage : La valeur du compteur est mémorisée (latch) et envoyée vers un décodeur qui pilote l'affichage (7 segments ou écran numérique) à la fin de chaque cycle de mesure.
🏛️ 2. L'Approche Classique : Logique Câblée (74HC / CD4000)
Le montage original de 2005 utilisait une approche purement matérielle, excellente pour l'apprentissage :
- Oscillateur : Quartz 4 MHz ou 10 MHz avec un inverseur CMOS (74HC04).
- Division : Compteurs binaires (74HC390 ou CD4020) pour diviser la fréquence et obtenir une impulsion de 1 seconde.
- Comptage : Une cascade de compteurs décimaux (CD4026) qui pilotent directement des afficheurs 7 segments à anode commune.
Limite : Ce montage est encombrant, consomme beaucoup de courant, et devient instable au-delà de 2-5 MHz à cause des délais de propagation des portes logiques.
🚀 3. L'Upgrade "TechFix Hub" : Fréquencemètre 50 MHz avec ESP32
Pourquoi s'encombrer de dizaines de circuits intégrés quand un seul microcontrôleur à 240 MHz peut faire le travail avec une précision supérieure ? L'ESP32 possède des périphériques matériels dédiés au comptage d'impulsions (PCNT) et des timers haute résolution.
Composants du Projet Moderne :
- Microcontrôleur : ESP32 DevKit V1 (gère facilement jusqu'à 40-50 MHz en comptage matériel).
- Affichage : Écran OLED 0.96" I2C (SSD1306) pour un affichage net de 6 à 8 chiffres.
- Protection d'entrée : Diviseur de tension (10kΩ + 4.7kΩ) + 2 diodes Schottky (1N5819) pour clamer le signal entre 0V et 3.3V.
Extrait de Code (Principe de Comptage) :
// Utilisation du compteur d'impulsions matériel (PCNT) de l'ESP32
#include <driver/pcnt.h>
#define INPUT_PIN 4 // Broche d'entrée du signal (avec protection !)
void setup() {
Serial.begin(115200);
// Configuration du PCNT pour compter les fronts montants
pcnt_config_t pcnt_config = {
.pulse_gpio_num = INPUT_PIN,
.ctrl_gpio_num = PCNT_PIN_NOT_USED,
.lctrl_mode = PCNT_MODE_KEEP,
.hctrl_mode = PCNT_MODE_KEEP,
.pos_mode = PCNT_COUNT_INC,
.neg_mode = PCNT_COUNT_DIS,
.counter_h_lim = 65535,
.counter_l_lim = 0,
.unit = PCNT_UNIT_0,
.channel = PCNT_CHANNEL_0
};
pcnt_unit_config(&pcnt_config);
pcnt_counter_pause(PCNT_UNIT_0);
pcnt_counter_clear(PCNT_UNIT_0);
}
void loop() {
pcnt_counter_clear(PCNT_UNIT_0);
pcnt_counter_resume(PCNT_UNIT_0);
delay(1000); // Temps de porte de 1.000 seconde
pcnt_counter_pause(PCNT_UNIT_0);
int16_t count;
pcnt_get_counter_value(PCNT_UNIT_0, &count);
Serial.print("Frequence: ");
Serial.print(count);
Serial.println(" Hz");
}
🛡️ 4. Indispensable : Le Circuit de Protection d'Entrée
C'est ce qui différencie un jouet d'un instrument de mesure fiable. Avant que le signal n'atteigne l'ESP32 (ou tout autre compteur), il doit passer par ce montage :
- Condensateur de couplage (ex: 10nF) : Pour bloquer toute composante continue (DC) et ne laisser passer que le signal alternatif (AC).
- Diviseur de tension : Deux résistances (ex: 10kΩ et 4.7kΩ) pour réduire l'amplitude du signal à un niveau sûr (< 3.3V).
- Diodes de clampage (1N5819) : Une diode vers le 3.3V et une vers la masse. Si le signal dépasse 3.3V + 0.3V, la diode conduit et "écrête" le pic, sauvant la broche du microcontrôleur.
🔗 Pour Aller Plus Loin sur TechFix Hub
Maîtrisez l'instrumentation et les microcontrôleurs avec nos guides complémentaires :
✅ Conclusion
Construire un fréquencemètre est bien plus qu'un simple exercice de soudure. C'est une leçon complète sur la mesure du temps, la précision des oscillateurs et la protection des circuits. Si l'approche classique à base de compteurs 74HC/CD4000 reste un excellent exercice pédagogique, l'upgrade vers un ESP32 offre des performances professionnelles (précision, gamme de fréquence, affichage) pour un coût et une complexité bien moindres. À vous de compter les impulsions !
🛠️ Vous construisez votre propre instrument de mesure ?
Vous avez des questions sur le calcul du diviseur d'entrée, la configuration du PCNT sur ESP32 ou l'ajout d'une base de temps GPS (GPSDO) pour une précision absolue ? Posez votre question dans les commentaires ci-dessous, la communauté TechFix Hub se fera un plaisir de vous aider !