Manufaktur industri
Industri Internet of Things | bahan industri | Pemeliharaan dan Perbaikan Peralatan | Pemrograman industri |
home  MfgRobots >> Manufaktur industri >  >> Manufacturing Technology >> Proses manufaktur

Magnet Levitation dengan Arduino

Komponen dan persediaan

Arduino Nano R3
Anda dapat menggunakan arduino apa pun, tetapi pelindung dibuat untuk Nano.
× 1
Diameter elektromagnet 12v 25mm.
× 1
Sensor Efek Hall Linear 49E
Jangan gunakan sakelar efek hall.
× 1
Transistor Daya Tinggi Darlington
KIAT 120
× 1
Resistor 1k ohm
× 1
1N4007 – Tegangan Tinggi, Dioda Nilai Arus Tinggi
× 1
Suplai daya 12V 1A
× 1
Breadboard (generik)
× 1
Sakelar Tombol Tekan SparkFun 12mm
× 2
Kabel jumper (generik)
× 1

Aplikasi dan layanan online

Arduino IDE

Tentang proyek ini

Levitator dengan Arduino.

Anda dapat mencetak tubuh 3D atau tidak.

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

  • Mudah dicetak dan dipasang (Hanya sedikit lem, tanpa sekrup).
  • Cukup instal firmware (Levitator.ino) di board arduino.
  • Tidak perlu komputer, cukup catu daya 12V, setelah menginstal firmware.
  • Gunakan sakelar untuk menyesuaikan posisi magnet permanen.
  • Gunakan monitor serial arduino untuk melihat nilai yang benar untuk Anda.
  • Anda dapat membuat kode keras nilai yang benar di mainan Anda.

Anda dapat menggunakan protoboard atau membuat papan Anda (Arduino Nano).

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

Atau cukup beli satu:

https://oshpark.com/shared_projects/kxH3Ak1b

Perhatian:

  • Letakkan sensor hall di ujung bawah (top_sensor.stl) lihat gambar;
  • Agar berfungsi dengan benar, sensor efek hall harus berjarak minimal 5 mm dari elektromagnetik;
  • Anda dapat menggunakan sensor hall linier other lainnya (jangan gunakan saklar sensor hall );
  • Gunakan magnet permanen neodymium (tidak akan bekerja dengan magnet biasa);
  • Benda berat lebih stabil;

Lihat produk saya di Thingiverse untuk detail dan tips lebih lanjut.

Levitator 3D Dicetak:

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

Perisai untuk Arduino Nano:

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

Itu mudah.

Kode

  • Levitator.ino
  • Levitator_PID.ino
