BLC-400 256축 센서타입BLDC모터 드라이버 RS485통신규격 400W
  • BLC-400 256축 센서타입BLDC모터 드라이버 RS485통신규격 400W
  • BLC-400 256축 센서타입BLDC모터 드라이버 RS485통신규격 400W
  • BLC-400 256축 센서타입BLDC모터 드라이버 RS485통신규격 400W

BLC-400 256축 센서타입BLDC모터 드라이버 RS485통신규격 400W

BLDC홀센서 모터 전용 RS485통신규격 400W
공유
판매가
118,580
모델명
BLC-400
구매혜택
할인 : 적립 마일리지 :
배송비
3,500원 / 주문시결제(선결제) 조건별배송 지역별추가배송비
택배
방문 수령지 : 서울특별시 금천구 디지털로 178(가산동) A동 1115-1116호
상품코드
1000014332
홀센서전압
구매안내

RS-485 통신 제어 — 아두이노 예제 코드 (BLC-200 / BLC-400 / BLC-400R4E 공용)

아래 세 드라이버는 동일한 MC-RS485 프로토콜을 사용하므로 이 예제 코드를 그대로 함께 쓸 수 있습니다. 사용하실 모터의 용량과 엔코더 유무에 맞는 드라이버를 선택하세요:
· BLC-200 구매하기 → — 200W급 · 홀센서 BLDC 모터용 (엔코더 미지원)
· BLC-400 구매하기 → — 400W급 · 홀센서 BLDC 모터용 (엔코더 미지원)
· BLC-400R4E 구매하기 → — 400W급 · 엔코더 장착 홀센서 BLDC 모터용
통신 사양은 9600bps 기본, 8 Data·No Parity·1 Stop이며, 프레임 구조는 FF FE(헤더) + ID + 데이터크기 + 체크섬 + 모드 + 데이터, 체크섬은 헤더·체크섬을 제외한 전체 바이트 합의 하위 1바이트에 NOT 연산을 한 값입니다 (PLC·PC 등 다른 상위 장치도 이 구조를 그대로 구현하면 됩니다). 예제는 아두이노 우노 + RS485 컨버터(MAX485 등) 기준이고, 시리얼 모니터에서 f1000(CW 100.0RPM) / r500(CCW 50.0RPM) / s(정지) / g9000(CW 90.00도 이동) / z(위치 초기화) / p(위치 피드백) / v(속도 피드백)로 조작합니다. 결선: 모듈 RO→D10, DI→D11, DE+RE→D3, A/B→드라이버 485 단자(통신이 안 되면 A/B 교차), GND 공통. 아두이노 확장쉴드 MAS-001을 쓰면 쉴드의 485 단자에 연결하면 됩니다. 송수신 HEX 로그가 출력되므로 문제 발생 시 로그를 상품문의에 붙여 주시면 빠르게 확인해 드립니다.
//==============================================================
// MotorBank BLC 시리즈 아두이노 RS485(MC-RS485 프로토콜) 공용 예제 V1.1
// 적용 제품: BLC-200 / BLC-400 / BLC-400R4E (통신 프로토콜 동일)
// 기능: 속도제어(가감속) / 위치제어(가감속) / 위치·속도 피드백 읽기
// 보드: Arduino Uno + RS485 컨버터 모듈(MAX485 등)
// 근거: 통신프로토콜 MC-RS485 V1.0.1 (문서 예제 체크섬 10건 검증 일치)
//
// [통신 설정] 9600bps(제품 초기값), 8 Data, No Parity, 1 Stop
// [프레임 구조] FF FE | ID | Data크기 | Checksum | Mode | Data...
//   Checksum = ~(ID + Data크기 + Mode + Data바이트 합)의 하위 1바이트
//
// [결선 - MAX485 모듈 기준]
//   모듈 RO -> D10 / DI -> D11 / DE+RE(묶음) -> D3
//   모듈 A/B -> 드라이버 485 A/B (통신 안 되면 A/B 교차)
//   모듈 VCC -> 5V, GND -> 아두이노·드라이버 공통
//   * MAS-001 확장쉴드 사용 시 쉴드의 485 단자에 연결 (MAS-001 상세페이지 참조)
//
// [시리얼 모니터 사용법] (9600bps, "새 줄" 설정)
//   f1000 : CW  100.0RPM (0.1RPM 단위, 도달시간 1초 가감속)
//   r500  : CCW  50.0RPM
//   s     : 정지(속도 0)
//   g9000 : CW  90.00도 위치 이동 (0.01도 단위, 도달시간 1초)
//   G9000 : CCW 90.00도 위치 이동
//   z     : 현재 위치를 0으로 초기화
//   p     : 위치 피드백 요청(방향/각도/속도/전류 표시)
//   v     : 속도 피드백 요청
//==============================================================
#include <SoftwareSerial.h>

const int RS485_RX = 10, RS485_TX = 11, RS485_EN = 3;
const byte MOTOR_ID = 0x00;   // 제품 초기 ID 0x00 (변경했다면 수정)

SoftwareSerial rs485(RS485_RX, RS485_TX);

// 프레임 송신: mode + data → 헤더/크기/체크섬 자동 구성
void sendFrame(byte mode, const byte *data, byte dlen) {
  byte size = dlen + 2;                    // Mode + Data + Checksum
  int sum = MOTOR_ID + size + mode;
  for (byte i = 0; i < dlen; i++) sum += data[i];
  byte chk = (~sum) & 0xFF;

  byte f[16]; byte n = 0;
  f[n++] = 0xFF; f[n++] = 0xFE;
  f[n++] = MOTOR_ID; f[n++] = size; f[n++] = chk; f[n++] = mode;
  for (byte i = 0; i < dlen; i++) f[n++] = data[i];

  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); }
  Serial.println();
}

