4A 32분주 마이크로스텝드라이버 MSD-224 2상 스테핑모터 드라이버
  • 4A 32분주 마이크로스텝드라이버 MSD-224 2상 스테핑모터 드라이버
  • 4A 32분주 마이크로스텝드라이버 MSD-224 2상 스테핑모터 드라이버
  • 4A 32분주 마이크로스텝드라이버 MSD-224 2상 스테핑모터 드라이버

4A 32분주 마이크로스텝드라이버 MSD-224 2상 스테핑모터 드라이버

제어신호: 3.3~24V
적용모터: 35/42/57각
전압범위: 9-42VDC
정격전류: 4A
1.8NM/3.5A이하 모터에 사용
공유
정가
65,300원
판매가
17,500원
브랜드
motorbank
제조사
모터뱅크
모델명
MSD-224
구매혜택
할인 : 적립 마일리지 :
배송비
3,500원 / 주문시결제(선결제) 조건별배송 지역별추가배송비
택배
방문 수령지 : 서울특별시 금천구 디지털로 178(가산동) A동 1115-1116호
상품코드
1000007736
제품스펙
4A 2상 스테핑모터 드라이버
부가세
부가세 10%포함
4A 32분주 마이크로스텝드라이버 MSD-224 2상 스테핑모터 드라이버
0원
총 상품금액
총 할인금액
총 합계금액
구매안내

아두이노 연속운전 예제 코드

MSD-224·MSD-224N은 펄스(PUL)와 방향(DIR) 신호로 스테핑모터를 구동합니다. 제어 입력 전압 범위는 3.3~24V이므로 전기적으로는 아두이노 우노의 5V 출력 신호를 사용할 수 있습니다. 아래 코드는 아두이노 우노 + MAS-001 기준입니다.
이 제품 페이지에서 꼭 확인하세요.
이 예제는 연속 회전·속도 확인용이며, 지정 각도만큼 이동시키는 위치제어 코드는 아닙니다. 또한 RTPG42-NK245E의 1000CPR 엔코더 신호를 읽지 않으므로 탈조 검출·위치 보정·폐루프 제어는 수행하지 않습니다. 정위치 제어에는 유한 개수의 펄스 출력과 가감속 제어가 필요하고, 엔코더를 활용하려면 별도의 카운터 입력 또는 엔코더 대응 제어 구성이 필요합니다.
속도 계산
1.8° 스테핑모터 기준 모터축 RPM = 펄스 주파수(Hz) × 60 ÷ (200 × 분주비)
테이블 출력 RPM = 모터축 RPM ÷ 전체 감속비
전체 감속비 = 로터리 감속비 × 유성기어 감속비
예: 로터리 5:1 × 유성기어 4:1이면 전체 감속비는 20:1입니다.
필요 드라이버: MSD-224 보기 → · MSD-224N 보기 →
드라이버 출력전류는 사용하는 모터의 정격 상전류에 맞게 설정해야 합니다.
버튼·볼륨 조작용: MAS-001 확장쉴드 보기 →
① MAS-001 확장쉴드 사용 — 버튼·볼륨 연속운전
첨부된 MAS-001 사용법의 표준 배치를 따라 PUL+=D9 / DIR+=D5 / ENA+=D6으로 사용합니다. PUL−·DIR−·ENA−는 아두이노 GND에 연결합니다. 버튼1(D13)은 운전/정지, 버튼2(D12)는 방향 변경, 볼륨(A0)은 속도 설정입니다. 방향 버튼을 누르면 먼저 펄스를 정지한 뒤 방향을 바꾸므로, 다시 버튼1을 눌러 운전합니다.
버튼1의 정지는 펄스만 멈추는 정지이므로 드라이버가 활성 상태라면 모터는 정지 토크를 유지합니다. 축을 자유롭게 만들려면 ENA를 비활성화해야 합니다. ENA의 활성 논리는 사용하는 드라이버 설명서와 실제 결선 방식을 기준으로 확인하세요. 아래 예제는 현재 상품페이지의 결선 방식에 맞춰 LOW=활성으로 설정했습니다.
//==============================================================
// MSD-224 / MSD-224N + MAS-001 연속운전 예제
// Arduino Uno + MAS-001
//
// [MAS-001 입력]
//   버튼1=D13 / 버튼2=D12 / 볼륨=A0
// [드라이버 결선]
//   D9 -> PUL+ / D5 -> DIR+ / D6 -> ENA+
//   GND -> PUL- / DIR- / ENA-
//
// 버튼1: 운전/정지
// 버튼2: 정지 후 방향 변경(변경 뒤 버튼1로 재기동)
// 볼륨: 약 100~4000Hz
//
// 주의: 연속운전 시험용. 위치제어·엔코더 피드백은 수행하지 않음.
//==============================================================
const byte PUL_PIN = 9;
const byte DIR_PIN = 5;
const byte EN_PIN  = 6;

