ラズパイ4でサーボモータを動かすpigpio
ラズパイ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をかけてやります。
Author And Source
この問題について(ラズパイ4でサーボモータを動かすpigpio), 我々は、より多くの情報をここで見つけました https://qiita.com/katakaku/items/b6179e0fe940fc4d1ca3著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .