RPZ-Stepper (Raspberry Pi用 高機能ステッピングモータードライバー)

ステッピングモーターを制御できるRaspberry Pi(ラズパイ)用拡張基板です。位置や角度、回転数などを指示すれば、自動で目標までモーターを動かしてくれます。加減速、静音モード、省電力モード、電流測定などの機能を搭載しています。ものを動かしたり回転させるシステムが実現できます。

ステッピングモーターの利点

Raspberry Piでものを移動させたり回転させたい、と考えたことはありませんか?

このような機械的な動きはモーターで実現できます。しかし、一般的なDCモーターは大まかな回転数を制御することしかできず、細かな制御には向きません。

そこで、ステッピングモーターの出番です。ステッピングモーターは電気信号で非常に細かく制御できるモーターで、回転角度や回転数を正確に決めることができます。そのため、以下のような応用が可能です。

  • ものや自機を正確な位置に移動させる
  • カメラの撮影角度を正確に動かす
  • ロボットアームでものを仕分ける
  • 特定の速度でコンベアを動かす
ステッピングモーター

ステッピングモーターの優れている点をDCモーターと比較して表にまとめました。低速で細かく制御するのに向いていることが分かります。一方で、細かい制御なしで高速で回転させる用途はDCモーターが向いています。

ステッピングモーターとブラシ付きDCモーターの比較

プログラムによる複雑な動作が可能で、カメラやセンサー、ネットワークなどとの連携も可能なRaspberry Piは、ステッピングモーターとの相性が良いといえるでしょう。ラズパイとステッピングモーターを使うことで様々なアプリケーションが実現できます。

しかし、細かい制御ができるために、ゼロから開発すると大変という側面もあります。そこで、高機能モータードライバー「RPZ-Stepper」基板と、Indoor Corgiが開発したモーター制御ソフトウェアを組み合わせることで、わずか数行のコマンド/コードでモーターを回転させることができますお客様の開発工程を削減し、目的のシステムの実現を容易にします

機能概要図

機能概要図

製品の特徴

高機能モータードライバーIC搭載

RPZ-Stepperは高機能なモータードライバー「TMC5240」を搭載しております。TMC5240はモーションコントローラーを内蔵しているため、位置や角度、回転数などを指示すれば、全自動で目標までモーターを動かしてくれます。さらに、加減速、静音モード、省電力モード、電流測定など、多くの機能を搭載しています。

以下に一般的なモータードライバーとの比較を表にしました。

一般的なステッピングモータードライバーとの機能比較
位置、角度、回転数制御

ステッピングモータードライバーは、パルス信号を送信するたびに1ステップ回転するものが一般的です。この方法はシンプルですが、モーター回転中は常にリアルタイムでパルスを出力する必要があり、他のタスクと平行して行うことが難しいです。

RPZ-Stepperは高機能なモータードライバー「TMC5240」を搭載しております。Raspberry Piから位置や回転数など指示を送るだけで、ドライバー側で自動的に加減速も計算してモーターを指定位置まで動かします。そのため、ユーザーはモーターの細かい制御にリソースを使う必要がなく、「やりたいこと」に集中できます。複数のモーターを同時に動かすことも容易です。

加速、減速制御

負荷のあるステッピングモーターを回転させ、一定の位置まで移動することを考えてみます。始動時に急に速度を上げたり、停止時に急停止すると、負荷の慣性により脱調を起こし、意図した位置からずれてしまう恐れがあります。また、脱調しないような安全な速度にすれば速度が不十分となります。(下図左)

そこで、始動時と停止時には緩やかに速度を変化させることが望ましいです。(下図右) RPZ-Stepperでは、あらかじめパラメーターをセットしておくことで、モータードライバーが自動的に加減速を行います。ユーザーは目標の位置、角度、回転数を指示するだけです。パルス信号で制御する一般的なモータードライバーの場合、加減速中はリアルタイムにパルス間隔を変動させる必要があり、Raspberry Piから行うと複雑な処理が必要になります。

一定のパルスによる定速制御
加減速を考慮した制御

RPZ-Stepperに搭載されている高機能モータードライバー「TMC5240」は、速度領域に応じて加速ゾーン3つと減速ゾーン3つを指定できます。ステッピングモーターは回転数が大きくなるとトルクが低下していくため、高速域では加速をゆっくりにするなど、最適なプロファイルを実現できます。