const byte BTN1_PIN = 13;
const byte BTN2_PIN = 12;
const byte POT_PIN  = A0;

const byte ENA_ENABLE_LEVEL  = LOW;
const byte ENA_DISABLE_LEVEL = HIGH;

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

unsigned int currentHz = 100;
unsigned int targetHz  = 100;
unsigned long lastRampMs = 0;

void stopPulse() {
  noTone(PUL_PIN);
  running = false;
  currentHz = 100;
}

void setup() {
  pinMode(PUL_PIN, OUTPUT);
  pinMode(DIR_PIN, OUTPUT);
  pinMode(EN_PIN, OUTPUT);

  // MAS-001 회로에 버튼 풀업이 구성되어 있어 눌림=LOW
  pinMode(BTN1_PIN, INPUT);
  pinMode(BTN2_PIN, INPUT);

  digitalWrite(DIR_PIN, dirCW ? HIGH : LOW);
  digitalWrite(EN_PIN, ENA_ENABLE_LEVEL);
  digitalWrite(PUL_PIN, LOW);

  Serial.begin(9600);
  Serial.println(F("MSD-224 + MAS-001 ready"));
}

void loop() {
  bool b1 = digitalRead(BTN1_PIN);
  bool b2 = digitalRead(BTN2_PIN);

  // 버튼1: 운전/정지 토글
  if (btn1Prev == HIGH && b1 == LOW) {
    if (running) {
      stopPulse();
      Serial.println(F("STOP"));
    } else {
      currentHz = 100;
      targetHz = map(analogRead(POT_PIN), 0, 1023, 100, 4000);
      running = true;
      tone(PUL_PIN, currentHz);
      Serial.println(F("RUN"));
    }
    delay(30);
  }
  btn1Prev = b1;

  // 버튼2: 펄스를 먼저 멈춘 뒤 방향 변경
  if (btn2Prev == HIGH && b2 == LOW) {
    stopPulse();
    delay(5);
    dirCW = !dirCW;
    digitalWrite(DIR_PIN, dirCW ? HIGH : LOW);
    delayMicroseconds(20);
    Serial.println(dirCW ? F("DIR: CW - press BTN1 to run")
                         : F("DIR: CCW - press BTN1 to run"));
    delay(30);
  }
  btn2Prev = b2;

  if (running) {
    targetHz = map(analogRead(POT_PIN), 0, 1023, 100, 4000);

    // 약 20ms마다 50Hz씩 변화시켜 급격한 속도 변경을 완화
    if (millis() - lastRampMs >= 20) {
      lastRampMs = millis();

      if (currentHz < targetHz) {
        currentHz = min((unsigned int)(currentHz + 50), targetHz);
      } else if (currentHz > targetHz) {
        unsigned int nextHz = (currentHz > 150) ? currentHz - 50 : 100;
        currentHz = max(nextHz, targetHz);
      }

      tone(PUL_PIN, currentHz);
    }
  }
}
② 쉴드 없이 아두이노 직결 — 시리얼 명령 연속운전
D9→PUL+ / D5→DIR+ / D6→ENA+, 아두이노 GND→PUL−·DIR−·ENA−로 연결합니다. 모터용 전원은 드라이버 전원단에 별도로 공급합니다. 이 결선에서는 아두이노 GND가 제어신호의 −단자와 연결되어야 하며, 드라이버 전원 V−까지 아두이노 GND에 추가로 공통 연결할 필요는 없습니다. 시리얼 모니터는 9600bps·새 줄로 설정합니다.
명령: f2000 = CW 2000Hz / r500 = CCW 500Hz / s = 정지 / e1 = 드라이버 활성 / e0 = 드라이버 비활성
//==============================================================
// MSD-224 / MSD-224N 아두이노 직결 연속운전 예제
// Arduino Uno / 시리얼 모니터 9600bps, 새 줄
//
// D9 -> PUL+ / D5 -> DIR+ / D6 -> ENA+
// GND -> PUL- / DIR- / ENA-
//
// f2000 : CW 2000Hz     r500 : CCW 500Hz
// s     : 펄스 정지     e1   : 드라이버 활성
// e0    : 드라이버 비활성
//
// 주의: 연속운전 시험용. 위치제어·엔코더 피드백은 수행하지 않음.
//==============================================================
const byte PUL_PIN = 9;
const byte DIR_PIN = 5;
const byte EN_PIN  = 6;

