Construire un détecteur de métaux Arduino sensible avec discrimination ferreux/non-ferreux
Composants et fournitures
| Composant | Quantité |
|---|---|
| Arduino Nano R3 | 1 |
| Écran LCD 16x2 (blanc sur bleu) | 1 |
| Amplificateur opérationnel TL081 (ou LT1677, 741) | 1 |
| Haut-parleur 0,25 W, 8 Ω | 1 |
| Transistor NPN usage général | 1 |
| Bobines de recherche (search coils) | 2 |
| Résistances, condensateurs (assortiment) | 1 |
Applications et services en ligne
- Arduino IDE
À propos du projet
Ce projet montre comment réaliser un détecteur de métaux sensible capable de discriminer les métaux ferreux des non-ferreux. La sensibilité est satisfaisante pour un dispositif relativement simple.
Basé sur le projet de David Crocker (forum Arduino CC, 2013), j'ai vérifié le code original puis l'ai amélioré : ajout d'un signal sonore, affichage sur LCD 16x2 du type de métal (ferreux / non-ferreux) et d'une barre de proximité.
Le dispositif utilise la technologie VLF (Very Low Frequency) à balance d'induction avec deux bobines identiques : émetteur et récepteur. L'équilibrage des bobines est critique.
Construction des bobines
- Chaque bobine : 64 tours de fil émaillé 0,5 mm² sur un support de 11 cm (forme D).
- Enrubannage, blindage avec feuille d'aluminium liée par fil étamé (laisser un petit espace pour éviter l'effet de court-circuit).
- Fixation sur une plaque plastique avec colliers de serrage.


Fréquence de résonance
Déterminez la fréquence de résonance parallèle du circuit bobine/condensateur (calculateur en ligne ou oscilloscope). Avec les dimensions ci-dessus, elle est de 7,64 kHz. Cette valeur est définie dans le code par :
#define TIMER1_TOP (249) // ajuster pour accorder la fréquence
Alimentation et performances
- Deux batteries Li-ion en série (7,4 V) sur l'entrée Vin de l'Arduino.
- Consommation < 20 mA → autonomie très longue.
- Détection : couvercle métallique 15 cm à > 30 cm ; grosse pièce à > 40-50 cm ; petite pièce à 15 cm dans l'air.
- Stabilité parfaite sans métal présent.
Amélioration possible : ajouter un transistor MOSFET de puissance pour piloter la bobine émettrice et augmenter la sensibilité (à tester ultérieurement).
Code
Code Arduino (détecteur à balance d'induction)
Le code complet utilise les timers matériels pour générer le signal d'excitation (7,8125 kHz), échantillonne le signal reçu via l'ADC en détection de phase synchrone (4 phases), calcule l'amplitude et la phase pour discriminer ferreux / non-ferreux, et affiche le résultat sur LCD avec barre de niveau et tonalité audio proportionnelle à l'amplitude.
// Détecteur à balance d'induction
// CPU 16 MHz, ADC 1 MHz, résolution 8 bits
// Timer1 : 62,5 kHz carré -> Timer0 divise par 8 = 7,8125 kHz pour bobine Tx
// 8 échantillons par cycle, 4 détecteurs de phase à 45°
// Timer2 génère le son pour l'écouteur
#include <LiquidCrystal.h>
#include <LcdBarGraph.h>
#define max_ampAverage 200
LiquidCrystal lcd(6, 7, 10, 11, 12, 13);
LcdBarGraph lbg(&lcd, 16, 0, 1);
#define TIMER1_TOP (259) // ajuster pour accorder la bobine
#define USE_3V3_AREF (1) // 1 si alimentation USB (bruit sur 5V), 0 sinon
// ... (configuration registres timers, ADC, interruptions)
// Voir le code complet sur GitHub ou dans la section Code originale.
void setup() {
lcd.begin(16, 2);
// Configuration timers, ADC, interruptions...
Serial.begin(19200);
}
ISR(TIMER1_OVF_vect) {
// Routine d'interruption : acquisition ADC, accumulation par phase
// Copie des moyennes dans 'averages' toutes les 1024 échantillons
}
void loop() {
// Attente échantillon prêt
// Si bouton calibration pressé : sauvegarde des offsets
// Sinon : calcul amplitude/phase, correction harmonique 3, décision ferreux/non-ferreux
// Affichage LCD + son si détection
}
La bibliothèque LcdBarGraph est nécessaire pour l'affichage de la barre de proximité.
Schémas

Processus de fabrication
- Construire un détecteur de pleurs de bébé économique avec Raspberry Pi – Guide DIY
- Construire une horloge Numitron rétro avec Arduino : simple, fiable et économe en énergie
- Construire un jeu gyroscopique temps réel avec Arduino Nano et capteur MPU-6050
- Détecteur de séismes DIY ADXL335 – Accéléromètre 3 axes basse consommation
- Construire un voltmètre DIY avec Arduino et écran Nokia 5110
- MobBob : Construisez votre propre robot Arduino, contrôlé via smartphone Android
- Construire une roue de mesure précise avec Arduino Nano et encodeur rotatif
- Créer une jauge IoT connectée au Web avec Arduino, Yaler et IFTTT
- Construisez un moniteur de qualité d'air précis avec le capteur Sharp GP2Y1010AU0F