RCサーボモーターを制御できるRaspberry Pi(ラズパイ)用拡張基板です。モーターの角度(位置)を指示すれば、自動で目標までモーターを動かしてくれます。ものを動かしたり回転させるシステムが実現できます。Raspberry Piへ電力を供給する機能もあり、単一電源でシステムを構成できます。
RCサーボモーターとは
Raspberry Piでものを移動させたり回転させたい、と考えたことはありませんか?
このような機械的な動きはモーターで実現できます。しかし、一般的なDCモーターは大まかな回転数を制御することしかできず、細かな制御には向きません。
そこで、RCサーボモーターの出番です。RCサーボモーターは、モーターシャフトの角度(位置)を電気的に指示することが可能なモーターで、以下のような応用が可能です。
- ものや自機を決まった位置に移動させる
- カメラ動かして撮影角度を変える
- ロボットアームでものを仕分ける
- スイッチを押したり離したりする
- 移動体の舵を操作する
自身の角度や位置を知る仕組みを持っていて、回転数を細かく制御できるモーター全般をサーボモーターと呼びます。その中で、RCサーボモーターはRCカーやロボット、ドローンなどで使われており、以下のような特徴があります。
- 小型
- 小さなものを動かすのに十分なトルク
- 多くの製品が共通のPWM制御方式に対応
- 180°/270°/360°などの可動域の中で角度を指定可能
- 低消費電力
- 安価
プログラムでRCサーボモーターの角度を制御することができ、カメラやセンサー、ネットワークなどとの連携も可能なRaspberry Piは、RCサーボモーターとの相性が良いといえるでしょう。ラズパイとRCサーボモーターを使うことで様々なアプリケーションが実現できます。
機能概要図
製品の特徴
安定した波形出力
RPZ-RC-Servoは専用のPWMコントローラーICを搭載しているため、安定した波形出力が可能です。これにより、サーボモーターが指定角度で静止します。(画像左)
Raspberry Piから直接ソフトウェアPWMで出力した場合、OSがリアルタイム処理向けではないため、波形の時間にばらつきが生じます。そのため、サーボモーターがわずかに動いてしまい、うまく静止できません。(画像右)
PWMのようなリアルタイム性が求められる制御は、専用のコントローラーに任せる方が適していると言えます。
高精度な信号
高精度クロックを搭載したことで、PWM信号の誤差を+/-0.0025%と無視できるレベルに抑えました。これにより、個体ごとのモーター角度のばらつきを抑えることができます。一般的な内蔵RCクロックの誤差は+/-5%程度です。
高分解能
RPZ-RC-Servoは12bitのPWMを搭載しており、4096段階で波長を変化させることができ、サーボモーターの角度を細かく制御できます。これは10bitと比べて4倍、8bitと比べて16倍細かく制御できることを意味しています。
制御ソフトウェア付属
Indoor Corgiが開発したモーター制御用Pythonライブラリが付属します。わずか数行のコードでモーターを回転させることができるほか、モーターの角度を指定するモードを複数用意しており、直感的にプログラムを作成できます。以下は180°のモーターで利用できる指定モードの例です。
- 角度指定 -90° 〜 +90°
- 角度指定 0° 〜 180°
- %指定 -100 〜 +100
- %指定 0 〜 100
- パルス幅指定 0.5ms 〜2.5ms
付属ソフトウェアでお客様の開発工程を削減し、目的のシステムの実現を容易にします。
最大12台のRCサーボモーターを駆動
製品1台あたり6台のサーボモーターを駆動でき、製品2台を重ねることで2種類の電圧で最大12台のサーボモーターを駆動できます。複数の可動部を制御するような用途に利用可能です。
広い電圧範囲
5Vから15Vの広い入力電圧範囲に対応しており、多くのRCサーボモーターの電圧範囲(6V〜11.1V)をカバーしています。
Raspberry Pi電力供給機能
モーター用の電源からRaspberry Piに必要な5Vを生成して供給する機能を搭載しています(ON/OFF可能)。別途Raspberry Pi用の電源を用意する必要がなくなり、シンプルなシステムを実現できます。
保護回路
電源入力部に逆接続、過電圧、過電流防止保護回路を搭載しました。万一の誤接続やショートによる損害を抑えます。
拡張基板/HATスタック
RPZ-RC-Servoの上に別の拡張基板/HATをスタック(積み重ね)できます。例えば、RPZ-PIRS(感/明るさセンサー/赤外線 拡張基板)と組み合わせるとモーターとセンサーを連携させることが可能です。
仕様
項目 | 仕様 |
---|---|
対応ハードウェア | 40ピンコネクタを搭載したRaspberry Piシリーズ (Raspberry Pi Picoシリーズは非対応です) 動作確認を行っている製品: – Raspberry Pi 5 – Raspberry Pi 4 Model B – Raspberry Pi 3 Model B/B+ – Raspberry Pi Zero 2 W – Raspberry Pi Zero W/WH |
対応OS | 2024年以降にリリースされたRaspberry Pi OS |
モータータイプ | PWM制御方式のサーボモーター (一般的なRCサーボモーター全般に対応) |
モーター接続数 | 6 |
PWM周波数 | 24Hz – 1526Hz の範囲で指定可能 (全モーターで共有) |
PWM周波数精度 | +/-25ppm |
PWM分解能 | 4096段階 |
電源コネクター | ターミナルブロック ピッチ 5mm 対応電線 22 – 12 AWG ネジ M2.5 |
モーター接続コネクター | 3ピン2550(Qi)コネクター 端子配列: GND、電源、PWM |
電源電圧 (*1) | 5V – 15V (連続3.5A Max, 瞬間5A Max) |
モーター電流 (*1) | 3A/モーター |
Raspberry Pi 電力供給 | 5V 3A (ON/OFF可能) |
I2Cアドレス | 0x40 / 0x41から選択 |
(*1) 連続運転する場合の最大電流値は周囲温度により変動する可能性があります。
購入
RPZ-RC-Servo基板本体と、Raspberry Pi接続用アダプターのセットになります。
まとまった数量をご希望の方は、見積もり依頼よりご連絡ください。
モーター選定ガイド
制御方式
RPZ-RC-Servoが対応しているのは、GND(−)、電源(+)、PWM(制御信号/S)の3ピンタイプのサーボモーターです。
RCサーボモーターの多くはこの方式ですが、独自規格を採用しているフタバ製のモーターは使用できません。
トルク
ご自身の用途に必要なトルクがあるかご確認ください。
トルク=10[kg・cm]のモーターの場合、モーター軸を中心に半径1cmで10kgの重量を持ち上げる力があることを意味します。てこの原理により、半径10cmの位置に負荷がある場合は1kgの力となります。
回転角度
ご自身の用途に必要な回転角度があるかご確認ください。180°回転するものが一般的ですが、270°や360°の範囲を持つ製品もあります。
RCサーボモーターは指定の角度範囲で動くものが一般的で、1回転以上する用途には利用できません。1回転以上させたい場合はステッピングモーターもご検討下さい。
推奨モーター
ベンダー | モーター | コメント |
---|---|---|
FLASH HOBBY | CLS3850MED | 高トルク、金属製のコアレスサーボ。磁気エンコーダーによる高精度な位置検出。 |
FLASH HOBBY | M45CHW | 高トルク、金属製のコアレスサーボ。270°モデルもラインナップ。 |
FLASH HOBBY | M25BHW | 高トルク、金属製のブラシレスサーボ。 |
Tower Pro | MG996R | 金属製ギヤ搭載ながら安価な定番サーボ。 |
ZOSKAY | DS3235 | 高トルク、金属製ギヤのコアレスサーボ。 |
ZOSKAY | DS3218 | 高トルク、金属製ギヤの定番サーボ。 |
セットアップ(ハードウェア)
アダプターの取り付け
以下の写真のように、付属アダプターを取り付けます。
I2Cアドレススイッチ
基板上のSW1、ADRスイッチを操作して使用するI2Cを決定します。下の写真で見て下にセットされているとOFF、上にセットされているとONとなります。
スイッチの状態とI2Cアドレスは以下の表の通りです。通常はOFFのままで問題ありません。
本製品を2台使用する場合は、片方をOFF(0x40)、もう一方をON(0x41)にしてください。他の拡張基板などでI2Cアドレス0x40を使用している場合、ON(0x41)にして衝突を回避して下さい。
SW1-2 (ADR) | I2Cアドレス |
---|---|
OFF | 0x40 |
ON | 0x41 |
Raspberry Piに取り付け
Raspberry Piの40ピンコネクターに取り付けます。
モーター接続
モーター接続端子の配列は以下の通りです。
最大M1-6の6台のモーターを接続できます。
GND(グラウンド/−)、VM(電源/+)、PWM(制御信号/S)の3つの端子があります。モーターと一致する向きで接続して下さい。
Raspberry Pi電力供給スイッチ
基板上のSW1、PWRスイッチを操作してRaspberry Piへ電力を供給するか決定します。下の写真で見て下にセットされているとOFF、上にセットされているとONとなります。
スイッチの状態とRaspberry Pi電力供給は以下の表の通りです。
SW1-1 (PWR) | Raspberry Pi電力供給 | Raspberry Pi本体の電源コネクター |
---|---|---|
OFF | Raspberry Piへ電力供給しない | 別途USBケーブルを接続 |
ON | Raspberry Piへ電力供給する | 未接続 |
- 電力供給がOFFの場合、Raspberry Pi本体の電源コネクターにUSBケーブルを接続し、電力を供給して下さい。
- 電力供給がONの場合、Raspberry Pi本体の電源コネクターには何も接続しないで下さい。RPZ-RC-Servoに電圧が印加されると自動的にRaspberry Piへ給電されます。
- 本スイッチを切り替えてRaspberry PiをON/OFFしても問題ありません。OFFする際はRaspberry Piでシャットダウン操作を行ってからスイッチをOFFして下さい。
- 電源管理/制御/RTC拡張基板「RPZ-PowerMGR」をご利用の場合、本製品の電力供給はOFFにして下さい。
電源接続
RPZ-RC-Servo基板の電源コネクターJ2に電源を接続します。以下の写真の向きでみて左にGND(−)、右にVIN(+)を接続し、マイナスドライバーでネジを締めて固定します。対応電線22 – 12AWG、締めつけ用ネジM2.5となっています。
本製品は5V – 15Vの電圧に対応しています。電源電圧がそのままモーターに印加されます。使用するモーターの対応している電圧をご用意下さい。異なる電圧のモーターを利用したい場合は、本製品を2台使用してください。
使い方
モーターの制御方法については詳しく解説するため、別のページを用意しています。
サーボモーターを指定した角度に動かす (Raspberry Pi + RPZ-RC-Servo)
サーボモーターは、モーターシャフトの角度(位置)を電気的に指示することが可能なモーターで、ものやアームを動かしたり、カメラを回転させたりすることが可能です。本記事ではRPZ-RC-ServoとRaspberry Pi(ラズパイ)を使ってサーボモーターを指定した角度へ回転させる方法を解説しています。Pythonで動作する制御ソフトウェアcgservoを使うことで簡単かつ直感的にモーターを制御することができます。
消費電流と保護回路
- 各モーターの最大電流は3A以下でお使い下さい。
- 電源から基板への電流は、連続3.5A以下、瞬間5A以下でお使い下さい。
- 過電流、過熱を検知すると電力供給を遮断します。この場合、一度電源(J2コネクター)を落として再度印加することで、復帰します。
- 上記は室温環境での目安で、周囲温度が高い場合はより低い電流にする必要がある場合があります。
開発者向け資料
注意事項
開発依頼
本製品への機能追加や指定コネクターへの変更などのカスタマイズ、本製品を使ったシステムの開発依頼、その他ハードウェア、ソフトウェアの開発については、有償にて承っております。ハードウェア、ソフトウェア受託開発をご参照下さい。
関連ページ
静音モードでステッピングモーターの動作音を抑える (Raspberry Pi + RPZ-Stepper)
ステップ角単位で回転するという仕組み上、ステッピングモーターは振動や音が大きくなりやすい特徴があります。RPZ-Stepperは静音モードを搭載しており、振動と音を低減できます。モーターや回転数にもよりますが、動いているのかほとんどわからないレベルまで振動や音を減らすことも可能です。静かな環境で動作させるアプリケーションを実現できます。
定期撮影ラズパイカメラをモバイルバッテリーで長期運用 (RPZ-PowerMGR)
Raspberry Pi(ラズパイ)と純正カメラを使用して、定期的に撮影するタイムラプス機能を実装する方法を解説します。RPZ-PowerMGR拡張基板を使うことで、指定時刻に起動し、撮影後は自動的にシャットダウン&電源OFFします。待機時の消費電力をカットすることで、モバイルバッテリーで長期運用が可能になります。
RPi TPH Monitor Rev2 (Raspberry Pi用 温度/湿度/気圧/赤外線 ホームIoT拡張ボード)
動作をプログラミング可能な、Raspberry Pi(ラズパイ)用ホームIoT拡張ボードです。温度、湿度、気圧センサー、赤外線送信、受信機能を搭載。温度が上がったらエアコンをオンにする、外出先から家電の操作をする、気温や湿度を記録する、といった使い方が可能です。ディスプレイやLEDに情報表示、スイッチを押したら特定の処理をすることもできます。