485통신 MCU제어 지원 구동드라이버 내장형 전용 드라이버 BLC-20R4
  • 485통신 MCU제어 지원 구동드라이버 내장형 전용 드라이버 BLC-20R4
  • 485통신 MCU제어 지원 구동드라이버 내장형 전용 드라이버 BLC-20R4
  • 485통신 MCU제어 지원 구동드라이버 내장형 전용 드라이버 BLC-20R4

485통신 MCU제어 지원 구동드라이버 내장형 전용 드라이버 BLC-20R4

RS485통신가능
mcu제어가능
아날로그제어가능
구동드라이버 내장형 모터 전용
공유
판매가
49,000
모델명
BLC-20R4
구매혜택
할인 : 적립 마일리지 :
배송비
3,500원 / 주문시결제(선결제) 조건별배송 지역별추가배송비
택배
방문 수령지 : 서울특별시 금천구 디지털로 178(가산동) A동 1115-1116호
상품코드
1000034882
485통신 MCU제어 지원 구동드라이버 내장형 전용 드라이버 BLC-20R4
0
총 상품금액
총 할인금액
총 합계금액
구매안내

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

본 모터(니덱 구동드라이버 내장형 BLDC)는 전용 드라이버 BLC-20(PWM 제어형) 또는 BLC-20R4(RS485 통신형 — PWM·볼륨 제어 겸용)와 함께 사용합니다. 아두이노 단순 속도·방향 제어면 BLC-20, 통신 제어(여러 대 주소 지정·상태 관리)까지 필요하면 BLC-20R4를 선택하세요. 아래에서 드라이버에 맞는 예제를 복사해 아두이노 IDE에 붙여넣으면 바로 사용할 수 있습니다. 코드 박스 안을 클릭한 뒤 전체 선택(Ctrl+A가 아닌 마우스 드래그)하여 복사하시면 됩니다.
① BLC-20 — PWM 제어 예제 (V3.2)
PWM 20kHz + 가감속 + 시리얼 모니터 명령 제어. 사전 준비: 아두이노 IDE의 라이브러리 매니저에서 TimerOneMsTimer2를 검색해 설치하세요 (스케치 → 라이브러리 포함하기 → 라이브러리 관리). 결선: D9→PWM, D4→방향, D2→브레이크, GND 공통. 업로드 후 시리얼 모니터(9600bps, "새 줄")에서 f80(정방향 80%) / r50(역방향 50%) / s(정지) / b1·b0(브레이크) / p5(가감속 기울기)로 조작합니다.
//==============================================================
// MotorBank BLC-20 / BLC-30 아두이노 예제 V3.2
// 기능: PWM 20kHz 속도제어 + 방향 + 브레이크 + 가감속(Slope)
//       + 시리얼 모니터 명령 제어 (V3.1 대비 추가)
// 보드: Arduino Uno (검증 기준)
//
// [사전 준비] 라이브러리 매니저에서 설치:
//   1) TimerOne   2) MsTimer2
//
// [결선]
//   D9  -> PWM(속도) 입력
//   D4  -> Direction(방향) 입력
//   D2  -> Brake(브레이크) 입력
//   GND -> 드라이버 GND (반드시 공통)
//
// [시리얼 모니터 사용법] (9600bps, "새 줄" 설정)
//   f80   : 정방향 80% 속도    r50 : 역방향 50% 속도
//   s     : 감속 정지(속도 0)   b1  : 브레이크 ON   b0 : 브레이크 OFF
//   p3    : 가감속 기울기 1~10 (숫자 클수록 빠르게 가감속)
//==============================================================
#include <TimerOne.h>
#include <MsTimer2.h>

const int PWM_PIN   = 9;
const int DIR_PIN   = 4;
const int BRAKE_PIN = 2;

volatile int DutyRef = 0;   // 목표 듀티 -1024~1024 (-100%~100%)
volatile int Duty    = 0;   // 현재 듀티(가감속 반영)
int Slope = 5;              // 가감속 단계 1~10

void flash() {              // 가감속: 목표까지 1스텝씩 접근
  if (Duty < DutyRef) Duty++;
  else if (Duty > DutyRef) Duty--;
  if (Duty > 0) {
    Timer1.setPwmDuty(PWM_PIN, 1024 - Duty);
    digitalWrite(DIR_PIN, LOW);
  } else if (Duty < 0) {
    Timer1.setPwmDuty(PWM_PIN, 1024 + Duty);
    digitalWrite(DIR_PIN, HIGH);
  } else {
    Timer1.setPwmDuty(PWM_PIN, 1024);  // 속도 0
  }
}

void applySlope() {
  MsTimer2::stop();
  MsTimer2::set(10 / constrain(Slope, 1, 10), flash);
  MsTimer2::start();
}

