Raspberry Piでステッピングモーターを制御してみる!(ソフトウェア編)




■ステッピングモータードライバーについて


今回はAdafruit社の「 DC and Stepper Motor HAT for Raspberry Pi」を使用するので

先ずはソフトウェアの設定をしてゆきます。


このステッピングモータードライバー基板は、内部的にRaspberry Piと基板間でI2C通信を行っています。

というのも、Raspberry Piには無いPWM(Pulse Width Modulation)制御を実現するためにPCA9685というICチップを使用しています。

PCA9685は元々、I2Cバス制御のLEDコントローラーで、16チャンネルのLEDを赤/緑/青/A(RGBA)カラーコントロールするものです。

そのPWM出力を利用してDCモータードライバーIC(TB6612FNG )をコントロールいるのです、なかなか面白い使い方ですね。


↓今回実際にステッピングモーターを動作させた動画はコチラ


■I2Cセッティングと確認


通信のためI2Cバスを利用するので Raspberry Piのセッティングをしてゆきます。


 Raspberry Piの設定でI2Cを有効にします。

これでI2Cバスが使えるようになりました。


I2Cを利用するのに、i2c-tools と python-smbusをインストールしますが、

私がRaspberry Piに入れた最新のRasbianには既にインストールされていました。

必要な場合はi2c-tools と python-smbusのインストール方法をお調べ下さい。


次にI2Cバスに接続されている状態を調べます。


まずは「 DC and Stepper Motor HAT for Raspberry Pi」が接続されていない Raspberry Piだけの状態です。

↑何も検出されていません。


↓は「 DC and Stepper Motor HAT for Raspberry Pi」基板を搭載したところです。

I2Cアドレス0x60と0x70が表示されました、ハードウェアは無事に認識されたようで一安心。



■adafruit社ソフトウェアをインストール


adaftuit社のPythonライブラリーをインストールして「 DC and Stepper Motor HAT for Raspberry Pi」を使えるようにしましょう。

(本ブログではpython3の使用を前提に書いています)


任意のパスで↓をターミナル画面で実行。

sudo pip3 install adafruit-circuitpython-motorkit

↑のような表示になれば成功です。


最初全くインストール出来ませんでした、いろいろ試してもどうしても何をやってもダメだったので駄目元でRasbianを新しいSDカードにクリーンインストールし直したところすんなりとインストールできました。

危うく挫折するところでした。。。


あと、Pythonライブラリーを見つけたのでこちらもインストールしました。

git clone https://github.com/adafruit/Adafruit-Motor-HAT-Python-Library.git


次に新しくできたAdafruit-Motor-HAT-Python-Libraryというフォルダーの中のセットアップを実行します。

sudo python3 setup.py install

↑のような表示になれば成功です。


このライブラリーは偶然に外国の何方かのYoutubeでみつけて、動画の画面をよ~く見てインストール方法がわかりました。(笑)

adafuit社のサイトでは見つからなかったんですよ。

後々大変役に立ちそうなライブラリーです。




■ステッピングモーターをプログラムで実際に動かす!


では実際にサンプルプログラムでステッピングモーターが動作するか試してみます。

下のプログラムを実行。


さて動くか緊張の瞬間。。。



無事に動作しました~!!

100ステップ、ステッピングモーターが回ったようです。


とりあえず、初のステッピングモーターの動作に成功しました!

人類にとって小さな一歩にもなりませんが、私にとっては偉大な一歩です。(笑)




ホっとしたところでテスト用プログラムを作って動作させてみました。


adafruitのライブラリーではステッピングモーターを下の4つのモードでコントロールできます。


・SINGLEモード

・DOUBLEモード

・INTERLEAVEモード

・MICROSTEPモード



いろいろと試してみましたが、ゆっくりと動作し静かでトルクのある運転ができるのが

MICROSTEPモード。

比較的高速にトルクのある運転ができるのがDOUBLEモードでした。


高速と言っても100rpm程度がこのモータードライバー基板の限界のようです。

もっと高速に運転させたい方にはこのボードは向かないかもしれません。



作成してチェックプログラムは下の順に動作します。


1.MICROSTEPモードでゆっくり正転(時計回り)

2.MICROSTEPモードでゆっくり逆転(反時計回り)

3.DOUBLEモードで高速に正転

4.DOUBLEモードで高速に逆転

5.DOUBLEモードで正転し徐々に減速

6.DOUBLEモードで逆転し徐々に減速

1.~6.の繰り返し



↓はプログラム動作中のターミナル画面の表示




ソースコードをみてもらえばわかりますが、adafruit社のライブラリーを使っているので各モードで正転も逆転もパルス制御などを全く気にすることも無く、簡潔にプログラムを記述することができます、これは使いやすくとても便利です。


stepper_simpletest_2.py ソースコードはこちら↓



今回は、ステッピングモーター初挑戦でしたが無事に動作させる事ができました。

 Raspberry Piを使ったステッピングモーター制御で、正転・逆転・速度制御などができることを検証できたので今後の開発に目処が立ちました。


このステッピングモーターボード「 DC and Stepper Motor HAT for Raspberry Pi」を扱った日本語の記事はWEBで見つからなかったのでお初かもしれません。

このブログが何方かの一助となれば幸いです。













ICT&電子工作、諸々の備忘録(仮)

プログラミング、電子工作、Raspberry Pi、IoTなどなど。 コンピューター活用、応用技術など、勉強しながら徐に記してゆきたいと思います。