RS-485 스텝모터 드라이버 컨트롤러 SBD-14U Modbus RTU DC7~24V 최대 1.9A 42각 후면 일체형 절대좌표·원점복귀
  • RS-485 스텝모터 드라이버 컨트롤러 SBD-14U Modbus RTU DC7~24V 최대 1.9A 42각 후면 일체형 절대좌표·원점복귀
  • RS-485 스텝모터 드라이버 컨트롤러 SBD-14U Modbus RTU DC7~24V 최대 1.9A 42각 후면 일체형 절대좌표·원점복귀
  • RS-485 스텝모터 드라이버 컨트롤러 SBD-14U Modbus RTU DC7~24V 최대 1.9A 42각 후면 일체형 절대좌표·원점복귀

RS-485 스텝모터 드라이버 컨트롤러 SBD-14U Modbus RTU DC7~24V 최대 1.9A 42각 후면 일체형 절대좌표·원점복귀

펄스 배선 없이 RS-485 통신선 2가닥으로 스텝모터의 정역회전·속도·절대좌표 위치·원점복귀까지 제어하는 드라이버 일체형 컨트롤러 — 42×42×13mm로 42각 모터 뒷면에 붙여 일체형 구성이 가능하고, Modbus RTU(9600bps·주소 0x01) 표준이라 PLC·아두이노·PC 어디에나 연결 (DC7~24V · 최대 1.9A · 좌우 리미트 입력 NPN · 과열 경고/정지 보호). 권장 모터는 42각 정격전류 1.5A 이하 — 아두이노
공유
판매가
79,700
제조사
모터뱅크
모델명
SBD-14U
구매혜택
할인 : 적립 마일리지 :
배송비
3,500원 / 주문시결제(선결제) 조건별배송 지역별추가배송비
택배
방문 수령지 : 서울특별시 금천구 디지털로 178(가산동) A동 1115-1116호
상품코드
1000025445
485통신 USB포트
구매안내

RS-485(Modbus RTU) 아두이노 예제 코드 (복사해서 바로 사용)

본 제품은 Modbus RTU(9600bps 기본, 출하 주소 0x01)로 제어하며, Function code 0x03(읽기)/0x06(쓰기)/0x10(다중 쓰기)을 사용합니다. 이 예제로 정역 연속회전 · 절대좌표 이동 · 운전속도 설정 · 정지(축 잠김/자유) · 상태 읽기(정지 여부·과열·실전류·리미트 상태 파싱)까지 가능합니다.
결선: RS485 모듈 RO→D10, DI→D11, DE+RE→D3, A→A / B→B(모듈 표기 그대로), GND 공통. 업로드 후 시리얼 모니터(9600bps, "새 줄")에서 f(정회전)/r(역회전)/ g51200(+좌표 이동)/G51200(−좌표)/v51200(운전속도 step/s)/ s·S(정지: 잠김/자유)/t(상태 읽기)로 조작합니다. 문서 기재 주의사항 세 가지를 지키세요: ①정지 지령 후 2초 뒤에 다음 지령 송신 ②좌표모드는 절대위치라 같은 목표값을 다시 보내면 돌지 않는 것이 정상 ③속도 환산은 1.8도 스텝각 기준(다른 스텝각은 비례 계산). 통신이 안 될 때: 주소를 모르면 문서의 스페셜 지령(D8 03 0020 0001 96C9, 드라이버 1대만 연결 시)으로 ID를 읽을 수 있고, 송수신 HEX 로그를 상품문의에 붙여 주시면 빠르게 확인해 드립니다.
//==============================================================
// MotorBank SBD-14U 아두이노 RS485(Modbus RTU) 예제 V1.0
// 기능: 정역 연속회전 / 절대좌표 이동 / 운전속도 설정 / 정지(잠김·자유) / 상태 읽기
// 보드: Arduino Uno + RS485 컨버터 모듈(MAX485 등)
// 근거: SBD-14U_protocol 문서 (CRC 예제 15건 전수 검증 일치) — 문서 확정 기능만 구현
//
// [통신 설정] 9600bps, No Parity, 1 Stop (출하 기본) / 출하 기본주소 0x01
// [결선] 모듈 RO->D10, DI->D11, DE+RE->D3, A->드라이버 A, B->B, GND 공통
//        (핀 번호는 예제 편의상 지정 - 다른 디지털 핀도 사용 가능)
//
// [시리얼 모니터 사용법] (9600bps, "새 줄" 설정)
//   f      : 정회전 연속(0x002A<-0x0010, 리미트 비활성)   r : 역회전 연속(0x0000)
//   g51200 : 원점 기준 +방향 절대좌표 51200스텝으로 이동(0x002B)
//   G51200 : -방향 절대좌표로 이동
//   v51200 : 운전속도 51200 step/s 설정(0x0028, 전원 차단 시 저장 안 됨)
//   s      : 정지+축 잠김(0x002D<-0x0000)   S : 정지+축 자유(0x0001)
//   t      : 상태 읽기(0x002E - 정지/과열/실전류/리미트 파싱)
//
// [문서 기재 주의사항 - 그대로 반영]
//  - 정지 지령 후 2초 뒤에 다음 지령을 보내야 함(코드에서 안내 출력)
//  - 좌표모드는 절대위치라 같은 목표값 재전송 시 모터가 돌지 않는 것이 정상
//  - 속도 환산은 1.8도 스텝각 기준(다른 스텝각은 비례 계산)
//
// [상충 플래그 - 실기 확인 대상]
//  프로토콜 문서: 0x0010=정회전(비트표 bit4=1 정방향과 일치 - 본 코드 채택)
//  PC툴 문서 요약: 정회전=0x0000 으로 반대 표기 - 실기에서 방향이 반대로 돌면
//  f/r의 값(0x0010/0x0000)을 서로 바꾸면 됩니다.
//==============================================================
#include <SoftwareSerial.h>