const byte ENA_ENABLE_LEVEL  = LOW;
const byte ENA_DISABLE_LEVEL = HIGH;

bool running = false;
bool enabled = true;
bool directionCW = true;

unsigned int currentHz = 100;
unsigned int targetHz  = 100;
unsigned long lastRampMs = 0;

void stopPulse() {
  noTone(PUL_PIN);
  running = false;
  currentHz = 100;
}

void setDirection(bool cw) {
  stopPulse();
  delay(5);
  directionCW = cw;
  digitalWrite(DIR_PIN, directionCW ? HIGH : LOW);
  delayMicroseconds(20);
}

void setup() {
  pinMode(PUL_PIN, OUTPUT);
  pinMode(DIR_PIN, OUTPUT);
  pinMode(EN_PIN, OUTPUT);

  digitalWrite(PUL_PIN, LOW);
  digitalWrite(DIR_PIN, HIGH);
  digitalWrite(EN_PIN, ENA_ENABLE_LEVEL);

  Serial.begin(9600);
  Serial.setTimeout(50);
  Serial.println(F("Ready: f2000 r500 s e1 e0"));
}

void loop() {
  if (Serial.available()) {
    String cmd = Serial.readStringUntil('\n');
    cmd.trim();

    if (cmd.length() > 0) {
      char c = cmd.charAt(0);
      long value = cmd.substring(1).toInt();

      switch (c) {
        case 'f':
        case 'F':
          if (value <= 0) {
            stopPulse();
            Serial.println(F("STOP"));
            break;
          }
          setDirection(true);
          targetHz = constrain(value, 100, 20000);
          currentHz = 100;
          running = enabled;
          if (running) tone(PUL_PIN, currentHz);
          Serial.print(F("CW target "));
          Serial.print(targetHz);
          Serial.println(F("Hz"));
          break;

        case 'r':
        case 'R':
          if (value <= 0) {
            stopPulse();
            Serial.println(F("STOP"));
            break;
          }
          setDirection(false);
          targetHz = constrain(value, 100, 20000);
          currentHz = 100;
          running = enabled;
          if (running) tone(PUL_PIN, currentHz);
          Serial.print(F("CCW target "));
          Serial.print(targetHz);
          Serial.println(F("Hz"));
          break;

        case 's':
        case 'S':
          stopPulse();
          Serial.println(F("STOP - holding torque remains if enabled"));
          break;

        case 'e':
        case 'E':
          enabled = (value != 0);
          digitalWrite(EN_PIN, enabled ? ENA_ENABLE_LEVEL : ENA_DISABLE_LEVEL);
          if (!enabled) stopPulse();
          Serial.println(enabled ? F("DRIVER ENABLED") : F("DRIVER DISABLED"));
          break;

        default:
          Serial.println(F("? use: f2000 r500 s e1 e0"));
          break;
      }
    }
  }

  // 목표 주파수까지 완만하게 변경
  if (running && enabled && millis() - lastRampMs >= 20) {
    lastRampMs = millis();

    if (currentHz < targetHz) {
      currentHz = min((unsigned int)(currentHz + 50), targetHz);
    } else if (currentHz > targetHz) {
      unsigned int nextHz = (currentHz > 150) ? currentHz - 50 : 100;
      currentHz = max(nextHz, targetHz);
    }

    tone(PUL_PIN, currentHz);
  }
}
첫 시험 순서
① 모터 정격 상전류에 맞춰 드라이버 전류를 설정합니다.
② 낮은 분주·낮은 주파수에서 무부하로 방향과 결선을 확인합니다.
③ 실제 하중에서는 낮은 속도부터 올리며 탈조·진동·발열을 확인합니다.
④ 회전 중 전원 또는 모터선을 분리하지 마세요.
작성: MotorBank 기술팀 · 아두이노 우노 및 MAS-001 기준 · 연속운전 시험 예제

 




사용설명서 바로가기





 

 

 

 

어떤 드라이버가 내모터와 호환될가요?

MSD 시리즈 스텝모터 드라이버 스펙비교보기

 





7e754c80a8f067b5f8160cfb22ec4d90_153713.jpg

