格安エンコーダをRaspberry Piで使う

格安エンコーダをRaspberry Piで使う

Amazonにエンコーダ付きDCモータが売っていたので使ってみました。

パーツ

今回の準備したパーツは下記の通りです。

Raspberry Pi 4

モータドライバ

エンコーダ付きDCモータ

エンコーダについて

実はエンコーダを使うのは初めてで、色々と調べました。なんとなく原理は知っていましたが、下記のサイトはイラスト付きでとてもわかり易いと思います。

回転の方向を知るには前のA相、B相の状態を記録しておいて現在の値と比較する必要があります。

また、角度の計算では1回転当たりのパルス数が必要ですが、今回の場合は3 PPRでした。そして減速比も必要なのですが、何故か書いてなかったので、秋月電子で売っていたギヤードモータを参考にしました。

 

プログラム

上記プログラムのdeltaが角度計算に使う増加量となっています。減速比は298としています。エンコーダのA相、B相の値はコールバック関数を設定して立ち上がり、もしくは立ち下がり時に角度計算を行うようにします。また、モーターの制御として±180度に達したら回転の向きを逆にします。

モータドライバを使うプログラムについては下記の記事にも記載しています。

動作


配線はごちゃごちゃしていますが、ちゃんと動きました。

所感

今回のプログラムを作成した時、最初は正しく動きませんでした。1方向にしか動かしていないのに、向きを計算すると5回に1回くらい逆向きだと判定する事があり、角度も正しく出ませんでした。安物だから壊れてるのかと思ってしまいましたが、実際にはGPIOのセットアップの時にpull_up_down=GPIO.PUD_UPを指定すると安定しました。今まで使ったことが無い設定なので、勉強になりました。

 

#2021.09.12追記

もう少し便利に使えるようにクラス化しました。

以下のような感じで使えます。