icysamon blog

Raspberry Pi PicoでサーボモーターSG-90を制御する

,

仕様

動作電圧:3.3 ~ 6 V

動作速度:0.12 秒 / 60 度

回転範囲:約 -90 ~ 90 度

温度範囲:0 ºC – 55 ºC

回路接続

SG-90Raspberry Pi Pico
オレンジ色線GP0 (コードによって)
赤い色線VBUS(5V)
茶色線GND

PWM制御

角度パルス幅デューティー比(パルス幅 / 周期)
-90°(左)0.5ms0.5ms / 20ms
0°(中央)1.45ms1.45ms / 20ms
90°(右)2.4ms2.4ms / 20ms

コード

from machine import Pin, PWM
import time

duty_max = 65025
deg_min = 0.025 # -90
deg_middle = 0.0725 # 0
deg_max = 0.12 # 90

# init
def init(pin_pwm = 0, freq = 50):
    global servo
    servo = PWM(Pin(pin_pwm))
    servo.freq(freq)

# example function
def example(interval = 3):
    servo.duty_u16(round(duty_max * deg_min))
    time.sleep(interval)
        
    servo.duty_u16(round(duty_max * deg_middle))
    time.sleep(interval)
        
    servo.duty_u16(round(duty_max * deg_max))
    time.sleep(interval)

パラメータ

duty_max

最大のデューティ値(100%)です。

最大値 65025 についてここを参考してください。

deg_min

-90° ときのデューティー比です。

deg_middle

0° ときのデューティー比です。

deg_max

90° ときのデューティー比です。

関数

init(pin_pwm = 0, freq = 50)

ピンと周波数を配置するための初期化関数です。

pin_pwm:PWM信号線と繋がっているのピンです。

freq:周波数、ここにはデータシートによって50Hzに設定します。

example(interval = 3)

テスト関数です。-90° -> 0° -> 90° の間にループ制御します。

interval:回転間隔。

リポジトリ

https://github.com/icysamon/SG-90

検索

icysamon

mail@icysamon.com