查看: 6813|回复: 14

[项目] 用arduino制作气体磁悬浮盆景

[复制链接]
你见过空气磁悬浮的盆栽吗?
而且用Arduino就可以做出来!
快来一起看国外创客funelab的
“气体磁悬浮盆景”作品吧!
FUDBFC8JHKTXZOR.LARGE.jpg


作者首次在Kickstarter众筹平台上看到这个项目时,就深深喜欢上了它:Air Bonsai(气体磁悬浮盆景)。我真的很惊讶那位日本作者是如何制作的,这件作品真的美丽而又神奇。

花盆.gif

一旦了解了基本原理,我们就可以打开任何谜底。一个多月前,我了解到诸多关于气体盆景的概念,实际上它就是一种磁悬浮现象。我还翻阅过诸多关于如何实现磁悬浮的教程,所有这些教程指出了磁悬浮是通过电控控制的电磁铁,实现物体在上方漂浮的。但是,我没有找到关于如何制作类似于气体盆景的电路说明。

那么大家可以看下我是如何通过Arduino一步步制作出属于自己的盆景的。

第1步:演示视频


▲请观看上述视频,快速了解如何实现磁悬浮

请注意视频说明非常简单,项目开始提醒事项一点都不拖沓。只需观看视频,然后按照以下所有步骤,即可确保您成功制作出属于自己的气体磁悬浮盆景。
第2步:工作原理
FKAI6Z8JHKTY0K2.ANIMATED.LARGE.gif

经过仔细研究,我意识到kickstarter平台的气体盆景系统电路非常复杂,不存在任何微控制器,我对它的模拟电路非常陌生,这看起来似乎无能为力。但是我仔细观察后,却发现它的原理其实非常简单,那就是让一块磁铁悬浮在另一块磁铁上方。我需要做的仅仅是让悬浮磁铁不会坠落。

FDA9DQSJHKTY0K3.LARGE.jpg F2BFT5TJHKTY0K4.LARGE.jpg

我认为使用Arduino实际上比模拟电路计算要容易得多。我通过这种方式大获成功,真的很简单。
磁悬浮包括两个部分,基础组件和悬浮组件。
1.基础组件
  • 该部分位于底部,通过磁铁创建一个圆形磁场,以及能够控制整个磁场的电磁铁
  • 每个磁铁都包含两极:北极和南极。实验表明,异性相吸,同性相斥。四个圆柱形磁铁放置在正方形中,并具有相同的极性,从而向上形成一个圆形磁场,以推动任何磁体发生转动,这些转动的磁体具有相同的磁极,并位于这些圆柱形磁铁之间。
  • 四个电磁铁放置在同一正方形中,彼此对称形成一对,它们的磁场总是彼此相反。
  • 霍尔传感器和驱动电路控制着这些电磁铁。通过将电流转移流过电磁铁,在电磁铁上形成相反的两个电极。

2.悬浮组件
  • 基础组件上方放置一块磁铁,可以吸起一个小铁罐。


如何工作?
顶部磁铁经由底部磁铁的磁场提升,因为它们的磁极相同。然而,它顶部磁铁比较容易翻到,从而导致两块磁铁相吸。
为了防止顶部磁铁上下颠倒,电磁铁会产生磁场推动或拉动以平衡顶部磁铁,这要归功于霍尔传感器。
电磁铁通过两个X轴和Y轴进行控制,导致顶部磁铁保持平衡和悬浮状态。
控制电磁铁并不简单,这需要您对PID控制器有着非常充分的认识,我们将在下一步中进行详细的讨论。
第3步:PID控制器
什么是PID?
源自维基百科:“比例-积分-微分控制器(PID控制器或三项控制器)是一种控制回路反馈机制,它广泛应用于工业控制系统以及其它各种需要连续调制控制的应用中。PID控制器能够持续计算误差值{\通过字母e(t)表示},误差值表示期望设定值(SP)和测量过程变量(PV)之间的差异,并应用基于比例、积分和微分项(分别通过P、I和D进行表示)的校正过程,这三个字母构成了控制器的名字。”
简而言之:“PID控制器计算‘误差’值,并将其作为测量[输入]和所需设定值之间的差值。控制器试图通过调节[输出]来实现误差的最小化。”
因此,您告诉PID控制器需要测量哪些内容(“输入”)、待测量的位置(“设定点”),以及待调整的变量(“输出”)。
通过Youtube网站轻松理解PID:https://www.youtube.com/watch?v=UR0hOmjaHp0

F5J6QZAJHKTY0LX.ANIMATED.LARGE.gif FFE35PRJHKTYHK4.LARGE.jpg


