Manufaturação industrial
Internet das coisas industrial | Materiais industriais | Manutenção e reparo de equipamentos | Programação industrial |
home  MfgRobots >> Manufaturação industrial >  >> Manufacturing Technology >> Processo de manufatura

Levitação magnética com Arduino

Componentes e suprimentos

Arduino Nano R3
Você pode usar qualquer arduino, mas o escudo é feito para o Nano.
× 1
Eletroímã 12v 25mm de diâmetro.
× 1
Sensor Linear de efeito Hall 49E
Não use interruptor de efeito hall.
× 1
Transistor Darlington de alta potência
DICA 120
× 1
Resistor 1k ohm
× 1
1N4007 - Alta tensão, diodo nominal de alta corrente
× 1
Fonte de alimentação 12V 1A
× 1
Breadboard (genérico)
× 1
SparkFun Botão de pressão 12 mm
× 2
Fios de jumpers (genérico)
× 1

Aplicativos e serviços online

Arduino IDE

Sobre este projeto


Levitator com Arduino.

Você pode imprimir o corpo em 3D ou não.

https://www.thingiverse.com/thing:1392023
  • Fácil de imprimir e montar (apenas um pouco de cola, sem parafusos).
  • Basta instalar o firmware (Levitator.ino) na placa arduino.
  • Não precisa de um computador, apenas a fonte de alimentação 12V, após instalar o firmware.
  • Use os interruptores para ajustar a posição do ímã permanente.
  • Use o monitor serial arduino para ver o valor correto para você.
  • Você pode codificar o valor correto em seu brinquedo.

Você pode usar um protoboard ou fazer sua placa (Arduino Nano).

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

Ou apenas compre um:

https://oshpark.com/shared_projects/kxH3Ak1b

Atenção:
  • Coloque o sensor hall na parte inferior da ponta (top_sensor.stl) veja as imagens;
  • Para funcionar corretamente, o sensor de efeito Hall deve estar a pelo menos 5 mm de distância do eletromagnético;
  • Você pode usar outro sensor linear hall (não use a chave do sensor hall );
  • Use ímãs permanentes de neodímio (não funcionará com ímãs comuns);
  • Objetos pesados ​​são mais estáveis;

Veja minhas marcas no Thingiverse para mais detalhes e dicas.

Levitator 3D impresso:

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

Shield para Arduino Nano:

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

Isso é fácil.

Código

  • Levitator.ino
  • Levitator_PID.ino
Levitator.ino Arduino
Código para brinquedo de levitação magnética com Arduino.
Fácil (Sem PID)
 // ===========================================================| // Ekobots Innovation Ltda - www.ekobots.com.br | // Juan Sirgado y Antico - www.jsya.com.br | // - -------------------------------------------------- ------ | // Programa Levitator Magnético - 2016/02/06 | // Todos os direitos reservados 2016 | // =================================================================| int anaPin =1; // Arduino Analogic Pin 1; int digPin =5; // Arduino Digital Pin 5; int subPin =7; // Arduino Digital Pin 7; int addPin =8; // Arduino Digital Pin 8; // int anaVal =0; // Valor da leitura analógica (sensor Hall); booleano digVal =0; // Valor de gravação digital (eletroímã); // int levVal =228; // Valor do ponto de levitação; int dlyVal =250; // Atraso Value Micro Seconds; // ----------------------------------------- ---------------- | void setup () {// Início da inicialização do Levitator; Serial.begin (57600); Serial.println ("Levitator por JSyA"); Serial.println ("Iniciando ..."); // Configuração do modo de trabalho dos pinos digitais; pinMode (digPin, OUTPUT); pinMode (subPin, INPUT_PULLUP); pinMode (addPin, INPUT_PULLUP); // Inicialização do Levitator End; Serial.println ("Iniciado.");} // ------------------------------------- -------------------- | void loop () {// Leitura do sensor Hall (intensidade do campo magnético); anaVal =analogRead (anaPin); // Aumenta o valor do ponto de levitação; if (digitalRead (addPin) ==LOW) {levVal ++; value_log (); atraso (250); } // Diminui o valor do ponto de levitação; if (digitalRead (subPin) ==LOW) {levVal--; value_log (); atraso (250); } // Verifique o ponto de levitação; if (anaVal  levVal) {digVal =HIGH; } // // LIGA / DESLIGA o eletroímã; // Com base no valor do sensor e no ponto de levitação; digitalWrite (digPin, digVal); delayMicroseconds (dlyVal);} // ------------------------------------------ --------------- | void value_log () // Impressão analógica / digital / valores de levitação; {// Mostra o valor do sensor Hall; Serial.print ("anaVal =["); Serial.print (anaVal); Serial.print ("] -"); // Mostra o estado do eletroímã On =1 / Off =0; Serial.print ("digVal =["); Serial.print (digVal); Serial.print ("] -"); // Mostra o valor do ponto de levitação; Serial.print ("levVal =["); Serial.print (levVal); Serial.println ("];");} // ===============================================================| 
