Industriële fabricage
Industrieel internet der dingen | Industriële materialen | Onderhoud en reparatie van apparatuur | Industriële programmering |
home  MfgRobots >> Industriële fabricage >  >> Manufacturing Technology >> Productieproces

Arduino Nano Magneet Levitatie Project: Onderdelen & Bedradingshandleiding

Onderdelen en benodigdheden

OnderdeelAantalOpmerking
Arduino Nano R31Je kunt elke Arduino gebruiken, maar de shield is gemaakt voor de Nano.
Elektromagneet 12V 25mm diameter1
Lineaire Halleffectsensor 49E1Gebruik GEEN Halleffectschakelaar.
Darlington High Power Transistor1TIP 120
Weerstand 1k ohm1
1N4007 – Hoge Spanning, Hoge Stroom Diode1
Voeding 12V 1A1
Breadboard (generic)1
SparkFun Drukknopschakelaar 12mm2
Jumper draden (generic)1

Apps en online diensten

  • Arduino IDE

Over dit project

Levitator met Arduino.

Je kunt de behuizing 3D-printen of niet.

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

  • Makkelijk te printen en monteren (alleen wat lijm, geen schroeven).
  • Installeer gewoon de firmware (Levitator.ino) in het Arduino-bord.
  • Geen computer nodig, alleen de 12V voeding, na installatie van de firmware.
  • Gebruik de schakelaars om de permanente magneetpositie aan te passen.
  • Gebruik de Arduino Serial Monitor om de correcte waarde voor jou te zien.
  • Je kunt de correcte waarde hardcoden in je speelgoed.

Je kunt een experimenteerprint of een eigen printplaat maken (Arduino Nano).

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

Arduino Nano Magneet Levitatie Project: Onderdelen & Bedradingshandleiding

Of koop er een:

https://oshpark.com/shared_projects/kxH3Ak1b

Arduino Nano Magneet Levitatie Project: Onderdelen & Bedradingshandleiding

Let op:

  • Plaats de hallsensor in de bodem van de punt (top_sensor.stl) zie de afbeeldingen;
  • Om correct te werken, moet de halleffectsensor minimaal 5mm afstand hebben van de elektromagneet;
  • Je kunt andere lineaire hallsensoren gebruiken (gebruik GEEN halsensor schakelaar);
  • Gebruik neodymium permanente magneten (het werkt niet met gewone magneten);
  • Zwaardere objecten zijn stabieler;
Arduino Nano Magneet Levitatie Project: Onderdelen & Bedradingshandleiding

Bekijk mijn makes op Thingiverse voor meer details en tips.

Levitator 3D Geprint:

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

Shield voor Arduino Nano:

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

Dat is makkelijk.

Code

Levitator.ino

Code voor Magneet Levitatie speelgoed met Arduino.
Makkelijk (Geen PID)

//=========================================================| 
// Ekobots Innovation Ltda - www.ekobots.com.br | 
// Juan Sirgado y Antico - www.jsya.com.br | 
//---------------------------------------------------------| 
// Program Magnetic Levitator - 2016/02/06 | 
// All rights reserved 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; // Analogic Read(Hall Sensor) Value; 
boolean digVal = 0; // Digital Write(Electromagnet) Value; 
// int levVal = 228; // Levitation Poit Value; 
int dlyVal = 250; // Delay Value Micro Seconds; 
//---------------------------------------------------------| 
void setup() { 
  // Levitator initialization Begin; 
  Serial.begin(57600); 
  Serial.println("Levitator by JSyA"); 
  Serial.println("Starting..."); 
  // Digital Pins Work Mode Setup; 
  pinMode(digPin, OUTPUT); 
  pinMode(subPin, INPUT_PULLUP); 
  pinMode(addPin, INPUT_PULLUP); 
  // Levitator initialization End; 
  Serial.println("Started."); 
} 
//---------------------------------------------------------| 
void loop() { 
  // Hall Sensor Read (Magnetic Field Intensity); 
  anaVal = analogRead(anaPin); 
  // Increase The Value Of Levitation Point; 
  if (digitalRead(addPin) == LOW) { 
    levVal++; 
    value_log(); 
    delay(250); 
  } 
  // Decrease The Value Of Levitation Point; 
  if (digitalRead(subPin) == LOW) { 
    levVal--; 
    value_log(); 
    delay(250); 
  } 
  // Check the Levitation Point; 
  if (anaVal < levVal) { 
    digVal = LOW; 
  } else // if (anaVal > levVal) { 
    digVal = HIGH; 
  } 
  //  
  // Turn ON/OFF The Electromagnet; 
  // With Base on Sensor Value and the Levitation Point; 
  digitalWrite(digPin, digVal); 
  delayMicroseconds(dlyVal); 
} 
//---------------------------------------------------------| 
void value_log() // Analogic/Digital/Levitation Values Print; 
{ 
  // Show the Hall Sensor Value; 
  Serial.print("anaVal=["); 
  Serial.print(anaVal); 
  Serial.print("]-"); 
  // Show the Electromagnet state On=1/Off=0; 
  Serial.print("digVal=["); 
  Serial.print(digVal); 
  Serial.print("]-"); 
  // Show the Levitation Point Value; 
  Serial.print("levVal=["); 
  Serial.print(levVal); 
  Serial.println("];"); 
} 
//=========================================================| 

