0
2

More than 3 years have passed since last update.

RasPiでサーボモーターを動かしてみる(180度版)

Last updated at Posted at 2020-05-17

まえおき

ずいぶん昔にサーボモーターを制御できるPI HATを購入して、ハンダ付けまでしていたのですが、それっきりすっかり忘れていました。電子部品の在庫確認をしていたら、見つけてしまったので動作確認してみました。
IMG_3896.JPG

パーツ

  1. パーツというか、RasPi3
  2. サーボモーター SG-90
  3. モーター用の電源
  4. モーターコントローラ Adafruit 16チャンネル PWM/サーボ HAT for Raspberry Pi

確認したら、まだ現行の製品でした。

環境

  1. python 3.7.3
  2. adafruit-circuitpython-servokit 1.2.1

調べたこと、やったこと

サーボモーターは、180度回転するタイプ(左右90度ともいえる)と、360度ぐるぐる回転するタイプがあるようです。180度回転するタイプも360度回転するタイプも、製品の情報をたどると、サンプルコードに到達できたのですが、ここのコードをコピペしても、思ったように動きませんでした。まず、はんだ付け失敗かとも思ったんですが、サーボモーターを接続する場所(16か所あります)を変更しても、動きは同じ。うーむ、、、、

これは、ハンダ付けでダマができているのが問題ではないと思い(責任転嫁か!)、ちょっとパラメータを変えてみて試行してみました。

で、以下のコードでだいたいいけそうでした。

# Adafruit 16-Channel PWM/Servo HAT & Bonnet for Raspberry Pi & SG90 sample
#
# see:
# https://learn.adafruit.com/adafruit-16-channel-pwm-servo-hat-for-raspberry-pi
#
# test system:
# python 3.7.3
# adafruit-circuitpython-servokit 1.2.1

import time
from adafruit_servokit import ServoKit

# Set channels to the number of servo channels on your kit.
# 8 for FeatherWing, 16 for Shield/HAT/Bonnet.
kit = ServoKit(channels=16)

ch = 1

kit.servo[ch].set_pulse_width_range(500, 2400)

# 0..180 step 30 angle
for v in range(0,181,30):
    print( "value=", v )
    kit.servo[ch].angle = v
    time.sleep(1)

# 0, 180 step 90 angle x 3set
for i in range(1,3):
    for v in range(0,181,90):
        kit.servo[ch].angle = v
        time.sleep(1)

# stop(90 angle)
kit.servo[ch].angle = 90

ポイントは

kit.servo[ch].set_pulse_width_range(500, 2400)

で、サーボモーターSG-90のデータシートを確認して、下が0.5ms pulse、上が2.4ms pulseらしいので設定しました。このパラメータでも、ちょっと180度に足りていない気もしますが、ひとまずよしとしときます。

参考

  1. https://learn.adafruit.com/adafruit-16-channel-pwm-servo-hat-for-raspberry-pi
  2. https://learn.adafruit.com/adafruit-16-channel-pwm-servo-hat-for-raspberry-pi/using-the-python-library
  3. http://akizukidenshi.com/catalog/g/gM-08761/
0
2
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
2