Manufactura industrial
Internet industrial de las cosas | Materiales industriales | Mantenimiento y reparación de equipos | Programación industrial |
home  MfgRobots >> Manufactura industrial >  >> Manufacturing Technology >> Proceso de manufactura

Levitación magnética con Arduino

Componentes y suministros

Arduino Nano R3
Puedes usar cualquier arduino, pero el escudo está hecho para el Nano.
× 1
Electroimán 12v de 25 mm de diámetro.
× 1
Sensor de efecto Hall lineal 49E
No use el interruptor de efecto Hall.
× 1
Transistor de alta potencia Darlington
CONSEJO 120
× 1
Resistencia 1k ohm
× 1
1N4007 - Alto voltaje, diodo nominal de alta corriente
× 1
Fuente de alimentación 12V 1A
× 1
Breadboard (genérico)
× 1
Interruptor de botón SparkFun de 12 mm
× 2
Cables de puente (genéricos)
× 1

Aplicaciones y servicios en línea

Arduino IDE

Acerca de este proyecto

Levitador con Arduino.

Puedes imprimir el cuerpo en 3D o no.

https://www.thingiverse.com/thing:1392023

  • Fácil de imprimir y montar (solo un poco de pegamento, sin tornillos).
  • Simplemente instale el firmware (Levitator.ino) en la placa arduino.
  • No necesita una computadora, solo la fuente de alimentación de 12V, después de instalar el firmware.
  • Utilice los interruptores para ajustar la posición del imán permanente.
  • Utilice el monitor serial arduino para ver el valor correcto para usted.
  • Puede codificar el valor correcto en su juguete.

Puedes usar un protoboard o hacer tu placa (Arduino Nano).

http://www.thingiverse.com/thing:1392530

O simplemente compre uno:

https://oshpark.com/shared_projects/kxH3Ak1b

Atención:

  • Coloque el sensor de pasillo en la parte inferior de la punta (top_sensor.stl) vea las imágenes;
  • Para que funcione correctamente, el sensor de efecto Hall debe estar al menos a 5 mm de distancia del electromagnético;
  • Puede utilizar otro sensor de pasillo lineal (no utilice el interruptor del sensor de pasillo );
  • Utilice imanes permanentes de neodimio (no funcionará con imanes comunes);
  • Los objetos pesados ​​son más estables;

Consulta mis marcas en Thingiverse para obtener más detalles y consejos.

Levitador impreso en 3D:

https://www.thingiverse.com/make:201394

Escudo para Arduino Nano:

https://www.thingiverse.com/make:201420

Eso es fácil.

Código

  • Levitator.ino
  • Levitator_PID.ino
Levitator.ino Arduino
Código para juguete de levitación magnética con Arduino.
Fácil (sin PID)
 // =======================================================| // Ekobots Innovation Ltda - www.ekobots.com.br | // Juan Sirgado y Antico - www.jsya.com.br | // - -------------------------------------------------- ------ | // Programa Levitador Magnético - 2016/02/06 | // Todos los derechos reservados 2016 | // =========================================================| int anaPin =1; // Pin analógico Arduino 1; int digPin =5; // Pin 5 de Arduino Digital; int subPin =7; // Pin digital Arduino 7; int addPin =8; // Pin digital Arduino 8; // int anaVal =0; // Valor de lectura analógica (sensor Hall); booleano digVal =0; // Valor de escritura digital (electroimán); // int levVal =228; // Valor de Poit de levitación; int dlyVal =250; // Valor de retardo en microsegundos; // ----------------------------------------- ---------------- | void setup () {// Inicio de inicialización del Levitador; Serial.begin (57600); Serial.println ("Levitator por JSyA"); Serial.println ("Iniciando ..."); // Configuración del modo de trabajo de los pines digitales; pinMode (digPin, SALIDA); pinMode (subPin, INPUT_PULLUP); pinMode (addPin, INPUT_PULLUP); // Finalización de inicialización del levitador; Serial.println ("Iniciado");} // ------------------------------------- -------------------- | void loop () {// Lectura del sensor Hall (intensidad del campo magnético); anaVal =analogRead (anaPin); // Incrementar el valor del punto de levitación; if (digitalRead (addPin) ==BAJO) {levVal ++; value_log (); retraso (250); } // Disminuir el valor del punto de levitación; if (digitalRead (subPin) ==LOW) {levVal--; value_log (); retraso (250); } // Comprueba el punto de levitación; if (anaVal  levVal) {digVal =HIGH; } // // Enciende / apaga el electroimán; // Con base en el valor del sensor y el punto de levitación; escritura digital (digPin, digVal); delayMicroseconds (dlyVal);} // ------------------------------------------ --------------- | void value_log () // Impresión de valores analógicos / digitales / de levitación; {// Muestra el valor del sensor Hall; Serial.print ("anaVal =["); Serial.print (anaVal); Serial.print ("] -"); // Muestra el estado del electroimán On =1 / Off =0; Serial.print ("digVal =["); Serial.print (digVal); Serial.print ("] -"); // Muestra el valor del punto de levitación; Serial.print ("levVal =["); Serial.print (levVal); Serial.println ("];");} // =========================================================| 
