SCS0009 伺服馬達調校與標定
SCS0009 版本有兩套調校內容:
- TTL 組裝與中位調校:接線、設定伺服馬達 ID、固定伺服喇叭、微調中位、執行測試。
- SCS0009 調校工具:Python + PySide6 GUI,掃描匯流排、讀寫全部暫存器、位置控制、鮑率/恢復出廠、xdat EEPROM 備份。
協定暫存器細節見 SCS0009 協定記憶體表。
Arduino/擴充接線見 Arduino Nano。
一、TTL 調校:組裝、ID 與中位
首先,下載「靈巧手調校.zip」壓縮包,解壓後可透過「使用 arduio 程式調校靈巧手過程(TTL 伺服馬達)」文件進行伺服馬達 ID 設定、標定、校準中位及演示程式執行,或 參考官方開源程式碼。
成品無拆卸情況下(出廠時伺服馬達 ID、標定和中位已調好)可以直接跳到第 6 點 執行「02 演示程式」和手部追蹤。

1. 調校靈巧手的接線方式
一種是使用電腦執行 python 等上位機軟體,如飛特伺服馬達上位機或者 python 程式碼執行
一種是使用 MEGA328P 等單晶片或自行購買的開發板或主控等
接線方式如下:
(1)python 方式調校時的接線方式(只接伺服馬達驅動板):

(2)MEGA328P 開發板調校時的接線方式(伺服馬達驅動板+328P 開發板):
看清楚 MEGA328P 開發板的針腳位置!




下面描述的是使用單晶片的調校過程,單晶片本身會不斷循環演示程式,只需斷開資料線即可停止。
2. 設定伺服馬達 ID
單個靈巧手共使用了 8 個伺服馬達,右手 ID 需要設定為 1-8,左手 ID 需要設定為 11-18
中位校準 成品預設 右手[451,571,451,571,451,571,451,571] 左手[571,451,571,451,571,451,571,451]
1、連線:依次將 單個 伺服馬達、伺服馬達驅動板連接起來。

2、使用伺服馬達廠商提供的上位機軟體 FD1.9.8.2 進行設定
FD.rar



3. 固定伺服喇叭
1、上傳程式碼程式「安裝白色伺服喇叭時使用」 到開發板中
該程式的作用:使伺服馬達的齒輪位置處於一個大致居中的位置,後續的動作角度都是基於這個中間的位置進行的。
(1)自行安裝軟體 arduino,根據自身系統參考安裝教學,編譯下載 arduino 程式的話,要先在 函式庫管理器 裡安裝 FTServo 函式庫、SCServo 函式庫

(2)開發板類型選:選擇「Arduino Nano」

2、調校伺服馬達 1、2
(1)編輯:根據要調校的伺服馬達 ID,修改如下位置。如要調校食指,則設定 ID 值為 1、2

(2)上傳程式到開發板中
(3)連線:將開發板與伺服馬達驅動板、1、2 號伺服馬達連接起來,可以聽到伺服馬達齒輪旋轉一定角度後停止。

(4)將伺服喇叭安裝在齒輪上,位置盡量保持平行

3、調校伺服馬達 3、4
(1)斷開 328P 開發板與伺服馬達驅動板之間的接線(否則無法上傳)
(2)編輯:設定 ID 值為 3、4

(3)上傳程式到開發板中
(4)連線:將開發板與伺服馬達驅動板、3、4 號伺服馬達連接起來,可以聽到伺服馬達齒輪旋轉一定角度後停止。
(5)將伺服喇叭安裝在齒輪上,位置盡量保持平行
4、調校伺服馬達 5、6
步驟同上
5、調校伺服馬達 7、8
步驟同上
4. 微調中間值
1、上傳程式碼程式「01 微調 MiddlePos 值時使用」 到 開發板中
2、手指處於閉合位置時,立即停止程式(斷開資料線即可),並檢查伺服喇叭是否正確對齊(如下圖)。如果未對齊,調整程式中 MiddlePos_1、MiddlePos_2 的值,直到對齊為止。記錄下該值(8 個伺服馬達對應 8 個值),最後的程式中要使用。


5. 執行測試程式
1、將上面保存的 MiddlePos_1、MiddlePos_2 的值填入下面陣列中,下載程式即可。

6. 執行「02 演示程式」
(1)自行安裝軟體 arduino,根據自身系統參考安裝教學
(2)在 靈巧手調校\00 TTL串口舵机\arduino程序(MEGA328P开发板)\02 演示程序目錄下根據 左手還是右手 開啟對應的 ino 檔案

(3)編譯上傳 arduino 程式的話,要先在 函式庫管理器 裡安裝 FTServo 函式庫、SCServo 函式庫