void setup() {
  Serial.begin(9600);
  Timer1.initialize();
  Timer1.pwm(PWM_PIN, 0);
  Timer1.setPeriod(50);              // 50us -> PWM 20kHz
  Timer1.setPwmDuty(PWM_PIN, 1024);  // 정지 상태로 시작
  pinMode(DIR_PIN, OUTPUT);   digitalWrite(DIR_PIN, LOW);
  pinMode(BRAKE_PIN, OUTPUT); digitalWrite(BRAKE_PIN, HIGH); // 브레이크 해제 상태
  applySlope();
  Serial.println(F("BLC-20/30 ready. f80 r50 s b1 b0 p5"));
}

void loop() {
  if (!Serial.available()) return;
  String cmd = Serial.readStringUntil('\n');
  cmd.trim();
  if (cmd.length() == 0) return;
  char c = cmd.charAt(0);
  int v = cmd.substring(1).toInt();
  switch (c) {
    case 'f': DutyRef =  constrain(v, 0, 100) * 1024L / 100; Serial.print(F("FWD ")); Serial.println(v); break;
    case 'r': DutyRef = -constrain(v, 0, 100) * 1024L / 100; Serial.print(F("REV ")); Serial.println(v); break;
    case 's': DutyRef = 0; Serial.println(F("STOP(slope)")); break;
    case 'b': digitalWrite(BRAKE_PIN, v ? LOW : HIGH); Serial.println(v ? F("BRAKE ON") : F("BRAKE OFF")); break;
    case 'p': Slope = constrain(v, 1, 10); applySlope(); Serial.print(F("Slope ")); Serial.println(Slope); break;
    default:  Serial.println(F("? f80 r50 s b1 b0 p5"));
  }
}
② BLC-20R4 — RS485(Modbus RTU) 통신 제어 예제 (V1.0)
아두이노 우노 + RS485 컨버터 모듈(MAX485 등) 필요. 드라이버 스위치는 Int로 설정. 결선: 모듈 RO→D10, DI→D11, DE+RE(묶어서)→D3, A/B→드라이버 485 A/B(통신 안 되면 A/B 교차), 전원 5V·GND 공통. 업로드 후 시리얼 모니터에서 가장 먼저 i를 입력해 RS485 통신모드를 기동해야 하며(전원 인가 후 최초 1회 필수), 이후 f80 / r50 / s / b1·b0으로 제어합니다. 송수신 내용이 HEX로 출력되므로 문제 발생 시 그 로그를 상품문의에 붙여 주시면 빠르게 확인해 드립니다.
//==============================================================
// MotorBank BLC-20R4 아두이노 RS485(Modbus RTU) 예제 V1.0
// 기능: RS485 통신으로 기동/속도/방향/브레이크 제어
// 보드: Arduino Uno + RS485 컨버터 모듈(MAX485 등)
// 근거: BLC-20R4 사용설명서 & RS485 Modbus 프로토콜 (CRC 예제 6건 검증 일치)
//
// [드라이버 설정] 제어 스위치를 Int로 설정 (RS485 제어 조건)
// [통신 설정] 9600bps, No Parity, 8 Data, 1 Stop (제품 기본값)
//
// [결선 - MAX485 모듈 기준]
//   모듈 RO  -> D10 (아두이노 수신)
//   모듈 DI  -> D11 (아두이노 송신)
//   모듈 DE+RE(묶어서) -> D3   (송신 시 HIGH)
//   모듈 A/B -> 드라이버 485 A/B (통신 안 되면 A/B 교차 시도)
//   모듈 VCC -> 5V, GND -> 공통 GND
//
// [시리얼 모니터 사용법] (9600bps, "새 줄" 설정)
//   i    : RS485 통신모드 기동(0x0023) - 전원 인가 후 최초 1회 필수!
//   f80  : CW 방향 + 속도 80%     r50 : CCW 방향 + 속도 50%
//   s    : 속도 0                 b1/b0 : 브레이크 High/Low
//
// [주의]
// - 방향값: 상세 예시 기준 0x0000=CCW, 0x0001=CW 적용
//   (설명서 요약표의 "1CW/2CCW" 표기와 상이 - 예시 프레임(CRC 검증됨) 기준 채택)
// - RS485 반이중 특성상 자기 송신 에코가 수신될 수 있어 코드에서 버림 처리함
//==============================================================
#include <SoftwareSerial.h>

const int RS485_RX = 10;   // <- 모듈 RO
const int RS485_TX = 11;   // -> 모듈 DI
const int RS485_EN = 3;    // DE+RE
const byte DEV_ADDR = 0x01; // 제어기 주소(출고 기본 0x01)