Levitator_PID.ino

Code voor Magneet Levitatie speelgoed met Arduino.
Moeilijk (PID-versie)

//=========================================================| 
// Ekobots Innovation Ltda - www.ekobots.com.br | 
// Juan Sirgado y Antico - www.jsya.com.br | 
//---------------------------------------------------------| 
// Program Magnetic Levitator PID - 2016/10/06 | 
// All rights reserved 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; // Analogic Valie 
int digVal = 0; // Digital Value 
// int levVal = 262; // Levitation Value 
int dlyVal = 10; // Delay Value 
// float timVal = 0; // Time Value 
//---------------------------------------------------------| 
// PID Values 
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() { 
  // Levitator initialization Begin; 
  Serial.begin(57600); 
  Serial.println("Levitator by JSyA"); 
  Serial.println("Starting..."); 
  // Digital Pins Work Mode Setup; 
  pinMode(digPin, OUTPUT); 
  pinMode(addPin, INPUT_PULLUP); 
  pinMode(subPin, INPUT_PULLUP); 
  // timVal = millis(); 
  setpoint = levVal; 
  // Levitator initialization End; 
  Serial.println("Started."); 
} 
//---------------------------------------------------------| 
void loop() // PID 
{ 
  // Hall Sensor Read (Magnetic Field Intensity); 
  anaVal = analogRead(anaPin); 
  // PID calculations 
  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; 
  // Final value setup 
  digVal += output; 
  // Check the value for levitation point; 
  if (digVal < 0) digVal=0; 
  if (digVal > 255) digVal=255; 
  // Increase/Decrease the value for Electromagnet; 
  // With Base on Sensor Value and the Levitation Point; 
  analogWrite(digPin, digVal); 
  // Show log values for debug; 
  // if((millis()-timVal) > 500) 
  // { 
  // value_log(); 
  // timVal = millis(); 
  // } 
  // Increase The Value Of Levitation Point; 
  if (digitalRead(addPin) == LOW) { 
    setpoint++; 
    value_log(); 
    delay(250); 
  } 
  if (digitalRead(subPin) == LOW) { 
    setpoint--; 
    value_log(); 
    delay(250); 
  } 
  // Time between electromagnet state changes; 
  delayMicroseconds(dlyVal); 
} 
//---------------------------------------------------------| 
void value_log() // Analogic/Digital/Levitation Values Print; 
{ 
  // Show the Hall Sensor Value; 
  Serial.print("anaVal=["); 
  Serial.print(anaVal); 
  Serial.print("]-"); 
  // Show the Electromagnet state On=1/Off=0; 
  Serial.print("digVal=["); 
  Serial.print(digVal); 
  Serial.print("]-"); 
  // Show the Levitation Point Value; 
  Serial.print("setpoint=["); 
  Serial.print(setpoint); 
  Serial.println("];"); 
} 
//=========================================================| 

Schema's

Fritzing IDE

Arduino Nano Magneet Levitatie Project: Onderdelen & Bedradingshandleiding

Productieproces

  1. Bouw een retro Numitron-klok met Arduino: Eenvoudig, betrouwbaar en energiezuinig
  2. K30 CO2-sensor: Real-time binnenluchtkwaliteitmonitoring met Arduino
  3. Communicatie voor doofblinden vergemakkelijken met 1Sheeld en Arduino
  4. Slimme spaarpot bouwen: Muntenacceptor besturen met Arduino Nano
  5. Een LED bedienen via Bluetooth met Arduino – Eenvoudige DIY Handleiding
  6. Een DFRobot Capacitieve Vingerafdruksensor integreren met Arduino of ESP8266
  7. Interactief Nextion HMI-weerstation met Arduino Mega en sensoren
  8. Arduino-gebaseerde 6-DoF Robotarm Gestoeerd met Wii Nunchuk
  9. Arduino-gebaseerde Afstotende Magnetische Levitatie: Eenvoudige Schakeling & DIY Handleiding
  10. Accurate zonnestralingsmeting met Arduino UNO en Ethernet Shield
  11. Compact Arduino Radarsysteem met HC-SR04 Ultrasonische Sensor & 1.8" Display