(4)開發板類型選:選擇「Arduino Nano」

(5)編譯並上傳
注意 此時電腦只單獨連接到開發板,開發板先不連接到伺服馬達驅動板(即不和靈巧手連接)
上傳成功後,將開發板透過三根跳線連接到伺服馬達驅動板上,伺服馬達連接到伺服馬達驅動板,參考 MEGA328P 開發板調校時的接線方式。
靈巧手會不斷循環執行**「02 演示程式」**
執行結果如下:

二、SCS0009 調校工具
適用於 Windows 10 / 11;Linux 與 macOS 的差異見第 8 節。本教學涵蓋從環境安裝到完整調校的每一步。
⚠️ 相容性說明:本工具目前僅支援 Feetech SCS0009 伺服馬達(SCS 系列,電位器位置回饋,10 位元解析度 0–1023)。暫存器表、xdat 參數格式均針對飛特 SCS0009 設計,其他品牌/型號不保證相容。
1. 環境需求
| 相依套件 | 版本 | 說明 |
|---|---|---|
| Python | >= 3.8 | 建議 3.10+,從 python.org 下載 |
| PySide6 | >= 6.0 | GUI 框架 |
| pyserial | >= 3.5 | 序列埠通訊 |
| 系統 | Win10 / Win11 | 任意版本 |
2. 安裝 Python
- 存取 https://www.python.org/downloads/
- 下載 Python 3.10+ 安裝程式
- 安裝時務必勾選 "Add Python to PATH"(否則命令列找不到 python)
驗證安裝:
python --version3. 安裝相依套件
建議在虛擬環境中安裝,避免污染系統 Python:
# 進入專案目錄
cd SCS0009_ServoController
# 建立虛擬環境
python -m venv .venv
# 啟用虛擬環境(Windows)
.venv\Scripts\activate
# 安裝相依套件
pip install -r requirements.txt⚠️ 虛擬環境只需建立一次。重複執行會覆蓋原環境(清空已裝相依套件)。之後每次只需
activate啟用即可。
提示:啟用後命令列前綴會出現
(.venv)。
4. 檢查環境
python setup.py看到 [OK] 环境检查通过,可以运行项目 即表示環境正確。
5. 連接硬體
- 將 USB 轉序列埠適配器(如 CH340 / CP2102)插入電腦
- 連接伺服馬達控制器(機械臂控制板)
- 給伺服馬達供電(建議 DC 5V 5A,Pro 版 DC 12V 5A)
開啟裝置管理員(Win+X → 裝置管理員)確認序列埠號:
端口 (COM 和 LPT)
└─ USB-SERIAL CH340 (COM3) ← 你的舵机串口記下 COM 號,啟動程式時選擇。
6. 啟動 GUI
python -m src.gui.factory_calibration_tool或手動指定埠(序列埠被佔用時):
python -m src.gui.factory_calibration_tool --port COM3查看可用埠:
python -m src.gui.factory_calibration_tool --list-ports7. 介面操作流程
介面為單面板佈局,視窗高度不足時自動出現捲軸,最大化時自適應拉伸。
7.1 序列埠連線
- 選擇埠、鮑率(預設 1M),點擊 連線
- 狀態顯示
🟢 已連線
7.2 掃描伺服馬達
- 點擊 掃描伺服馬達,偵測 ID 1-254 線上伺服馬達
- 掃描結果即時顯示在伺服馬達列表(帶型號)
- 點擊伺服馬達列表某行 → 自動填入伺服馬達下拉框
7.3 參數讀寫
- 讀取參數:讀取全部 44 個暫存器(EEPROM + SRAM),日誌即時顯示結果
- 參數表:5 欄展示(位址/暫存器/值/儲存區域/讀寫),EPROM/SRAM/DEFAULT 顏色區分
- 點選連動:點擊參數表某行 → 自動填入「寫入位址」「長度」「值」
- 寫入:修改值後點寫入,程式自動解鎖/寫入/鎖定
- 寫入結果彈窗:成功彈綠色提示「✅ 已成功寫入」,失敗彈紅色提示「❌ 寫入失敗」(含原因)
7.4 修改伺服馬達 ID
- 匯流排上只接這一隻待改 ID 的伺服馬達,避免與已有 ID 衝突。
- 在參數表中找到「伺服馬達 ID」(位址
0x05)行並選取。 - 把「值」改為目標 ID,點 ✏️ 寫入;程式會自動解鎖 → 寫入 → 重新鎖定。
- 改完重新掃描匯流排確認。右手用 1–8,左手用 11–18。
7.5 位置控制
- 拖動滑桿或直接輸入目標位置(0–1023),數值框與滑桿同步。
- 點 ▶ 移動,狀態列顯示「移動中…」。
- 到位後提示「已移動完成,請關閉力矩」,點 ⏹ 力矩關。
7.6 鮑率/恢復出廠
- 修改鮑率:選擇新鮑率(38400–1000000 bps)後寫入;程式會切換序列埠鮑率並 ping 驗證,失敗自動回滾。
- 恢復出廠:恢復為出廠預設(ID=1,鮑率 1M),之後需重新掃描。
7.7 xdat 參數(僅儲存 EEPROM)
💾 儲存目前伺服馬達:儲存目前 ID 伺服馬達的 EEPROM 參數到 xdat 檔案(備份)📂 開啟 xdat:載入備份檔案📤 恢復參數到伺服馬達:把備份寫回伺服馬達
8. Linux 與 macOS 差異
Linux
- 字型:
sudo apt install fonts-noto-cjk fonts-noto-color-emoji,否則中文介面可能空白、emoji 顯示為方塊。 - 序列埠權限:
sudo usermod -a -G dialout $USER,登出並重新登入後生效;groups應包含dialout。臨時可用sudo chmod 666 /dev/ttyUSB0。 - 裝置名稱:
/dev/ttyUSB*(CH340 / CP2102 / PL2303)或/dev/ttyACM*(板載 USB 序列埠);用lsusb、dmesg | grep -i tty查製造商。 - 固定裝置名稱(可選):在
/etc/udev/rules.d/99-servo.rules寫SUBSYSTEM=="tty", ATTRS{idVendor}=="1a86", ATTRS{idProduct}=="7523", SYMLINK+="ttyServo",之後用/dev/ttyServo。 - 啟動:
python -m src.gui.factory_calibration_tool --port /dev/ttyUSB0。 - 常見問題:
pip報 externally-managed-environment 時用 venv,或加--break-system-packages。
macOS
- Python:建議用 Homebrew 安裝
brew install python,不要用系統自帶舊版本。 - 序列埠命名:使用
/dev/cu.*,不要用/dev/tty.*(後者可能阻塞);ls /dev/cu.*查看。 - USB 驅動:CH340 / CP2102 / FTDI 多數免驅;老批次 CH340 需裝 WCH 驅動,可用
system_profiler SPUSBDataType排查。 - 啟動:
python -m src.gui.factory_calibration_tool --port /dev/cu.usbserial-0001。 - Apple Silicon:用原生 Python 3.10+,避免 Rosetta 下的舊 Python;首次執行若提示「無法驗證開發者」,到「隱私與安全性」中允許。
- 省電:macOS 休眠可能中斷序列埠,操作時保持喚醒。
9. 注意事項
- 寫入會持久化:參數寫入 EEPROM 後原值被覆蓋,無法復原;修改前先用 xdat 備份。
- 供電穩定:供電不足會導致丟步、通訊失敗或伺服馬達失聯;按 SCS0009 接線與供電 的要求供電。
- 序列埠獨佔:同一埠不能被兩個程式同時開啟;使用前關閉序列埠監視器、上位機等其他佔用程式。
- ID 修改風險:匯流排上只接一隻待改 ID 的伺服馬達;若改後失聯,可嘗試「恢復出廠設定」(ID 回到 1)。
- 過溫/過壓:工具會監控電壓和溫度(溫度 > 60 °C 告警);持續高溫時停機散熱。
- 熱插拔:拔掉 USB 後程式會嘗試重連;重新插回後點重新整理埠。
- Windows 主控台亂碼:命令列工具出現 emoji 亂碼時,設定
PYTHONIOENCODING=utf-8後再執行。
10. 常見問題
| 問題 | 解決 |
|---|---|
| 找不到序列埠 | 裝置管理員檢查驅動;換 USB 埠;裝 CH340 驅動 |
| 序列埠被佔用 | 關閉序列埠監視器等程式;重新啟動工具 |
| 中文字型顯示空白 | 系統預設微軟雅黑,若異常安裝中文字型 |
| 伺服馬達掃描不到 | 檢查供電/接線;確認鮑率 1M |
| 寫入失敗 | 檢查伺服馬達供電與連接;確認目標暫存器可寫 |
| PermissionError 開啟序列埠失敗 | 確保沒有其他程序佔用該 COM 埠 |
Linux:Permission denied: /dev/ttyUSB0 | 未加入 dialout 群組;見上文 Linux 小節 |
macOS:序列埠名稱帶 tty. 時卡住 | 改用對應的 /dev/cu.* 裝置 |
11. 命令列(可選)
# 列出可用序列埠
python -m src.gui.factory_calibration_tool --list-ports
# 指定埠啟動
python -m src.gui.factory_calibration_tool --port COM3