Levitator_PID.ino Arduino
Código para juguete de levitación magnética con Arduino.
Hard (versión PID)
 // =======================================================| // Ekobots Innovation Ltda - www.ekobots.com.br | // Juan Sirgado y Antico - www.jsya.com.br | // - -------------------------------------------------- ------ | // Programa Levitador Magnético PID - 2016/10/06 | // Todos los derechos reservados 2016 | // =========================================================| int anaPin =1; // Pin analógico Arduino 1int digPin =5; // Pin digital Arduino 5int subPin =7; // Pin digital Arduino 7int addPin =8; // Pin digital Arduino 8 // int anaVal =0; // Valieint analógico digVal =0; // Valor digital // int levVal =262; // Valor de levitaciónint dlyVal =10; // Valor de retardo // float timVal =0; // Valor del tiempo//-------------------------------------------- ------------- | // Valores PID punto de ajuste flotante =0; valor_medido flotante =0; salida flotante =0; integral flotante =0; derivada flotante =0; error flotante =0; error flotante anterior =0; flotar dt =0.1; flotar Kp =1.0; flotar Ki =0.1; flotar Kd =0.01; // -------------------------- ------------------------------- | void setup () {// Inicio de inicialización de Levitator; Serial.begin (57600); Serial.println ("Levitator por JSyA"); Serial.println ("Iniciando ..."); // Configuración del modo de trabajo de los pines digitales; pinMode (digPin, SALIDA); pinMode (addPin, INPUT_PULLUP); pinMode (subPin, INPUT_PULLUP); // timVal =millis (); setpoint =levVal; // Finalización de inicialización del levitador; Serial.println ("Iniciado");} // ------------------------------------- -------------------- | bucle vacío () // PID {// Lectura del sensor Hall (intensidad del campo magnético); anaVal =analogRead (anaPin); // Cálculos de PID valor_medido =anaVal; error =setpoint - valor_medido; integral =integral + error * dt; derivative =(error - error_anterior) / dt; salida =(-Kp * error) + (-Ki * integral) + (-Kd * derivada); previous_error =error; // Configuración del valor final digVal + =salida; // Verifica el valor del punto de levitación; si (digVal <0) digVal =0; si (digVal> 255) digVal =255; // Aumentar / Disminuir el valor de Electroimán; // Con base en el valor del sensor y el punto de levitación; analogWrite (digPin, digVal); // Mostrar valores de registro para depuración; // if ((millis () - timVal)> 500) // {// value_log (); // timVal =millis (); //} // Incrementar el valor del punto de levitación; if (digitalRead (addPin) ==LOW) {setpoint ++; value_log (); retraso (250); } if (digitalRead (subPin) ==LOW) {setpoint--; value_log (); retraso (250); } // Tiempo entre cambios de estado del electroimán; delayMicroseconds (dlyVal);} // ------------------------------------------ --------------- | void value_log () // Impresión de valores analógicos / digitales / de levitación; {// Muestra el valor del sensor Hall; Serial.print ("anaVal =["); Serial.print (anaVal); Serial.print ("] -"); // Muestra el estado del electroimán On =1 / Off =0; Serial.print ("digVal =["); Serial.print (digVal); Serial.print ("] -"); // Muestra el valor del punto de levitación; Serial.print ("setpoint =["); Serial.print (punto de ajuste); Serial.println ("];");} // =========================================================| 

Esquemas

Fritzing IDE

Proceso de manufactura

  1. El reloj IV9 Numitron más simple de bricolaje con Arduino
  2. Monitoreo de CO2 con sensor K30
  3. Comunicación para personas sordociegas con 1Sheeld / Arduino
  4. Controlar el aceptador de monedas con Arduino
  5. ¡Arduino con Bluetooth para controlar un LED!
  6. Sensor capacitivo de huellas dactilares con Arduino o ESP8266
  7. Jugando con Nextion Display
  8. Brazo robótico controlado por Nunchuk (con Arduino)
  9. Levitación electromagnética repulsiva Arduino
  10. Medición de la radiación solar con Arduino
  11. Mini radar con Arduino