Levitación magnética repulsiva con Arduino: Circuito simple y guía DIY
Componentes y suministros
![]() | Arduino UNO | × | 1 |
![]() | Resistencia 1k ohm | × | 1 |
| Transistor BD241 | × | 1 | |
| Sensor Hall lineal UGN3503 | × | 1 | |
![]() | Solenoide RobotGeek Mediano | × | 1 |
| Imán grande de altavoz | × | 1 |
Herramientas necesarias
![]() | Soldador (genérico) |
Aplicaciones y servicios en línea
![]() | Arduino IDE |
Acerca de este proyecto
Hace unos años intenté hacer un dispositivo de levitación magnética repulsiva, pero todos los circuitos eran complejos y el ajuste muy difícil.
Tras varios intentos fallidos y semi-exitosos, compré el levitador que ves en la imagen, pero es casi imposible de fabricar en casa (DIY).

Ahora presento un levitador repulsivo que, además de la placa Arduino, contiene solo unos pocos componentes adicionales y es muy fácil para DIY:
- Cualquier transistor de media potencia: en mi caso BD241
- Diodo universal 1N4001
- Resistencia 1 kΩ
- Sensor Hall UGN3503 (puedes usar cualquier sensor Hall ratimétrico de 5V)
- Imán toroidal de un altavoz viejo (diámetro 9-11 cm o más)
- En lugar del imán toroidal grande, pueden usarse grupos de pequeños imanes de neodimio dispuestos en hexágono regular, como en dispositivos comerciales
- Solenoide de unas 200 vueltas de hilo de cobre esmaltado 30AWG. En mi caso usé un solenoide de un cajón de caja registradora viejo
El circuito es muy simple (ver esquema). Arduino se alimenta a 5V por defecto y el solenoide vía transistor con 12-20V. Ambos comparten masa. La polaridad de imanes y solenoide se muestra en la figura.
Para el ajuste necesitas un poco de paciencia y tiempo, ¡y ahí está la diversión de hacer el dispositivo! El sensor Hall debe colocarse encima del solenoide. Sobre él se coloca el imán que debe flotar. En mi caso, el ajuste consistió en mover el imán toroidal arriba y abajo. Además del hardware, hay un ajuste en el código cambiando el valor de la primera línea (rango 200-350). Combinando ambos ajustes se obtienen los mejores resultados.
Código
Archivo sin título Arduino
int set_point = 250; // ajuste
int sensorPin = A1;
int output_pin = 2;
int sensorValue = 0;
void setup() {
Serial.begin(9600);
pinMode(output_pin, OUTPUT);
}
void loop() {
sensorValue = analogRead(sensorPin);
// Serial.println(sensorValue);
if (sensorValue <= set_point)
digitalWrite(output_pin, LOW);
else
digitalWrite(output_pin, HIGH);
}
Esquemáticos
Proceso de manufactura
- Proyecto Dados Digitales Arduino: Construye tu Propio Generador de Números Aleatorios con LCD
- Sistema de Sensor de Temperatura Multiposición para Integración en Hogar Inteligente
- Mando USB para juegos DIY con Arduino – Construye tu propio gamepad de alto rendimiento
- MotionSense: Detección inteligente de intrusos con Arduino y ESP8266
- Prevención de Incendios en Impresoras 3D: Sistema de Seguridad con Sensor Inteligente
- Pixel Chaser: Juego LED Interactivo de Un Toque con Arduino Nano
- Crear un medidor IoT web con Arduino, Yaler e IFTTT
- Registrador de Datos de Alto Rendimiento para Globo Meteorológico con Arduino
- Reloj flip Arduino con matriz LED 8×8: proyecto DIY de reloj en tiempo real
- Laboratorio avanzado de microcontroladores: ESP32, Arduino, PIC y módulos de sensores
- CoroFence: Detector Térmico Avanzado con Sensor PIR e Integración IoT



