• 42각 스프링타입 브레이크 장착 스텝모터 NK2448BS
  • 42각 스프링타입 브레이크 장착 스텝모터 NK2448BS

42각 스프링타입 브레이크 장착 스텝모터 NK2448BS

42각47mm 바이폴라 스텝모터
홀딩토크 0.55Nm
B타입 스프링타입 브레이크 전원DC24V

배송정보
3,500원 (조건부배송) 지역별 추가배송 주문시결제(선결제)
택배
구매안내

아두이노 제어 예제 코드 (복사해서 바로 사용)

본 드라이버는 펄스(PUL)/방향(DIR)/기동정지(ENA) 신호로 제어하며, 제어신호가 3.3~24V라 아두이노(5V)는 물론 3.3V 보드도 직결 가능합니다. 아래 두 가지 방식 중 구성에 맞는 예제를 복사해 사용하세요. 속도는 펄스 주파수로 결정됩니다: RPM = 주파수(Hz) × 60 ÷ (200 × 분주비).
필요 드라이버: MSD-224 구매하기 → (지원 전류 4A) · MSD-224N 구매하기 → (지원 전류 4.5A)
버튼·볼륨으로 조작하려면: 아두이노 확장쉴드 MAS-001 구매하기 → (예제 ① 사용)
① MAS-001 확장쉴드 사용 — 버튼·볼륨 조작 (V2.0)
쉴드 장착 후 드라이버를 쉴드 단자에 결선: PUL+→D9 / DIR+→D6 / ENA+→D5, 각 − 단자는 GND. 업로드하면 버튼1=기동/정지, 버튼2=방향 전환, 볼륨=속도(약 100~4,000Hz)로 바로 조작됩니다. 별도 라이브러리 설치가 필요 없습니다.
//==============================================================
// MotorBank MSD-224 / MSD-224N + MAS-001 확장쉴드 예제 V2.0
// 기능: 쉴드의 볼륨=속도, 버튼1=기동/정지, 버튼2=방향 전환
// 보드: Arduino Uno + MAS-001 확장쉴드 (쉴드에 드라이버 결선)
//
// [쉴드-드라이버 결선] (MAS-001 단자 기준)
//   PUL+ -> D9 / DIR+ -> D6 / ENA+ -> D5 / PUL- DIR- ENA- -> GND
// [쉴드 입력] 버튼1=D13(기동/정지), 버튼2=D12(방향), 볼륨=A0(속도)
//
// [속도 계산] 모터 회전수 RPM = 펄스주파수(Hz) x 60 / (200 x 분주비)
//   예: 분주 1, 2000Hz -> 600RPM / 분주 8, 2000Hz -> 75RPM
//   본 예제의 볼륨 속도 범위: 약 100Hz ~ 4000Hz
//==============================================================
const int PUL_PIN = 9, DIR_PIN = 6, EN_PIN = 5;
const int BTN1 = 13, BTN2 = 12, POT = A0;

bool running = false, dirCW = true;
bool btn1Prev = HIGH, btn2Prev = HIGH;

void setup() {
  pinMode(DIR_PIN, OUTPUT); pinMode(EN_PIN, OUTPUT);
  pinMode(BTN1, INPUT); pinMode(BTN2, INPUT);   // 쉴드 회로 기준(눌림=LOW)
  digitalWrite(EN_PIN, LOW);
  Serial.begin(9600);
  Serial.println(F("MSD-224 + MAS-001 ready. BTN1=Run/Stop BTN2=Dir VOL=Speed"));
}

