以前から作りたいと思っていた磁気浮上装置(Magnetic Levitation)!!
先日ネットサーフィンをしていたところ、このサイトを見つけました。
とても丁寧にかつ詳細に説明して下さっていて、
読んでいると私でも作れそうな気がして挑戦してみることに・・・
読んでいると私でも作れそうな気がして挑戦してみることに・・・
しかし、なかなか思うように進まず、悪戦苦闘しながらようやく完成しました♪
<ホールセンサーについて>
この装置ではホールセンサーで磁石の位置検出を行っています。
ホールセンサーには主に3種類のものがあるようです。
ホールセンサーには主に3種類のものがあるようです。
①ラッチタイプ(磁石の接近をHigh or Lowで検出し、別の極が接近するまで記憶する)
②スイッチタイプ(磁石の接近をHigh or Lowで検出)
今回はアナログタイプのものを使用しています。
しかし、同じアナログタイプでもセンサーの型番やロットによってまでも
出てくる数値や特性はまちまちです。
出てくる数値や特性はまちまちです。
Arduinoのシリアルモニターで見ると、出力される数値を見ることが出来ます。
例えば今回使用した、ホールセンサー「UGN3503」(503 224)は
(電磁石が近くにない状態で)
通常500前後の値、
通常500前後の値、
(センサーの刻印側から)ネオジム磁石のN極を近づけると約320~158、
S極を近づけると約700~883の値となりました。
S極を近づけると約700~883の値となりました。
今回の装置では電磁石の下にホールセンサーをつけるので
電磁石の下がNかSか?によっても出てくる数値は変わってきます。
<この装置の仕組み>
この装置は下図のような仕組みでうまく落ちることなく制御されています。
ホールセンサーから出てくる数値はArduinoのanalogRead(0)で読み取ります。
S極が離れると出てくる数値は小さくなり、近付くと大きくなります。
例えば数値が600以下なら、図の左のように引き寄せ
600以上なら、図の右のように反発させる仕組みです。
S極が離れると出てくる数値は小さくなり、近付くと大きくなります。
例えば数値が600以下なら、図の左のように引き寄せ
600以上なら、図の右のように反発させる仕組みです。
<今回作った装置について>
今回作った装置のホールセンサーは、参考にさせて頂いたサイトで使われている
「UGN3503」を使用しました。
(このホールセンサーが届くまでに手持ちの4種類のホールセンサーで試したところ
「A1324LUA-T」でも浮きましたが、浮かすことが出来る重さは「UGN3503」の半分以下でした。)
「UGN3503」は日本で販売されてるところが見つからず
AliExpressの2店舗で購入しました。
注文してから約2週間後に届いたものは「503 224」と刻印されたものでした。
これで工作を進め、振動対策などを行ってうまく浮くようになりましたが、
その後届いた「503 721」と刻印されたものでは
同じ方法では うまくいきませんでした。
「503 721」の対策は最後の方に書いています。
<作り方>
上でも書いたように
「UGN3503」の「503 224」と刻印されてるものを使用した場合の一例です。
モータードライバーは参考にさせて頂いたサイト(TA7291P)とは 別の
ステッピングモータードライバーL298N miniを使用しました。
TA7291Pでも試したのですが、少し発熱が大きいような気がしました。
L298N miniでは発熱は全くありません。
出力もL298N miniの方が少し大きいように思います。
ただ、L298N miniではTA7291Pのような
電磁石の電源電圧のコントロール(TA7291Pの4pin)は出来ません。
(先日「超音波浮遊マシン」を10個ほど作成し、
そのとき使ったL298N miniが たまたま机の上にあったので、これでやってみました。
何と言っても、L298N miniはめっちゃ安いです(笑))
<配線図>
参考にさせて頂いたサイトに記載されているプログラムも少し変更しました。
<私のプログラム>
こちら
プログラムに記載している
if (x <645 )、else if ( x >=645 && x <845 )の数値は
電磁石の強さ、永久磁石の強さ、ぶら下げる重さによって変更して下さい。
目安は
電磁石とネオジム磁石が強く引き合うときは数値を下げ、
電磁石とネオジム磁石の反応が弱く落ちてしまうときは数値を上げます。
【読み取りの高速化について】
通常のanalogRead(0)の読み取りは1秒間に10000回(分周比128)ですが
もっと速く読み取ることが出来ないか?調べてみると
このようなサイトを見つけました。
分周比16とすることで1秒間の読み取りが約66000回と速くなるようです。
(ATmega328Pの場合)
実際、こうすることで電磁石から聞こえる音が変わりました。
(分周比128のときはジ・ジ・ジというような音、16のときはシャーというような音です)
これも振動防止に少しは寄与しているように思います。
分周比4にしてもいいかも知れません。
~~~~~~~~~~~~~~~~~~
最初は上図のように配線をして、
取りあえずプログラムを書き込んでから、電磁石の極性を調べます。
センサーを貼った方ではわかりにくいので、
センサーを貼っていない方(電磁石の上側)でチェックします。
もし電磁石の上側がS極になっていたらOK、N極なら上図の①と②の接続を変えます。
電磁石を手で持ち、おもりが浮くようにプログラムの数値を少しずつ変更します。
うまく浮くようになると、本体を組み立てますが
そのときに問題となるのが おもりの振動です。
参考にさせて頂いたサイトにも記載されていますが
電磁石を手で持っているときは、おもりは振動せずうまくぶら下がっているのですが、
いざ電磁石を固定すると おもりが振動し
振動は徐々に大きくなり、落下するか上の電磁石に張り付いてしまいます。
手で持ってぶら下げるところまでは割と簡単に出来ますが
振動対策がこの装置の一番厄介なところで、
私はこの振動対策だけで100時間以上かかってしまいました(苦笑)
当初、全ての電源をモバイルバッテリー(5V,1A)1つで作ろうとしていたのですが、
おもりを回転させたときの振動を抑えることは出来ませんでした。
モバイルバッテリーで試すときは、上記プログラムの数値を
if (x <585 )、else if ( x >=585 && x <835 程度に変更してみて下さい。
回転させずに、そーっとぶら下げるだけなら問題なく浮くと思います。)
そこでモバイルバッテリーは諦め、9Vの電源アダプタで作成することにしました。
(全ての電源を9V,1Aの電源アダプター1つで)
それと共にとった対策は
①電磁石とおもりのネオジム磁石を強くし、おもりを重くする
②電磁石がある程度 動くことが出来るようにする
③プログラムで読み取り時間を短縮&電磁石の電流が流れない期間を設ける
等で、ようやく振動がなくなり
安定して浮き続けたときは本当に嬉しかったです。
他にも色々と対策方法はあると思いますので
作成される装置によって工夫してみて下さい。
~~~~~~~~~~~~~~~~~~
①
電磁石はM6×35mmの鍋小ねじにφ0.4mmのUEWを1300回巻きにしました。
上下の薄緑色の円形のものは厚紙です。
ナットは少し緩めに留めて穴を作りました。
(ネオジム磁石が電磁石とくっついたとき、ホールセンサーが挟まれて壊れやすいので
ホールセンサーの避難場所のためです。)
②
フィルムケースの底に6mm程度の穴を開け、ホールセンサーを入れています。
③
土台は木で作成し、上部の中心にM4×10mmの鍋小ねじをネジ留めしています。
④
フィルムケースに電磁石を入れて、
(フィルムケースは長すぎるので上部5mmほどカットしています。)
ネジの頭に12mm×3mmのネオジム磁石を貼り付け(S極が上 N極が下です。)
土台の鍋小ねじに貼り付けたところです。
このようにすることで、電磁石がある程度自由に動くことが出来て
振動を抑えることが出来ました。
⑤
ただこのままでは落ちやすいので、針金を上の木材に通して ゆるめに留めています。
後ろ側です。
⑥
電源部です。
左の黒いコネクタに9V1Aの電源アダプタを差し込みます。
真ん中がArduino Nano 互換機(Atmega328)
右がステッピングモータードライバーL298N miniです。
ぶら下げるものは4種類のものを準備しました。
・ボルト人形 ・男の子 ・ランタン ・地球儀
地球儀以外の3種類は77~79gで、地球儀は316gです。
(磁石も含めた総重量です。)
<ボルト人形>
男の子は手にファンの風を当てて回転するようにしています。
ファンはDCファン(25mm角、定格5V)です。
電源を1つにまとめたいので、9V→5VのDC-DCコンバーターを取り付けました。
(下の写真左上のコネクタの付いた基盤)
(組み立て後に「三端子レギュレーター」を使えばよかったかな?と気づきました。)
Arduino、モータードライバーは9V、ホールセンサーはArduinoの5V
DCファンはDC-DCコンバーターからの5Vを給電します。
当初、発振回路で回転させようとしたのですが、
電源を別にしないと不安定だったので断念しました。
ホールセンサーをもう一つ使って回転させる方法もありますね・・・
風船の上の方には穴を開けたペットボトルの蓋をかぶせて
蓋の周囲にも紙を貼っています。
乾燥させて1日後、風船を破裂させて取り外します。
ペットボトルの蓋は外しにくいですが、針で少しずつ隙間を拡げて外します。
取り外した蓋にイルミネーションLED3個を並列接続にしました。
電池はコイン電池を使いたいところですが、
イルミネーションLEDを並列にしたとき、
コイン電池からとれる電流容量が少なく青色が光りにくいので
リチウムイオン電池(16340)を使っています。
磁石はφ20mm×10mm、φ15mm×5mm、φ12mm×3mmの3段重ね、
中にはM10用のナットにφ12mm×3mmを付けたものを入れます。
(S極が上 N極が下です。)
ランタンに入れて、磁石同士をくっつけます。
ランタンンの口にLED付きのペットボトルの蓋を差し込み、
LEDを位置を整えます。
重さは77gです。
当初、相互誘導方式で電池なしで光らせようとしたのですが、
電源を別にしないと不安定になること、
相互誘導の1次回路の電源を5Vにすると、トランジスタの発熱が大きいこと
(トランジスタ2SC2120は勿論のこと、TIP41C、TIP35Cでも熱くなります。
ヒートシンクを付けるとなんとかいけそうな感じではありますが・・・)
だからと言って1次回路の電源を1.5~3Vにすると、光り方が悪くなる
等の理由で、今回は電池で光らせることにしました。
いつか、磁界共鳴方式で光らせてみたいです。
ビタミンの入っていたケースに入れました。
底には6mm程度の穴を開け、ホールセンサーを入れて、
スポンジシートを貼りました。
<「UGN3503」の「503 721」と刻印されてるホールセンサーの場合>
上の方でも書きましたが、同じ「UGN3503」でも
「503 224」と「503 721」では反応が異なっていました。
(224、721以外にもあるようですが、手元になく試していません。)
Arduinoのシリアルモニターでホールセンサーから出力される数値を見ると
プログラムの if ( x <645 )をif ( x <790 )にすると、
取りあえず浮きますが、かなりパワーが弱くそれほど重いものは浮きません。
そこで、NとSを全て入れ替え、プログラムの数字も変更してみました。
・ぶらさげる磁石のN極,S極を反対にする
・電磁石は最初のチェックで上がN極になるようにする。
・プログラムは if ( x <174 )くらいの数値にする。
これで取りあえず77gのものを振動することなく浮かすことが出来ましたが、
「503 224」に比べるとやや不安定な気がします。
もう少し対策を考えた方がいいかも知れません。
~~~~~~~~~~~~~~~~~~
今回は長文となり申し訳ありません。
わかりにくい点も多々あると思いますが、
最後までお読み下さって、本当にありがとうございました。
(このホールセンサーが届くまでに手持ちの4種類のホールセンサーで試したところ
「A1324LUA-T」でも浮きましたが、浮かすことが出来る重さは「UGN3503」の半分以下でした。)
「UGN3503」は日本で販売されてるところが見つからず
AliExpressの2店舗で購入しました。
注文してから約2週間後に届いたものは「503 224」と刻印されたものでした。
これで工作を進め、振動対策などを行ってうまく浮くようになりましたが、
その後届いた「503 721」と刻印されたものでは
同じ方法では うまくいきませんでした。
「503 721」の対策は最後の方に書いています。
<作り方>
上でも書いたように
「UGN3503」の「503 224」と刻印されてるものを使用した場合の一例です。
モータードライバーは参考にさせて頂いたサイト(TA7291P)とは 別の
ステッピングモータードライバーL298N miniを使用しました。
TA7291Pでも試したのですが、少し発熱が大きいような気がしました。
L298N miniでは発熱は全くありません。
出力もL298N miniの方が少し大きいように思います。
ただ、L298N miniではTA7291Pのような
電磁石の電源電圧のコントロール(TA7291Pの4pin)は出来ません。
(先日「超音波浮遊マシン」を10個ほど作成し、
そのとき使ったL298N miniが たまたま机の上にあったので、これでやってみました。
何と言っても、L298N miniはめっちゃ安いです(笑))
<配線図>
参考にさせて頂いたサイトに記載されているプログラムも少し変更しました。
こちら
プログラムに記載している
if (x <645 )、else if ( x >=645 && x <845 )の数値は
電磁石の強さ、永久磁石の強さ、ぶら下げる重さによって変更して下さい。
目安は
電磁石とネオジム磁石が強く引き合うときは数値を下げ、
電磁石とネオジム磁石の反応が弱く落ちてしまうときは数値を上げます。
【読み取りの高速化について】
通常のanalogRead(0)の読み取りは1秒間に10000回(分周比128)ですが
もっと速く読み取ることが出来ないか?調べてみると
このようなサイトを見つけました。
分周比16とすることで1秒間の読み取りが約66000回と速くなるようです。
(ATmega328Pの場合)
実際、こうすることで電磁石から聞こえる音が変わりました。
(分周比128のときはジ・ジ・ジというような音、16のときはシャーというような音です)
これも振動防止に少しは寄与しているように思います。
分周比4にしてもいいかも知れません。
~~~~~~~~~~~~~~~~~~
最初は上図のように配線をして、
取りあえずプログラムを書き込んでから、電磁石の極性を調べます。
センサーを貼った方ではわかりにくいので、
センサーを貼っていない方(電磁石の上側)でチェックします。
もし電磁石の上側がS極になっていたらOK、N極なら上図の①と②の接続を変えます。
電磁石を手で持ち、おもりが浮くようにプログラムの数値を少しずつ変更します。
うまく浮くようになると、本体を組み立てますが
そのときに問題となるのが おもりの振動です。
参考にさせて頂いたサイトにも記載されていますが
電磁石を手で持っているときは、おもりは振動せずうまくぶら下がっているのですが、
いざ電磁石を固定すると おもりが振動し
振動は徐々に大きくなり、落下するか上の電磁石に張り付いてしまいます。
手で持ってぶら下げるところまでは割と簡単に出来ますが
振動対策がこの装置の一番厄介なところで、
私はこの振動対策だけで100時間以上かかってしまいました(苦笑)
当初、全ての電源をモバイルバッテリー(5V,1A)1つで作ろうとしていたのですが、
おもりを回転させたときの振動を抑えることは出来ませんでした。
モバイルバッテリーで試すときは、上記プログラムの数値を
if (x <585 )、else if ( x >=585 && x <835 程度に変更してみて下さい。
回転させずに、そーっとぶら下げるだけなら問題なく浮くと思います。)
そこでモバイルバッテリーは諦め、9Vの電源アダプタで作成することにしました。
(全ての電源を9V,1Aの電源アダプター1つで)
それと共にとった対策は
①電磁石とおもりのネオジム磁石を強くし、おもりを重くする
②電磁石がある程度 動くことが出来るようにする
③プログラムで読み取り時間を短縮&電磁石の電流が流れない期間を設ける
等で、ようやく振動がなくなり
安定して浮き続けたときは本当に嬉しかったです。
他にも色々と対策方法はあると思いますので
作成される装置によって工夫してみて下さい。
~~~~~~~~~~~~~~~~~~
①
電磁石はM6×35mmの鍋小ねじにφ0.4mmのUEWを1300回巻きにしました。
上下の薄緑色の円形のものは厚紙です。
ナットは少し緩めに留めて穴を作りました。
(ネオジム磁石が電磁石とくっついたとき、ホールセンサーが挟まれて壊れやすいので
ホールセンサーの避難場所のためです。)
②
フィルムケースの底に6mm程度の穴を開け、ホールセンサーを入れています。
③
土台は木で作成し、上部の中心にM4×10mmの鍋小ねじをネジ留めしています。
④
フィルムケースに電磁石を入れて、
(フィルムケースは長すぎるので上部5mmほどカットしています。)
ネジの頭に12mm×3mmのネオジム磁石を貼り付け(S極が上 N極が下です。)
土台の鍋小ねじに貼り付けたところです。
このようにすることで、電磁石がある程度自由に動くことが出来て
振動を抑えることが出来ました。
⑤
ただこのままでは落ちやすいので、針金を上の木材に通して ゆるめに留めています。
後ろ側です。
⑥
電源部です。
左の黒いコネクタに9V1Aの電源アダプタを差し込みます。
真ん中がArduino Nano 互換機(Atmega328)
右がステッピングモータードライバーL298N miniです。
改めて回路図も記載します。
~~~~~~~~~~~~~~~~~~
・ボルト人形 ・男の子 ・ランタン ・地球儀
地球儀以外の3種類は77~79gで、地球儀は316gです。
(磁石も含めた総重量です。)
<ボルト人形>
目から上が磁石です。
φ20mm×10mm、φ15mm×5mm、φ12mm×3mmの磁石を3段重ねにしています。
(S極が上 N極が下です。)
磁石はφ20mm×10mm 1個で浮くのですが
電磁石の鉄心との反応が強いので
このように3段重ねにしてみました。
実際に作られる方は、磁石も色々と変えて試してみて下さい。
体や手足はボルト、ナット、小ねじ、傘釘等を
"板金用ハンダ"でハンダ付けしています。
(通常のハンダでは鉄同士はつきません。)
体重77gです。
<男の子>
ボルト人形と同様に板金用ハンダで胴体にM3鍋小ねじをハンダ付けし
木製の手足を取り付けました。
顔は透明カプセルを着色、目に青色LEDを埋め込み、
コイン型電池(CR2032)で光らせます。
電池はカプセルの中に入れています。
頭に取り付けた磁石は
φ20mm×10mm、φ15mm×5mm、φ12mm×3mmを3段重ねにしています。
(S極が上 N極が下です。)
体重79gです。
ファンはDCファン(25mm角、定格5V)です。
電源を1つにまとめたいので、9V→5VのDC-DCコンバーターを取り付けました。
(下の写真左上のコネクタの付いた基盤)
(組み立て後に「三端子レギュレーター」を使えばよかったかな?と気づきました。)
Arduino、モータードライバーは9V、ホールセンサーはArduinoの5V
DCファンはDC-DCコンバーターからの5Vを給電します。
当初、発振回路で回転させようとしたのですが、
電源を別にしないと不安定だったので断念しました。
ホールセンサーをもう一つ使って回転させる方法もありますね・・・
<ランタン>
水風船を膨らませて、その全面にダイソーの「flower paper」の白色を貼ります。
貼るときは木工用ボンドを水で溶きサラサラの状態にしたものを付けながら
貼っていきます。約5枚分の紙を貼り付けました。
風船の上の方には穴を開けたペットボトルの蓋をかぶせて
蓋の周囲にも紙を貼っています。
乾燥させて1日後、風船を破裂させて取り外します。
ペットボトルの蓋は外しにくいですが、針で少しずつ隙間を拡げて外します。
取り外した蓋にイルミネーションLED3個を並列接続にしました。
電池はコイン電池を使いたいところですが、
イルミネーションLEDを並列にしたとき、
コイン電池からとれる電流容量が少なく青色が光りにくいので
リチウムイオン電池(16340)を使っています。
磁石はφ20mm×10mm、φ15mm×5mm、φ12mm×3mmの3段重ね、
中にはM10用のナットにφ12mm×3mmを付けたものを入れます。
(S極が上 N極が下です。)
ランタンに入れて、磁石同士をくっつけます。
ランタンンの口にLED付きのペットボトルの蓋を差し込み、
LEDを位置を整えます。
電池を縦に挿入し落ちないようにクリアファイルで蓋をしてネジ留め、
スイッチも取り付けました。
重さは77gです。
電源を別にしないと不安定になること、
相互誘導の1次回路の電源を5Vにすると、トランジスタの発熱が大きいこと
(トランジスタ2SC2120は勿論のこと、TIP41C、TIP35Cでも熱くなります。
ヒートシンクを付けるとなんとかいけそうな感じではありますが・・・)
だからと言って1次回路の電源を1.5~3Vにすると、光り方が悪くなる
等の理由で、今回は電池で光らせることにしました。
いつか、磁界共鳴方式で光らせてみたいです。
<地球儀>
地球儀は316gと他の3種類の77~79gに比べ4倍の重さがあるため、
電磁石とネオジム磁石は強力にしました。
電磁石はM12×55mmの六角ボルトにφ0.55のUEWを1300回巻きにしています。
底には6mm程度の穴を開け、ホールセンサーを入れて、
スポンジシートを貼りました。
ネオジム磁石はφ25mm×10mmを2個重ねたもの
地球儀の内側にφ20mm×3mmの磁石を入れて、これとくっつけています。
プログラムは if ( x <645 )を if ( x <793 )としています。
(else if ( x >=645 && x <845 )は削除)
~~~~~~~~~~~~~~~~~~
上の方でも書きましたが、同じ「UGN3503」でも
「503 224」と「503 721」では反応が異なっていました。
(224、721以外にもあるようですが、手元になく試していません。)
Arduinoのシリアルモニターでホールセンサーから出力される数値を見ると
(電磁石が近くにない状態で)
通常510前後の値(224よりやや高め)
ネオジム磁石のN極を近づけると約220~159(224より低め)
S極を近づけると約830~883(224よりかなり高め)の値となりました。
上で紹介した「503 224」と同じように作ってS極を近づけると約830~883(224よりかなり高め)の値となりました。
プログラムの if ( x <645 )をif ( x <790 )にすると、
取りあえず浮きますが、かなりパワーが弱くそれほど重いものは浮きません。
そこで、NとSを全て入れ替え、プログラムの数字も変更してみました。
・ぶらさげる磁石のN極,S極を反対にする
・電磁石は最初のチェックで上がN極になるようにする。
・プログラムは if ( x <174 )くらいの数値にする。
これで取りあえず77gのものを振動することなく浮かすことが出来ましたが、
「503 224」に比べるとやや不安定な気がします。
もう少し対策を考えた方がいいかも知れません。
~~~~~~~~~~~~~~~~~~
今回は長文となり申し訳ありません。
わかりにくい点も多々あると思いますが、
最後までお読み下さって、本当にありがとうございました。