Arduinoで磁気浮上装置の自作です。いろいろと改良を加えて、ArduinoからのPID制御による浮上テストを再検討です。
概要
▼前回検証▼
▲かろうじて浮上?してますが、PIDのパラメータチューニングがなかなかうまくいかず振動しまくりです。この検証でいろいろと見えてきたので、今回、回路と制御プログラムに変更を加えて再度浮上テストを行ってます。
▼改良後▼
▲ボルト付けてますが特に意味は無いです。1軸制御だけですが、だいぶ安定浮上するようになりました。
いったんここまでの改善内容をまとめておきます。
コイルの接続方法見直し(回路変更)
▲まず大きく変えたところはコイルの制御方法(回路)です。前回までは上図のように対となるコイルを直列に接続して、電流の向きと大きさを制御して引力と斥力を同時に切り替えることで水平位置を制御していましたが、各々コイルをそれぞれで制御する方法に変えました。
▼回路▼
両コイルを同じ方向の磁場が発生するようにしてます。電流の強さを制御して斥力の強弱のみで水平位置を制御する方法に変更。この方法自体は改善を期待しているわけではなく、個人的にこちらの方がPID制御がやり易く感じたので変更してます。
処理速度向上
あとは明らかに反応が遅い感じだったので、Arduinoのスケッチ(ソース)を見直して制御ループの処理速度をアップしてます。
▼シリアル通信部抜粋▼
Serial.print(magX); Serial.print(","); Serial.print(magY); Serial.print(","); ⁝ Serial.println(dt);
▲制御中のいろいろな情報を文字列のまま送信していたのですが、これがかなり時間を使ってしまっていたので送信方法を変更。
ほか、大きなところではAD変換の速度向上、またループ速度には関係ないですが、PWMも、Arduinoデフォルトでは490Hz程度ですがレジスト弄って31KHz程度まで周波数を上げてます。
あとは少しソースの見直しを行って、もとは制御周期:830Hz(1200μs)程だったのを4000Hz(250μs)程まで短縮してます。もう少し高速に制御したいのですがいったんこれくらいで再検証です。
再テスト
▲PID制御のパラメータを現物合わせ後の浮上テストです。PID制御の中身はそれほど変えてなく、ホールセンサーで位置を観測して、コイルに流す電流の強弱(磁場の強弱)を制御してます。
当初に比べてだいぶ随分改善できました。が支えがあるので一見うまく浮上しているようにも見えますがどうなんでしょう。次回から支えを無くしての浮上検証に入っていきます。
コメント