Le capteur à effet Hall KY-024 repère un champ magnétique sans rien toucher : il mesure son intensité, indique son sens, et bascule une sortie numérique dès qu’un seuil que vous réglez vous-même est franchi. C’est le composant des compteurs de tours, des capteurs de position et des détecteurs de passage d’un aimant.
Ce module est un modèle linéaire, pas un simple interrupteur magnétique : sa sortie analogique donne une tension proportionnelle au champ, ce qui permet de mesurer une vitesse de rotation, de compter des tours ou de repérer où en est un axe. Il est prêt à brancher sur une carte Arduino, sur un ESP32 ou sur un ESP8266.
À quoi sert un capteur à effet Hall linéaire ?
Quand un courant traverse un matériau soumis à un champ magnétique, une petite tension apparaît perpendiculairement : c’est l’effet Hall. Le circuit 49E soudé sur ce module exploite ce phénomène et amplifie la tension obtenue, puis un comparateur LM393 la confronte au seuil réglé par le potentiomètre.
- Compteur de tours — un aimant collé sur une roue, et vous mesurez un régime moteur en tours par minute.
- Détection de position — savoir si un vérin est sorti, si une porte est fermée, si un tiroir est ouvert.
- Détection de passage — compter des objets ou des pièces qui défilent devant le capteur.
- Mesure du sens et de la force d’un aimant — la sortie analogique monte pour un pôle et descend pour l’autre.
- Fin de course — arrêter un moteur sans contact mécanique, donc sans usure.
L’intérêt par rapport à un capteur mécanique est le même que pour tous les capteurs sans contact : rien ne s’use, rien ne s’encrasse, et la mesure est instantanée.
Caractéristiques techniques
| Module | KY-024 — capteur à effet Hall linéaire |
|---|---|
| Circuit capteur | 49E (famille SS49E / AH49E), boîtier TO-92 à trois pattes |
| Comparateur | LM393 à double comparateur différentiel |
| Alimentation | 2,7 à 6,5 V continu — 5 V en usage Arduino, 3,3 V possible sur ESP32 |
| Sorties | Une sortie analogique (AO) et une sortie numérique (DO) |
| Sensibilité | 1,0 mV par gauss au minimum, 1,4 mV par gauss en typique |
| Tension au repos | Environ la moitié de la tension d’alimentation, soit environ 2,5 V sous 5 V |
| Plage de champ | Jusqu’à environ 1000 gauss dans chaque sens |
| Consommation | Environ 6 mA sous 5 V |
| Température de service | −40 °C à +85 °C |
Brochage : quatre broches, deux sorties
Le module porte quatre broches mâles. Leur ordre et leur libellé varient selon les séries de fabrication : fiez-vous toujours à la sérigraphie imprimée sur la carte.
G (ou GND) | La masse. À relier au GND de la carte. |
|---|---|
+ (ou VCC) | L’alimentation, de 2,7 à 6,5 V. Reliez-la au 5 V de l’Arduino. |
AO (ou A0) | La sortie analogique. Sa tension suit le champ magnétique : environ la moitié de l’alimentation quand aucun aimant n’approche, plus haut pour un pôle, plus bas pour l’autre. À relier à une entrée analogique. |
DO (ou D0) | La sortie numérique, pilotée par le comparateur. Elle change d’état quand le seuil réglé au potentiomètre est franchi. À relier à une entrée numérique. |
Attention aux tensions. La sortie analogique monte jusqu’à la tension d’alimentation : sous 5 V, elle peut donc atteindre 5 V. Sur un ESP32 ou un ESP8266 dont les entrées analogiques se limitent à 3,3 V, alimentez le module en 3,3 V — la sortie analogique reste alors dans la plage admissible.
Le potentiomètre et les deux LED
Le petit potentiomètre bleu, réglable avec un tournevis fin, fixe le seuil de la sortie numérique. Il ne modifie ni la mesure du capteur, ni sa sensibilité : il détermine seulement à partir de quelle valeur de champ la sortie DO bascule. Tournez-le jusqu’à ce que la LED de détection s’allume quand l’aimant passe, et s’éteigne quand il s’éloigne.
Les deux LED du module servent au diagnostic :
- La LED d’alimentation reste allumée en permanence dès que le module est correctement alimenté. Son absence signale un problème de branchement, pas un problème de capteur.
- La LED de détection s’allume quand le seuil est franchi. C’est le moyen le plus rapide de régler le potentiomètre sans programme ni ordinateur.
Mini-projet : un tachymètre qui mesure une vitesse de rotation
Un aimant fixé sur la roue d’un moteur, le capteur en face sans le toucher : chaque passage de l’aimant compte un tour, et le programme affiche le régime sur le moniteur série.
Ce qu’il faut
| Le capteur | Le module KY-024 — celui de cette page |
|---|---|
| Le cerveau | Uno R3 + câble USB |
| Ce qui tourne | Moteur DC avec roue — un petit aimant collé sur la roue |
| Le support | Plaque d’essai 400 points |
| Les liaisons | 10 × fil mâle-femelle |
Pourquoi des fils mâle-femelle ? Le module porte des broches mâles, et une plaque d’essai n’accepte que des broches mâles : la fiche femelle se clipse sur le capteur, la fiche mâle se pique dans la plaque.
Le câblage
Module + | → Arduino 5V |
|---|---|
Module G | → Arduino GND |
Module DO | → Arduino D2 (entrée avec interruption) |
Module AO | → Arduino A0 (lecture du champ) |
Placez le capteur à deux ou trois millimètres de la trajectoire de l’aimant, face marquée vers lui, sans jamais le laisser entrer en contact avec la roue.
Le programme
À copier dans l’IDE Arduino, puis à téléverser sur la carte :
/*
* Tachymetre magnetique - capteur a effet Hall KY-024
* Carte : Arduino Uno R3
* Montage : module KY-024, un aimant colle sur la roue du moteur
*
* Composants, brochage et fiche complete : www.marocproduits.com
*/
const byte PIN_DO = 2; // sortie numerique du module
const byte PIN_AO = A0; // sortie analogique du module
volatile unsigned long impulsions = 0;
unsigned long debutMesure = 0;
void compterUnTour() {
impulsions++;
}
void setup() {
pinMode(PIN_DO, INPUT);
pinMode(PIN_AO, INPUT);
Serial.begin(9600);
// On compte a chaque changement d'etat du signal. Le montage fonctionne
// donc quel que soit le sens de bascule regle par le potentiometre.
attachInterrupt(digitalPinToInterrupt(PIN_DO), compterUnTour, CHANGE);
// Mesure de la tension au repos, sans aimant a proximite.
long somme = 0;
byte restant = 20;
while (restant != 0) {
somme += analogRead(PIN_AO);
delay(5);
restant--;
}
Serial.print("Tension au repos, en points de conversion : ");
Serial.println(somme / 20);
Serial.println("Eloignez l'aimant avant de lancer la mesure.");
debutMesure = millis();
}
void loop() {
unsigned long maintenant = millis();
// Un bilan par seconde : assez rapide pour suivre un regime, assez lent
// pour que l'affichage reste lisible.
if (maintenant - debutMesure >= 1000) {
noInterrupts();
unsigned long tours = impulsions;
impulsions = 0;
interrupts();
float duree = (maintenant - debutMesure) / 1000.0;
float toursParMinute = tours * 60.0 / duree;
Serial.print("Tours par minute : ");
Serial.print(toursParMinute, 1);
Serial.print(" | champ lu sur AO : ");
Serial.println(analogRead(PIN_AO));
debutMesure = maintenant;
}
}Comment ça marche
attachInterruptfait compter les tours par le processeur lui-même, au moment exact où le signal change. Un comptage dans la boucle principale raterait des passages dès que le moteur tourne vite.- Le mode
CHANGEréagit aux deux sens de bascule. C’est volontaire : selon le réglage du potentiomètre et la série du module, la sortie numérique peut monter ou descendre à la détection. Compter les changements évite d’avoir à deviner. noInterrupts()etinterrupts()encadrent la lecture du compteur : sans cette précaution, une impulsion arrivant au mauvais moment donnerait un chiffre faux une fois sur mille.- La tension au repos, mesurée au démarrage, sert de référence. Sous 5 V elle vaut environ 512 sur les 1023 points de conversion de l’Arduino, mais chaque exemplaire est légèrement différent : c’est cette valeur mesurée, et non une constante, qui compte.
Pour aller plus loin
- Un voyant à chaque passage — branchez une LED rouge sur une autre broche et allumez-la dans la fonction d’interruption : vous voyez le comptage à l’œil nu.
- Un afficheur autonome — un afficheur LCD 16×02 I2C affiche le régime sans passer par l’ordinateur, ce qui rend le montage transportable.
- Une alarme de survitesse — comparez la valeur calculée à un seuil et commandez un module relais 5 V pour couper l’alimentation du moteur.
Questions fréquentes
La sortie numérique ne change jamais d’état, que faire ?
Dans neuf cas sur dix, le potentiomètre de seuil est mal réglé. Tournez-le lentement sur toute sa course, un aimant tenu devant le capteur : la LED de détection doit s’allumer à un moment. Réglez ensuite le seuil à mi-course de cette zone de bascule. Si rien ne se passe même en fin de course, vérifiez que le module est bien alimenté et que sa masse est commune avec celle de la carte.
La tension analogique bouge dans les deux sens, est-ce normal ?
Oui, et c’est même la signature d’un capteur linéaire. Au repos le module délivre la moitié de la tension d’alimentation. Un pôle de l’aimant fait grimper cette tension, l’autre la fait descendre, de façon symétrique. C’est ce qui permet de distinguer le pôle nord du pôle sud, et donc de connaître le sens d’un champ plutôt que sa seule présence.
Quelle différence avec un capteur d’effet Hall numérique, type A3144 ?
Un A3144 est un interrupteur : il délivre un état haut ou bas, avec un seuil fixé en usine, et rien d’autre. Le KY-024 associe un capteur linéaire à un comparateur, et il vous offre donc les deux usages à la fois : la mesure continue sur AO, et un interrupteur réglable sur DO. Pour mesurer une vitesse ou détecter un sens, ce module convient ; pour un simple contact tout ou rien, l’autre suffit.
Peut-on mesurer un courant avec ce module ?
Pas directement, et pas avec une précision utilisable. Il lit un champ magnétique, alors qu’un courant se mesure en insérant un capteur dédié dans le circuit : pour cela, un capteur de courant ACS712 est fait pour cet usage et donne une valeur proportionnelle au courant qui le traverse.
L’aimant doit-il être puissant ?
Un petit aimant néodyme du commerce suffit largement. La sensibilité du capteur est de l’ordre du millivolt par gauss, et le champ d’un aimant placé à quelques millimètres dépasse de loin cette échelle. En pratique, c’est la distance et l’orientation qui décident : rapprochez l’aimant jusqu’à obtenir une variation nette, puis fixez cette distance.
Détecte-t-il à travers une paroi ?
Oui à travers le plastique, le bois, le verre ou l’aluminium, qui laissent passer un champ magnétique. Non à travers l’acier ou le fer : ces métaux dévient le champ et détournent le capteur. C’est d’ailleurs le principe des détecteurs de porte et de fenêtre, qui fonctionnent avec un aimant séparé du capteur par le dormant.
Faut-il l’alimenter en 3,3 V ou en 5 V ?
Le module accepte de 2,7 à 6,5 V. Sur un Arduino, utilisez le 5 V : la sortie analogique exploite alors toute la plage de conversion. Sur un ESP32 ou un ESP8266, alimentez-le en 3,3 V, sinon la sortie analogique peut dépasser la tension maximale admise par l’entrée et l’endommager.
À combiner avec
Ce capteur s’utilise rarement seul : il lui faut toujours une carte qui l’interroge, une plaque pour le brancher et des fils pour le relier. Pour détecter une présence plutôt qu’un champ magnétique, un capteur de mouvement infrarouge PIR répond à un autre besoin : il détecte la chaleur d’un corps qui bouge, là où ce capteur-ci ne réagit qu’à un aimant.
Si vous partez de zéro, le KIT Starter contient déjà la carte Uno R3, la plaque d’essai, les fils et les composants de base : en y ajoutant ce module, vous avez tout le nécessaire pour le tachymètre de cette page.









