RaspberryPiでサーボモータをPWM制御する

概要

Raspberry PiでサーボモータをPWM制御を使って動かします。

準備するもの

・Raspberry Pi 一式
・ブレットボード 一式
・サーボモータ (本記事ではSG-90を使用しています。)

実行環境

・Raspberry Pi 3(Raspbian)
・Python 3

回路

画像1

回路図が読めない方向けにブレットボードの配線図も用意しました。
こちらも参考にしてください。

画像2

サーボモータのケーブルについて、サーボモータのデータシートをしっかり読んで配線するようにしてください。

サーボモータ -> Raspberry Pi
GND -> GND
VCC -> 5V
PWM -> GPIO

ソフトウェア

PythonからGPIOを操作するために、"RPi.GPIO"のパッケージをインストールしてください。1度インストールした場合は必要ありません。
・"RPi.GPIO"のインストール

sudo apt-get install python-rpi.gpio

・Pythonのソースコード

import RPi.GPIO as GPIO
import time
i=0
pin=18    # サーボモータの信号線を接続したGPIO番号の設定
GPIO.setmode(GPIO.BCM)    # ポート番号の指定方法をGPIO番号に指定
GPIO.setup(pin,GPIO.OUT)    # GPIOを出力に設定
servo=GPIO.PWM(pin,50)    # PWMの周波数を50に設定
servo.start(2.5)   # PWMのデューティー比を2.5で開始 
while i<5:
 servo.ChangeDutyCycle(5)    # PWMのデューティー比を変更
 time.sleep(0.5)
 servo.ChangeDutyCycle(7.5)
 time.sleep(0.5)
 servo.ChangeDutyCycle(10)
 time.sleep(0.5)
 servo.ChangeDutyCycle(12.5)
 time.sleep(0.5)
 servo.ChangeDutyCycle(10)
 time.sleep(0.5)
 servo.ChangeDutyCycle(7.5)
 time.sleep(0.5)
 i+=1
servo.stop()    # サーボの制御を終了
GPIO.cleanup()    # GPIOポートのクリア

実行


よろしければサポートお願いします。頂いたサポートは全額制作活動費(機材購入、イベント出展、エナドリ代)に活用させて頂きます。 制作活動の継続/生きる希望になりますので、よろしくお願いします。