亿迅智能制造网
工业4.0先进制造技术信息网站!
首页 | 制造技术 | 制造设备 | 工业物联网 | 工业材料 | 设备保养维修 | 工业编程 |
home  MfgRobots >> 亿迅智能制造网 >  >> Manufacturing Technology >> 制造工艺

使用 Arduino 的磁悬浮

组件和用品

Arduino Nano R3
您可以使用任何 arduino,但防护罩是为 Nano 制作的。
× 1
电磁铁 12v 25mm 直径。
× 1
线性霍尔效应传感器 49E
不要使用霍尔效应开关。
× 1
达林顿大功率晶体管
提示 120
× 1
电阻 1k ohm
× 1
1N4007 – 高电压、高额定电流二极管
× 1
电源 12V 1A
× 1
面包板(通用)
× 1
SparkFun 按钮开关 12mm
× 2
跳线(通用)
× 1

应用和在线服务

Arduino IDE

关于这个项目

带 Arduino 的悬浮器。

您可以 3D 打印或不打印身体。

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

  • 易于打印和安装(只需胶水,无需螺丝)。
  • 只需在 arduino 板上安装固件 (Levitator.ino)。
  • 安装固件后不需要电脑,只需12V电源即可。
  • 使用开关来调整永磁体的位置。
  • 使用 arduino 串行监视器为您查看正确的值。
  • 您可以在玩具中硬编码正确的值。

您可以使用原型板或制作您的电路板(Arduino Nano)。

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

或者只买一个:

https://oshpark.com/shared_projects/kxH3Ak1b

注意:

  • 将霍尔传感器放在尖端的底部 (top_sensor.stl) 查看图像;
  • 要正常工作,霍尔效应传感器必须与电磁场至少保持 5 毫米的距离;
  • 您可以使用其他线性霍尔传感器 (不要使用霍尔传感器开关 );
  • 使用钕永磁体 (它不适用于普通磁铁);
  • 重物更稳定;

有关更多详细信息和提示,请参阅我在 Thingiverse 中的品牌。

悬浮器 3D 打印:

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

Arduino Nano 的屏蔽:

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

这很容易。

代码

  • Levitator.ino
  • Levitator_PID.ino
