Imported from GitHub: takarakasai/misa-usb-rs485-hub · commit 2721f1a
Description
4ch isolated USB-to-RS-485 hub board for humanoid robot motor control. FT4232HL + 2× ADM2582E + 2× CA-IS3098W, 5kV isolation, 920kbps-12Mbps, KiCad 10 / JLCPCB manufactured / verified working.
README
namiashi (並足)
4-channel isolated USB-to-RS-485 hub board for humanoid robot motor control
ヒューマノイドロボット制御用の絶縁 RS-485 USB ハブ基板です。 USB Type-C から 4 系統の絶縁 RS-485 を生成し、12 軸サーボモータの安定制御を実現します。
主な特徴
- FT4232HL USB to 4× UART ブリッジ (LQFP-64)
- 2× ADM2582E 絶縁 RS-485 (Ch A, B): 2.5kV / 16Mbps / Visoout 5V
- 2× CA-IS3098W 絶縁 RS-485 (Ch C, D): 5kV / 20Mbps / Visoout 3.3V
- AT93C46DN EEPROM (FT4232HL VID/PID 保存用)
- AZ1117-3.3 LDO (USB 5V → 3.3V)
- 4 層 PCB (1.6mm 厚, JLC04161H スタックアップ)
- 絶縁スリット 全層貫通による完全電気分離
仕様
| 項目 | 値 |
|---|---|
| 入力 | USB Type-C (5V, USB 2.0 HS 480Mbps) |
| 出力 | 4× RS-485 (絶縁, GH 2pin コネクタ) |
| 信号速度 | 921,600 bps 〜 1 Mbps 確認済 |
| 絶縁耐圧 | 2.5kV (ADM2582E) / 5kV (CA-IS3098W) |
| 基板サイズ | 60 × 74 mm 4 層 |
| 終端抵抗 | 120Ω × 4 (各 ch、必要に応じて除去可) |
用途
- Robstride EduLite 05 等の RS-485 アクチュエータ駆動
- 5kg クラス、12 軸ヒューマノイドロボットの全身制御
- 500Hz〜1kHz の高速制御ループ対応
- モータノイズからホスト PC を電気的に保護
ハードウェア構成
[USB Type-C 5V] ─┬─ AZ1117 (3.3V LDO) ─┬─ FT4232HL VCCIO
│ └─ 各 RS-485 chip VCC (一次側)
│
└─ 各 RS-485 chip 内部 DC-DC ──→ Viso (3.3V or 5V, 二次側)
[FT4232HL] ─┬─ Ch A ─→ ADM2582E (U1) ─→ J7 (GH 2pin, A/B)
├─ Ch B ─→ ADM2582E (U6) ─→ J8 (GH 2pin)
├─ Ch C ─→ CA-IS3098W (U8) ─→ J9 (GH 2pin)
└─ Ch D ─→ CA-IS3098W (U3) ─→ J10 (GH 2pin)
部品選定の経緯
設計の過程で以下の改善を実施 (詳細は spec_rev0_1_0.md):
- 初期: FT4232HQ (QFN-64) + 4× ADM2582E
- 改善 1: FT4232HQ → FT4232HL (LQFP-64, 手はんだ容易、約 1/3 のコスト)
- 改善 2: ADM2582E ×2 を CA-IS3098W ×2 に置換 (Ch C, D、5kV 絶縁、コスト 1/2)
- ハイブリッド構成で両チップの動作比較が可能
ソフトウェア
Linux で /dev/ttyUSB0〜/dev/ttyUSB3 として認識。
Windows でも FTDI VCP ドライバで COM ポートとして認識。
Python サンプル (pyserial.rs485)
import serial.rs485
# RTS 制御を kernel に委譲 (アプリは write/read のみ)
ch = serial.rs485.RS485('/dev/ttyUSB0', baudrate=115200)
ch.rs485_mode = serial.rs485.RS485Settings(
rts_level_for_tx=False, # namiashi: rts=False で TX
rts_level_for_rx=True, # rts=True で RX
)
ch.write(b'Hello RS-485!')
data = ch.read(100)
Rust サンプル (TIOCSRS485 ioctl)
use serialport::SerialPort;
use std::os::unix::io::AsRawFd;
let port = serialport::new("/dev/ttyUSB0", 115200).open()?;
// TIOCSRS485 で kernel に RTS 自動制御を委譲 (詳細は spec 参照)
動作確認状況
- ✅ FT4232HL Linux/Windows で 4ch UART 認識
- ✅ Ch A-B (ADM2582E) 双方向通信成功
- ✅ Ch C-D (CA-IS3098W) 双方向通信成功
- ✅ 4 ノード同一バス構成も動作 (要 R8, R9 終端抵抗除去 + 全 ch RX モード固定)
- ⚠️ TX/RX 活動 LED は 74HC595 が EEPROM バス共有のため非機能 (rev2 で改善予定)
ドキュメント
- spec_rev0_1_0.md — 詳細仕様書 (網羅的)
- MIGRATION_ADM2582E_to_CA-IS3098W.md — チップ置換手順
- production/ — JLCPCB 用 BOM / CPL / Gerber / rotation 補正 CSV
- spec_assets/ — 回路図 PDF, PCB レンダリング画像, 3D ビュー
製造
- PCB: JLCPCB (4 層, ENIG, 1.6mm)
- PCBA: JLCPCB Standard Assembly
- rotation 補正済 CPL: production/positions_jlcpcb.csv
- 回転データベース: production/rotations.csv (Fabrication Toolkit 互換)
関連プロジェクト
- hayaashi — Raspberry Pi CM4 ロボットキャリアボード (本プロジェクトの上位機、CM4 統合)
ライセンス
TBD (公開時に決定)
連絡先
- Author: takara-kasai
- Email: [email protected]