概要
pigpioを使って、Pythonから簡単にPWM波形が出力できた。
背景と目的
Pythonを使って、PWM波形の出力を試す。
詳細
0.参考
1.インストール
以下を実行すれば、インストール完了。
sudo apt-get update sudo apt-get install pigpio python-pigpio python3-pigpio
そしたら、pigpiodというデーモンを立ち上げる。基本的にこのデーモンに対して、通信を行って制御するという仕組みらしい。
sudo pigpiod
これで準備はOK.
2.実装
2.1 基本の確認
pigpioモジュールをインポートし、pigpio.piオブジェクトを作成。このpiのメソッドを呼び出して制御していく。
import pigpio pi = pigpio.pi()
2.2 Hardware PWMの出力
ここでは、Hardware PWMというものを使う。Raspberry Piでは、使用できるGPIOが12,13,18,19に限られるが時間精度の高い信号が生成できる。
設定値は、周波数[Hz]とデューティ。周波数は、整数値。デューティは%で指定ではなく、1,000,000を100%と考えて数値を指定。止めるには、GPIOにLOWを書き込めばよい。
# 設定 PWM_GPIO = 18 # 12,13,18,19のどれか PWM_DUTY = 33.3 # デューティ比[%] PWM_FREQ = 38000 # 周波数[Hz] # 引数用に変換 gpio = PWM_GPIO dutycycle = int(PWM_DUTY * 1000000 / 100.) frequency = int(PWM_FREQ) # 出力開始 pi.hardware_PWM(gpio, frequency, dutycycle) # 止める場合 pi.write(gpio, 0)
2.3 実動作確認
波形を確認したところ、設定通り、周波数38kHz(=周期26.3us)とデューティ33.3%の波形がバシッと出て、揺らぎはない。ちなみに、ソフトウェアPWMだとこうはいかない。
まとめと今後の課題
pigpioを使って、Pythonから簡単にPWM波形が出力できた。