KオプションモジュールはMCUのPWM波形を直流に平滑せずに出力します。Kは6チャネル、K2は12チャネルで、選択したモジュールは製品に組み込まれて出荷されます。Yアナログ出力とは異なる0~5Vのデジタル波形です。受信機器の入力仕様を確認してください。
K2画像のPWM0~PWM5は2番目のKモジュールの端子表示です。追加分のプログラムチャネルは6~11です。
| 項目 | 内容 |
|---|---|
| オプションコード | K、K2 |
| モジュールあたりの出力 | PWM、6チャネル |
| 出力レベル | LOW 0V、HIGH 5V |
| 最大出力電流 | チャネルあたり30mA |
| 最大周波数 | 1MHz |
| 分解能 | 16 bit |
| 最大構成 | Kを2モジュール、計12チャネル。YとKの出力合計は12チャネルまで |
K出力はMCUのGPIO信号を直接使用します。30mAを超える負荷や異なる電圧を必要とする入力を直接接続しないでください。モーターやソレノイドなどには適切な外部ドライバーを使用します。
| 構成 | Kチャネル数 | PWM()・FDPWM()番号 | analogWrite()番号 | GPIO番号 |
|---|---|---|---|---|
| K | 6 | 0~5 | 20~25 | D130~D135 |
| K2 | 12 | 0~11 | 20~31 | D130~D141 |
| YK / Y2K | 6 | 0~5 | 20~25 | D130~D135 |
上の3種類の番号は、同じK出力を異なる関数から指定するための引数です。analogWrite(20, 128)は最初のK出力、analogWrite(0, 128)は最初のYアナログ出力を指します。PWM(0, …)も最初のK出力です。Kを1モジュールとYを1~2モジュールは併用できますが、K2とYは併用できません。Arduino IDEのHigh-Speed Pulse Output ModuleとAnalog Output Moduleを出荷構成に合わせます。
| 出荷構成 | Kチャネル | 内部Arduino PWMピン | 共有Timer |
|---|---|---|---|
| K単独 | 0~2 | D11、D12、D13 | Timer1 |
| K単独 | 3~5 | D46、D45、D44 | Timer5 |
| K2の追加分 | 6~8 | D5、D2、D3 | Timer3 |
| K2の追加分 | 9~11 | D6、D7、D8 | Timer4 |
| YK / Y2K | 0~2 | D5、D2、D3 | Timer3 |
| YK / Y2K | 3~5 | D6、D7、D8 | Timer4 |
同じTimerの3チャネルは異なるデューティを設定できますが、周波数を共有します。Y/Kの組合せで内部PWMピンが変わるため、プログラムの論理チャネルを出荷構成に合わせてください。
K単独構成の最初の出力に約50%のデューティを出します。KのanalogWrite()値は0~255で、Yの値域とは異なります。
const uint8_t pulseChannel = 20; // Kの最初の出力に対応するanalogWrite番号 void setup() { } void loop() { analogWrite(pulseChannel, 128); // 約50%デューティのPWMを出力 delay(500); }
K単独構成のCH0とCH1はTimer1を共有します。同じ1kHzで、デューティを変えます。
void setup() { PWM_RESET(); // K出力のPWM Timer状態を初期化 FDPWM(0, 1000, 25.0F); // K CH0:1kHz、25% FDPWM(1, 1000, 75.0F); // K CH1:1kHz、75% } void loop() { }
PWM_RESET()は同じTimerを使う他のPWM出力も初期化する場合があります。負荷が安全な状態で実行してください。
K CH0に1kHz、50%デューティのパルスを100個出します。完了までNPWM()を繰り返し呼ぶ必要があるため、loop()にはdelay()を入れません。
void setup() { PWM_RESET(); // パルス列を始める前にPWM状態を初期化 NPWM_BEGIN(0, 1000, 50.0F, 100); // CH0に100パルスを準備 } void loop() { NPWM(0); // 準備したパルス列を進め、完了を処理 }
| 症状 | 確認事項 |
|---|---|
| 波形が出ない | Kの搭載とボードオプション、PWM/GND端子、関数に対応したチャネル番号を確認します。 |
| 周波数が想定と違う | 同じTimerグループの別チャネルで周波数を再設定していないか確認します。 |
| Y/K混載でK単独配線と動作が異なる | Y/Kの組合せで内部PWMピン配置が変わります。出荷構成とモジュール端子を確認します。 |
| 指定パルスが終わらない | NPWM_BEGIN()の後、同じチャネルのNPWM()を繰り返し呼び、ループに遅延を入れないでください。 |