2021年5月23日日曜日

M5stickC plusを使った倒立...倒立は一日にして立たず

今回は

前回はトラ技の記事を参考にマイコンstm32を使って倒立マシンを作成しました。20cmx25cmとちょいと大き目でした。参考リンクを読んで、再び倒立熱が高まってきたので小型倒立マシンに挑戦したいと思います。さて、倒立するのか。「倒立は一日にして立たず」。

準備

必要なパーツは秋葉原だと秋月と千石を回れば購入できます。最近は通販が主流ですが。今回使用するモーターは非常に小型です(倒立するのか)。モータードライバは、2回路入っていて1回路1.5Aまでドライブ可能です。他でも小型モーターなので大抵は使えると思います。

  • 制御用マイコン M5StickC plus (6軸センサー入り)
  • DCモータ    FM90×2 (DCモーターにギヤが付いてます)
  • モータードライバ DRV8835×1
  • 電池ボックス 単3×3
  • 電池     エネループ単3×3

まずは個別に機能確認

6軸センサー

M5stickC plusには、6軸センサーがI2C接続されていてサンプルコードで簡単に動作確認できます。

制御プログラム

Arduinoで記述します。6軸センサーによって傾きを検知し、傾きの値をPID制御してDCモーターの出力を決定します。このモータードライバーは2入力で回転方向と出力値を決めるので、2入力には傾きから計算した出力値をPWMにより2入力それぞれに出力するようなソフトウェアを参考リンクをお手本に記述します。

モータドライバー

DRV8835のデーターシートを見ながら配線します。DCモーターなのでIN/INモードにします。2回路の入力と出力は1回路にまとめます。これによりDCモーターの最高電流は3AまでOKとなります。そこまでは流れないでしょうけど。

機能確認結果

個別に機能を確認した後、配線確認のためブレッドボードで動きを確認します。DCモーターは片側だけ接続してます。


 M5stickC drv8835

回転方向の正回転と逆回転やモーター出力の変更ができていることを確認できました。

今日のまとめ

M5stickCplusを使って倒立ロボットの機能確認をしました。ここまでは問題なく順調に進んでいます。躯体を作成し配線して「倒立」に向けて進めていきたいと思います。

参考リンク

全60Stepで超超簡単M5StickC 倒立振子 - Qiita

2021年5月8日土曜日

Pi4b+2軸servo台(SG90x2)の動作確認

今回は

M5stickC plusと2つのサーボを使ってラズパイに繋がっているカメラの架台を作成します。

準備

Amazonでぽち。で、終了です。便利な世の中になりました。プラスチックで成型されたSG90サーボ用の2軸台です。説明書等は何もありません。ざっくりと袋に入っているだけです。。参考リンクに先人がいたので写真を見ながら組み立てました。

サーボのアームを削ったりとポン付けではありません。サーボアームは若干の加工が必要です。

配線

Pi4bに接続します。サーボSG90は、5VなのでPi4bから給電します。Low Voltageと怒られそうですが。縦サーボと横サーボの制御線は、GPIO23とGPIO24にそれぞれ接続します。

写真のとおりオスメスがそれぞれ両端についている配線部材で接続します。

ソフトウエア

お試しはpythonで書いてちゃちゃっと動作の確認をします。参考リンクのコードを参考に、サーボの動きを横方向に15度刻みで-90度から90度まで動かしつつ縦には-30度から30度まで動かします。

戻りは90度からー90度まで動かしつつ30度から-30度に縦方向に振りながら戻ってきます。pythonのサンプルコードは、参考リンクの下に貼っておきます。

動作確認

pythonなので動きを確認しながら確認することができました。コードのとおり動いてます。delayの長さは経験的な感じでしょうか。動作状況は以下の動画のとおりです。


今日のまとめ

サーボSG90を2つ使って2軸台を作成し、pythonサンプルコードにより動作確認をしました。軽いカメラなら載せて動くと予期します。今後は、カメラをこの2軸台に取り付けてOpenCVと連携させることにより物体を追従できるような装置の製作を進めていきたいと思います。

参考リンク

SG90サーボ用2軸カメラマウントを組み立てる

RaspberryPiでサーボモーター動作

import time
import RPi.GPIO as GPIO

GPIO.setmode(GPIO.BCM)

GPIO.setup(23, GPIO.OUT) # 横
GPIO.setup(24, GPIO.OUT) # 縦

yoko = GPIO.PWM(23, 50)
tate = GPIO.PWM(24, 50)
yoko.start(0.0)
tate.start(6)

yoko.ChangeDutyCycle(2.5)
time.sleep(1.0)

# 横 -90 -> 90 15度づつ
# 縦 -30 -> 30 15度づつ
for degree in range(-90, 90, 15):
    dc = 2.5 + (12.0-2.5)/180*(degree+90)
    yoko.ChangeDutyCycle(dc)
    time.sleep(0.03)
    for kaku in range(-30, 30, 15):
        dc_tate = 2.5 + (12.0-2.5)/180*(kaku+90)
        tate.ChangeDutyCycle(dc_tate)
        time.sleep(0.1)

# 横 90 -> -90 -15度づつ
# 縦 30 -> -30 -15度づつ
for degree in range(90, -90, -15):
    dc = 2.5 + (12.0-2.5)/180*(degree+90)
    yoko.ChangeDutyCycle(dc)
    time.sleep(0.03)
    for kaku in range(30, -30, -15):
        dc_tate = 2.5 + (12.0-2.5)/180*(kaku+90)
        tate.ChangeDutyCycle(dc_tate)
        time.sleep(0.1)

GPIO.cleanup() # warning 抑止

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

ページ引っ越しました

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