====== MPAINO 고속펄스 출력 K모듈 ======
K모듈은 MCU의 PWM 신호를 평활하지 않고 출력하는 MPAINO 옵션 모듈입니다. K는 6채널, K2는 12채널을 제공하며 선택한 모듈은 제품에 조립되어 출고됩니다.
Y모듈의 직류 전압ㆍ전류 출력과 용도가 다릅니다. 펄스 출력에 연결할 기기가 0~5V 디지털 파형을 받을 수 있는지 먼저 확인하십시오.
{{ :products:mpaino-k-channels.svg?1000 |KㆍK2ㆍY와 K 혼합 구성의 PWM 채널과 공유 Timer 그룹 }}
===== 제품 사양 =====
{{:products:mpaino-option-k-front.png?190|K 펄스 출력 모듈 전면}} {{:products:mpaino-option-k2-front.png?190|K2 두 번째 펄스 출력 모듈 전면}}
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()''을 반복 호출하는지, 반복문에 지연이 없는지 확인합니다. |
===== 관련 문서 =====
* [[commands:reference:pwm|PWM()]] · [[commands:reference:fdpwm|FDPWM()]] · [[commands:reference:npwm_begin|NPWM_BEGIN()]] · [[commands:reference:npwm|NPWM()]] 상세 설명
* [[products:mpaino_x|X 아날로그 입력 모듈]] · [[products:mpaino_f|F PT100 입력 모듈]] · [[products:mpaino_y|Y 아날로그 출력 모듈]]
* [[products:mpaino|← MPAINO Series 옵션 구성]]