【ハードウェア周辺用途】——PWM
PWMの基本的な考え方
PWMとはPulse Width Modulation(パルス幅変調)の略で、アナログ回路の出力をデジタル信号で制御する技術です。PWMは通常、電圧または電流の大きさを制御するために使用され、出力信号の平均値はパルスの幅を変更することによって制御されます。
PWM 信号は一連の周期的なパルスで構成され、各パルスの幅は出力電圧または電流の大きさを表します。パルス幅が 100% の場合、出力電圧または電流は最大値のままになり、
パルス幅が 0% の場合、出力電圧または電流は 0 になります。パルスの幅と周期を変えることで、出力電圧や電流の平均値を調整し、回路部品の制御を実現します。
PWM 技術は、モーター制御のモーター制御、LED 照明の調整、オーディオのデジタル変換など、実用的なアプリケーションで幅広い用途があります。MicroPython では、対応する PWM モジュールをデジタル信号制御に使用して、さまざまな制御およびアプリケーション シナリオを実現できます。
PWMの使い方
pyb.pwm
pyb.pwm
MicroPython で PWM 出力を制御するためのモジュールです。さまざまなアプリケーションシナリオの制御を実現するために、PWM出力の周波数やデューティサイクルなどのパラメータを設定および制御するためのいくつかのメソッドと属性を提供します。
以下は、pyb.pwm
一般的に使用される。
方法
pulse_width(pulse_width)
: パルスの高レベル期間をミリ秒単位で設定します。freq(freq)
: PWM 出力周波数を設定します。単位は Hz です。init(freq=1000, duty=50, timer=4, channel=1, pin=None)
: PWM 出力を初期化します。freq は周波数、duty はデューティ サイクル (デフォルトでは 50%)、timer と channel はタイマーとチャネル番号 (デフォルトでは 4 と 1) です。
属性
pulse_width()
: 現在のパルスの高レベル持続時間をミリ秒単位で返します。freq()
: 現在の PWM 出力周波数を Hz で返します。duty()
: 現在の PWM 出力のデューティ サイクルをパーセンテージで返します。
サンプルコード:
import pyb
# 初始化PWM输出
pwm = pyb.PWM(pyb.Pin.board.X1)
# 设置PWM输出的频率为2000Hz,占空比为20%
pwm.freq(2000)
pwm.duty(20)
# 持续输出PWM信号
while True:
pass
上記のコードは、PWM 出力ピンを初期化し、出力周波数を 2000Hz に、デューティ サイクルを 20% に設定します。while ループで連続して PWM 信号を出力します。
マシン.pwm
machine.pwm
MicroPython で PWM 出力を制御するために使用されるモジュールの 1 つで、さまざまなアプリケーション シナリオの制御を実現するために、PWM 出力の周波数やデューティ サイクルなどのパラメータを設定および制御するためのいくつかのメソッドと属性を提供します。
以下は、machine.pwm
一般的に使用される。
方法
freq(freq)
: PWM 出力周波数を設定します。単位は Hz です。duty(duty)
: PWM 出力のデューティ サイクルを設定します。範囲は 0 ~ 1 です。deinit()
:PWM出力を停止します。
属性
freq()
: 現在の PWM 出力周波数を Hz で返します。duty()
: 現在の PWM 出力のデューティ サイクルをパーセンテージで返します。
サンプルコード:
import machine
import time
# 初始化PWM输出
pwm = machine.PWM(machine.Pin(12))
# 设置PWM输出的频率和占空比
pwm.freq(1000)
pwm.duty(0.5)
# 持续输出PWM信号
while True:
time.sleep(1)
pwm.duty(0.2)
time.sleep(1)
pwm.duty(0.8)
上記のコードは、PWM 出力ピンを初期化し、出力周波数を 1000Hz に、デューティ サイクルを 50% に設定します。while ループのデューティ サイクルを絶えず変更して、PWM 信号の明るさを変化させます。
PWM 利用可能なセンサー
PWM 信号は、一般的にモーターやサーボを制御するために使用され、これらのアプリケーションでは、PWM 信号のデューティ サイクルがモーターやサーボの速度と位置を決定します。
モーターとサーボの制御に加えて、PWM 信号を使用して、次のようなセンサーの出力を制御することもできます。
-
ステアリング ギア角度センサー: ステアリング ギア角度センサーは、PWM 信号を受信することにより、ステアリング ギアの現在の位置と角度を特定できます。PWM 信号のデューティ サイクルを変更することにより、サーボの位置を変更して、さまざまな角度測定値を取得できます。
-
温度センサー: 一部の温度センサー (サーミスターなど) は、PWM 信号を使用して温度値を読み取ることができます。PWM信号のデューティサイクルはセンサーの出力電圧を制御することができ、それによって温度センサーの抵抗値に影響を与え、抵抗値を読み取ることで温度値を得ることができます。(基本的に、ほとんどのコンポーネントは開発ボードに配置されており、初心者は使用できません)
-
光センサー: PWM 信号を使用して、光センサーの出力を読み取ることもできます。PWM 信号の周波数とデューティ サイクルは、光センサーの出力電圧に影響を与える可能性があり、それによってセンサーの測定範囲と分解能に影響を与えます。
PWM 信号のパラメータは、特定のセンサーとアプリケーションの条件に従って決定し、センサーの特性と組み合わせて調整する必要があります。