Levitator.inoArduino
带有 Arduino 的磁悬浮玩具代码。
Easy(无PID)
//==========================================================|// Ekobots Innovation Ltda - www.ekobots.com.br |// Juan Sirgado y Antico - www.jsya.com.br |//- -------------------------------------------------- ------|// 程序磁悬浮仪 - 2016/02/06 |// 版权所有 2016 |//============================================================|int anaPin =1; // Arduino 模拟引脚 1;int digPin =5; // Arduino 数字引脚 5;int subPin =7; // Arduino 数字引脚 7;int addPin =8; // Arduino 数字引脚 8;//int anaVal =0; // Analogic Read(Hall Sensor) Value;boolean digVal =0; // 数字写入(电磁体)值;//int levVal =228; // 悬浮点值;int dlyVal =250; // 延迟值微秒;//----------------------------------------- ----------------|void setup(){ // 悬浮器初始化开始; Serial.begin(57600); Serial.println("JSyA 的悬浮器"); Serial.println("开始..."); // 数字引脚工作模式设置; pinMode(digPin,输出); pinMode(subPin, INPUT_PULLUP); pinMode(addPin, INPUT_PULLUP); // 悬浮器初始化 End; Serial.println("Started.");}//------------------------------------------------ --------------------|void loop() { // 霍尔传感器读取(磁场强度); anaVal =模拟读取(anaPin); // 增加悬浮点的值; if (digitalRead(addPin) ==LOW) { levVal++;值日志();延迟(250); } // 降低悬浮点的值; if (digitalRead(subPin) ==LOW) { levVal--;值日志();延迟(250); } // 检查悬浮点;如果(anaVal  levVal) { digVal =HIGH; } // // 打开/关闭电磁铁; // 基于传感器值和悬浮点;数字写入(digPin,digVal); delayMicroseconds(dlyVal);}//----------------------------------------- ---------------|void value_log()// 模拟/数字/悬浮值打印;{ // 显示霍尔传感器值; Serial.print("anaVal=["); Serial.print(anaVal); Serial.print("]-"); // 显示电磁铁状态 On=1/Off=0; Serial.print("digVal=["); Serial.print(digVal); Serial.print("]-"); // 显示悬浮点值; Serial.print("levVal=["); Serial.print(levVal); Serial.println("];");}//============================================================|
Levitator_PID.inoArduino
带有 Arduino 的磁悬浮玩具代码。
硬(PID 版本)
//==========================================================|// Ekobots Innovation Ltda - www.ekobots.com.br |// Juan Sirgado y Antico - www.jsya.com.br |//- -------------------------------------------------- ------|// 程序磁悬浮器PID - 2016/10/06 |// 版权所有2016 |//============================================================|int anaPin =1; // Arduino 模拟引脚 1int digPin =5; // Arduino 数字引脚 5int subPin =7; // Arduino 数字引脚 7int addPin =8; // Arduino 数字引脚 8 //int anaVal =0; // 类比值 digVal =0; // 数字值//int levVal =262; // 悬浮值int dlyVal =10; // 延迟值//float timVal =0; // 时间值//-------------------------------------------- -------------|// PID 值float setpoint =0;float测量值=0;float输出=0;float积分=0;float导数=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("JSyA 的悬浮器"); Serial.println("开始..."); // 数字引脚工作模式设置; pinMode(digPin,输出); pinMode(addPin, INPUT_PULLUP); pinMode(subPin, INPUT_PULLUP); // timVal =毫秒();设定值 =levVal; // 悬浮器初始化 End; Serial.println("Started.");}//------------------------------------------------ --------------------|void loop() // PID{ // 霍尔传感器读取(磁场强度); anaVal =模拟读取(anaPin); // PID 计算测量值 =anaVal;错误 =设定点 - 测量值;积分 =积分 + 误差 * dt;导数 =(error - previous_error) / dt;输出 =(-Kp * 误差) + (-Ki * 积分) + (-Kd * 导数); previous_error =错误; // 最终值设置 digVal +=output; // 检查悬浮点的值;如果 (digVal <0) digVal=0;如果 (digVal> 255) digVal=255; // 增加/减少电磁铁的值; // 基于传感器值和悬浮点;模拟写入(digPin,digVal); // 显示调试的日志值;// if((millis()-timVal)> 500)// {// value_log();// timVal =millis();// } // 增加悬浮点的值; if (digitalRead(addPin) ==LOW) { setpoint++;值日志();延迟(250); } if (digitalRead(subPin) ==LOW) { setpoint--;值日志();延迟(250); } // 电磁铁状态变化之间的时间; delayMicroseconds(dlyVal);}//----------------------------------------- ---------------|void value_log()// 模拟/数字/悬浮值打印;{ // 显示霍尔传感器值; Serial.print("anaVal=["); Serial.print(anaVal); Serial.print("]-"); // 显示电磁铁状态 On=1/Off=0; Serial.print("digVal=["); Serial.print(digVal); Serial.print("]-"); // 显示悬浮点值; Serial.print("setpoint=["); Serial.print(setpoint); Serial.println("];");}//============================================================|

示意图

Fritzing IDE

制造工艺

  1. DIY 最简单的 IV9 Numitron 时钟与 Arduino
  2. 使用 K30 传感器监测二氧化碳
  3. 聋盲通信与 1Sheeld/Arduino
  4. 使用 Arduino 控制硬币接收器
  5. Arduino 带蓝牙控制 LED!
  6. 带有 Arduino 或 ESP8266 的电容式指纹传感器
  7. 玩 Nextion Display
  8. Nunchuk 控制机械臂(使用 Arduino)
  9. Arduino 排斥电磁悬浮
  10. 使用 Arduino 测量太阳辐射
  11. 带 Arduino 的迷你雷达
  12. 如何用 Arduino 制作音乐