Plus電子デバイス・電子工作用語集モータドライバ博士のQ&A読者よりいただいたお問い合わせを元に、ロボット製作者、エンジニアのみなさんに役に立つ技術解説を発信していきます。Plus電子デバイス・電子工作用語集モータドライバ博士のQ&A読者よりいただいたお問い合わせを元に、ロボット製作者、エンジニアのみなさんに役に立つ技術解説を発信していきます。Arduinoでモーター再入門(その3)サーボモーターを使ったデバイスに再チャレンジ!前回の記事では、無線LANを通じてサーボモーターを制御することができました。明らかに連載当初よりサーボモーターと仲良くなってきている実感を感じます。今回は、以前連載の第17回、第18回で制作した水平カメラ台デバイスの実装に再挑戦してみます。目次かつての生まれたての小鹿デバイス!デバイスの仕様検討3Dプリンターによる形状作成プログラムの工夫についていざ動作!まとめ1.かつての生まれたての小鹿デバイス!水平カメラ台デバイス、一般的に「スタビライザー」とか「ジンバル」と呼ばれていて、昔は本格的な撮影現場などで利用されていることが多かったですが、最近ではドローン撮影やスマートフォンでも手軽に扱えるハンディタイプの製品もよく目にするようになりました。これらの製品では騒音性や速度などの面から現在ではブラシレスモーターが使われています。スタビライザーそんなデバイスにあこがれて、第18回ではハンディタイプのデバイス作成にチャレンジしたのですが結果は下記のように、まるで生まれたての小鹿!のありさま。これはこれでなんとも愛嬌があるのですが、いかんせんデバイスとして機能しない時点でなんの役にもたちません。反省点は多々ありますが、明らかに使っているサーボモーターのトルクが追い付いていない感じがひしひしと伝わります。そんなわけで、もう一度仕様を再検討しながら進めていきたいと思います。2.デバイスの仕様検討まず初めにサーボモーターの見直しです。以前利用したサーボモーターSG90は安価で手軽に使えるのは良いのですが明らかにトルクが足りてなかったです。そこで今回は、前回利用したMG996Rは動作速度は少しだけ遅くなるもののトルクが5倍近くある、このサーボモーターを利用します。それ以外の部品は基本的にArduinoと加速度センサーになるので、これらはほぼ前回と同じ構成で進めてみます。サーボモーターが大きくなったので新たにアダプターから電源をとれるようにしました。回路については、第18回のものを参考にして制作していきます。3.3Dプリンターによる形状作成デバイスの形状に関しては、前回のようにホームセンターで木材や金具を購入してDIYでもよいのですが、せっかくなので3Dプリンターで出力してみます。今回、サーボモーターが大きくなったので、大きくなっても安定性を保てるようにすることと、カメラの三脚用ねじ穴を用意することで、カメラの三脚に固定しても使えて、小型の三脚につければハンディタイプでも利用できるような方向性でデザインしてみました。最初にデザインして出力した形状です。組み立てると下記のようになります。これはこれで問題はなかったのですが、今回3Dプリンターの出力で利用しているABS樹脂の場合、素材が固まる際に縮みが発生してしまい、若干歪みが出てしまうことと、凹時ですべて出力すると各部品の組み立て時にねじが占めにくいなどの問題が発生してしまったため、試行錯誤した結果、下記のように2つのサーボモーターが付属する一番大きなパーツに関してはばらばらに出力することにしました。実際に出力して、組み立てるとこんな感じになります。ケース自体はどんなカメラを載せるかなどで、載せる台は差し替えたり改良ができるようにしておきました。土台はできあがったので、次にプログラムの方を見ていきます。4.プログラムの工夫についてプログラムに関しては、最初加速度センサーを実際に180度傾けて、出力される数値をもとにサーボモーターの傾き具合を調整するキャリブレーション作業が必要なので、第17回のプログラムを少し改良してキャリブレーション数値がわかりやすく出力されるようにしてみます。;}このプログラムを動かして、シリアルモニターを立ち上げた後、センサをXY軸方向に-90度~90度までそれぞれ傾けて出力される数値を確認します。出力数値の最小値、最大値の幅を180度で割った数値が1度あたりの加速度センサーの傾き数値になるので、それをサーボモーターの動作とシンクロするようにします。シリアルモニターで確認した数値をサーボモーターを動作させるプログラムに反映します。;}準備は整った、はずです。5.いざ動作!一通り準備ができたので、いよいよリベンジです。スイッチを入れると......。明らかにパワーはあるのですが肝心の動作がやはりカクカク......。原因を調べてみると、手で持っている際に発生する微妙なブレを加速度センサーがとらえて、軸を合わせるわけですが、合わせ終わった時にまた違う角度のブレが発生しているため、この差分を適切に吸収して、回転をなめらかにする必要があることがわかりました。小さいものを載せているとブレが少ないので比較的軽快に動いてくれるのですがスマートフォンなど少し重量のあるものだとブレがひどくなり、動画のようになってしまいます。これ以上は、かなり綿密にプログラムを改良していく必要がありそうです。実際にYoutubeなどで調べてみると、上手にそれらの問題をクリアしている人もいれば、苦戦している方もいるようです。ドローンで試している方も結構いるみたいですが、ドローンは比較的手持ちに比べて姿勢が安定している状態なので相性がいいのかもしれません。この方はかなりなめらかに制御ができているようです。まとめ今回リベンジ、ということでハードウェア部分の問題はクリアできたのですが、今度はなめらかな制御をするためのプログラム側の問題が発覚しました。実際に作ってみるとわかるこれらの問題、普段気軽に使っている製品は開発者の先人の汗と知恵が詰まったものだということを実感させられます。このデバイスが日の目を見るためには、まだまだ道のりは長そうです......。Arduinoでパーツやセンサを使ってみよう~加速度センサ編(その2)赤川シホロ電子工作や新しいデバイスをこよなく愛するエンジニア。日常生活のちょっとしたことを電子工作で作って試して、おもしろく過ごしたいと日々考えています。