Files
fori_zltech_motor_test/doc/01-hardware-spec.md
T
Dongubak 2f21d86193 Add ZLAC8015D driver docs, IMU integration plan, and reference resources
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>
2026-08-16 00:17:24 +09:00

208 lines
8.7 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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](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](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)
```