工業製造
産業用モノのインターネット | 工業材料 | 機器のメンテナンスと修理 | 産業プログラミング |
home  MfgRobots >> 工業製造 >  >> Manufacturing Technology >> 製造プロセス

Arduino Nano磁気浮上プロジェクト:パーツと配線ガイド

部品と用品

Arduino Nano R3 ×1 どのArduinoでも使用可能ですが、シールドはNano用に設計されています
電磁石 12V 25mm径 ×1
リニアホール効果センサー 49E ×1 ホール効果スイッチは使用不可
ダーリントン高出力トランジスタ ×1 TIP 120
抵抗 1kΩ ×1
1N4007 - 高耐圧・大電流ダイオード ×1
電源 12V 1A ×1
ブレッドボード(汎用) ×1
SparkFun Pushbutton switch 12mm ×2
ジャンパーワイヤー(汎用) ×1

アプリとオンラインサービス

このプロジェクトについて

Arduinoによる磁気浮上装置。

ボディを3Dプリントしても、しなくても構いません。

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

ユニバーサル基板でも、自作基板(Arduino Nano用)でも使用可能。

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

Arduino Nano磁気浮上プロジェクト:パーツと配線ガイド

または購入も可能:

https://oshpark.com/shared_projects/kxH3Ak1b

Arduino Nano磁気浮上プロジェクト:パーツと配線ガイド

注意事項:

Arduino Nano磁気浮上プロジェクト:パーツと配線ガイド

詳細とヒントはThingiverseの私の作品を参照してください。

3Dプリントされた磁気浮上装置:

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

Arduino Nano用シールド:

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

それだけです。

コード

Levitator.ino Arduino

Arduinoによる磁気浮上おもちゃのコード。簡易版(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 Arduino

Arduinoによる磁気浮上おもちゃのコード。PID制御版(上級)

//=========================================================| // 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("];"); } //=========================================================| 

回路図

Fritzing IDE

Arduino Nano磁気浮上プロジェクト:パーツと配線ガイド

製造プロセス

  1. Arduinoで作るレトロNumitron管時計:シンプル、信頼性高く、省エネ
  2. K30 CO2センサで室内空気質をリアルタイム監視する
  3. 1SheeldとArduinoで盲ろう者のコミュニケーションを支援する
  4. スマート貯金箱を作ろう:Arduino Nanoでコインアクセプターを制御
  5. ArduinoでBluetooth経由でLEDを制御 – シンプルDIYガイド
  6. DFRobot静電容量式指紋センサーをArduino/ESP8266で使う – 登録・認証・削除の完全ガイド
  7. Arduino MegaとNextion HMIで作る高機能ウェザーステーション
  8. Arduinoベースのヌンチャク操作6自由度ロボットアームキット
  9. Arduinoで作る斥力式磁気浮上装置: シンプル回路とDIYガイド
  10. Arduino UNOとEthernetシールドで太陽放射を測定する自作ピラノメーター
  11. コンパクトなArduinoレーダーシステム – HC-SR04超音波センサー & 1.8インチST7735ディスプレイ搭載