SoftwareSerial rs485(RS485_RX, RS485_TX);

uint16_t crc16(const byte *data, byte len) {          // Modbus CRC16
  uint16_t crc = 0xFFFF;
  for (byte j = 0; j < len; j++) {
    crc ^= data[j];
    for (byte i = 8; i != 0; i--) {
      if (crc & 0x0001) { crc >>= 1; crc ^= 0xA001; }
      else crc >>= 1;
    }
  }
  return crc;
}

// Function 0x06: 레지스터 1개 쓰기 (기동/속도/방향/브레이크 공용)
void write06(uint16_t reg, uint16_t val) {
  byte f[8];
  f[0] = DEV_ADDR; f[1] = 0x06;
  f[2] = reg >> 8; f[3] = reg & 0xFF;
  f[4] = val >> 8; f[5] = val & 0xFF;
  uint16_t c = crc16(f, 6);
  f[6] = c & 0xFF;   // CRC Low 먼저 (문서 예제 검증 순서)
  f[7] = c >> 8;     // CRC High

  while (rs485.available()) rs485.read();  // 수신버퍼 비우기
  digitalWrite(RS485_EN, HIGH);            // 송신 모드
  rs485.write(f, 8);
  rs485.flush();
  digitalWrite(RS485_EN, LOW);             // 수신 모드

  // 응답 수신(에코가 먼저 들어오면 8바이트 버리고 다음 8바이트가 실제 응답)
  byte buf[16]; byte n = 0;
  unsigned long t0 = millis();
  while (millis() - t0 < 300 && n < 16) {
    if (rs485.available()) buf[n++] = rs485.read();
  }
  Serial.print(F("TX:"));
  for (byte i = 0; i < 8; i++) { Serial.print(' '); if (f[i] < 16) Serial.print('0'); Serial.print(f[i], HEX); }
  Serial.print(F(" | RX(")); Serial.print(n); Serial.print(F("B):"));
  for (byte i = 0; i < n; i++) { Serial.print(' '); if (buf[i] < 16) Serial.print('0'); Serial.print(buf[i], HEX); }
  Serial.println();
}

void setup() {
  Serial.begin(9600);
  rs485.begin(9600);                        // 9600 N81 (제품 기본)
  pinMode(RS485_EN, OUTPUT);
  digitalWrite(RS485_EN, LOW);
  Serial.println(F("BLC-20R4 RS485 ready."));
  Serial.println(F("i(기동,최초1회) f80 r50 s b1 b0"));
}

void loop() {
  if (!Serial.available()) return;
  String cmd = Serial.readStringUntil('\n');
  cmd.trim();
  if (cmd.length() == 0) return;
  char c = cmd.charAt(0);
  int v = constrain(cmd.substring(1).toInt(), 0, 100);
  switch (c) {
    case 'i': write06(0x0023, 0x0000); Serial.println(F("RS485 mode start")); break; // 기동(필수)
    case 'f': write06(0x0025, 0x0001); write06(0x0024, v); break;  // CW + 속도
    case 'r': write06(0x0025, 0x0000); write06(0x0024, v); break;  // CCW + 속도
    case 's': write06(0x0024, 0); break;                            // 속도 0
    case 'b': write06(0x0026, v ? 1 : 0); break;                    // 브레이크
    default:  Serial.println(F("? i f80 r50 s b1 b0"));
  }
}
작성: MotorBank 기술팀 · 아두이노 우노 기준 · 최종 업데이트: 2026-08-14

자주 묻는 질문 — 설정·결선·제어 방식

