PwmOut

(2015.5.31 作成)

 PWM(パルス幅変調: Pulse width modulation)を行うクラスです。PWM自体の詳しい説明は他サイトに譲るとして、高速にGPIOをOn/Offすることで

  • 擬似的なアナログ出力として利用する
  • On/Off比率を利用して機器に指示を出す (サーボモータ制御など)

等の使い方をされます。ArduinoではanalogWriteで実現されています。

 使用されるパラメータは以下の図の通りです。

 STM32, Arduino両方のクラスをそれぞれ公開していますので、実際のコンストラクタ等はそれぞれのサブページを見てください。それぞれに制約があり、

  • Arduino版に関しては制約が多く、周期が変更不能であるなど基底クラスに含まれる多くの関数が使用不可能です。
  • STM32版では周期設定時にカウンタクロックが設定され、パルス幅設定はこのクロックに影響されます。詳しくはSTM32の解説ページを見てください。

関数一覧

周期を変更する (float版)

プロトタイプ void period(const float &seconds)
戻り値

なし

引数

seconds

周期 (秒単位)

備考

Arduino版:使用不可です

STM32版:パルス幅の設定精度をなるべく上げられるようにタイマのカウンタクロックを設定します。

周期を変更する (ms版)

プロトタイプ void period_ms(const uint16_t &ms)
戻り値

なし

引数

ms

周期 (ms単位)

備考

Arduino版:使用不可です

STM32版:タイマのカウンタクロックを0.5msに設定するので設定可能な最大周期は32767[ms]までです。

周期を変更する (us版)

プロトタイプ void period_us(const uint16_t &us) 
戻り値

なし

引数

us

周期 (us単位)

備考

Arduino版:使用不可です

STM32版:タイマのカウンタクロックを1usに設定するので設定可能な最大周期は65535[us]までです。

パルス幅を変更する (float版, ms版, us版)

プロトタイプ

void pulsewidth(const float &seconds)

void pulsewidth_ms(const uint16_t &ms)

void pulsewidth_us(const uint16_t &us)

戻り値

なし

引数

seconds

パルス幅 (秒, ms, us単位)

備考

Arduino版:使用不可です

STM32版:実際に設定できる上限値と精度は周期設定時のカウンタクロックに依存します。

Duty比からパルス幅を決定する

プロトタイプ

void write(const float &value)

operator =

戻り値

なし

引数

value

パルス幅 (ms単位)

1.0でDuty比100%になります。

備考


Duty比を返す

プロトタイプ

float read(void)const

operator()

戻り値

Duty比。100%で1.0を返します

引数

なし

備考