const int RS485_RX = 10, RS485_TX = 11, RS485_EN = 3;
const byte ADDR = 0x01;                     // 출하 기본주소

SoftwareSerial rs485(RS485_RX, RS485_TX);

uint16_t crc16(const byte *d, byte n) {     // 표준 Modbus CRC16
  uint16_t c = 0xFFFF;
  for (byte j = 0; j < n; j++) {
    c ^= d[j];
    for (byte i = 8; i; i--) c = (c & 1) ? (c >> 1) ^ 0xA001 : c >> 1;
  }
  return c;
}

void txrx(byte *f, byte n) {                // 송신 + 응답 HEX 로그
  uint16_t c = crc16(f, n);
  f[n++] = c & 0xFF; f[n++] = c >> 8;       // CRC Low 먼저(문서 예제 검증 순서)
  while (rs485.available()) rs485.read();
  digitalWrite(RS485_EN, HIGH);
  rs485.write(f, n); rs485.flush();
  digitalWrite(RS485_EN, LOW);
  Serial.print(F("TX:"));
  for (byte i = 0; i < n; i++) { Serial.print(' '); if (f[i]<16) Serial.print('0'); Serial.print(f[i], HEX); }
  byte buf[24]; byte m = 0;
  unsigned long t0 = millis();
  while (millis() - t0 < 300 && m < 24) if (rs485.available()) buf[m++] = rs485.read();
  Serial.print(F(" | RX(")); Serial.print(m); Serial.print(F("B):"));
  for (byte i = 0; i < m; i++) { Serial.print(' '); if (buf[i]<16) Serial.print('0'); Serial.print(buf[i], HEX); }
  Serial.println();
  // 상태 읽기 응답 파싱: [ADDR][03][02][H][L][CRC](에코 뒤에 붙을 수 있어 뒤에서 탐색)
  for (int i = m - 5; i >= 0; i--) {
    if (buf[i] == ADDR && buf[i+1] == 0x03 && buf[i+2] == 0x02) {
      uint16_t s = ((uint16_t)buf[i+3] << 8) | buf[i+4];
      Serial.print(F("  상태: ")); Serial.print(s & 0x8000 ? F("정지") : F("운전중"));
      if (s & 0x4000) Serial.print(F(" / 과열경고(120C)"));
      if (s & 0x2000) Serial.print(F(" / 과열정지(136C)"));
      Serial.print(F(" / 전류코드 ")); Serial.print((s >> 4) & 0x1F);
      Serial.print(F(" / 우측SW ")); Serial.print((s >> 1) & 1);
      Serial.print(F(" / 좌측SW ")); Serial.println(s & 1);
      break;
    }
  }
}

void write06(uint16_t reg, uint16_t val) {
  byte f[8] = { ADDR, 0x06, (byte)(reg>>8), (byte)reg, (byte)(val>>8), (byte)val };
  txrx(f, 6);
}
void write10_32(uint16_t reg, uint32_t val) {   // 32bit: 레지스터 2개, 4바이트
  byte f[13] = { ADDR, 0x10, (byte)(reg>>8), (byte)reg, 0x00, 0x02, 0x04,
                 (byte)(val>>24), (byte)(val>>16), (byte)(val>>8), (byte)val };
  txrx(f, 11);
}
void read03(uint16_t reg) {
  byte f[8] = { ADDR, 0x03, (byte)(reg>>8), (byte)reg, 0x00, 0x01 };
  txrx(f, 6);
}

