Lévitation magnétique répulsive avec Arduino : circuit simple et guide DIY
Composants et fournitures
![]() |
Arduino UNO | × | 1 |
![]() |
Résistance 1 kΩ | × | 1 |
| Transistor BD241 (puissance moyenne) | × | 1 | |
| Capteur à effet Hall linéaire UGN3503 | × | 1 | |
![]() |
Solénoïde RobotGeek Medium (ou ~200 spires fil émaillé 30AWG) | × | 1 |
| Grand aimant toroïdal (haut-parleur, Ø 9-11 cm min) | × | 1 |
Outils nécessaires
![]() |
Fer à souder (générique) |
Applications et services en ligne
![]() |
Arduino IDE |
À propos de ce projet
Il y a quelques années, j'ai tenté de réaliser un dispositif de lévitation magnétique répulsive, mais tous les circuits trouvés étaient complexes et difficiles à régler. Après plusieurs échecs, j'ai acheté un lévitateur commercial (photo), mais il est quasi impossible à reproduire soi-même.

Voici maintenant un lévitateur répulsif simple et réalisable en DIY, ne nécessitant que quelques composants en plus de l'Arduino :
- Transistor de puissance moyenne : BD241 (ou équivalent)
- Diode universelle 1N4001
- Résistance 1 kΩ
- Capteur à effet Hall UGN3503 (ou tout capteur Hall 5V ratiométrique)
- Aimant toroïdal d'ancien haut-parleur (diamètre 9 à 11 cm ou plus)
Alternative : groupe d'aimants néodyme disposés en hexagone régulier (comme les dispositifs commerciaux) - Solénoïde d'environ 200 spires de fil cuivre émaillé 30AWG (ici récupéré sur un tiroir-caisse)
Le circuit est très simple : Arduino alimenté en 5V, solénoïde piloté par le transistor en 12-20V, masse commune. La polarité des aimants et du solénoïde est indiquée sur le schéma.
Réglage : patience et temps requis — c'est là tout le plaisir ! Le capteur Hall doit être placé au-dessus du solénoïde, l'aimant à léviter au-dessus. Dans mon cas, le réglage consistait à déplacer l'aimant toroïdal haut/bas. Un réglage logiciel existe aussi : modifier la valeur set_point (première ligne du code) entre 200 et 350. La combinaison des deux réglages donne les meilleurs résultats.
Code
Fichier principal (Arduino)
int set_point = 250; // Réglage du point de consigne (200-350)
int sensorPin = A1; // Capteur Hall sur A1
int output_pin = 2; // Commande transistor sur pin 2
int sensorValue = 0;
void setup() {
Serial.begin(9600);
pinMode(output_pin, OUTPUT);
}
void loop() {
sensorValue = analogRead(sensorPin);
// Serial.println(sensorValue); // Décommenter pour calibrer
if (sensorValue <= set_point)
digitalWrite(output_pin, LOW); // Champ trop fort : coupe le solénoïde
else
digitalWrite(output_pin, HIGH); // Champ trop faible : active le solénoïde
}
Schémas
Processus de fabrication
- Dé numérique Arduino sur écran LCD 16x2 – Générateur aléatoire à bouton poussoir
- Système de Capteur de Température Multi-Position pour Intégration Domotique
- Manette de jeu USB Arduino DIY – Construisez votre propre gamepad haute performance
- MotionSense : Détection d'intrusion intelligente avec Arduino et ESP8266
- Prévention incendie imprimante 3D : Système de sécurité à capteur intelligent
- Pixel Chaser : Jeu LED interactif à une touche avec Arduino Nano
- Créer une jauge IoT connectée au Web avec Arduino, Yaler et IFTTT
- Enregistreur de données Arduino haute performance pour ballon météo
- CoroFence : Détecteur Thermique Avancé PIR + Capteur Grid-EYE & IoT