随后PID将调整输出结果,试图使输入等于设定值。作为参考,在汽车领域,输入、设定点和输出分别为速度、期望速度和油门角度。
在此项目中:
1.输入是霍尔传感器当前的实时数值,由于悬浮磁铁位置会实时变化,因此该数值将不断刷新。
2.设定点是霍尔传感器的数值,当悬浮磁铁处于平衡位置时,在磁铁基座中心进行测量。该指数是固定的,不会随时间而发生变化。
3.输出将是控制电磁铁的速度。
感谢Arduino社区编写出如此便捷的PID库。
关于Arduino PID的更多信息,请访问https://playground.arduino.cc/Code/PIDLibrary
我们需要在Arduino中使用一对PID控制器,一个应用于X轴,另一个应用于Y轴。
现在是时候开始购买必要组件了。
第4步:材料清单
以下是您需要针对此项目而购买的组件列表,请确保在开始前您拥有所有这些组件。

F9XFQ1IJHKTY0OS.LARGE.jpg


部分组件相当流行,我相信您已经拥有这些库存设备。

TIM图片20180813173213.png

组件随附数量和推荐链接。大多数推荐链接来源于Aliexpress,您可以在该网站购买到经济实惠的组件并能够享受免费送货服务。如果拥有更加简单的方式,您还可以在别处购买这些组件。
  • LM324N - X1  
  • 悬浮线圈 - X4
  • SS495a霍尔传感器 - X2
  • 12V 2A DC适配器 - X1
  • 环形磁铁D15 * 4mm - X8
  • 直流电源插孔 - X1
  • 环形磁铁D15 * 3mm - X4
  • L298N模块 - X1
  • 14引脚插座 - X1
  • 磁铁D35 * 5mm - X2
  • 5.6K欧姆电阻 - X2
  • 180K欧姆电阻 - X2
  • 47K欧姆电阻 - X2
  • 10K欧姆电位器 - X2
  • 丙烯酸板A5尺寸 - X1
  • 木罐 - X1
  • PCB面包板 - X1
  • 3mm螺丝 - X8
  • 电线


迷你方案,如肉质植物、仙人掌、迷你盆景


第5步:工具
以下是几乎所有人都会用到的工具列表。

TIM图片20180813163804.png

  • 电烙铁
  • 手锯
  • 万用表
  • 螺丝刀
  • 示波器(可选,您可以使用万用表代替)
  • 台钻
  • 热胶枪
  • 电子钳

步骤6:LM324运算放大器和L298N驱动器和SS495a

TIM图片20180813164224.png

LM324运算放大器
运算放大器(op-amp)是目前最重要、应用最为广泛以及最通用的电路之一。
我们使用运算放大器对霍尔传感器的信号进行放大,目的是增加灵敏度,使arduino能够很容易地识别磁场的变化。如果霍尔传感器输出仅变化几个mV,那么在Arduino中通过放大器后,这个数值可能会变化数百个单位。这对于保持PID控制器的平稳稳定是非常有必要的。
在此教程中了解关于运算放大器工作原理的更多信息。
我选择了价格极为低廉的通用运算放大器LM324,您可以在任何电子商店购买到它。LM324包含4个内部放大器,使用非常灵活,但是在这个项目中我只需要两个放大器,一个用于X轴,另一个用于Y轴。
您可以在以下步骤中找到如何组装LM324的说明。

L298N模块
双H桥L298N通常用于控制两个直流电机的电机速度和方向,或轻松控制一个双极步进电机。 L298N H桥模块可用于工作电压介于5和35V DC之间的电机。
此外我还用到一个板载5V稳压器,因此如果您的电源电压高达12V,您还能够通过电路板获得5V电压。
在此项目中,我采用L298N控制两对电磁线圈,并使用5V输出为Arduino和霍尔传感器供电。


模块引脚:
  • 输出2:一对电磁铁X.
  • 输出3:一对电磁铁Y.
  • 输入电源:DC 12V输入
  • GND:接地
  • 5v:输出到Arduino和霍尔传感器的5v电压
  • EnA:针对Out 2启用PWM信号
  • In1:启用输出2
  • In2:启用输出2
  • In3:启用输出3
  • In4:启用输出3
  • EnB:针对Out3启用PWM信号


连接Arduino:我们需要拆除EnA和EnB引脚的2根跳线,然后将6个引脚In1、In2、In3、In4、EnA、EnB分别连接到Arduino。以下步骤对其进行了详细说明。
通过此说明书了解关于L298N模块的更多信息。

SS495a霍尔传感器
SS495a是一款带模拟输出的线性霍尔传感器。
注意模拟输出和数字输出之间的区别,此项目不会用到带数字输出的传感器,因为后者只有两种状态“1”或“0”,您无法通过这两种状态测量磁场输出。
模拟传感器的电压范围为250mV至Vcc,您可以使用Arduino的模拟输入端进行读数。
我们需要通过两个霍尔传感器测量X和Y轴磁场。

第7步:钕磁铁(化学式:Ndfeb)
TIM图片20180813164249.png

维基百科:“钕是一种具有铁磁性的金属(更具体地说,它具有反铁磁性质),这意味着它能够像铁一样被磁化,但是其居里温度为9 K (−254 °C),因此实际上它的磁性只会出现在极低温度下。然而,钕与过渡金属(如铁)