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

Magneet levitatie met Arduino

Componenten en benodigdheden

Arduino Nano R3
Je kunt elke Arduino gebruiken, maar het schild is gemaakt voor de Nano.
× 1
Elektromagneet 12v 25 mm diameter.
× 1
Lineaire Hall-effectsensor 49E
Gebruik geen hall-effectschakelaar.
× 1
Darlington hoogvermogentransistor
TIP 120
× 1
Weerstand 1k ohm
× 1
1N4007 – Diode voor hoge spanning, hoge stroomsterkte
× 1
Voeding 12V 1A
× 1
Broodplank (algemeen)
× 1
SparkFun Drukknopschakelaar 12 mm
× 2
Jumperdraden (algemeen)
× 1

Apps en online services

Arduino IDE

Over dit project

Levitator met Arduino.

Je kunt de body 3D printen of niet.

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

  • Eenvoudig te printen en te monteren (alleen wat lijm, geen schroeven).
  • Installeer gewoon de firmware (Levitator.ino) in het Arduino-bord.
  • Je hebt geen computer nodig, alleen de 12V-voeding, nadat je de firmware hebt geïnstalleerd.
  • Gebruik de schakelaars om de positie van de permanente magneet aan te passen.
  • Gebruik de arduino seriële monitor om de juiste waarde voor u te zien.
  • Je kunt de juiste waarde in je speeltje hard coderen.

Je kunt een protoboard gebruiken of je bord maken (Arduino Nano).

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

Of koop er gewoon een:

https://oshpark.com/shared_projects/kxH3Ak1b

Let op:

  • Plaats de hall-sensor onderaan de tip (top_sensor.stl) zie de afbeeldingen;
  • Om correct te werken, moet de hall-effectsensor minimaal 5 mm verwijderd zijn van elektromagnetische velden;
  • U kunt andere lineaire hall-sensoren . gebruiken (gebruik geen halsensorschakelaar );
  • Gebruik neodymium permanente magneten (het werkt niet met gewone magneten);
  • Zware objecten zijn stabieler;

Bekijk mijn merken in de Thingiverse voor meer details en tips.

Levitator 3D geprint:

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

Schild voor Arduino Nano:

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

Dat is makkelijk.

Code

  • Levitator.ino
  • Levitator_PID.ino
