一般的なモータードライバーの場合、加減速中はリアルタイムにパルス間隔を変動させる必要があり、複雑な処理が必要になります。RPZ-Stepperでは、あらかじめパラメーターをセットしておくことで、自動的に加減速を行うことができます。例えば、負荷が重いので動き出しをゆっくり加速したい場合が考えられます。また、ステッピングモーターは回転数が上がるほどトルクが下がる特徴があります。そのため、早い速度域では加速を遅くして脱調を回避できます。
更新日 : 2024年11月20日セットアップ
本記事では高機能モータードライバー基板「RPZ-Stepper」を使用してステッピングモーターを制御します。RPZ-Stepperの特徴、セットアップ、制御ソフトウェアのインストールは製品ページのセットアップを参照してください。

制御ソフトウェアcgstepの基本的な使い方は以下の記事で解説しています。まだの方は先に確認してください。
J3 MOTOR1端子にモーターを接続します。
Pythonでの準備
Pythonは対話モードで解説していきます。Pythonサンプルコードも用意しています。
Pythonの場合、モーター制御クラスのインスタンスを作成します。rpmで速度を指定する場合はsteps_per_revに使用モーターの1回転あたりのステップ数を指定します。省略すると200になります。
Python:
from cgstep import TMC5240
m1 = TMC5240(steps_per_rev=200)加速、減速を細かく指定する
これまでの解説では速度vmaxに対してamaxで加速、dmaxで減速を設定していました。
RPZ-Stepperでは、以下の図のように速度域を3つに分けて、それぞれについて加速、減速の速さを指定することが可能です。例えば、負荷が重いので動き出しをゆっくり加速したい場合が考えられます。また、ステッピングモーターは回転数が上がるほどトルクが下がる特徴があります。そのため、早い速度域では加速を遅くして脱調を回避できます。

具体的な指定方法について説明します。vmaxに加えてv1、v2を指定することで速度域を0〜v1、v1〜v2、v2〜vmaxに分けます。それぞれについての加速を以下の表のようにしていします。なお、v2やv1に0を設定する(初期値も0となっています)とその速度域は無視されます。
| 速度域 | 加速 | 減速 |
|---|---|---|
| 0〜v1 | a1 | d1 |
| v1〜v2 | a2 | d2 |
| v2〜vmax | amax | dmax |
実際の設定例です。速度に関するv1, v2, vmaxはいずれも末尾に”_rpm”を付けることでrpm単位での指定が可能です。コマンドでrpm単位で速度を指定する場合は-sオプションに使用モーターの1回転あたりのステップ数を指定します。省略すると200になります。
Python:
1つめの速度域
m1.v1_rpm = 30
m1.a1 = 200
m1.d1 = 2002つめの速度域
m1.v2_rpm = 60
m1.a2 = 1000
m1.d2 = 10003つめの速度域
m1.vmax_rpm = 80
m1.amax = 200
m1.dmax = 200コマンド:
1つめの速度域
cgstep v1_rpm -w 30 -s 200
cgstep a1 -w 200
cgstep d1 -w 2002つめの速度域
cgstep v2_rpm -w 60 -s 200
cgstep a2 -w 1000
cgstep d2 -w 10003つめの速度域
cgstep vmax_rpm -w 80 -s 200
cgstep amax -w 200
cgstep dmax -w 200必須の設定をしておきます。電流値ifsを0.5Aとしていますが、お使いのモーターに合わせてください。
Python:
m1.ifs = 0.5
m1.enable()コマンド:
cgstep ifs -w 0.5
cgstep enable回転させる
xtargetを設定して回転させてみます。最初の加速がゆっくりなのがわかると思います。vmax付近も加速が遅くなっていますが、そちらは見た目ではわかりにくいかもしれません。
Python:
m1.moveto(256000)コマンド:
cgstep moveto -w 256000まとめ
制御ソフトウェアcgstepで、加速、減速を細かく指定してステッピングモーターを回転させる方法の解説は以上です。RPZ-Stepperには他にも多くの機能があり、それらの解説記事も参考にしてください。

SCD41 CO2センサーとラズパイで二酸化炭素濃度を測定する
Indoor Corgiのセンサー制御ソフトウェア「cgsensor」を利用して、SCD41 CO2センサーで二酸化炭素濃度を測定したり、センサーの校正や設定を変更する方法を解説します。コマンドラインツールを使って1行もコードを書かずに測定や記録ができるほか、Pythonパッケージを使えばご自身のプログラムから簡単にセンサーを制御できます。

ラズパイ/Jetsonの消費電力測定&モバイルバッテリー稼働時間の計算 (RPZ-PowerMGR)
RPZ-PowerMGRを使って、Raspberry Pi(ラズパイ)/Jetson Nanoの消費電力を測定する方法の解説です。モバイルバッテリーでの運用可能な時間を計算し、実際の運用時間と比較しました。

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