배송안내




  배송안내
  1. 총 결제 금액 15만원 이상 구매 시 무료배송, 15만원 미만일 경우 배송비 3,500원이 추가됩니다.
  2. 배송은 CJ대한통운 택배를 이용하고 있습니다.
  3. 주문 제작, 주문 발주, 조립제품의 경우 7일~14일 정도 소요될 수 있습니다.
  4. 배송 상황은 대한통운 홈페이지에서 확인 가능합니다.
  5. 퀵으로 배송받으실 경우, 지불하신 택배비는 환불되지 않습니다.
    6. 15만원이상 구매시 저희가 부담했던 택배비에 대해서, 단순변심에 의한 취소는 처음발송시의택배비 차감하고 환불처리 됩니다.
    7. 구매하신 제품의 크기(부피 또는 길이)에 따라 기본 배송비 외에 추가 비용이 발생할 수 있습니다(실제 비용 측정 후 안내).
  

  교환, 반품이 불가한 경우
  1. 상품 개봉으로 인한 상품 가치 훼손 시에는 7일 이내라도 교환·반품이 불가능합니다.
  2. 주문 제작, 조립제품의 경우 7일 이내이더라도 교환·반품이 불가능합니다.
  3. 전압이 단 1회라도 인가된 경우 교환·반품이 불가능합니다. 단순변심은 절대 박스를 개봉하지 않은 상태로 반품처리 진행하시기 바랍니다.
  4. 반드시 선불 택배로 보내셔야 하며, 착불일 경우 반송처리 됩니다.
  5. 일부 상품은 신모델 출시, 부품 가격 변동 등 제조사 사정으로 가격이 변동될 수 있습니다. 
  6. 박스 개봉시 절대 반품,교환이 불가하오니, 단순변심의 경우 절대 포장을 개봉하지 마세요.

  유의사항
  1. 공급 제조사는 재고 사정에 따라 동일 사양의 대체상품으로 공급될 수 있으며, 사용자께서는 사용 전 반드시 제품에 대한 테스트 및 확인 절차 후 사용하시기 바랍니다. 
  2. 상기 제품에 첨부된 데이터시트는 참고사항 입니다.
  3. 데이터시트에 표기된 내용에 대하여 본사는 어떠한 기술적인 문의 및 발생하는 문제에 대한 법적인 책임을 지지 않습니다. 
  4. 제공되는 스펙과 모양은 별도의 공지없이 변경될 수 있습니다.



  구매 전 주의사항 (주의사항을 읽지 않고 구매 시 발생하는 문제는 당사가 책임지지 않습니다.)
  - ​감속기 장착 조립제품 및 PCB 조립제품 등은 결제 후 절대 변경,취소,교환되지 않습니다. 결제하시기 전 신중히 선정하시기 부탁드립니다. 
     -  저희는 B2B 전문 쇼핑몰입니다.  또한 KC를 받지 않아도 되는 산업용부품을 대부분 판매중입니다. 
    - 판매제품은 완제품이 아닌 부품입니다. 약간의 차이, 피복 등으로 인한 환불,교환,AS는 불가합니다.
  

교환 및 반품안내

- 상품 스티커제거 또는 전압인가, 샤프트 물림으로 상품 가치 훼손 시에는 상품수령후 7일 이내라도 교환 및 반품이 불가능합니다.

- 저단가 상품, 일부 특가 상품은 고객 변심에 의한 교환, 반품은 고객께서 초기,왕복배송비를 부담하셔야 합니다(제품의 하자,배송오류는 제외)

- 일부 상품은 원자재값 상승, 부품가격 변동 등 제조사 사정으로 가격이 변동될 수 있습니다.

※ 저희 취급품들은 모두 산업용 부품으로 자동화 라인에서 로봇에 의해 생산되며, 생산과 동시에 품질체크를 합니다. 생산 완료 후에는 QC룸, 에이징 테스트, 모든 테스트에서

통과한 제품이고, 쇼핑몰 판매 특성 상 제품 출하 전 다시 한번 전수 검사를 합니다. 

제품은 CJ대한통운에 위탁하며, 제품 배송 중 발생한 파손은 처리가 가능하오나 그외 사용 중 파손, 전원을 바꿔 인가해 드라이버 훼손으로 인한 불량, 제품 테스트 중 발생한 불량은

저희가 책임지지 않습니다. 또한 반품,교환 불가합니다.

- 특조 제품, 조립제품 등은 인수 후에는 교환/반품기간내라도 교환 및 반품이 불가능 합니다. 

- 교환/환불 불가라고 표시된 제품은 인수 후에는 교환/반품기간내라도 교환 및 반품이 불가능 합니다. 

- 단순변심에 의한 반품,교환으로 다시 저희에게 보내주실 경우, 받으신 상태 그대로 포장하여 보내주시기 바랍니다. 포장상태 불량으로 운송 중 제품이 훼손된 경우 

교환 및 반품이 불가능 합니다.

