LoginSignup
0
1

More than 1 year has passed since last update.

ラズパイ4でサーボモータを動かすpigpio

Last updated at Posted at 2021-07-15

ラズパイ4 カーネル5.1.0(2021.5.7版 32bitおすすめ全部入り)を使用しています
ラズパイの紹介記事でよく見かけるGPIOライブラリ RPi.GPIO でサーボモーターをPWMで制御するとパルス幅などに揺らぎがあるためにサーボモーターが止まるはずなのに、ジッ、ジッ、と動いてしまいます。

GPIOにアクセスするライブラリはいくつかあるようですが、 pigpioを使ってみることにしました。
interface2021.6月号でも紹介しています。https://interface.cqpub.co.jp/wp-content/uploads/if2106_148.pdf

pigpioのインストール

公式ページのダウンロードリンクhttp://abyz.me.uk/rpi/pigpio/download.html
ここに、以下の2つのコマンドを打つとあるので端末から実行します。
sudo apt-get update
sudo apt-get install pigpio python-pigpio python3-pigpio
今回は、実行時に既に最新板があるよ!と表示されたので、32bitおすすめ全部入り版はインストール不要でした。
使用前にデーモンを起動します。
sudo pigpiod   pigpioではなくdが付いています。
pigpiod -v でバージョン確認できます。
インストールしたときは1.79と出ましたが、バージョン確認では79と表示されました。

動作テスト

コードは参考HP
https://www.fabshop.jp/%E3%80%90-%E7%AC%AC38%E5%9B%9E-%E3%80%91gpio%E5%88%B6%E5%BE%A1%E3%83%A9%E3%82%A4%E3%83%96%E3%83%A9%E3%83%AA%E3%81%AE%E3%81%BE%E3%81%A8%E3%82%81/
からコピペしました。windows上だとコード部分をテキストエディタに貼り付けて、PWM.pyなど適当に名前を付けます。
USBメモリにコードを移して、ラズパイに刺しました。その後、ファイルマネージャを使ってホームディレクトリにコピーしています。
pyファイルをダブルクリックするとラズパイのpython開発環境であるThonnyが立ち上がります。
実行ボタンを押すとサーボモーターが動きました。
いくつかの制御関数があるようですが、.hardware_PWMがノイズが少なくて良さそうです。

import pigpio
from time import sleep
# 実行前にsudo pigpiodを忘れずに
pig = pigpio.pi()
pig.set_mode(12, pigpio.ALT0) #OUTPUTの他にALT0-5のモードがある

counter = 0
while (counter < 3):
    pig.hardware_PWM(12, 50, 120000) #サーボは50Hzで制御する
    sleep(1)
    pig.hardware_PWM(12, 50, 72500) #7.25%のdutycycle
    sleep(1)
    pig.hardware_PWM(12, 50, 25000)
    sleep(1)
    pig.hardware_PWM(12, 50, 72500)
    sleep(1)
    counter = counter + 1

pig.hardware_PWM(12, 50, 0)
pig.set_mode(12, pigpio.INPUT)
pig.stop()

ラズパイ4でのALTモードの紹介
https://elinux.org/RPi_BCM2711_GPIOs#PCM_CLK
set_modeでOUTPUTやALT1-5を試してみたけど、ALT0と同様にサーボが動きました。18番GPIOでも同様でした。
interfaceの記事では18番でOUTPUTを使っていました。

サーボモーターの接続

秋月で購入したSG-92Rを使いました。動作電圧:4.8V、配線:茶=GND、赤=電源[+]、橙=制御信号 [JRタイプ]とあるので、
電源ラインは5Vとして(3.3Vでも動きます)、オレンジは参考HPのコードから12番のGPIOピンと接続しました。
PWMサイクルが20msなので、50Hzで制御します。制御パルス0.5msの時dutyは2.5%、2.4msの時は12%なので、2.5-12%の間でdutyをかけてやります。
image.png

0
1
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
1