Q. 매뉴얼·치수·예제 코드는 어디서 받나요?
· 사용자 매뉴얼(치수·고정 홀 규격 포함) — 기술자료 게시판에서 다운로드
· 아두이노 샘플 코드와 사용법기술자료 게시판
Q. Internal / External 스위치는 언제 어느 쪽으로 두나요?
이름 때문에 헷갈리기 쉬운 부분입니다. RS485 통신으로 제어할 때 = Internal — 통신 명령을 보드 내부의 MCU가 해석해 제어하기 때문입니다. 반대로 외부에서 PWM·아날로그 신호를 직접 입력할 때 = External입니다. "명령을 처리하는 주체가 어디인가"로 기억하시면 헷갈리지 않습니다: 내부 MCU 처리=Internal, 외부 신호 직결=External.
Q. 전원 단자의 극성은?
VDD가 +(플러스), GND가 −(마이너스)입니다. 반대로 연결하면 컨트롤러가 파손될 수 있고 전압을 1회라도 인가한 제품은 교환·반품이 불가하니, 통전 전에 극성을 반드시 확인하세요.
Q. 정격 출력·전류는 어느 범위로 사용하나요?
DC12~24V에서 출력 90W 이하, 전류 4A 이하로 사용하는 것이 가장 안정적입니다. 이 범위를 넘는 모터는 상위 용량 컨트롤러를 검토하세요 — 사용하실 모터 모델명을 상품문의에 남겨 주시면 맞는 조합을 안내해 드립니다.
Q. 속도는 어떤 방법으로 조절하나요?
세 가지 방식을 지원합니다: ①외부 볼륨(가변저항) ②0~5V 아날로그 전압 ③RS485 통신 명령.
참고로 외부저항 단자에 흐르는 전류는 모터 전류가 아니라 드라이버 내부 제어회로의 미소 전류입니다. 따라서 PLC·상위 컨트롤러의 0~5V 아날로그 출력을 저항 대신 그대로 연결해 속도를 제어할 수 있습니다 — 별도 인터페이스 회로 없이 아날로그 출력 연동이 가능합니다.
Q. 어떤 모터와 호환되는지, 여러 대 연결은 몇 대까지 되는지 궁금합니다.
기본 조건은 위 정격 범위(12~24V·4A 이하)의 BLDC모터입니다. 특정 모터와의 호환 여부와 RS485 멀티드롭으로 동시 제어할 대수는 구성에 따라 달라지므로, 사용하실 모터 모델명과 연결 대수를 상품문의에 남겨 주세요 — 확인 후 구성을 안내해 드립니다.
작성: MotorBank 기술팀 · 실제 고객 문의를 바탕으로 작성 · 최종 업데이트: 2026-08-14

테스트 통합 프로그램





사용설명서 바로가기


설명서&아두이노샘플코드


소프트웨어&485통신예제코드



<485통신 제어>





<아두이노 제어>




<아날로그 제어>




해당 제품은 구동드라이버내장형 모터의 설계에 따라
전원인가시 바로 구동되는 타입이 있고
전원인하후 명령을 줘야 구동되는 타입도 있습니다.

실제 모터에 따라 사용바랍니다.




BLC-20R4-S1_164236.jpg
BLC-20R4-S2_164236.jpg

BLC-20R4-S4_164235.jpg



2e85b1e9269c5954781929428f585595_094533.jpg


예제코드

*****************************************************************************************************************

구동드라이버 내장형의 경우 내장된 드라이버의 설계에 따라 HIGH LOW부분이 다릅니다.

따라서 일부 모터는 브레이크 LOW에서만 구동이 되고 일부 모터는 HIGH에서만 구동이 됩니다.

듀티비 또한 설계의 영향에 따라 다를수 있습니다.


일부 내장형 모터일 겨웅 브레이크 케이블이 없을 경우 또 다르게 표현됩니다.


결론적으로 모터에 내장된 설계에 따라 코드가 다르게 사용되는 부분 꼭 참고바라며

테스트를 통해 제어기와 친해지기 바랍니다.


영상참고

https://youtu.be/BQQRg4nUDTg

https://www.youtube.com/watch?v=8jv-MR4ktTI

https://www.youtube.com/shorts/o6YA6spkBow?feature=share



*****************************************************************************************************************


주소수정 02 06 0020 0001

주소읽기 01 03 0020 0001


통신속도 수정  01 10 0021 0002 04 00002580

통신속도 읽기  01 03 0021 0002


485통신 기동 브레이크 LOW 속도 0%

01 06 0023 0000

485통신 기동 브레이크 LOW 속도 100%

01 06 0023 0001

485통신 기동 브레이크 HIGH 속도 0%

01 06 0023 0002

485통신 기동 브레이크 HIGH 속도 100%

01 06 0023 0003


듀티비설정 100% 

01 06 0024 0064

듀티비설정 

01 06 0024 0050

듀티비설정

01 06 0024 0040

듀티비설정 0%

01 06 0024 0000


정회전  01 06 0025 0001

역회전  01 06 0025 0002


ACC-10(가변저항기+스위치*2) 별도구매

배송안내




  배송안내
  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 함께 구매하면 좋을 관련상품 모음

이미지 확대보기485통신 MCU제어 지원 구동드라이버 내장형 전용 드라이버 BLC-20R4

485통신 MCU제어 지원 구동드라이버 내장형 전용 드라이버 BLC-20R4
  • 485통신 MCU제어 지원 구동드라이버 내장형 전용 드라이버 BLC-20R4
  • 485통신 MCU제어 지원 구동드라이버 내장형 전용 드라이버 BLC-20R4
  • 485통신 MCU제어 지원 구동드라이버 내장형 전용 드라이버 BLC-20R4
닫기

비밀번호 인증

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

닫기

장바구니 담기

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

찜 리스트 담기

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