void setup() {
  Serial.begin(9600);
  rs485.begin(9600);
  pinMode(RS485_EN, OUTPUT); digitalWrite(RS485_EN, LOW);
  Serial.println(F("SBD-14U ready. f r g51200 G51200 v51200 s S t"));
}

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 = cmd.substring(1).toInt();
  switch (c) {
    case 'f': write06(0x002A, 0x0010); Serial.println(F("정회전(리미트 비활성)")); break;
    case 'r': write06(0x002A, 0x0000); Serial.println(F("역회전(리미트 비활성)")); break;
    case 'g': write10_32(0x002B, (uint32_t)constrain(v, 0, 0xFFFFFF));
              Serial.println(F("+좌표 이동(같은 값 재전송 시 무회전이 정상)")); break;
    case 'G': write10_32(0x002B, 0x80000000UL | (uint32_t)constrain(v, 0, 0xFFFFFF));
              Serial.println(F("-좌표 이동")); break;
    case 'v': write10_32(0x0028, (uint32_t)constrain(v, 1, 200000));
              Serial.println(F("운전속도 설정(전원 차단 시 미저장)")); break;
    case 's': write06(0x002D, 0x0000); Serial.println(F("정지+잠김. 다음 지령은 2초 후!")); break;
    case 'S': write06(0x002D, 0x0001); Serial.println(F("정지+축 자유. 다음 지령은 2초 후!")); break;
    case 't': read03(0x002E); break;
    default:  Serial.println(F("? f r g51200 G51200 v51200 s S t"));
  }
}
작성: MotorBank 기술팀 · 아두이노 우노 기준 · 프로토콜 문서 CRC 예제 15건 검증 일치 · 최종 업데이트: 2026-08-14

자주 묻는 질문 — 호환 모터·위치제어 방식

Q. 어떤 스텝모터와 사용할 수 있나요?
42각 스텝모터 중 정격전류 1.5A 이하 모델과 사용을 권장합니다. 드라이버 최대 전류가 1.9A이므로 전류 여유를 두고 1.5A 이하가 기준이며, 전류가 맞더라도 42각 이외 사이즈의 모터에는 권장하지 않습니다 — 전류와 사이즈 두 조건을 모두 확인하세요. 적용 가능 여부가 애매하면 사용하실 모터 모델명을 상품문의에 남겨 주시면 확인해 드립니다.
Q. 원점 기준이 아니라, 현재 위치에서 상대 이동을 시킬 수 있나요?
좌표모드 운전은 기본적으로 원점 기준 절대위치 이동 방식입니다. 상대 이동이 필요하다면 현재 위치의 좌표값을 먼저 읽고, 이동할 거리를 더한 목표값으로 이동 명령을 주는 방식으로 구현할 수 있습니다. 제어 프로그램에서 "읽기 → 가산 → 이동" 세 단계를 하나의 함수로 만들어 두면 상대 이동처럼 사용할 수 있습니다.
Q. 한 방향으로 계속(무한) 회전시키는 용도로 써도 되나요?
가능하지만 주의가 필요합니다. 위치 좌표값에는 최대치가 있어(0xFFFFFFF), 한 방향으로만 계속 이동 명령을 누적하면 언젠가 최대값에 도달해 더 이상 명령을 줄 수 없게 됩니다. 연속 회전 용도라면 좌표가 최대치에 가까워지기 전에 현재 위치를 원점으로 재설정하고 다시 시작하는 로직을 제어 프로그램에 넣어 주세요. 왕복 이동·위치 결정 용도에는 이런 처리 없이 그대로 사용하시면 됩니다.
Q. 통신 명령·레지스터 상세는 어디서 확인하나요?
좌표모드 운전 등 레지스터별 상세 사용법은 본 페이지의 사용설명서 자료를 참고하시고, 설명서로 해결되지 않는 동작 관련 질문은 구현하려는 동작(이동 패턴·반복 주기)을 상품문의에 적어 주시면 구현 방법을 안내해 드립니다.
작성: MotorBank 기술팀 · 실제 고객 문의를 바탕으로 작성 · 최종 업데이트: 2026-08-14





사용설명서 및 프로그램 다운로드


 

SBD-14U_users_manual 및 protocol 과 PC_tools 사용법



SBD-14U-S1_155718.jpg
e98866ac20095d0d9422a1dac0f311f1_140744.jpg



SBD-14U-S3_155719.jpg


58c9ed0a45143e6145f0a803cce743e7_145621.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는 불가합니다.
  
YOU MAY ALSO LIKE 함께 구매하면 좋을 관련상품 모음

이미지 확대보기RS-485 스텝모터 드라이버 컨트롤러 SBD-14U Modbus RTU DC7~24V 최대 1.9A 42각 후면 일체형 절대좌표·원점복귀

RS-485 스텝모터 드라이버 컨트롤러 SBD-14U Modbus RTU DC7~24V 최대 1.9A 42각 후면 일체형 절대좌표·원점복귀
  • RS-485 스텝모터 드라이버 컨트롤러 SBD-14U Modbus RTU DC7~24V 최대 1.9A 42각 후면 일체형 절대좌표·원점복귀
  • RS-485 스텝모터 드라이버 컨트롤러 SBD-14U Modbus RTU DC7~24V 최대 1.9A 42각 후면 일체형 절대좌표·원점복귀
  • RS-485 스텝모터 드라이버 컨트롤러 SBD-14U Modbus RTU DC7~24V 최대 1.9A 42각 후면 일체형 절대좌표·원점복귀
닫기

비밀번호 인증

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

닫기

장바구니 담기

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

찜 리스트 담기

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