RPZ-Stepperでは、速度域を3つに分けて、それぞれについてモーターの加速、減速の速さを指定することが可能です。例えば、負荷が重いので動き出しをゆっくり加速したい場合が考えられます。また、ステッピングモーターは回転数が上がるほどトルクが下がる特徴があります。そのため、早い速度域では加速を遅くして脱調を回避できます。
更新日 : 2024年1月3日セットアップ
本記事では高機能モータードライバー基板「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 = 200
2つめの速度域
m1.v2_rpm = 60
m1.a2 = 1000
m1.d2 = 1000
3つめの速度域
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 200
2つめの速度域
cgstep v2_rpm -w 60 -s 200
cgstep a2 -w 1000
cgstep d2 -w 1000
3つめの速度域
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の電源をON/OFF (RPZ-PowerMGR)
RPZ-PowerMGRを使って、スイッチでRaspberry Pi(ラズパイ)/Jetson Nanoの電源ON/OFFする方法の解説です。ケーブルの抜き挿しやログインして操作しなくても電源ON/OFFできるほか、リモートやプログラムからシャットダウンした際に自動で電源OFFすることもできます。不要な時は電源を切ることで省電力化が可能です。
RPZ-IR-Sensor (Raspberry Pi用 温度/湿度/気圧/明るさ/赤外線 ホームIoT拡張ボード)
動作をプログラミング可能な、Raspberry Pi/Zero(ラズパイ)用ホームIoT拡張ボードです。温度、湿度、気圧、明るさセンサー、赤外線送受信機能を搭載。温度が上がったらエアコンをオンにする、暗くなったら照明を点灯する、外出先から家電の操作をする、気温や日照時間を記録する、といった使い方が可能です。LEDにステータスを表示したり、スイッチを押したら特定の処理をすることもできます。