加速ゾーン3つ、減速ゾーン3つによる加減速制御 (TMC5240データシートより引用)
静音モード

ステップ角単位で回転するという仕組み上、ステッピングモーターは振動や音が大きくなりやすい特徴があります。

RPZ-Stepperは静音モードを搭載しており、特に低速回転時において振動と音を低減できます。

以下に静音モード使用時の動作音を測定した比較です。環境ノイズ10dbに対して、30rpm時 +3dB、10rpm時 +0dBとなっており、ほぼ動作しているのがわからないレベルの静音性となっています。静かな環境で動作させるアプリケーションに最適です

5V小型ステッピングモーターでの動作音比較
省電力モード

ステッピングモーターは軽負荷や停止時であっても電流を消費するという特徴があります。状況によっては不要な電流が流れ続けて電力を消費したり、発熱したりします。

RPZ-Stepperは回転時、停止時それぞれについて、32段階で電流値を変更できます。最適な電流値にすることで省電力化が可能です。

モーター電流測定機能

モーターの電流を測定する機能があるため、以下のようなことが可能になります。(測定は基板で消費している電流の合計となります。)

  • 消費電力の測定
  • 省電力機能の効果確認
  • バッテリーで動作させる場合の動作可能時間見積もり
  • モーターやドライバーICの発熱の見積もり
マイクロステップ動作対応

ステッピングモーターは1周あたり200の角度を持つタイプが一般的です。マイクロステップ動作とは、この1/200のステップ(フルステップ角)をさらに256に分割して制御する方法で、より滑らかに回転させることができます。

制御ソフトウェア付属

Indoor Corgiが開発したモーター制御用コマンドラインツールとPythonライブラリが付属します。わずか数行のコマンド/コードでモーターを回転させることができます

高機能モータードライバーICと付属ソフトウェアで、お客様の開発工程を削減し、目的のシステムの実現を容易にします

最大4台のステッピングモーターを駆動

製品1台あたり2台のステッピングモーターを駆動できます。製品2台を重ねることで最大4台のステッピングモーターを制御できます。X/Y/Z軸やひねりなど、複数のモーターを制御するような用途に利用可能です。

広い電圧範囲

5Vから30Vの広い入力電圧範囲をカバーしており、よく利用される5V/12V/24Vのステッピングモーターに対応しています。

ロック機構付きコネクター

モーターとの接続にはJST社製NHコネクター、電源との接続にはJST社製VHコネクターを採用しました。いずれもロック機構付きで、モーターの振動があっても脱落する心配がありません

また、メンテナンス時には取り外しがしやすく、1線ずつ取り付けるターミナルブロックと比べて誤配線が起きにくくなっています。

保護回路

電源入力部に逆接続、過電圧、過電流防止保護回路を搭載しました。また、モータードライバーICも個別に、過熱、過電流保護機能を内蔵しております。万一の誤接続やショートによる損害を抑えます。

拡張基板/HATスタック

RPZ-Stepperの上に別の拡張基板/HATをスタック(積み重ね)できます。例えば、RPZ-PIRS(感/明るさセンサー/赤外線 拡張基板)と組み合わせるとモーターとセンサーを連携させることが可能です。

付属アダプターを接続するだけなのではんだ付けは不要です。

RPZ-Stepperの上にRPZ-PIRSをスタックした例

仕様

項目仕様
対応ハードウェア40ピンコネクタを搭載したRaspberry Piシリーズ (Raspberry Pi Picoシリーズは非対応です)

動作確認を行っている製品:
– Raspberry Pi 4 Model B
– Raspberry Pi 3 Model B/B+
– Raspberry Pi Zero 2 W
– Raspberry Pi Zero W/WH
対応OS2023年以降にリリースされたRaspberry Pi OS
モータータイプ2相バイポーラ型ステッピングモーター
電源コネクター2ピンVHコネクター
モーター接続コネクター4ピンNHコネクター x2
電源電圧5V – 30V
最大電流基板合計: 6A以下
モーター電流2.1A以下
1相あたり、実効値 (正弦波ピーク3A相当)
モーター電流@周囲温度 (*1)1.8A以下@40℃
1.5A以下@60℃
1相あたり、実効値
マイクロステップ256
使用GPIOSCLK/GPIO11
MOSI/GPIO10
MISO/GPIO9
GPIO8/CE0 (モーター1用)
GPIO7/CE1 (モーター2用)
GPIO25(基板選択用。基板2枚/モーター4台利用時のみ使用)
最大SPI通信速度10Mbps