- 일부 특가 상품의 경우, 인수 후에는 제품 하자나 오배송의 경우를 제외한 고객님의 단순변심에 의한 교환, 반품이 불가능할 수 있사오니, 각 상품의 상품상세정보를 꼭 참조하십시오. 

환불안내

- 상품 청약철회 가능기간은 상품 수령일로 부터 7일 이내 입니다.

※ 본제품은 산업용 부품으로 기업체에서는 이 분야 전문가가 수십개의 샘플들을 구입하여 오랜 기간 수십가지 항목의 성능과 적합성을 

테스트한 후에 결정하고, 만족하면, 수백, 수천또는 수만개씩 구입하는 전문지식이 필요한 제품입니다. 

전문적 지식이 필요한 전자, 전기, 기계 부품의 특성상 제품이 불량이거나, 주문한 제품과 다른 제품인 경우를 제외하고, 제품의 하자가 없을 경우, 

이미 사용한 제품을 고객의 단순 변심으로 교환, 반품, A/S 불가합니다.  

 

또한, 산업용 부품은 공산품처럼 인지 상품이 아니라서, 전문적 지식이 없는 개인 사용자나 초보자는 구입 먼저하고 

원하는 성능과 기대에 부합하지 않으면, 무조건 반품이나 교환을 요구하여 이로인한 손실로 택배비, 결제수수료, 포장비등의 비용을  

구제 받을 길이 없어, 잘 모르시는 분들에게는 쇼핑몰로 판매를 안하고, 전문가나 기업체들과 같이 반품이나 교환,환불을  

요구하지 안는다면 구입하셔도 됩니다. 

AS안내

- 책임 제한 고지

일반적으로 제조사/판매사는 2차 피해(기구 손상 등)에 대한 법적 책임을 지지 않음을 설명합니다.

“당사의 제품을 사양 범위를 벗어나 사용함으로 인해 발생한 간접적 손해(기기 손상, 시스템 장애 등)에 대해서는 보상 책임이 없음을 구매 약관 및 계약서에 명시하고 있습니다.”


- 소비자분쟁해결 기준(공정거래위원회 고시)에 따라 피해를 보상받을 수 있습니다.

- A/S는 판매자에게 문의하시기 바랍니다.

※ 본제품은 산업용 부품으로 기업체에서는 이 분야 전문가가 수십개의 샘플들을 구입하여 오랜 기간 수십가지 항목의 성능과 적합성을 

테스트한 후에 결정하고, 만족하면, 수백, 수천또는 수만개씩 구입하는 전문지식이 필요한 제품입니다. 

전문적 지식이 필요한 전자, 전기, 기계 부품의 특성상 제품이 불량이거나, 주문한 제품과 다른 제품인 경우를 제외하고, 제품의 하자가 없을 경우, 

이미 사용한 제품을 고객의 단순 변심으로 교환, 반품, A/S 불가합니다.  

 

또한, 산업용 부품은 공산품처럼 인지 상품이 아니라서, 전문적 지식이 없는 개인 사용자나 초보자는 구입 먼저하고 

원하는 성능과 기대에 부합하지 않으면, 무조건 반품이나 교환을 요구하여 이로인한 손실로 택배비, 결제수수료, 포장비등의 비용을  

구제 받을 길이 없어, 잘 모르시는 분들에게는 쇼핑몰로 판매를 안하고, 전문가나 기업체들과 같이 반품이나 교환,환불을  

요구하지 안는다면 구입하셔도 됩니다. 

 

※ 전압, 토크,속도,전류,파워,샤프트 도면은 원하시는 스펙에 맞게 바뀔 수 있습니다. 대량구매시 전화문의 바랍니다.  

YOU MAY ALSO LIKE 함께 구매하면 좋을 관련상품 모음

이미지 확대보기4A 32분주 마이크로스텝드라이버 MSD-224 2상 스테핑모터 드라이버

4A 32분주 마이크로스텝드라이버 MSD-224 2상 스테핑모터 드라이버
  • 4A 32분주 마이크로스텝드라이버 MSD-224 2상 스테핑모터 드라이버
  • 4A 32분주 마이크로스텝드라이버 MSD-224 2상 스테핑모터 드라이버
  • 4A 32분주 마이크로스텝드라이버 MSD-224 2상 스테핑모터 드라이버
닫기

비밀번호 인증

글 작성시 설정한 비밀번호를 입력해 주세요.

닫기

장바구니 담기

상품이 장바구니에 담겼습니다.
바로 확인하시겠습니까?

찜 리스트 담기

상품이 찜 리스트에 담겼습니다.
바로 확인하시겠습니까?