ラズベリーパイPico Wで270°サーボモータを動かしてみます。
今回の記事ではPWM(パルス幅変調)を利用します。
PWMに関してはMakeCodeのPWMで270°サーボモータを動かしてみようをご覧ください。
今回使用する270°サーボモータはGeekServo 9G Servo-Grayを使用します。
回転角は-45°〜225°になります。
GeekServo 9G Servo-Gray — スイッチサイエンス
今回使用するサーボモータは下記の仕様になります。
周波数が50Hzの時に
・最小のデューティ比が2.5%
・中間のデューティ比が7.25%
・最大のデューティ比が12%
になり、モータの回転角は
・デューティ比 2.5%では回転角は-45°
・デューティ比 7.25%では回転角は90°
・デューティ比 12%では回転角は225°
になります。
早速、ラズベリーパイPico Wとサーボモータを繋げてみます。
※左がラズベリーパイPico W、右がサーボモータ
GPIOピン0 → オレンジ(上の図では黄色)
3V → 赤
0V(GND) → 茶色(上の図では黒)
※ラズベリーパイPico WのGPIOピンの配置は下記のリンク先のページを参考にしてください。
RP2 用クイックリファレンス — MicroPython latest ドキュメント
マイコンとモータをジャンパー線で繋ぐ時、最初からピンがハンダ付けされているラズベリーパイPico HやラズベリーパイPico WHを使用すると簡単に試すことができます。
Raspberry Pi Pico H — スイッチサイエンス
Raspberry Pi Pico WH — スイッチサイエンス
次にラズベリーパイPico W用のコードを作成します。
import machine import time # デューティ比を%表記から0〜65535の間の値に変換する def dutyRate2u16(dutyRate): return int(65535*dutyRate/100) pwm = machine.PWM(machine.Pin(0)) pwm.freq(50) # デューティ比 7.5% 回転角は90° pwm.duty_u16(dutyRate2u16(7.5)) time.sleep(1) # デューティ比 2.5% 回転角は-45° pwm.duty_u16(dutyRate2u16(2.5)) time.sleep(1) # デューティ比 12% 回転角は225° pwm.duty_u16(dutyRate2u16(12)) time.sleep(1) # デューティ比 7.5% 回転角は90° pwm.duty_u16(dutyRate2u16(7.5))
※PWM (パルス幅変調) - RP2 用クイックリファレンス — MicroPython latest ドキュメント
コードをフラッシングしたら、実行してサーボモータが意図通りに動くか確認してみましょう。