2021年5月1日土曜日

M5stickCでservoを動かす

今回は

久しぶりに動きものに手を出そうと思い、サーボやDCモータを動かすために基本事項の確認をします。M5stcikCを使った倒立やサーボモータで画像認識して物体を追いかける2軸追尾機などに繋がっていけばと思います。まずは、サーボを動かしてみます。先人多数なので、そう難しくはないと思います。

準備

使用するものは以下のとおりです。

  • マイクロサーボ SG-90×1個
  • M5StickC plus
  • オスーオスジャンパー線×3本

ソフトウェアは、参考事例も多数あるのでArdunoでお気軽にいきます。VScode+PlathomeIO上に環境を構築します。

サーボの仕組み

サーボの主要構成品としては、DCモータ、減速ギア、ポテンショメータ、作動アンプで構成されています。制御信号として50Hzの矩形波にデュティー比を最小0.5/20(回転角0度)から最大2.4/20(回転角180度)まで変更することによって角度を変更します。データーシート上は、そのような説明ですが、個体差が若干あるようで正確に動作させるには微調整が必要なようです。

配線

サーボから3本線が出ています。M5StackCとは、このように接続します。

  • 黒 ←→ GND
  • 赤 ←→ +5V
  • 黄 ←→ G26
M5stickCの裏側には、ピン番号が印刷してあり配線間違え防止になります。

ソフトウェア

参考リンクを見ながらarduinoで記述します。詳細は参考リンクにリンクしておきます。

サーボというとピンときませんが、PWM出力の応用と考えれば非常に簡単です。サーボSG90の仕様に合わせてPWM出力を変化させればサーボの回転軸が動きます。ソースのPWM設定のところでデューティー比を16bitとしました。PWM周波数は50Hzなので1周期は20msです。軸角度0度は、0.5msなので1638。軸角度180度は、2.4msなので7864となります。

デューティー比の変更はボタンAを押したらプラスに、ボタンBを押したらマイナスにします。1度づつ動かすとボタンを連打しないといけないので30度づつ動くようにしました。

ボタンの状況とデューティー比の数値をシリアルとLCDに表示します。

動作状況

個体差があるようで軸角度0度と180度付近は、もう少し細かく値を調整する必要があります。動作の状況は動画のとおりです。


 M5stickC servo

今日のまとめ

M5StackC plusを使ってサーボを動かしてみました。PWM出力の応用ということで単に動かすだけならそう難しくもありません。正確な動作とか安定性等を反映させるには更なる調整が必要です。これをスタートラインに2軸のカメラ台を作ってみたいと思います。

参考リンク

M5Stack + サーボモーターSG90 - 日記とか、工作記録とか

https://gist.github.com/hkaji/8beef2790886b383e82e02585f9a5071

0 件のコメント:

コメントを投稿

ページ引っ越しました

このページは、以下に引っ越しました。内容も逐次移行中です。引き続きよろしくお願いします。  https://hkaji.github.io →こちら