(*1) モーターを連続して運転する場合、発熱を加味した電流値の目安です。使用環境により変動する可能性があります。周囲温度にはRaspberry Pi本体の発熱も含みます。

購入

RPZ-Stepper基板本体と、Raspberry Pi接続用アダプターのセットになります。ケーブルやモーター側のコネクターは付属しません。

まとまった数量をご希望の方は、見積もり依頼よりご連絡ください。

RPZ-Stepper-D

2相バイポーラステッピングモーター2台を駆動できる標準タイプです。本製品2台で、最大4台のモーターを駆動できます。

セットアップ(ハードウェア)

アダプターの取り付け

以下の写真のように、付属アダプターをRPZ-Stepperに取り付けます。

アダプターをRPZ-Stepperに取り付けた状態
基板選択スイッチのセット

RPZ-Stepperを1台で利用するか、2台で利用するかに応じて、スイッチDSW1-1(BD_SEL)、2(BD_ID)の設定を変更します。下の写真で見て下にセットされているとOFF、上にセットされているとONとなります。

以下の表の通りセットしてください。2台利用の場合、両方の基板でDSW1-1(BD_SEL)をONにすることで基板選択機能を有効にします。すると、DSW1-2(BD_ID)をOFFにした基板がID#0、ONにした基板がID#1となり、ソフトウェアから選択可能になります。

DSW1-3(MODE)、4(SHDN)はOFFにしてください。これらについては後述します。

利用方法DSW1-1
(BD_SEL)
DSW1-2
(BD_ID)
1台利用OFF (基板選択無効)OFF
2台利用 基板ID#0ON (基板選択有効)OFF (ID#0)
2台利用 基板ID#1ON (基板選択有効)ON (ID#1)
Raspberry Piに取り付け

Raspberry Piの40ピンコネクターに取り付けます。2台利用の場合はスタックして(縦に重ねて)取り付けます。

Raspberry Pi 4 ModelBに取り付けた例
2台スタックした例
モーター接続

RPZ-Stepper基板のモーター接続コネクターJ3、J4は4ピンNHコネクターです。使用する電源には適合ハウジング(H4P-SHF-AAなど)をご用意し、以下のように配線してください。

ステッピングモーターは2相バイポーラ型に対応しています。ユニポーラ型は非対応です。A/B各相の2本の配線に順序はなく、2相のうちどちらをA相に割り当てるかも決まりはありませんが、接続によって回転方向が変わる場合があります。

ピン番号配線
1A相
2A相
3B相
4B相
モーター接続コネクターJ3、J4のピン配置
電源接続

RPZ-Stepper基板の電源コネクターJ2は2ピンVHコネクターです。使用する電源には適合ハウジング(VHR-2Nなど)をご用意し、以下のように配線してください。ショートによる破損を避けるため、電源の電圧を出力しない状態で作業することを推奨します。

ピン番号配線
1
2+
電源コネクターJ2のピン配置

最後にRaspberry Pi本体の電源コネクターに電源を接続します。

セットアップ(ソフトウェア)

SPI有効化

基板とはSPIで通信します。Raspberry Piをお使いの場合は、こちらの記事を参考にSPIを有効化して下さい。

制御ソフトウェアのインストール

Indoor Corgiで開発したRPZ-Stepperでモーターを制御するコマンドラインツール、Pythonライブラリをインストールします。最新版へのアップグレードも同じコマンドで可能です。

$ sudo python3 -m pip install -U cgstep --break-system-packages

エラーが出る場合は最後のオプションを指定せずにお試しください。

$ sudo python3 -m pip install -U cgstep

使い方

モーター制御

モーターの制御方法については詳しく解説するため、別のページを用意しています。まずは、制御ソフトウェアを使ってモーターを回転させる基本的な手順を解説している以下の記事をご覧ください。

ステッピングモーターを指定位置まで回転させる基本手順 (Raspberry Pi + RPZ-Stepper)

RPZ-StepperとRaspberry Pi(ラズパイ)を使ってステッピングモーターを指定位置まで回転させる基本手順を解説しています。制御ソフトウェアcgstepの使い方と、必須のパラメーターについても解説しています。

各種機能については以下の記事にまとめています。

複数のステッピングモーターを制御する (Raspberry Pi + RPZ-Stepper)

