0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Raspberry でモーター制御(サーボモーター)

Posted at

サーボモーター
「モーター」というとミニ四駆やラジコンの心臓を連想します。
電源をONにすると走行する玩具ですが、今回利用するのは「サーボモーター」と言われる電材です。

「モーター」と付くだけあって、通電すると軸が回ります。普通のモーターとの違いは、角度付けができる点でしょう。 右45度、左90度のように、決められた角度へ回転させる事が可能です。 この電材の使い道ですが、私はカメラの台座に取り付けて、撮影時のカメラの首振りに使ってみました。

Raspberry で良く利用されているサーボモーターと言えば、安くて、パワーが無くて、低電力で動作する「SG-90」でしょう。

SG-90
仕様は概ね同じだと思うのですが、購入時のデータシートは大事に保管しましょう。
  ① 赤:電源電圧:3.3~6.0v (5v電源を利用しましょう)
  ② 茶:GND
  ③ 黄:DATA(PWM)
の3本が用意されているはずです。 それぞれ、
  ① 2番:5V電源
  ② 9番:Ground
  ③ 11番:GPIO17
で、RaspberryのGPIOへ接続します。
データシートで重要な情報は、
 ・可動域(180度)
 ・ニュートラルポジション(1.45ms)
 ・周波数(50Hz)
 ・周期時間(20ms)
 ・サーボに指定可能な最小&最大時間(0.5ms~2.4ms)
の把握が必要です。

角度付けの計算方法
<0度に角度付けする場合> = 2.5
可動域(180度)に対する割合 = 0度 / 180度 = 0
サーボに指定可能な時間範囲(2.4-0.5) = 1.9 ms
  ※ この二つをかける = 0 * 1.9 ms = 0
更に、サーボに指定可能な最小時間を足す = 0.5 ms + 0 = 0.5 ms
周期時間との割合を計算します = ( 0.5 ms / 20 ms) * 100 = 2.5

<180度に角度付けする場合> = 12
可動域(180度)に対する割合 = 180度 / 180度 = 1
サーボに指定可能な時間範囲(2.4-0.5) = 1.9 ms
  ※ この二つをかける = 1 * 1.9 ms = 1.9
更に、サーボに指定可能な最小時間を足す = 0.5 ms + 1.9 = 2.4 ms
周期時間との割合を計算します = ( 2.4 ms / 20 ms) * 100 = 12

以上の計算から、0度(2.5)~ 180度(12)の間で値を指定して角度付けしましょう。

プログラムなどの準備
Raspberry PI 4 を OS Lite で準備しました。
sudo apt-get update
sudo apt-get upgrade

test.py
import RPi.GPIO as GPIO
import time

GPIO.setmode(GPIO.BCM)            # GPIOモード設定
servo_pin = 17                    # GPIOピン番号
GPIO.setup(servo_pin, GPIO.OUT)   # GPIO出力モード
pwm = GPIO.PWM(servo_pin, 50)     # 周波数50Hz
pwm.start(1.45)                   # パルス幅1.45ms=ニュートラルポジション

try:
    while True:
        pwm.ChangeDutyCycle(12)   # パルス幅12msで、角度は約180度
        time.sleep(2)
        pwm.ChangeDutyCycle(2.5)  # パルス幅2.5msで、角度は約0度
        time.sleep(2)

except KeyboardInterrupt:
    # Ctrl+Cで終了(PWMを停止)
    pwm.stop()

プログラムが出来たら実行してみましょう。
python test.py
サーボモーターが、180度行ったり来たりしたら完了です。
お疲れさまでした~

注意点
サーボモーターの角度付けですが、微妙に角度がずれる事があるようで、そんな時はプルプルとモーターが震えます。
カメラの角度付けに使った時は、このプルプルでピンボケ画像が大量作成されて参りました…(笑)

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?