Levitator_PID.ino Arduino
Código para brinquedo de levitação magnética com Arduino.
Difícil (versão 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 os direitos reservados 2016 | // ===============================================================| int anaPin =1; // Arduino Analogic Pin 1int digPin =5; // Arduino Digital Pin 5int subPin =7; // Arduino Digital Pin 7int addPin =8; // Arduino Digital Pin 8 // int anaVal =0; // Valieint analógico digVal =0; // Valor digital // int levVal =262; // Levitation Valueint dlyVal =10; // Delay Value // float timVal =0; // Valor do tempo//-------------------------------------------- ------------- | // Valores PID; ponto de ajuste flutuante =0; valor flutuante medido =0; saída flutuante =0; integral flutuante =0; derivada flutuante =0; erro flutuante =0; flutuante anterior_error =0; flutuante dt =0,1; flutuante Kp =1,0; flutuante Ki =0,1; flutuante Kd =0,01; // -------------------------- ------------------------------- | void setup () {// Início da inicialização do Levitator; Serial.begin (57600); Serial.println ("Levitator por JSyA"); Serial.println ("Iniciando ..."); // Configuração do modo de trabalho dos pinos digitais; pinMode (digPin, OUTPUT); pinMode (addPin, INPUT_PULLUP); pinMode (subPin, INPUT_PULLUP); // timVal =millis (); setpoint =levVal; // Inicialização do Levitator End; Serial.println ("Iniciado.");} // ------------------------------------- -------------------- | void loop () // PID {// Leitura do sensor Hall (intensidade do campo magnético); anaVal =analogRead (anaPin); // Cálculos de PID medidos_value =anaVal; erro =ponto de ajuste - valor_medido; integral =integral + erro * dt; derivada =(erro - erro_ anterior) / dt; saída =(-Kp * erro) + (-Ki * integral) + (-Kd * derivado); erro_ anterior =erro; // Configuração do valor final digVal + =output; // Verifique o valor do ponto de levitação; if (digVal <0) digVal =0; if (digVal> 255) digVal =255; // Aumenta / Diminui o valor do Eletroímã; // Com base no valor do sensor e no ponto de levitação; analogWrite (digPin, digVal); // Mostrar valores de log para depuração; // if ((millis () - timVal)> 500) // {// value_log (); // timVal =millis (); //} // Aumentar o valor do ponto de levitação; if (digitalRead (addPin) ==LOW) {setpoint ++; value_log (); atraso (250); } if (digitalRead (subPin) ==LOW) {setpoint--; value_log (); atraso (250); } // Tempo entre as mudanças de estado do eletroímã; delayMicroseconds (dlyVal);} // ------------------------------------------ --------------- | void value_log () // Impressão analógica / digital / valores de levitação; {// Mostra o valor do sensor Hall; Serial.print ("anaVal =["); Serial.print (anaVal); Serial.print ("] -"); // Mostra o estado do eletroímã On =1 / Off =0; Serial.print ("digVal =["); Serial.print (digVal); Serial.print ("] -"); // Mostra o valor do ponto de levitação; Serial.print ("setpoint =["); Serial.print (ponto de ajuste); Serial.println ("];");} // ===============================================================| 

Esquemas

IDE Fritzing

Processo de manufatura

  1. DIY mais simples relógio IV9 Numitron com Arduino
  2. Monitoramento de CO2 com Sensor K30
  3. Comunicação para surdos-cegos com 1Sheeld / Arduino
  4. Aceitar moeda de controle com Arduino
  5. Arduino com Bluetooth para controlar um LED!
  6. Sensor capacitivo de impressão digital com um Arduino ou ESP8266
  7. Brincando com Nextion Display
  8. Braço robótico controlado por Nunchuk (com Arduino)
  9. Levitação eletromagnética repulsiva Arduino
  10. Medindo a radiação solar com Arduino