RPZ-Stepperは基板1枚に2台のステッピングモーターを接続でき、最大で基板2枚、モーター4台を制御できます。本記事では、制御ソフトウェアcgstepで複数ステッピングモーターを制御する方法を解説しています。複数台のモーターを使うことでX/Y/Z軸移動など複雑な動きを実現できます。

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

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

加速、減速を細かく指定してステッピングモーターを回転させる (Raspberry Pi + RPZ-Stepper)

RPZ-Stepperでは、速度域を3つに分けて、それぞれについてモーターの加速、減速の速さを指定することが可能です。例えば、負荷が重いので動き出しをゆっくり加速したい場合が考えられます。また、ステッピングモーターは回転数が上がるほどトルクが下がる特徴があります。そのため、早い速度域では加速を遅くして脱調を回避できます。

静音モードでステッピングモーターの動作音を抑える (Raspberry Pi + RPZ-Stepper)

ステップ角単位で回転するという仕組み上、ステッピングモーターは振動や音が大きくなりやすい特徴があります。RPZ-Stepperは静音モードを搭載しており、特に低速回転時において振動と音を低減できます。静かな環境で動作させるアプリケーションに最適です。

ステッピングモーターの電流を最適化して省電力化&電流測定 (Raspberry Pi + RPZ-Stepper)

ステッピングモーターは軽負荷や停止時であっても電流を消費するという特徴があります。RPZ-Stepperは回転時、停止時それぞれについて、32段階で電流値を変更できます。最適な値にすることで省電力化が可能です。また、電流の測定も可能で、バッテリーでの動作時間の見積もりが可能です。

cgstepの使い方&レジスターアクセス方法 (Raspberry Pi + RPZ-Stepper)

制御ソフトウェアcgstepには、モータードライバーTMC5240のパラメーターを読み書きする機能、独自の複合機能オペレーション、レジスターを直接書き換える機能があります。本記事では、それぞれの機能の使い方について解説します。使い方の記事で紹介しきれなかったパラメーターやレジスターを書き換えることで、より高度な調整が可能になります。

シャットダウン

スイッチDSW1-4(SHDN)をONにセットすると、シャットダウン状態となり、RPZ-Stepperのすべての動作が停止して電力を消費しない状態になります。DSW1-4(SHDN)をOFFに戻すと動作を再開します。モータードライバーは初期状態に戻ります。シャットダウンはモーターが停止している状態で行ってください。

保護回路とMODEスイッチ

過電流保護回路を搭載しており、基板全体の電流が6Aを超えると基板への電力供給を遮断します。

この場合、一度電源(J2コネクター)を落として再度印加することで、基板に電力が供給されます。ただしスイッチDSW-1-3(MODE)がONに設定されていると、電源を落とさなくても一定時間おきに復帰を試みます。

なお、保護回路ではなくモータードライバー側が過電流や発熱のために停止する可能性もあります。その場合はモータードライバーと通信できますので、モータードライバーTMC5240の復帰手順に従ってください。

開発者向け資料

注意事項

開発依頼

本製品への機能追加や指定コネクターへの変更などのカスタマイズ、本製品を使ったシステムの開発依頼、その他ハードウェア、ソフトウェアの開発については、有償にて承っております。ハードウェア、ソフトウェア受託開発をご参照下さい。

関連ページ

RPZ-PowerMGR (Raspberry Pi/Jetson Nano用 電源管理/制御/RTC拡張基板)

スイッチで電源ON/OFF、指定時刻に電源ON/OFF、シャットダウン後自動電源OFFを可能にする拡張基板です。Raspberry Pi(ラズパイ)やJetson Nanoの電源の課題を解決し、省電力運用を可能にします。RTCで電源OFF時も時刻を保持します。USB Type-C端子を搭載し、モバイルバッテリーでも利用できます。

TSL2572センサーとラズパイで明るさ(照度)を測定する

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

ESP-SensorCam (ESP-WROOM-02搭載 WiFi/カメラ/明るさ/人感 IoTカメラ基板)

Arduino IDEで動作を自由にプログラミング可能なホームIoTカメラ基板です。WiFi内蔵マイコンであるESP-WROOM-02を採用しました。カメラと人感センサー、明るさセンサー(一部オプション)搭載。人が近づいたら写真を撮影、スマホからモニタリング、明るさの記録、といった使い方が可能です。