Raspberry PiでサーボモーターSG90をPWM制御する方法

  • URLをコピーしました!

今回はホビー用途でも手軽に使えるサーボモーターSG90をRaspberry Piから制御する方法について解説したいと思います。

目次

Raspberry Piとは

今回サーボモーターのコントローラとして使用するのはRaspberry Pi 4というマイコンボードです。Raspberry Pi 4の詳細なスペック等については以下の記事で解説しています。

サーボモータ SG90

今回使用するサーボモーターはSG90というホビー用途などで良く用いられる小型のモーターです。

ARCELI 飛行機 9g SG90ミニサーボアクセサリー450飛行機カーボート(4pcsパック)

私は今回アマゾンで4個パックのものを購入しました。モータを固定する部分のプラスチックの部品が3種類ついているものを選びました。

下記の写真のようにサーボモーターはからは3本の配線が出ています。

赤:電源、茶:GND、オレンジ:制御信号となります。

以下のようにRaspberry Pi 4のGPIOに接続しました。赤と茶はRaspberry Pi 4の5VとGND、オレンジはGPIO18のPWMポート(ソースコードでGPIO18を指定しているためです)へ接続します。

なお今回はサーボモーターの動作テストで負荷無しで動かすため、電源をRaspberry Piから取りました。本来はRaspberry Piからは少ない電流しか流せないため、モーターの負荷を付けたり、複数のモーターを駆動する場合は、別途モーター駆動用電源回路を用意する必要があります。

PWMとは

Raspberry PiからPWM信号を出力する方法については以下の記事で解説しています。今回もRaspberry PiのGPIO制御ライブラリ、pigpioを使っています。

SG90仕様

SG90の仕様は以下となります。1周期20msのPWM信号で、そのうちのデューティー比を変更することでサーボモーターの位置を制御します。
PWMのON時間が0.5msで-90度、2.4msで90度の位置に制御できます。

出典:秋月電子通商

PWMのデューティー比

デューティー比の計算は「デューティー比=パルス幅/周期」となります。
ON時間0.5msはデューティ比2.5%、
ON時間2.4msはデューティ比12%です。

以下のようにPythonのコード上でデューティー比を指示します。

duty1 = 2.5 #デューティー比を%で指定 0度はduty2.5%
duty2 = 12 #デューティー比を%で指定 180度はduty12%

cnv_dutycycle1 = int((duty1 * 1000000 / 100))
cnv_dutycycle2 = int((duty2 * 1000000 / 100))

作成したソースコード

SG90を制御するプログラムをPythonで以下のように記述しました。
サーボモーターを-90度から+90度の位置まで駆動します。

import pigpio
import time

pi = pigpio.pi()

#PWMパラメータ
pwm_pin1 = 18 #PWM出力ピンを指定
duty1 = 2.5 #デューティー比を%で指定 0度はduty2.5%
duty2 = 12 #デューティー比を%で指定 180度はduty12%
freq = 50 #PWM周波数をHzで指定 SG90は1周期20ms(50Hz)

#パラメータ変換
cnv_dutycycle1 = int((duty1 * 1000000 / 100))
cnv_dutycycle2 = int((duty2 * 1000000 / 100))

#PWMを出力
pi.hardware_PWM(pwm_pin1, freq, cnv_dutycycle1) #サーボを0度の位置に駆動

time.sleep(3) #3秒停止する

pi.hardware_PWM(pwm_pin1, freq, cnv_dutycycle2) #サーボを180度の位置に駆動

実行結果

プログラムを実行した結果、以下のように正しく駆動することができました。

動画では先ほどのプログラムを2回実行しています。

まとめ

今回は安価で手軽に使えるサーボモーターSG90をRaspberry Piで制御する方法を解説しました。サーボを使うことで「ソフトウェアからモノを動かす」ということができるようになりますので、ぜひ活用してみてください。

当サイトでは今回紹介したようなサーボモーターを関節に12個搭載したスパイダーロボットの製作も行っています。

また、Raspberry Piでのハードウェア制御をさらに深く学びたい方にはUdemyの以下の講座がおすすめです。

Raspberry Pi Picoで作る!USBショートカットキーデバイス。Pythonで手軽に電子工作しよう! icon


それでは、また次の記事でお会いしましょう。

よかったらシェアしてね!
  • URLをコピーしました!
目次