목차
MPAINO 고속펄스 출력 K모듈
K모듈은 MCU의 PWM 신호를 평활하지 않고 출력하는 MPAINO 옵션 모듈입니다. K는 6채널, K2는 12채널을 제공하며 선택한 모듈은 제품에 조립되어 출고됩니다.
Y모듈의 직류 전압ㆍ전류 출력과 용도가 다릅니다. 펄스 출력에 연결할 기기가 0~5V 디지털 파형을 받을 수 있는지 먼저 확인하십시오.
제품 사양
K2 이미지의 PWM0~PWM5는 두 번째 K모듈의 단자 표기입니다. 프로그램에서는 추가 출력 채널 6~11을 사용합니다.
| 항목 | 내용 |
|---|---|
| 옵션 코드 | K, K2 |
| 모듈당 출력 | PWM 6채널 |
| 출력 수준 | LOW 0V, HIGH 5V |
| 최대 출력 전류 | 채널당 30mA |
| 최대 주파수 | 1MHz |
| 분해능 | 16bit |
| 최대 구성 | 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 |
위 세 번호 체계는 같은 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의 세 채널은 주파수 설정을 공유합니다. 세 채널에 서로 다른 듀티를 줄 수 있지만 서로 다른 주파수를 동시에 설정할 수 없습니다. YㆍK 조합이 달라지면 내부 실제 PWM 핀이 바뀌므로 프로그램의 논리 채널과 출고 구성을 일치시키십시오.
연결과 첫 출력 확인
- 전원을 차단하고 K모듈의 사용할 PWM 단자와 같은 단자 묶음의 GND를 확인합니다.
- 연결 기기의 0~5V PWM 입력과 공통 GND를 제품 설명서의 결선도에 맞춰 연결합니다.
- PWM 출력 단자에 외부 전원이나 과전류 부하를 직접 넣지 않습니다.
- 처음에는 부하 대신 적합한 계측기로 파형의 주파수와 듀티를 확인합니다.
예제 1 · Arduino 기본 analogWrite()
K 단독 구성의 첫 출력에 약 50% 듀티를 출력합니다. K용 analogWrite()는 Y와 달리 0~255 값을 사용합니다.
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 그룹의 다른 채널에서 주파수를 다시 설정했는지 확인합니다. |
| YK에서 K 단독 배선대로 동작하지 않음 | YㆍK 조합에 따라 내부 PWM 핀 배치가 달라집니다. 출고 구성과 모듈 단자 표기를 확인합니다. |
| 지정 펄스가 끝나지 않음 | NPWM_BEGIN() 다음에 같은 채널의 NPWM()을 반복 호출하는지, 반복문에 지연이 없는지 확인합니다. |