void loop() {
  // 버튼1: 누를 때마다 기동/정지 토글
  bool b1 = digitalRead(BTN1);
  if (btn1Prev == HIGH && b1 == LOW) {
    running = !running;
    if (!running) noTone(PUL_PIN);
    Serial.println(running ? F("RUN") : F("STOP"));
    delay(30);                                   // 디바운스
  }
  btn1Prev = b1;

  // 버튼2: 누를 때마다 방향 전환
  bool b2 = digitalRead(BTN2);
  if (btn2Prev == HIGH && b2 == LOW) {
    dirCW = !dirCW;
    digitalWrite(DIR_PIN, dirCW ? HIGH : LOW);
    Serial.println(dirCW ? F("DIR: CW") : F("DIR: CCW"));
    delay(30);
  }
  btn2Prev = b2;

  // 볼륨 -> 펄스 주파수 (시계방향으로 올릴수록 빠름)
  if (running) {
    int f = map(analogRead(POT), 0, 1023, 100, 4000);
    tone(PUL_PIN, f);                            // 비차단 펄스 출력
  }
  delay(20);
}
② 쉴드 없이 아두이노 직결 — 시리얼 명령 조작 (V1.0)
아두이노와 드라이버를 직접 결선: D9→PUL+ / D6→DIR+ / D5→ENA+, 아두이노 GND→PUL−·DIR−·ENA−. 모터 전원(SMPS)은 드라이버에 별도 공급합니다. 업로드 후 시리얼 모니터(9600bps, "새 줄")에서 f2000(CW 2000Hz) / r500(CCW 500Hz) / s(정지) / e1·e0(ENA 신호)로 조작합니다. 원하는 RPM은 위 공식으로 주파수를 역산해 입력하세요.
//==============================================================
// MotorBank MSD-224 / MSD-224N 아두이노 직결 예제 V1.0 (쉴드 없이)
// 기능: 시리얼 모니터 명령으로 속도(펄스 주파수)·방향·기동정지 제어
// 보드: Arduino Uno 단독 (제어신호 3.3~24V 지원이라 직결 가능)
//
// [직결 결선] 아두이노 -> 드라이버
//   D9 -> PUL+ / D6 -> DIR+ / D5 -> ENA+
//   GND -> PUL- , DIR- , ENA- (모두 공통)
//   * 모터 전원(SMPS)은 드라이버에 별도 공급, 아두이노와 GND 공통 불필요
//     (드라이버 제어 입력은 포토커플러 절연)
//
// [속도 계산] 모터 회전수 RPM = 펄스주파수(Hz) x 60 / (200 x 분주비)
//   예: 분주 1에서 f1000 -> 300RPM / 분주 8에서 f2000 -> 75RPM
//
// [시리얼 모니터 사용법] (9600bps, "새 줄" 설정)
//   f2000 : CW 방향, 2000Hz 펄스     r500 : CCW 방향, 500Hz
//   s     : 정지(펄스 중지)          e1/e0 : ENA 신호 High/Low
//==============================================================
const int PUL_PIN = 9, DIR_PIN = 6, EN_PIN = 5;

void setup() {
  pinMode(DIR_PIN, OUTPUT); pinMode(EN_PIN, OUTPUT);
  digitalWrite(EN_PIN, LOW);
  Serial.begin(9600);
  Serial.println(F("MSD-224 direct ready. f2000 r500 s e1 e0"));
}

void loop() {
  if (!Serial.available()) return;
  String cmd = Serial.readStringUntil('\n');
  cmd.trim();
  if (cmd.length() == 0) return;
  char c = cmd.charAt(0);
  long v = constrain(cmd.substring(1).toInt(), 0, 20000);
  switch (c) {
    case 'f': digitalWrite(DIR_PIN, HIGH); if (v) tone(PUL_PIN, v);
              Serial.print(F("CW ")); Serial.print(v); Serial.println(F("Hz")); break;
    case 'r': digitalWrite(DIR_PIN, LOW);  if (v) tone(PUL_PIN, v);
              Serial.print(F("CCW ")); Serial.print(v); Serial.println(F("Hz")); break;
    case 's': noTone(PUL_PIN); Serial.println(F("STOP")); break;
    case 'e': digitalWrite(EN_PIN, v ? HIGH : LOW);
              Serial.println(v ? F("ENA High") : F("ENA Low")); break;
    default:  Serial.println(F("? f2000 r500 s e1 e0"));
  }
}
작성: MotorBank 기술팀 · 아두이노 우노 기준 · 최종 업데이트: 2026-08-14

bc49b995805894e23c6d1faabccabc0c_144145.jpg

비밀번호 인증

비밀번호를 입력해 주세요.

확인