Documents the ZLAC8015D V4 dual-channel driver (hardware spec, RS485 Modbus register map, 4WD skid-steer system architecture, the xbox_motor_control.cpp control loop, and error/troubleshooting) under doc/, plus a phased plan for adding IMU-based heading/slip feedback (doc/06) informed by Clearpath Husky's sensor fusion stack and skid-steer ICR literature. QnA/ records the Q&A that refined that plan. Also adds the underlying manual PDFs and reference links under resource/ that the docs cite. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
8.7 KiB
01. ZLAC8015D V4 하드웨어 스펙
출처: resource/ZLAC8015D V4 Series Manual Version 1.03-20251111.pdf
1.1 개요
- 제조사: Shenzhen Zhongling Technology (ZLTECH)
- 허브 서보 모터 전용 디지털 AC 서보 드라이버로, 1대가 좌/우 모터 2개(듀얼 채널)를 동시 구동한다.
- RS485(Modbus RTU) 및 CANopen(CiA301/CiA402) 버스 통신을 내장.
- 위치/속도/토크 제어 모드를 지원.
- 용도: AGV, 배송 로봇, 서비스 로봇, 자동화 이송 장비 등 — 본 프로젝트에서는 실외 스키드 스티어 4WD 로봇의 좌우 휠 페어 구동에 사용된다.
1.2 전기 사양
| 파라미터 | 최소 | 표준 | 최대 | 단위 |
|---|---|---|---|---|
| 입력 전압 | 20 | 36 | 48 | VDC |
| 출력 전류 (피크) | 0 | 15 | 30 | A |
| 제어 신호 입력 전류 | 7 | 10 | 16 | mA |
| 과전압 보호 | - | 75 | - | VDC |
| 저전압 보호 | - | 16 | - | VDC |
| 입력 신호 전압 | - | 5 | - | VDC |
| 절연 저항 | 18 | 20 | - | MΩ |
채널당 정격전류 150(=15.0A), 최대전류 300(=30.0A)이 레지스터
0x2033/0x2034(좌),0x2063/0x2064(우)의 공장 기본값이며, 위 표의 15A/30A와 일치한다. 자세한 내용은 05-error-troubleshooting.md의 전류 한계 절 참고.
1.3 환경 사양
| 항목 | 내용 |
|---|---|
| 냉각 방식 | 자연 냉각 또는 강제 냉각 |
| 사용 장소 | 먼지, 유분(oil mist), 부식성 가스 회피 |
| 동작 온도 | 0 ~ 50 ℃ |
| 최대 습도 | 90% RH (결로 없음) |
| 보관 온도 | -10 ~ 70 ℃ |
| 진동 | 10~55Hz / 0.15mm |
실외 로봇에 탑재되므로 방진/방수 인클로저 내부에 설치하고, 방열이 충분한 방향(narrow side, 방열판 면)으로 장착할 것을 매뉴얼이 권장한다. 주변 온도가 60℃를 넘는 밀폐/금속 분진 환경은 피해야 한다.
1.4 외형/설치 치수
- 크기: 150 × 97 × 31mm 내외 (방열판 폭 제외 케이스 기준,
resource/ZLAC8015D V4 Series.pdf도면 참고) - M3 나사로 4모서리(와이드 사이드) 또는 양측면(네로우 사이드) 고정. 방열을 위해 네로우 사이드 설치 권장.
- 장착 시 진동/충격 보호 필요 (차체에 완충 마운트 권장).
1.5 커넥터 핀맵
J1/J2 — 좌측 모터 전원 (5핀)
| Pin | 표기 | 기능 |
|---|---|---|
| 1 | DC | 전원 입력 24-48V |
| 2 | GND | 전원 GND |
| 3 | U | 좌모터 U상 |
| 4 | V | 좌모터 V상 |
| 5 | W | 좌모터 W상 |
우측 모터 전원 (5핀, 핀 순서 반대)
| Pin | 표기 | 기능 |
|---|---|---|
| 5 | GND | 전원 GND |
| 4 | DC | 전원 입력 24-48V |
| 3 | W | 우모터 W상 |
| 2 | V | 우모터 V상 |
| 1 | U | 우모터 U상 |
전원은 좌/우 커넥터 중 한쪽 또는 양쪽 동시 입력이 가능하다(퀵스타트 가이드 확인).
J2/J6 — 좌/우 모터 인크리멘탈 엔코더 & 홀 (12핀)
| Pin | 표기 | 기능 |
|---|---|---|
| 1-4 | iA+/iA-/iB+/iB- | 인크리멘탈 엔코더 A/B상 |
| 5-6 | RTC+/RTC- | 온도 센서 |
| 7-8 | V/W (Hall) | 홀 센서 |
| 9 | U (Hall) | 홀 센서 |
| 10 | GND | 전원 GND |
| 11 | VCC | 엔코더/홀 전원 출력 |
| 12 | GND | 전원 GND |
J3 — 모터 제어 신호 포트 (8핀)
| Pin | 표기 | 기능 |
|---|---|---|
| 1 | BGND-L | 좌 브레이크 전원- |
| 2 | -BR-L | 좌 브레이크- |
| 3 | BDC-L | 좌 브레이크 전원+/브레이크+ |
| 4 | BGND-R | 우 브레이크 전원- |
| 5 | -BR-R | 우 브레이크- |
| 6 | BDC-R | 우 브레이크 전원+/브레이크+ |
| 7 | OUTPUT1 | 내부 풀업 5V 출력 (CAN/RS485로 기능 설정 가능) |
| 8 | OUTPUT2 | 내부 풀업 5V 출력 (CAN/RS485로 기능 설정 가능) |
전자식 브레이크는 레지스터 0x201A(B0, 좌)/0x201B(B1, 우)로 제어한다
(0=해제, 1=잠금). 코드의 MotorDriver::setBrakes()가 이 두 레지스터에 동시에 쓴다.
J4 — 모터 제어 신호 포트 (8핀)
| Pin | 표기 | 기능 |
|---|---|---|
| 1 | AOUT-R | 우모터 엔코더 A 출력 |
| 2 | BOUT-R | 우모터 엔코더 B 출력 |
| 3 | AOUT-L | 좌모터 엔코더 A 출력 |
| 4 | BOUT-L | 좌모터 엔코더 B 출력 |
| 5 | +5V | 엔코더 5V 출력 (<100mA) |
| 6 | GND | 엔코더 GND |
| 7 | INPUT1 | 프로그래머블 입력 (기본 비상정지 등으로 설정 가능) |
| 8 | INPUT2 | 프로그래머블 입력 |
INPUT1/INPUT2 펄스폭은 10ms 이상 유지해야 드라이버가 정상 인식한다. 입력 레벨은 기본 5V이며 12V 사용 시 1kΩ/0.5W, 24V 사용 시 2kΩ/0.5W 전류제한 저항을 외부에 추가해야 한다.
J5 — 통신 포트 (5핀)
| Pin | 표기 | 기능 |
|---|---|---|
| 1 | CANH | CAN |
| 2 | CANL | CAN |
| 3 | SGND | 통신 GND |
| 4 | A | RS485 A |
| 5 | B | RS485 B |
본 프로젝트는 이 중 SGND/A/B 3선을 사용해 RS485 Modbus RTU 통신을 한다. 통신선은 차폐 트위스트페어 사용 및 접지 연결을 매뉴얼이 권장한다.
eRS-R/eRS-L — 절대값 엔코더 인터페이스 (4핀, 미사용)
RS485 방식 외장 절대값 엔코더용 인터페이스. 본 로봇은 인크리멘탈 엔코더 기반 속도제어만 사용하므로 미배선.
SW — DIP 스위치 (2핀)
| SW | 기능 |
|---|---|
| SW1 | CAN 종단저항 선택 |
| SW2 | RS485 종단저항 선택 |
데이지체인 마지막 드라이버에서만 종단저항을 ON 하는 것이 일반적인 RS485 배선 원칙이다.
RES — 회생 저항 입력 (2핀)
| Pin | 표기 | 기능 |
|---|---|---|
| 1 | R- | 브레이크 저항 |
| 2 | R+ | 브레이크 저항 |
100RPM 이상 속도 또는 급정지/비상정지 기능을 사용할 경우, 급감속 시 발생하는 역기전력으로부터 드라이버를 보호하기 위해 외부 회생 저항(권장 5~10Ω/100W) 연결을 권장한다. 본 로봇은 최고속도 0.4m/s(둘레 반경 131.5mm 기준 약 29RPM)로 저속 운용이라 리스크는 낮지만, 급제동(decel 150ms) 프로파일을 쓰므로 실외 장시간 운용 시 회생 저항 장착을 검토할 가치가 있다.
1.6 상태 LED
- 녹색 LED: 전원 표시. 전원 인가 시 항상 점등.
- 적색 LED: 알람 표시. 알람 발생 시 코드 횟수만큼 점멸 후 일시정지, 반복.
| 상태 | 점멸 횟수 | 원인 |
|---|---|---|
| Over-Voltage | 1 | 공급 전압이 최대 정격 초과 |
| Under-Voltage | 2 | 공급 전압이 최소 동작 전압 미만 |
| Over-Current | 3 | 상간 단락 등으로 모터 상전류 초과 |
| Over-Load | 4 | 상전류가 설정 과부하 전류 초과 |
| Current out-of-tolerance | 5 | (예약) |
| Position out-of-tolerance | 6 | 목표 위치와 출력 위치 오차 초과 |
| Speed out-of-tolerance | 7 | 목표 속도와 출력 속도 오차 초과 |
| Internal reference error | 8 | 드라이버 내부 오류 |
| Parameter reading error | 9 | EEPROM 파라미터 읽기 오류 |
| Hall fault | 10 | 홀 케이블 미접속 또는 신호 오류 |
| High motor temperature | 11 | 모터 과열 |
| Encoder error | 12 | 엔코더 케이블 헐거움/핀 순서 오류 |
| Driver overtemperature | 13 | 드라이버 과열 |
| Speed setting error | 14 | 지령 속도가 정격 속도 초과 |
| Mixed error | 15 | 2개 이상 알람 동시 발생 |
RS485로는 이 상태를 레지스터 0x20A5(좌)/0x20A6(우)에서 비트마스크로 읽을 수 있으며,
xbox_motor_control.cpp의 decodeDriverError()가 이를 한글 문자열로 변환한다. 상세는
05-error-troubleshooting.md 참고.
1.7 배선 요약도 (본 프로젝트 기준)
┌─────────────────────────┐
배터리 24-48V ─┤ DC/GND (좌 또는 우 or 양쪽) │
│ │
좌측 허브모터 ─┤ U/V/W (좌) │ 드라이버 #1 (Station ID 1)
│ │ → 전방 좌/우 모터 구동
우측 허브모터 ─┤ U/V/W (우) │
│ │
좌 엔코더/홀 ─┤ J2 │
우 엔코더/홀 ─┤ J6 │
│ │
RS485 A/B/GND ┤ J5 ── (데이지체인) ──────┼──→ 드라이버 #2 (Station ID 2)
│ │ → 후방 좌/우 모터 구동
좌/우 브레이크 ─┤ J3 │
└─────────────────────────┘
│
/dev/ttyUSB0 (RS485-USB 컨버터)
│
제어 PC (xbox_motor_control_cpp)