Quantcast
Channel: JH7UBCブログ
Viewing all articles
Browse latest Browse all 440

ラズベリーパイ Python PWM

$
0
0
 ラズベリーパイのPWM(Pulse Width Modulation)の使い方の勉強と実験をしました。

 Raspberry Pi3 MODEL Bでは、精度の高いPWMは、2チャンネルです。

 どの程度の精度なのか、調べてみます。

 Pythonプログラムでは、PWMの制御は次のように行います。

 GPIO25から100Hzのパルスをデューティ比50%で出力するには

GPIO.setup(25,GPIO.OUT) #GPIO25を出力に設定

p=GPIO.PWM(25,100)#GPIO25,100Hz

p.start(50)#デューティ比50%の信号をスタート

PWM信号を止めるには

p.stop()

とします。

100Hzデューティ比50%の信号です。
イメージ 1

100Hz デューティ比20%の信号です。

イメージ 2

デューティ比は、0%~100%の間で設定できます。

PWMは、疑似アナログ出力として、モータの制御などに使われます。

周波数の精度は、どうでしょうか。

100Hzを周波数カウンタで測定してみました。

イメージ 3

 ±2Hz程度で、比較的良い制度です。

 1000Hzの設定での実測周波数です。

イメージ 4

875±3Hz程度です。

誤差12.5%というところでしょうか。

周波数は、あまり正確とはいえませんが、制御は、大丈夫でしょう。

PWMの出力に圧電スピーカを接続すれば、音が出ます。

モールス練習機の出力をPWMにすれば、圧電スピーカを使ってモールス練習機ができます。

プログラムの一部を次のように変更すればOKです。

p=GPIO.PWM(25,700)#GPIO25,700Hz   を加えます。

def dot()とdef dash()を次のように書き換えます。

def dot():
    p.start(50)
    sleep(dot_time)
    p.stop()

def dash():
    p.start(50)
    sleep(dash_time)
    p.stop()

 圧電スピーカを接続した様子です。

イメージ 5




Viewing all articles
Browse latest Browse all 440

Trending Articles