Levitator.inoArduino
Code voor Magnet Levitation-speelgoed met Arduino.
Eenvoudig (geen PID)
//=========================================================|// Ekobots Innovation Ltda - www.ekobots.com.br |// Juan Sirgado y Antico - www.jsya.com.br |//- -------------------------------------------------- ------|// Programma Magnetische Levitator - 2016/02/06 |// Alle rechten voorbehouden 2016 |//=========================================================|int anaPin =1; // Arduino Analoge Pin 1;int digPin =5; // Arduino digitale pin 5;int subPin =7; // Arduino digitale pin 7;int addPin =8; // Arduino digitale pin 8;//int anaVal =0; // Analoge Lezen (Hall Sensor) Waarde; booleaanse digVal =0; // Digitale schrijfwaarde (elektromagneet);//int levVal =228; // Levitatie Poit-waarde; int dlyVal =250; // Vertragingswaarde microseconden;//----------------------------------------- ----------------|void setup(){ // Levitator initialisatie Begin; Serieel.begin(57600); Serial.println ("Levitator door JSyA"); Serial.println("Begint..."); // Digitale pinnen Werkmodus instellen; pinMode (digPin, UITGANG); pinMode (subPin, INPUT_PULLUP); pinMode (addPin, INPUT_PULLUP); // Levitator initialisatie Einde; Serial.println ("Gestart.");}//------------------------------------- --------------------|void loop() {// Hall Sensor Read (magnetische veldintensiteit); anaVal =analogRead (anaPin); // Verhoog de waarde van het levitatiepunt; if (digitalRead (addPin) ==LAAG) { levVal++; waarde_log(); vertraging (250); } // Verlaag de waarde van het levitatiepunt; if (digitalRead (subPin) ==LAAG) { levVal--; waarde_log(); vertraging (250); } // Controleer het levitatiepunt; if (anaVal  levVal) { digVal =HOOG; } // // Zet de elektromagneet AAN/UIT; // Met Base on Sensor Value en het levitatiepunt; digitalWrite(digPin, digVal); vertraging Microseconden (dlyVal);}//------------------------------------------ ---------------|void value_log()// Analoge/digitale/levitatiewaarden Afdrukken; {// Toon de Hall-sensorwaarde; Serial.print("anaVal=["); Serial.print(anaVal); Serial.print("]-"); // Toon de Elektromagneet staat On=1/Off=0; Serial.print("digVal=["); Serial.print(digVal); Serial.print("]-"); // Toon de levitatiepuntwaarde; Serial.print("levVal=["); Serial.print(levVal); Serial.println("];");}//=========================================================|
Levitator_PID.inoArduino
Code voor Magnet Levitation-speelgoed met Arduino.
Hard (PID-versie)
//=========================================================|// Ekobots Innovation Ltda - www.ekobots.com.br |// Juan Sirgado y Antico - www.jsya.com.br |//- -------------------------------------------------- ------|// Programma Magnetische Levitator PID - 2016/10/06 |// Alle rechten voorbehouden 2016 |//=========================================================|int anaPin =1; // Arduino Analoge Pin 1int digPin =5; // Arduino digitale pin 5int subPin =7; // Arduino digitale pin 7int addPin =8; // Arduino digitale pin 8//int anaVal =0; // Analoge Valieint digVal =0; // Digitale waarde//int levVal =262; // Levitatie Valueint dlyVal =10; // Vertragingswaarde//float timVal =0; // Tijdswaarde//-------------------------------------------- -------------|// PID Valuesfloat setpoint =0;float meetwaarde =0;float output =0;float integraal =0;float derivaat =0;float error =0;float vorige_error =0;float dt =0.1;float Kp =1.0;float Ki =0.1;float Kd =0.01;//-------------------------- -------------------------------|void setup(){ // Levitator initialisatie Begin; Serieel.begin(57600); Serial.println ("Levitator door JSyA"); Serial.println("Begint..."); // Digitale pinnen Werkmodus instellen; pinMode (digPin, UITGANG); pinMode (addPin, INPUT_PULLUP); pinMode (subPin, INPUT_PULLUP); // timVal =millis(); instelpunt =levVal; // Levitator initialisatie Einde; Serial.println ("Gestart.");}//------------------------------------- --------------------|void loop () // PID { // Hall Sensor Read (magnetische veldintensiteit); anaVal =analogRead (anaPin); // PID-berekeningen gemeten_waarde =anaVal; fout =setpoint - gemeten_waarde; integraal =integraal + fout * dt; afgeleide =(fout - vorige_fout) / dt; output =(-Kp * fout) + (-Ki * integraal) + (-Kd * afgeleide); previous_error =fout; // Eindwaarde instelling digVal +=uitgang; // Controleer de waarde voor het levitatiepunt; als (digVal <0) digVal=0; als (digVal> 255) digVal=255; // Verhoog/verlaag de waarde voor Elektromagneet; // Met Base on Sensor Value en het levitatiepunt; analogWrite(digPin, digVal); // Toon logwaarden voor debug;// if((millis()-timVal)> 500)// {// value_log();// timVal =millis();// } // Verhoog de waarde van levitatiepunt; if (digitalRead (addPin) ==LAAG) {instelpunt ++; waarde_log(); vertraging (250); } if (digitalRead (subPin) ==LAAG) { setpoint--; waarde_log(); vertraging (250); } // Tijd tussen veranderingen in elektromagneettoestand; vertraging Microseconden (dlyVal);}//------------------------------------------ ---------------|void value_log()// Analoge/digitale/levitatiewaarden Afdrukken; {// Toon de Hall-sensorwaarde; Serial.print("anaVal=["); Serial.print(anaVal); Serial.print("]-"); // Toon de Elektromagneet staat On=1/Off=0; Serial.print("digVal=["); Serial.print(digVal); Serial.print("]-"); // Toon de levitatiepuntwaarde; Serial.print("setpoint=["); Seriële.afdruk (instelpunt); Serial.println("];");}//=========================================================|

Schema's

Fritsende IDE

Productieproces

  1. DIY eenvoudigste IV9 Numitron-klok met Arduino
  2. CO2-monitoring met K30-sensor
  3. Doofblinde communicatie met 1Sheeld/Arduino
  4. Bedien muntvangers met Arduino
  5. Arduino met Bluetooth om een ​​LED te bedienen!
  6. Capacitieve vingerafdruksensor met een Arduino of ESP8266
  7. Spelen met Nextion Display
  8. Nunchuk-gestuurde robotarm (met Arduino)
  9. Arduino afstotende elektromagnetische levitatie
  10. Zonnestraling meten met Arduino
  11. Mini-radar met Arduino