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

Projeto Levitador Magnético com Arduino Nano: Guia de Peças e Ligação

Componentes e Materiais

Componente Quantidade Observações
Arduino Nano R3 1 Pode usar qualquer Arduino, mas o shield é feito para Nano.
Eletroímã 12V 25mm diâmetro 1
Sensor Hall Linear 49E 1 Não use sensor Hall switch (chave).
Transistor Darlington High Power 1 TIP 120
Resistor 1k ohm 1
Diodo 1N4007 Alta Tensão/Corrente 1
Fonte 12V 1A 1
Protoboard (genérica) 1
Chave Pushbutton 12mm SparkFun 2
Jumpers (genéricos) 1

Aplicativos e Serviços Online

Sobre o Projeto

Levitador magnético com Arduino.

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

Modelo 3D: https://www.thingiverse.com/thing:1392023

Pode usar protoboard ou fazer sua própria placa (shield Arduino Nano).

Placa PCB: https://www.thingiverse.com/thing:1392530

Projeto Levitador Magnético com Arduino Nano: Guia de Peças e Ligação

Ou compre pronto: https://oshpark.com/shared_projects/kxH3Ak1b

Projeto Levitador Magnético com Arduino Nano: Guia de Peças e Ligação

Atenção:

Projeto Levitador Magnético com Arduino Nano: Guia de Peças e Ligação

Veja minhas montagens no Thingiverse para mais detalhes e dicas.

Levitador 3D Impresso: https://www.thingiverse.com/make:201394

Shield para Arduino Nano: https://www.thingiverse.com/make:201420

É simples.

Código

Levitator.ino (Versão Simples - Sem PID)

//=========================================================|
// Ekobots Innovation Ltda - www.ekobots.com.br |
// Juan Sirgado y Antico - www.jsya.com.br |
//---------------------------------------------------------|
// Programa Levitador Magnético - 2016/02/06 |
// Todos os direitos reservados 2016 |
//=========================================================|
int anaPin = 1; // Pino Analógico 1 do Arduino
int digPin = 5; // Pino Digital 5
int subPin = 7; // Pino Digital 7
int addPin = 8; // Pino Digital 8
int anaVal = 0; // Valor Leitura Analógica (Sensor Hall)
boolean digVal = 0; // Valor Escrita Digital (Eletroímã)
int levVal = 228; // Valor Ponto de Levitação
int dlyVal = 250; // Valor Delay Microssegundos

void setup() {
  Serial.begin(57600);
  Serial.println("Levitator by JSyA");
  Serial.println("Starting...");
  pinMode(digPin, OUTPUT);
  pinMode(subPin, INPUT_PULLUP);
  pinMode(addPin, INPUT_PULLUP);
  Serial.println("Started.");
}

void loop() {
  anaVal = analogRead(anaPin);
  
  if (digitalRead(addPin) == LOW) {
    levVal++;
    value_log();
    delay(250);
  }
  if (digitalRead(subPin) == LOW) {
    levVal--;
    value_log();
    delay(250);
  }
  
  if (anaVal < levVal) {
    digVal = LOW;
  } else {
    digVal = HIGH;
  }
  
  digitalWrite(digPin, digVal);
  delayMicroseconds(dlyVal);
}

void value_log() {
  Serial.print("anaVal=["); Serial.print(anaVal); Serial.print("]-");
  Serial.print("digVal=["); Serial.print(digVal); Serial.print("]-");
  Serial.print("levVal=["); Serial.print(levVal); Serial.println("];");
}
//=========================================================|

Levitator_PID.ino (Versão Avançada - Com 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;
int digPin = 5;
int subPin = 7;
int addPin = 8;
int anaVal = 0;
int digVal = 0;
int levVal = 262;
int dlyVal = 10;
float timVal = 0;

// Valores PID
float setpoint = 0;
float measured_value = 0;
float output = 0;
float integral = 0;
float derivative = 0;
float error = 0;
float previous_error = 0;
float dt = 0.1;
float Kp = 1.0;
float Ki = 0.1;
float Kd = 0.01;

void setup() {
  Serial.begin(57600);
  Serial.println("Levitator by JSyA");
  Serial.println("Starting...");
  pinMode(digPin, OUTPUT);
  pinMode(addPin, INPUT_PULLUP);
  pinMode(subPin, INPUT_PULLUP);
  setpoint = levVal;
  Serial.println("Started.");
}

void loop() {
  anaVal = analogRead(anaPin);
  
  // Cálculos PID
  measured_value = anaVal;
  error = setpoint - measured_value;
  integral = integral + error * dt;
  derivative = (error - previous_error) / dt;
  output = (-Kp * error) + (-Ki * integral) + (-Kd * derivative);
  previous_error = error;
  
  digVal += output;
  if (digVal < 0) digVal = 0;
  if (digVal > 255) digVal = 255;
  
  analogWrite(digPin, digVal);
  
  // Ajuste de setpoint via botões
  if (digitalRead(addPin) == LOW) {
    setpoint++;
    value_log();
    delay(250);
  }
  if (digitalRead(subPin) == LOW) {
    setpoint--;
    value_log();
    delay(250);
  }
  
  delayMicroseconds(dlyVal);
}

void value_log() {
  Serial.print("anaVal=["); Serial.print(anaVal); Serial.print("]-");
  Serial.print("digVal=["); Serial.print(digVal); Serial.print("]-");
  Serial.print("setpoint=["); Serial.print(setpoint); Serial.println("];");
}
//=========================================================|

Esquemáticos

Fritzing IDE

Projeto Levitador Magnético com Arduino Nano: Guia de Peças e Ligação

Processo de manufatura

  1. Construa um Relógio Retrô Numitron com Arduino: Simples, Confiável e Eficiente
  2. Sensor K30 CO₂: Monitoramento de Qualidade do Ar Interno em Tempo Real
  3. Facilitando Comunicação Surdo-Cego com 1Sheeld e Arduino
  4. Mealheiro Inteligente: Controlar Aceitador de Moedas com Arduino Nano
  5. Controlar um LED via Bluetooth com Arduino – Guia DIY Simples
  6. Integrando Sensor de Impressão Digital Capacitivo DFRobot com Arduino ou ESP8266
  7. Projeto HMI Interativo com Nextion, Arduino Mega e Sensores
  8. Braço Robótico 6 GDL Controlado por Nunchuk com Arduino Mega
  9. Levitação Magnética Repulsiva com Arduino: Circuito Simples e Guia DIY
  10. Medição Precisa de Radiação Solar com Arduino UNO e Ethernet Shield