K210 学習ノート (4) - 出力 PWM

1. PWMとは何ですか?

PWM は一般にパルス幅変調を指し、対応する負荷の変化に応じてトランジスタのベースまたは MOS トランジスタのゲートのバイアスを変調し、トランジスタまたは MOS トランジスタの導通時間の変化を実現するアナログ制御方式です。スイッチング安定化電源の出力変化を実現します。この方式は使用条件が変化しても電源の出力電圧を一定に保つことができ、マイコンのデジタル信号を利用してアナログ回路を制御する場合に非常に有効な技術です。計測や通信から電力制御や変換に至るまで、さまざまな分野で広く使用されています。
MAIX BIT の PWM: パルス幅変調モジュール、ハードウェアによってサポートされる PWM、任意のピン (0 ~ 47 ピン) を指定できます。各 PWM はタイマーに依存します。つまり、タイマーが PWM 機能にバインドされている場合、タイマーとして使用することはできません。通常のタイマー。タイマーが 3 つあるため、各タイマーには 4 チャネルがあり、最大 12 チャネルの PWM 波形を同時に生成できます。

2、使用する

1. コンストラクター

pwm = machine.PWM(tim, freq, duty, pin, enable=True)

指定されたパラメーターを使用して新しい PWM オブジェクトを作成します。
パラメーターの説明:
tim:各 PWM はタイマーに依存して波形を生成するため、ここでタイマー オブジェクトを渡す必要があり、タイマー オブジェクトを作成するときにタイマー ID とチャネル番号 freq を指定する必要があります。
初期化する必要があります: PWM 波形周波数
デューティ:サイクル全体におけるハイ レベルの割合を表す PWM デューティ サイクル、値: [0,100]
[ピン]: PWM 出力ピン。設定することはできませんが、fm を使用してピンのマッピングを均一に管理します。
Enable : 波形の生成を直ちに開始するかどうか。デフォルトは True で、オブジェクトの生成直後に指定されたピンで PWM 波形の生成を開始します。

2.方法

1、

pwm.init(tim, freq, duty, pin, enable=True)

同様のコンストラクター

2、

pwm.freq(freq)

PWM 周波数を取得または設定します。
パラメータの説明:
freq : PWM 周波数、オプションのパラメータ。パラメータが渡されない場合、ステップ設定は現在の周波数値のみを返します。

3、

pwm.duty(duty)

PWM デューティ サイクルを取得または設定します。
パラメータの説明:
デューティ: PWM デューティ サイクルはオプションです。パラメータが渡されない場合、ステップ設定は現在のデューティ サイクル値のみを返します。

4、

pwm.enable()

PWM 出力を有効にして、指定したピンに波形を即座に生成します

5、

pwm.disable()

PWM 出力を無効にすると、指定されたピンは波形を生成しなくなります

6、

pwm.deinit()

PWM ハードウェアからログオフし、占有されているリソースを解放し、PWM クロックをオフにします。

3.RGBブリージングライト

呼吸する光のLEDライトは、電源を入れると徐々に明るくなり、最も明るくなるまで数秒間維持され、その後消えるまで徐々に暗くなります。数秒間消灯した後、徐々に暗い状態から明るい状態に変わり、このサイクルが続きます。サイクルの速度が人間の呼吸とちょうど同期している場合、それは呼吸する光の伝説的な効果です。この効果は PWM によって実現でき、PWM のデューティ サイクルを調整することでさまざまな程度の明るさと暗さを実現できます。

呼吸ライトコード

from machine import Timer,PWM
import time


io_led_blue = 14
tim = Timer(Timer.TIMER0, Timer.CHANNEL0, mode=Timer.MODE_PWM)
ch = PWM(tim, freq=500000, duty=50, pin=io_led_blue)
duty=0
dir = True
while True:
    if dir:
        duty += 10
    else:
        duty -= 10
    if duty>100:
        duty = 100
        dir = False
    elif duty<0:
        duty = 0
        dir = True
    time.sleep(0.1)
    ch.duty(duty)

オンラインでコードを実行したところ、青いライトの電源が入った後、LED ライトが徐々に明るくなり、最も明るい点に達すると、消えるまで徐々に暗くなることがわかりました。

呼吸の光

コードを分析します:
マシン パッケージからタイマー オブジェクトと PWM オブジェクトをインポートします。
タイマー オブジェクトをインポートして
、変数 io_led_blue を値 14、つまり Pin13/IO13 で定義します。特定の LED ピンがチップのどのピンに接続されているかを確認してください。前回の開発ボードの紹介を参照してください 回路図を見てください
タイマー ID が指定されています (タイマー 0 とチャネル 0)。
デューティサイクルを常に変更してハイレベル時間を変更し、ランプの明るさを変更します。

4. PWMサーボ

ステアリングギア制御:
ステアリングギア制御には一般に約20msのタイムベースパルスが必要で、パルスのハイレベル部分は通常0.5ms〜2.5msの範囲の角度制御パルス部分です。180 度角度サーボを例にとると、対応する制御関係は次のようになります:
0.5ms-----------0 度;
1.0ms----------- 45 度;
1.5ms----------90 度;
2.0ms----------135 度;
2.5ms----------180払う;

コード

from machine import Timer,PWM
import time

tim = Timer(Timer.TIMER0, Timer.CHANNEL0, mode=Timer.MODE_PWM)
ch = PWM(tim, freq=50, duty=2.5, pin=15)
duty=2
ch.duty(duty)
ch.enable()
while True:
    ch.duty(duty)    
    for x in range(3):
        duty = 2.5 + x*6
        ch.duty(duty)        
        print("duty=",ch.duty())
        time.sleep(3)

実行後の効果は、条件が限られているため、このミニボードは電源に使用されここに画像の説明を挿入
、サーボの信号線はPIN15に接続されています。分周は0〜100の間であり、整数であるため、ある程度の影響を受けます。転送できません

PWMサーボ

要約する

ジンバルの追従の基礎を築くには、MAIX BITのPWMの使い方を学ぶ必要があります。

おすすめ

転載: blog.csdn.net/Thousand_drive/article/details/123863399