ラズベリーパイPico Wで270°サーボモータを動かしてみよう


ラズベリーパイ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 ドキュメント


コードをフラッシングしたら、実行してサーボモータが意図通りに動くか確認してみましょう。

同じカテゴリーの記事
マインクラフト用ビジュアルエディタを開発しています。
詳しくはinunosinsi/mcws_blockly - githubをご覧ください。