ステッピングモーターを指定速度/回転数で回転させる (Raspberry Pi + RPZ-Stepper)

RPZ-Stepperは、速度指定モードに設定することで、指定した速度でステッピングモーターを回転させ続けることができます。途中で速度を変更も可能で、指定したパラメーターに応じて自動で加減速します。速度を細かく制御しながら回転し続けるようなアプリケーションに最適です。

更新日 : 2023年11月13日

セットアップ

本記事では高機能モータードライバー基板「RPZ-Stepper」を使用してステッピングモーターを制御します。RPZ-Stepperの特徴、セットアップ、制御ソフトウェアのインストールは製品ページを参照してください。

RPZ-Stepper

制御ソフトウェアcgstepの基本的な使い方は以下の記事で解説しています。まだの方は先に確認してください。

J3 MOTOR1端子にモーターを接続します。

Pythonでの準備

Pythonは対話モードで解説していきます。Pythonサンプルコードも用意しています。

Pythonの場合、モーター制御クラスのインスタンスを作成します。

Python:

from cgstep import TMC5240
m1 = TMC5240()

速度指定モードに設定

初期状態では位置指定モードになっています。rampmodeを変更して速度指定モードに設定します。回転方向に応じて1か2を指定します。rampmodeに0を指定すると位置指定モードに戻すことができます。

Pythonでは「RAMPMODE_」で始まる定数を用意しているので、そちらでも指定可能です。

モード数値で指定定数で指定(Python)
位置指定0RAMPMODE_POSITIONING
速度指定 正方向1RAMPMODE_VELOCITY_POSITIVE
速度指定 逆方向2RAMPMODE_VELOCITY_NEGATIVE

Python:

m1.rampmode = TMC5240.RAMPMODE_VELOCITY_POSITIVE

コマンド:

cgstep rampmode -w 1

必須の設定をしていきます。速度指定モードではvmaxで速度を指定します。最初は停止しておきたいので0にしています。加減速のamax、dmaxなどは位置指定モードと同様です。

Python:

m1.current_range = 2
m1.vmax = 0
m1.amax = 500
m1.dmax = 500
m1.enable()

コマンド:

cgstep current_range -w 2
cgstep vmax -w 0
cgstep amax -w 500
cgstep dmax -w 500
cgstep enable



指定速度で回転させる

vmaxを設定すると指定の速度で回転しつづけます。

Python:

m1.vmax = 20000

コマンド:

cgstep vmax -w 20000

vmaxを変えると速度が変わります。

Python:

m1.vmax = 70000

コマンド:

cgstep vmax -w 70000

vmaxを0にすると停止します。

Python:

m1.vmax = 0

コマンド:

cgstep vmax -w 0

rampmodeに2かRAMPMODE_VELOCTY_NEGATIVEを設定すると回転方向が逆になります。

Python:

m1.rampmode = TMC5240.RAMPMODE_VELOCITY_NEGATIVE
m1.vmax = 20000

コマンド:

cgstep rampmode -w 2
cgstep vmax -w 20000

停止して、位置指定モードに戻します。速度指定モードで回転した場合でも、現在位置がxactualが0からずれている点に注意してください。

Python:

m1.vmax = 0
m1.rampmode = TMC5240.RAMPMODE_POSITIONING

コマンド:

cgstep vmax -w 0
cgstep rampmode -w 0

まとめ

制御ソフトウェアcgstepで、指定した速度でステッピングモーターを回転させ続ける方法の解説は以上です。RPZ-Stepperには他にも多くの機能があり、それらの解説記事も参考にしてください。

BME280センサーとラズパイで気温、湿度、気圧を測定する

Indoor Corgiのセンサー制御ソフトウェア「cgsensor」を利用して、BME280センサーで気温、湿度、気圧を測定する方法を解説します。コマンドラインツールを使って1行もコードを書かずに測定や記録ができるほか、Pythonパッケージを使えばご自身のプログラムから簡単にセンサーを制御できます。

ラズパイで赤外線制御 (家電、エアコン、照明、テレビなどを制御するホームIoT)

Pythonとpigpioを使ってRaspberry Piで赤外線の送受信を行う方法について解説しています。サンプルプログラムを用意しているので、簡単に受信、登録、送信動作をさせることができるほか、データ解析も可能です。赤外線を使ってエアコン、照明、テレビなどの家電を制御することが可能になります。

RPZ-PIRS (Raspberry Pi用 人感/明るさセンサー/赤外線 拡張基板)

Raspberry Pi(ラズパイ)に人感、明るさセンサー、赤外線送受信機能を搭載できる拡張基板です。人感センサーで人や動物を検知してカメラで撮影したり、赤外線で照明をONするような使い方が可能です。周囲の明るさをモニターできる他、外付温湿度/気圧センサー(別売り)を接続することで、温度、湿度、気圧の測定機能を追加できます。7色表示可能なRGB LEDにステータスを表示したり、スイッチを押すことで特定の動作をさせることができます。