====== MPAINO 高速パルス出力 Kモジュール ======
KオプションモジュールはMCUのPWM波形を直流に平滑せずに出力します。Kは6チャネル、K2は12チャネルで、選択したモジュールは製品に組み込まれて出荷されます。Yアナログ出力とは異なる0~5Vのデジタル波形です。受信機器の入力仕様を確認してください。
{{ :ja-jp_products:mpaino-k-channels.svg?1000 |K、K2、Y/K混載構成のチャネル番号と共有Timer }}
===== 製品仕様 =====
{{:ja-jp_products:mpaino-option-k-front.png?190|Kパルス出力モジュールの前面}} {{:ja-jp_products:mpaino-option-k2-front.png?190|K2の2番目のパルス出力モジュール前面}}
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**を出荷構成に合わせます。
===== チャネルと共有Timer =====
^ 出荷構成 ^ 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ピンが変わるため、プログラムの論理チャネルを出荷構成に合わせてください。
===== 配線と初回確認 =====
- 電源を切り、使用するPWM端子と同じ端子群のGNDを確認します。
- 製品の結線図に従い、受信機器の0~5V PWM入力と共通GNDを接続します。
- PWM出力に外部電源や過電流負荷を直接接続しないでください。
- 実負荷を接続する前に、適切な測定器で周波数とデューティを確認します。
===== 例1:Arduino標準のanalogWrite() =====
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);
}
===== 例2:周波数とデューティ =====
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出力も初期化する場合があります。負荷が安全な状態で実行してください。
===== 例3:指定した数のパルス =====
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()''を繰り返し呼び、ループに遅延を入れないでください。 |
===== 関連文書 =====
* [[ja-jp_commands:reference:pwm|PWM()]] · [[ja-jp_commands:reference:fdpwm|FDPWM()]] · [[ja-jp_commands:reference:npwm_begin|NPWM_BEGIN()]] · [[ja-jp_commands:reference:npwm|NPWM()]]
* [[ja-jp_products:mpaino_x|Xアナログ入力]] · [[ja-jp_products:mpaino_f|F PT100入力]] · [[ja-jp_products:mpaino_y|Yアナログ出力]]
* [[ja-jp_products:mpaino|← MPAINO Seriesのオプション構成]]