아두이노로 스텝모터 드라이버 제어하기
— DM422C 배선·설정 가이드

왜 DM422C인가 — MC-21C·MC-20A와 제어 방식이 다르다
DM422C 배선
| 신호 | 드라이버 핀 | 아두이노 연결 | 비고 |
|---|---|---|---|
| PUL+ | 펄스 입력(+) | 저항 통해 5V 또는 디지털핀 | 스텝 펄스 |
| PUL- | 펄스 입력(-) | 디지털핀 (예: D3) | 스텝마다 토글 |
| DIR+ | 방향 입력(+) | 5V | |
| DIR- | 방향 입력(-) | 디지털핀 (예: D4) | HIGH/LOW로 정·역회전 |
| ENA+/ENA- | 인에이블 | (옵션, 미연결 시 상시 활성) | |
| +V / GND | 모터 전원 | 12~40 VDC 외부전원 (권장 20~24 V) | 아두이노 5V로 구동 불가 — 별도 전원 필수 |
제어신호 입력전류는 7~16 mA(표준 10 mA)입니다. 아두이노 디지털 출력(약 20~40 mA)으로 충분하지만, 옵토커플러 보호를 위해 전류제한저항을 권장합니다. 저항값 계산 예시: R = (Vcc − Vf) / I ≈ (24 V − 1.7 V) / 0.01 A ≈ 2.2 kΩ (실제 배선 전압에 맞춰 조정).
스텝 펄스 주파수는 0~75 kHz 범위입니다. 코드의 최대 속도(step/s)가 이 범위를 넘지 않도록 설정하세요.
예제 코드 (AccelStepper)
#include <AccelStepper.h>
#define PUL_PIN 3
#define DIR_PIN 4
AccelStepper stepper(AccelStepper::DRIVER, PUL_PIN, DIR_PIN);
void setup() {
stepper.setMaxSpeed(2000); // step/s, 드라이버 75kHz 이내로 설정
stepper.setAcceleration(500);
stepper.moveTo(1000);
}
void loop() {
stepper.run();
}
주의사항
① 전원 분리. 모터 전원(12~40 VDC)과 아두이노 로직 전원(5V)은 분리하고, GND만 공통으로 연결합니다(공통 그라운드). ② 회전방향. 모터 한 상의 배선(A+/A-)을 바꾸면 초기 회전방향이 반전됩니다 — 배선 문제인지 코드의 방향 신호 문제인지 구분해서 디버깅하세요. ③ RS232 포트. DM422C의 RS232는 파라미터 설정 전용이며 실시간 제어에는 쓸 수 없고, 전원이 인가된 상태에서 커넥터를 탈부착(hot-swap)하면 안 됩니다.
자주 묻는 질문
Q. 아두이노로 MC-21C를 제어할 수 있나요?
MC-21C는 RS232·RS485·CAN 통신 프로토콜을 구현해야 해서 가능은 하지만 난이도가 높습니다. 펄스 입력만으로 구동하려면 DM422C가 훨씬 간단합니다.
Q. 전원은 아두이노 5V로 되나요?
안 됩니다. DM422C는 12~40 VDC(권장 20~24 V) 별도 전원이 필요하며, 아두이노는 PUL·DIR 신호만 담당합니다.
Q. 최대 몇 RPM까지 가능한가요?
스텝 펄스 주파수 최대 75 kHz까지 지원합니다. 실제 RPM은 모터 스텝각(0.9°/1.8°)과 마이크로스테핑 설정에 따라 계산해야 합니다.
배선·설정이 막히면, 실제 구성으로 도와드립니다
사용 모터 사양(스텝각·전류)과 제어 목적을 알려주시면 드라이버 선택부터 배선·전원 구성까지 안내해 드립니다.
스텝모터 구동 상담하기 →