43
45

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Raspberry Piでサーボモーターを回す

Last updated at Posted at 2017-12-17

このエントリは「Raspberry Piでスマートロックつくった」の解説2つめになります。
サムターンを回してカギを開閉するためにサーボモーターSG92Rを使います。Pythonでサーボを簡単に扱うライブラリはいくつかありますが、今回はRaspbianに最初から入っているRPi.GPIOを使って動かします。

GPIOピンに接続

秋月電子通商の商品紹介ページによると、
動作電圧:4.8~6V、
配線:茶=GND、赤=電源[+]、橙=制御信号
だそうです。
M-08914 (1).jpg
なので茶色をGND、赤を5V、黄色を4番あたりに繋いで制御パルス用に用います。

プログラム

import RPi.GPIO as GPIO
import time

GPIO.setmode(GPIO.BCM)

#GPIO4を制御パルスの出力に設定
gp_out = 4
GPIO.setup(gp_out, GPIO.OUT)

#「GPIO4出力」でPWMインスタンスを作成する。
#GPIO.PWM( [ピン番号] , [周波数Hz] )
#SG92RはPWMサイクル:20ms(=50Hz), 制御パルス:0.5ms〜2.4ms, (=2.5%〜12%)。
servo = GPIO.PWM(gp_out, 50)

#パルス出力開始。 servo.start( [デューティサイクル 0~100%] )
#とりあえずゼロ指定だとサイクルが生まれないので特に動かないっぽい?
servo.start(0)
#time.sleep(1)

for i in range(3):
    #デューティサイクルの値を変更することでサーボが回って角度が変わる。
    servo.ChangeDutyCycle(2.5)
    time.sleep(0.5)

    servo.ChangeDutyCycle(7.25)
    time.sleep(0.5)

    servo.ChangeDutyCycle(12)
    time.sleep(0.5)

    servo.ChangeDutyCycle(7.25)
    time.sleep(0.5)

servo.stop()
GPIO.cleanup()

実行結果

# ちなみに ラズパイでサーボっていうとよく[SG90](http://akizukidenshi.com/catalog/g/gM-08761/)が紹介されていますが今回はSG92Rを使っています。カギを回すために一応トルクがちょっと強めなSG92Rを採用したのが理由ですが、結果としては十分すぎるくらい強かったのでSG90でも問題なく回せると思います。サイズ感で好みの方を使えば良いでしょう。 Next:[Raspberry PiにNFCリーダを接続してSuicaを読み取る](https://qiita.com/undo0530/items/89540a03252e2d8f291b)
43
45
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
43
45

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?