Arduino UNO で磁気浮遊 ー磁気浮遊への道 2ー
前回は Linear Hall Effect Sensor なる磁気センサとオペアンプ等のディスクリート部品のみで磁気浮遊を楽しみました。
今回はArduino UNO を用いて磁気浮遊を堪能しました。
マイコンによって磁力を制御し浮遊した磁石の位置を変えれるのでは
と考えたのです。
目次
動作
まずは手っ取り早く動作をご覧いただきたくよろしくお願いいたします。
磁気浮遊
もっとギュンギュン動かしたいな
今のところ0.5mmほど上下移動#Arduino #重力にまけるな pic.twitter.com/sCQf8mNRft— HomeMadeGarbage (@H0meMadeGarbage) May 6, 2020
可変抵抗によって磁気センサによる電磁石への電流をON/OFFする閾値を変えて
磁力を制御して浮遊磁石の位置をコントロールしています。
現状1mmも移動しておりませんが。。。
もっとギュンギュン動かせるように勉強しますが、
忘れるので一旦ここでまとめますね。
構成
磁気センサで磁力(つまり磁石との距離)を観測し、可変抵抗の電圧と比較して電磁石に流す電流をON/OFFします。
電磁石で磁石を引く力と重力が釣り合うと磁石は空中にとどまります。
可変抵抗によって閾値を変えて磁力を制御して浮遊磁石の位置をコントロールします。
電磁石には逆起電力によるサージ保護のためにダイオードを並列接続しています。
部品
- Arduino UNO
- 電磁石
- 磁気センサ A1324LUA-T
5V給電で磁気がない場合は2.5V、一方の磁極を近づけると電圧上昇、他方を近づけると電圧降下します。
- N-MOSFET IRF520PBF
- ダイオード 1N5819
- 10kohm スライドボリューム
Arduino コード
磁気センサ A1324LUA-Tの出力電圧と可変抵抗の電圧をアナログ入力ピンで比較して
トランジスタのゲートをON/OFFして電磁石に流す電流を制御しているだけです。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
const int gate = 4; int sensorValue = 0; int volValue = 0; int refMax = 994; int refMin = 980; void setup() { pinMode(gate, OUTPUT); } void loop() { sensorValue = analogRead(A0); volValue = map(analogRead(A1),0, 1023,refMin, refMax); if(sensorValue > volValue){ digitalWrite(gate, HIGH); }else{ digitalWrite(gate, LOW); } } |