2020年1月24日金曜日

磁気浮上装置(Magnetic Levitation)

以前から作りたいと思っていた磁気浮上装置(Magnetic Levitation)!!
先日ネットサーフィンをしていたところ、このサイトを見つけました。
とても丁寧にかつ詳細に説明して下さっていて、
読んでいると私でも作れそうな気がして挑戦してみることに・・・

しかし、なかなか思うように進まず、悪戦苦闘しながらようやく完成しました♪ 


<ホールセンサーについて>
この装置ではホールセンサーで磁石の位置検出を行っています。
ホールセンサーには主に3種類のものがあるようです。
①ラッチタイプ(磁石の接近をHigh or Lowで検出し、別の極が接近するまで記憶する)
②スイッチタイプ(磁石の接近をHigh or Lowで検出)
③アナログタイプ(磁石の接近を数値で検出)
詳細はこちら

今回はアナログタイプのものを使用しています。
しかし、同じアナログタイプでもセンサーの型番やロットによってまでも
出てくる数値や特性はまちまちです。
Arduinoのシリアルモニターで見ると、出力される数値を見ることが出来ます。
例えば今回使用した、ホールセンサー「UGN3503」(503 224)は
(電磁石が近くにない状態で)
通常500前後の値、
(センサーの刻印側から)ネオジム磁石のN極を近づけると約320~158、
S極を近づけると約700~883の値となりました。

今回の装置では電磁石の下にホールセンサーをつけるので
電磁石の下がNかSか?によっても出てくる数値は変わってきます。

<この装置の仕組み>
この装置は下図のような仕組みでうまく落ちることなく制御されています。

ホールセンサーから出てくる数値はArduinoのanalogRead(0)で読み取ります。
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です。
(磁石も含めた総重量です。)

<ボルト人形>
目から上が磁石です。
φ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 721」と刻印されてるホールセンサーの場合>
上の方でも書きましたが、同じ「UGN3503」でも
「503 224」と「503 721」では反応が異なっていました。
(224、721以外にもあるようですが、手元になく試していません。)

Arduinoのシリアルモニターでホールセンサーから出力される数値を見ると
(電磁石が近くにない状態で)
通常510前後の値(224よりやや高め)
ネオジム磁石のN極を近づけると約220~159(224より低め)
S極を近づけると約830~883(224よりかなり高め)の値となりました。

上で紹介した「503 224」と同じように作って
プログラムの if ( x <645 )をif ( x <790 )にすると、
取りあえず浮きますが、かなりパワーが弱くそれほど重いものは浮きません。

そこで、NとSを全て入れ替え、プログラムの数字も変更してみました。
・ぶらさげる磁石のN極,S極を反対にする
・電磁石は最初のチェックで上がN極になるようにする。
・プログラムは if ( x <174 )くらいの数値にする。

これで取りあえず77gのものを振動することなく浮かすことが出来ましたが、
「503 224」に比べるとやや不安定な気がします。
もう少し対策を考えた方がいいかも知れません。

~~~~~~~~~~~~~~~~~~

今回は長文となり申し訳ありません。
わかりにくい点も多々あると思いますが、
最後までお読み下さって、本当にありがとうございました。

6 件のコメント:

  1. ciheさん 月並みな言葉ですみませんがまたまた凄いですね。Hall素子について詳しい説明、データシートのことなども紹介されてとても有難いです。コンピューターについても駆使できるということがよくわかります。吊り下げられるものが手を離して以降振動する件で「物を掴もうとするがその場所よりも伸べたり、引いた手の位置のずれが次第に大きくなりついには転んでしまう病気の人がいた」という話を思い出しました。まるで発振現象みたいです。③の方法など、検出値を微分した値も考慮した微分制御的効果みたいです。本当にワクワクしながら読ませていただきました。有難うございます。

    返信削除
    返信
    1. 渡辺先生、嬉しいコメントを下さってありがとうございます♪
      物理現象は色んな事象の組み合わせだということがよくわかる実験でした。
      でも同じような病気の方がおられるとはビックリですね。この方は完治されたのかしら・・・?
      実験装置を改良するのは、何度でも作り変えたりプログラムを書き換えたり出来ますが
      人の治療の場合はそのようなわけにはいかないから、お医者さんは大変でしょうね。
      物理も医療も先人の方々の研究のおかげで今があると思うと本当にありがたいです。

      削除
  2. 振れ幅が大きくなる病気のこと、ネットで調べましたが 見当たりませんでした。済みません。パーキンソン病の方で、歩くとき加速が止まらない(前傾が大きくなる)という症状はあるようです。振幅が大きくなるわけではありませんね。間違いでした。
    コンピューターの入出力はA-D変換、D-A変換端子もあるのですか。私の場合は専用IC
    を購入して自作でした。それも、8bitどまりです。

    東芝トランジスタ工場では電気炉の修理を担当していましたが、そのときの温度制御はニクロム線式の場合ON,OFF制御とスライダックの出力電圧を変える(多分比例制御)方式でした。そのうちPID制御のものも入りましたが、理解できませんでした。
    chieさんの作品では使われるキャラクターが可愛くて面白く楽しいです。センスの良さ、お人柄でしょうか。
    一つの問題解決に100時間、根性の方でもありますね。

    返信削除
    返信
    1. 病気の方、パーキンソン病だったのですね。
      マイコンの入力はDCのみなので、電源アダプタ(今回は9V)で入力しました。DC→DC基盤は結構持ってますが、DC→ACとなるものは持っていないです(^^;
      PID制御に関しては私もさっぱりわからないです。
      そうなんです!根性だけは自信があります。
      取りあえず100時間少々でうまくいきましたが、うまくいってなかったらまだまだずっとやってると思います。(笑)

      削除
    2. やはり、根性の方でしたか。頼もしいです。例のスイッチの件今日中にアップロードします。三沢航空科学館では何とか、三路スイッチ、四路スイッチまで進んでもらいました。
      これから、ケーズデンキに滅茶苦茶古いFAX2台のリサイクル処分をお願いに行ってきます。
      お風邪など召しませんように。

      削除
    3. スイッチ、楽しみにしています。
      私の方は今から加古川のファラデーラボです。今日は気象がテーマです。
      渡辺先生もお風邪など引かれませんように・・・

      削除