// 수신 프레임 읽기 + 위치/속도 피드백(0xD1/0xD2) 해석
void readFeedback() {
  byte buf[24]; byte n = 0;
  unsigned long t0 = millis();
  while (millis() - t0 < 300 && n < 24) {
    if (rs485.available()) buf[n++] = rs485.read();
  }
  if (n == 0) { Serial.println(F("RX: (응답 없음 - 결선/ID/전원 확인)")); return; }
  Serial.print(F("RX:"));
  for (byte i = 0; i < n; i++) { Serial.print(' '); if (buf[i]<16) Serial.print('0'); Serial.print(buf[i], HEX); }
  Serial.println();
  // 프레임 헤더 탐색(자기 에코 뒤에 응답이 붙을 수 있어 마지막 FFFE 기준 해석)
  for (int i = n - 4; i >= 0; i--) {
    if (buf[i] == 0xFF && buf[i+1] == 0xFE) {
      byte mode = buf[i+5];
      if ((mode == 0xD1 || mode == 0xD2) && i + 11 < (int)n + 1) {
        byte dir = buf[i+6];
        unsigned int a = ((unsigned int)buf[i+7] << 8) | buf[i+8];
        unsigned int b = ((unsigned int)buf[i+9] << 8) | buf[i+10];
        byte cur = buf[i+11];
        if (mode == 0xD1) {  // 위치 피드백: 위치[0.01도] 속도[0.1RPM]
          Serial.print(F("위치: ")); Serial.print(dir ? F("CW ") : F("CCW "));
          Serial.print(a / 100.0); Serial.print(F("도, 속도 "));
          Serial.print(b / 10.0); Serial.print(F("RPM, 전류 "));
          Serial.print(cur * 0.1); Serial.println(F("A"));
        } else {             // 속도 피드백: 속도[0.1RPM] 위치[0.1도]
          Serial.print(F("속도: ")); Serial.print(dir ? F("CW ") : F("CCW "));
          Serial.print(a / 10.0); Serial.print(F("RPM, 위치 "));
          Serial.print(b / 10.0); Serial.print(F("도, 전류 "));
          Serial.print(cur * 0.1); Serial.println(F("A"));
        }
      }
      break;
    }
  }
}

void speedMove(byte dir, unsigned int spd01rpm, byte time01s) {   // 가감속 속도제어 0x03
  byte d[4] = { dir, (byte)(spd01rpm >> 8), (byte)(spd01rpm & 0xFF), time01s };
  sendFrame(0x03, d, 4);
}
void posMove(byte dir, unsigned int pos001deg, byte time01s) {    // 가감속 위치제어 0x02
  byte d[4] = { dir, (byte)(pos001deg >> 8), (byte)(pos001deg & 0xFF), time01s };
  sendFrame(0x02, d, 4);
}

void setup() {
  Serial.begin(9600);
  rs485.begin(9600);                 // 제품 초기값 9600bps
  pinMode(RS485_EN, OUTPUT);
  digitalWrite(RS485_EN, LOW);
  Serial.println(F("BLC MC-RS485 ready."));
  Serial.println(F("f1000 r500 s g9000 G9000 z p v"));
}

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': speedMove(0x01, constrain(v, 1, 65533), 10); break;        // CW, 도달 1.0s
    case 'r': speedMove(0x00, constrain(v, 1, 65533), 10); break;        // CCW
    case 's': speedMove(0x01, 1, 5); delay(600); speedMove(0x01, 1, 1);
              Serial.println(F("감속 정지")); break;
    case 'g': posMove(0x01, constrain(v, 0, 65533), 10); break;          // CW 위치
    case 'G': posMove(0x00, constrain(v, 0, 65533), 10); break;          // CCW 위치
    case 'z': sendFrame(0x0E, nullptr, 0); Serial.println(F("위치 0 초기화")); break;
    case 'p': sendFrame(0xA1, nullptr, 0); readFeedback(); return;
    case 'v': sendFrame(0xA2, nullptr, 0); readFeedback(); return;
    default:  Serial.println(F("? f1000 r500 s g9000 G9000 z p v")); return;
  }
  readFeedback();  // 명령 후 응답/에코 로그 표시
}
작성: MotorBank 기술팀 · 아두이노 우노 기준 · 최종 업데이트: 2026-08-14
feee6d9d67724edbae958403e215b797_122823.png
BLC-400 통신 프로토콜 다운로드 클릭    
72f1b1d766504f00c433743be95fa516_155044.jpg

 

485통신 기능을 원하기 때문에 다축제어가 가능합니다. 다만 제어시 PC와 계속 연결할 수 없는 상태라면

아두이노 모터드라이버 확장쉴드를 같이 사용해 보시기 바랍니다.

아두이노 소스프로그램을 지원하여 자유자재로 PC 없이 펌웨어로 사용이 가능해집니다.

 





 

 

배송안내




  배송안내
  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는 불가합니다.
  

이미지 확대보기BLC-400 256축 센서타입BLDC모터 드라이버 RS485통신규격 400W

BLC-400 256축 센서타입BLDC모터 드라이버 RS485통신규격 400W
  • BLC-400 256축 센서타입BLDC모터 드라이버 RS485통신규격 400W
  • BLC-400 256축 센서타입BLDC모터 드라이버 RS485통신규격 400W
  • BLC-400 256축 센서타입BLDC모터 드라이버 RS485통신규격 400W
닫기

비밀번호 인증

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

닫기

장바구니 담기

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

찜 리스트 담기

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