RaspberryPiでサーボモータをPWM制御する
概要
Raspberry PiでサーボモータをPWM制御を使って動かします。
準備するもの
・Raspberry Pi 一式
・ブレットボード 一式
・サーボモータ (本記事ではSG-90を使用しています。)
実行環境
・Raspberry Pi 3(Raspbian)
・Python 3
回路
回路図が読めない方向けにブレットボードの配線図も用意しました。
こちらも参考にしてください。
サーボモータのケーブルについて、サーボモータのデータシートをしっかり読んで配線するようにしてください。
サーボモータ -> 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ポートのクリア
実行
いいなと思ったら応援しよう!
よろしければサポートお願いします。頂いたサポートは全額制作活動費(機材購入、イベント出展、エナドリ代)に活用させて頂きます。
制作活動の継続/生きる希望になりますので、よろしくお願いします。