Levitator.inoArduino
Kode mainan Magnet Levitation dengan Arduino.
Mudah (Tanpa PID)
//=========================================================|// Ekobots Innovation Ltda - www.ekobots.com.br |// Juan Sirgado y Antico - www.jsya.com.br |//- -------------------------------------------------- ------|// Program Magnetic Levitator - 06/02/2016 |// Hak cipta dilindungi undang-undang 2016 |//=========================================================|int anaPin =1; // Pin Analog Arduino 1;int digPin =5; // Arduino Digital Pin 5;int subPin =7; // Arduino Pin Digital 7;int addPin =8; // Arduino Digital Pin 8;//int anaVal =0; // Nilai Pembacaan Analog (Sensor Hall);boolean digVal =0; // Nilai Tulis Digital(Elektromagnet);//int levVal =228; // Nilai Poit Levitation;int dlyVal =250; // Delay Nilai Mikro Detik;//--------------------------------------------------- ----------------|void setup(){ // Inisialisasi Levitator Mulai; Serial.begin(57600); Serial.println("Levitator oleh JSyA"); Serial.println("Mulai..."); // Pengaturan Mode Kerja Pin Digital; pinMode(digPin, OUTPUT); pinMode(subPin, INPUT_PULLUP); pinMode(tambahkanPin, INPUT_PULLUP); // Inisialisasi Levitator Selesai; Serial.println("Dimulai.");}//-------------------------------------- --------------------|void loop() { // Pembacaan Sensor Hall (Intensitas Medan Magnet); anaVal =analogRead(anaPin); // Meningkatkan Nilai Titik Levitasi; if (digitalRead(addPin) ==RENDAH) { levVal++; nilai_log(); penundaan (250); } // Menurunkan Nilai Titik Levitasi; if (digitalRead(subPin) ==RENDAH) { levVal--; nilai_log(); penundaan (250); } // Periksa Titik Levitasi; if (anaVal  levVal) { digVal =TINGGI; } // // Hidupkan/Matikan Elektromagnet; // Dengan Berdasarkan Nilai Sensor dan Titik Levitasi; digitalWrite(digPin, digVal); delayMicroseconds(dlyVal);}//------------------------------------------- ---------------|void value_log()// Analogic/Digital/Levitation Values ​​Print;{ // Menampilkan Nilai Sensor Hall; Serial.print("anaVal=["); Serial.print(anaVal); Serial.print("]-"); // Tunjukkan keadaan Elektromagnet On=1/Off=0; Serial.print("digVal=["); Serial.print(digVal); Serial.print("]-"); // Tunjukkan Nilai Titik Levitasi; Serial.print("levVal=["); Serial.print(levVal); Serial.println("];");}//==========================================================|
Levitator_PID.inoArduino
Kode mainan Magnet Levitation dengan Arduino.
Keras (versi PID)
//=========================================================|// Ekobots Innovation Ltda - www.ekobots.com.br |// Juan Sirgado y Antico - www.jsya.com.br |//- -------------------------------------------------- ------|// Program Magnetic Levitator PID - 2016/10/06 |// Hak cipta dilindungi undang-undang 2016 |//==========================================================|int anaPin =1; // Arduino Pin Analog 1int digPin =5; // Arduino Digital Pin 5int subPin =7; // Arduino Digital Pin 7int addPin =8; // Arduino Digital Pin 8//int anaVal =0; // Analogi Valieint digVal =0; // Nilai Digital//int levVal =262; // Nilai Levitationint dlyVal =10; // Nilai Penundaan//float timVal =0; // Nilai waktu//-------------------------------------------- -------------|// Nilai PIDfloat setpoint =0;float terukur_nilai =0;float output =0;float integral =0;float turunan =0;float error =0;float sebelumnya_error =0;mengambang dt =0,1;mengambang Kp =1,0;mengambang Ki =0,1;mengambang Kd =0,01;//-------------------------- -------------------------------|void setup(){ // Inisialisasi Levitator Mulai; Serial.begin(57600); Serial.println("Levitator oleh JSyA"); Serial.println("Mulai..."); // Pengaturan Mode Kerja Pin Digital; pinMode(digPin, OUTPUT); pinMode(tambahkanPin, INPUT_PULLUP); pinMode(subPin, INPUT_PULLUP); // timVal =milis(); setpoint =levVal; // Inisialisasi Levitator Selesai; Serial.println("Dimulai.");}//-------------------------------------- --------------------|void loop() // PID{ // Pembacaan Sensor Hall (Intensitas Medan Magnet); anaVal =analogRead(anaPin); // perhitungan PID terukur_nilai =anaVal; kesalahan =setpoint - nilai_terukur; integral =integral + kesalahan * dt; turunan =(kesalahan - kesalahan_sebelumnya) / dt; keluaran =(-Kp * error) + (-Ki * integral) + (-Kd * turunan); sebelumnya_kesalahan =kesalahan; // Pengaturan nilai akhir digVal +=keluaran; // Periksa nilai titik levitasi; jika (digVal <0) digVal=0; jika (digVal> 255) digVal=255; // Menambah/Mengurangi nilai Elektromagnet; // Dengan Berdasarkan Nilai Sensor dan Titik Levitasi; analogWrite(digPin, digVal); // Tampilkan nilai log untuk debug;// if((millis()-timVal)> 500)// {// value_log();// timVal =millis();// } // Meningkatkan Nilai Titik Levitation; if (digitalRead(addPin) ==RENDAH) { setpoint++; nilai_log(); penundaan (250); } if (digitalRead(subPin) ==RENDAH) { setpoint--; nilai_log(); penundaan (250); } // Waktu antara perubahan keadaan elektromagnet; delayMicroseconds(dlyVal);}//------------------------------------------- ---------------|void value_log()// Analogic/Digital/Levitation Values ​​Print;{ // Menampilkan Nilai Sensor Hall; Serial.print("anaVal=["); Serial.print(anaVal); Serial.print("]-"); // Tunjukkan keadaan Elektromagnet On=1/Off=0; Serial.print("digVal=["); Serial.print(digVal); Serial.print("]-"); // Tunjukkan Nilai Titik Levitasi; Serial.print("setpoint=["); Serial.print(setpoint); Serial.println("];");}//==========================================================|

Skema

Fritzing IDE

Proses manufaktur

  1. Jam IV9 Numitron DIY paling sederhana dengan Arduino
  2. Pemantauan CO2 dengan Sensor K30
  3. Komunikasi Tunarungu dengan 1Sheeld/Arduino
  4. Kontrol Penerima Koin dengan Arduino
  5. Arduino dengan Bluetooth untuk Mengontrol LED!
  6. Sensor Sidik Jari Kapasitif dengan Arduino atau ESP8266
  7. Bermain Dengan Tampilan Berikutnya
  8. Lengan Robot Terkendali Nunchuk (dengan Arduino)
  9. Arduino Repulsive Electromagnetic Levitation
  10. Mengukur Radiasi Matahari dengan Arduino