Arduinoを使った磁気浮上(吊り下げ)の実験
◆まえがき
以前からやってみたかった磁界を使った物体の吊り下げの実験をやってみました。まだまだ改良したい点が多いのですが、とりあえず現在の状態をまとめて公開します。
◆動画
釣り上げ方式の磁気浮上が上手くいった。オシロの画面はコイル電流波形。
— ラジオペンチ (@radiopench1) July 31, 2023
コイルはリレーを分解、ホール素子もDVDのモーターを分解して入手。
Arduinoで制御し、磁界検出の閾値をコイル通電時に少しシフトすることで安定域が拡大出来た。 pic.twitter.com/ttWkLqjcBg
◆動作原理
磁石が鉄片に吸い付こうとするのを、コイルの磁界で喰い止めて中間状態、つまり空中に浮いた状態を維持しています。この状態は不安定なので、ホールセンサを使って磁界の強さをフィードバックすることでバランスを維持する仕掛けになっています。
なお、上記の方法以外に磁石を引き付けたい時は吸引、引き離したい時は反発するようにコイルの電流の向きを入れ替える方法があります。この場合、フルブリッジのドライブ回路が必要になって回路が複雑になるので、今回はやりません。
ネットを探すと先人の方の事例がいっぱい公開されているので、これらを参考にしながら進めて行きました。
【事例】
・磁気浮上装置(Magnetic Levitation)(智恵の楽しい実験)
・磁気浮遊の学習 ー磁気浮遊への道 1ー (ホームメードガービッジ)
◆電磁石の準備
この実験で一番厄介なのがコイルの調達です。自分で巻く人が多いようですが、その作業はかなり大変です。コイルの巻き枠をきちんと作らないといけないし、そもそも線を巻く作業にかなりの時間が掛かりそうです。あと、磁界が激しく変動する場所に使うので、鉄心には軟鉄を使う必要があります。
そんなことで自作するのは面倒なので、リレーを分解して電磁石の部分を取り出すことにしました。
・リレー
手持ちにあったこのタイプのリレーを壊すことにしました。コイル電圧は12Vです。
この状態から、接点や継鉄、可動鉄片などを取外しコイルだけにします。なお、このコイルのインダクタンスは330mH、直流抵抗は423Ωでした。
◆ホールセンサー
新たに買うのも面倒なので、DVDのスピンドルモーターに付いているホール素子を使うことにしました。
・モーターの基板
1, 2, 3 というシルク表示がある4ピンの部品がホール素子です。この素子の仕様は不明ですが、電源とGNDピンは3個の素子がコモンに配線されているのでそれと判ります。となると残る2ピンがホール電圧の+と−と言うことになります。
ここまで判ればセンサーを実際に動かして極性を確認すれば準備OKです。前項で調達したコイルに電流を流して磁界を発生させ、ホール電圧の変化を測ればピンの極性が判ります。磁界は右ネジの法則で発生し、磁力線が出る部分がN極になります。話が前後しますが、このセンサーの電源ピン間の抵抗は280Ωでした。
◆コイルへホール素子を取り付け
ホール素子を基板と一緒に切り出し、線を付けておいてコイルの先端に接着して固定します。
吸引された磁石がぶつかるとホール素子が壊れる恐れがあるので、保護を兼ねて接着剤を多めに盛っておきました。接着にはUVレジンを使いました。
◆回路図
制御にArduino UNO を使い下記のように配線します。
上の方に書いた説明と重複しますが、この図を見ながら説明すると判り易いので再度動作を解説しておきます。
ネオジム磁石はコイルの鉄芯に吸着しようとして上に動きます。磁石が上に動くとホール素子付近の磁界が強くなって +Hole の電圧が上昇します。マイコンのアナログ入力 (A0ピン) でこの電圧を検出し、設定値を超えたらQ1をONにしてコイルに通電。コイルは下側がN極になる向きに磁界を発生させるので、磁石のN局と反発して磁石が上に動くのを阻止。磁石が下に動けば+Holeの電圧が下がってコイルの通電をOFF。このような動作を高速で繰り返すことで、磁石を空中に浮遊させます。
ホール素子の電源電圧を3.3Vにしているのは発熱を抑えたかったためです。センサーの出力が3.3V以上になることは無いので、AREFに3.3Vを入れ、プログラムは analogReference(EXTERNAL); とやった方が有利になりますが、面倒なので手抜きしました。
◆プログラム
公開されている事例では、ホールセンサーの出力が一定値を超えると単純にコイルに通電、下回ると通電OFFにしているプログラムがほとんどでした。ただこのやり方では、コイルに通電した瞬間に磁界を弱めてしまうので、磁石の正しい位置の検出が出来なくなってしまう恐れがありそうです。
そういう点が気になったので、コイルのON/OFF切り替えのスレッショルドレベルを2種類持たせる方式にしています。
プログラムは以下の通りです。Arduino UNOで使うことを想定したプログラムです。
// 磁気吸引力による浮上(吊り下げ)File:20230804_MagLevitation.ino // コイルON/OFF で制御の閾値を切り替え // 2023/08/04 ラジオペンチ http://radiopench.blog96.fc2.com/ #define HV1 425 // コイルOFF時の閾値(磁界がこの値以上になったらコイルに通電) #define HV2 15 // コイルON時の閾値変化量(この値だけ減らす) int x; boolean m = false; // 制御モードフラグ(false:コイルOff時, true:コイルOn時) void setup() { pinMode(2, OUTPUT); // コイル励磁ピン } void loop() { x = analogRead(0); // 磁界の強さを測って if (m == false) { // コイルOFF時で、 if ( x > HV1) { // 磁界がOFF時の閾値以上だったら、(磁石が上に来ていたら) digitalWrite(2, HIGH); // コイルを励磁(磁界を打ち消して押し下げる) m = true; // モードフラグをコイル励磁状態にセット } } else { // コイルON時で、 if ( x < HV1 - HV2) { // 磁界がON時の閾値以下(磁石が下)だったら、 digitalWrite(2, LOW); // コイルOFF(磁界の打ち消しを止めて引き上げる) m = false; } } // 上記以外のケースは現状維持 }
非通電時の閾値はHV1、通電時の閾値は HV1-HV2で制御しています。なお、上記の値は例で、磁石や、コイル、センサーの組み合わせで値は変わってきます。
◆調整
プログラムのHV1とHV2を変えて最適な組み合わせを探します。まずはHV2を10くらいに設定し、HV1を変えてワークが浮上する値を求めると良いです。良さそうな値が見つかったら、HV1とHV2の最適な組み合わせを探すと良いと思います。
ちなみに、HV2をゼロに設定すれば他の方の公開事例のプログラムと同じ状態になるはずです。ただ、この状態では安定して浮上させることは出来ませんでした。コイルのインダクタンスや浮上体のマスバランスなどの条件によって安定浮上状態が得られる条件が変わるのだと思います。
◆動作例
・全体外観
・Φ6mm磁石二段+つまようじ
つまようじの先にM2のナットを差し込んで下側を重くしています。
・Φ6mm磁石二枚+ストロー
ストローの下端にもネオジム磁石を1つ取り付け、下に10円玉を置いて渦電流で制動を掛けてみました。
◆浮上の安定性について
調整がうまく行けば長時間浮上状態を維持できます。しかし風などの外乱があると、それがきっかけになって横方向の振動が始まり、だんだん振幅が大きくなると浮上状態が破綻してワークが落下、あるいは上にくっついてしまうことがあります。
特に問題になるのが横方向の振動です。横方向のセンターリング力は非常に小さく、また浮上状態では空気の粘性くらいしか振動を抑制する要素が無いので、揺れ始めるとなかなか収まりません。このあたりは対策を考えてみたいと思います。
◆波形確認
浮上時の各部波形は以下のようになっていました。
上から、ADCサンプリングタイミング、ホール素子出力、コイル電流波形です。ADCサンプリングタイミングは、プログラムを修正してパルスを出すように変更して観察しました。また、コイル電流はパワーFETのソースに10Ωのシャント抵抗を入れて測定しています。
・ADCサンプリング周期は約120μsでArduino UNOならこんなものです。
・電流波形の周期は6ms程度で、これがフィードバック制御の周期になると思いますが、感覚的にはもっと速くしておきたいところです。ただ、コイルのインダクタンスがかなり大きいので、このコイルでは難しいかも知れません。
・電流の上昇がゆっくりしているのはコイルのインダクタンスと直流抵抗で決まる時定数のためだと思います。コイルは330mH/423Ωだったので単純なR/Lで求まる時定数は0.78msなのでちょっと合っていない感じです。磁石の移動に伴いインダクタンスが変化しているのかも知れません。
・ホール素子の電圧は磁界の強さの変化を表わしていて、コイル電流の増加で磁界が弱まるのは予想通りです。コイル電流がゼロになっても磁界がすぐに増加していないのは、コイルに並列に入れたフリーホイールダイオード (D1) を通して電流が流れ続けているからだと思います。
・波形の動画
磁気吊り下げ実験の各部波形を観察してみた。上からADC周期、ホール素子電圧、コイル電流。
— ラジオペンチ (@radiopench1) August 2, 2023
電流ゼロにしてもフリーホイールダイオードの効果で磁界は直ぐにゼロにはならないんだね。
あと、アナログオシロの残像効果でタイミングが離散化されている様子が判りやすい。 pic.twitter.com/JYykUN9hSU
◆まとめ
大きな外乱を加えなければ安定して浮上状態を維持できる物が出来ました。空中に物体が浮いているのはとても不思議です。
この実験は電気磁気学の演習として面白いと思います。コイル、ホール素子の電源、ホール素子の信号の極性、更に磁石の向きが合っていないと正常に動きません。
風が吹いたりすると振動が始まり最終的に磁石が落下、あるいは上に吸着されてしまうこととがあります。そのあたりはもっと安定して浮上状態を維持できるように改良してみたいと思います。