🧪 新教程持續更新中 · 由機械臂到傳感器,跟隨教程從零搭建
跳到主要內容

SCS0009 伺服馬達調校與標定 ​

SCS0009 版本有兩套調校內容:

  1. TTL 組裝與中位調校:接線、設定伺服馬達 ID、固定伺服喇叭、微調中位、執行測試。
  2. SCS0009 調校工具:Python + PySide6 GUI,掃描匯流排、讀寫全部暫存器、位置控制、鮑率/恢復出廠、xdat EEPROM 備份。

協定暫存器細節見 SCS0009 協定記憶體表。
Arduino/擴充接線見 Arduino Nano。

一、TTL 調校:組裝、ID 與中位 ​

首先,下載「靈巧手調校.zip」壓縮包,解壓後可透過「使用 arduio 程式調校靈巧手過程(TTL 伺服馬達)」文件進行伺服馬達 ID 設定、標定、校準中位及演示程式執行,或 參考官方開源程式碼。

成品無拆卸情況下(出廠時伺服馬達 ID、標定和中位已調好)可以直接跳到第 6 點 執行「02 演示程式」和手部追蹤。

TTL 調校所需工具與接線

1. 調校靈巧手的接線方式 ​

一種是使用電腦執行 python 等上位機軟體,如飛特伺服馬達上位機或者 python 程式碼執行

一種是使用 MEGA328P 等單晶片或自行購買的開發板或主控等

接線方式如下:

(1)python 方式調校時的接線方式(只接伺服馬達驅動板):

1. 調校靈巧手的接線方式 – 1

(2)MEGA328P 開發板調校時的接線方式(伺服馬達驅動板+328P 開發板):

看清楚 MEGA328P 開發板的針腳位置!

1. 調校靈巧手的接線方式 – 2

1. 調校靈巧手的接線方式 – 3

1. 調校靈巧手的接線方式 – 4

1. 調校靈巧手的接線方式 – 5

下面描述的是使用單晶片的調校過程,單晶片本身會不斷循環演示程式,只需斷開資料線即可停止。

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.設定伺服馬達ID – 1

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

FD.rar

2.設定伺服馬達ID – 2

2.設定伺服馬達ID – 3

2.設定伺服馬達ID – 4

3. 固定伺服喇叭 ​

1、上傳程式碼程式「安裝白色伺服喇叭時使用」 到開發板中

該程式的作用:使伺服馬達的齒輪位置處於一個大致居中的位置,後續的動作角度都是基於這個中間的位置進行的。

(1)自行安裝軟體 arduino,根據自身系統參考安裝教學,編譯下載 arduino 程式的話,要先在 函式庫管理器 裡安裝 FTServo 函式庫、SCServo 函式庫

3.固定伺服喇叭 – 1

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

3.固定伺服喇叭 – 2

2、調校伺服馬達 1、2

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

3.固定伺服喇叭 – 3

(2)上傳程式到開發板中

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

3.固定伺服喇叭 – 4

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

3.固定伺服喇叭 – 5

3、調校伺服馬達 3、4

(1)斷開 328P 開發板與伺服馬達驅動板之間的接線(否則無法上傳)

(2)編輯:設定 ID 值為 3、4

3.固定伺服喇叭 – 6

(3)上傳程式到開發板中

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

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

4、調校伺服馬達 5、6

步驟同上

5、調校伺服馬達 7、8

步驟同上

4. 微調中間值 ​

1、上傳程式碼程式「01 微調 MiddlePos 值時使用」 到 開發板中

2、手指處於閉合位置時,立即停止程式(斷開資料線即可),並檢查伺服喇叭是否正確對齊(如下圖)。如果未對齊,調整程式中 MiddlePos_1、MiddlePos_2 的值,直到對齊為止。記錄下該值(8 個伺服馬達對應 8 個值),最後的程式中要使用。

4.微調中間值 – 1

4.微調中間值 – 2

5. 執行測試程式 ​

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

5.執行測試程式 – 1

6. 執行「02 演示程式」 ​

(1)自行安裝軟體 arduino,根據自身系統參考安裝教學

(2)在 靈巧手調校\00 TTL串口舵机\arduino程序(MEGA328P开发板)\02 演示程序目錄下根據 左手還是右手 開啟對應的 ino 檔案

6.執行"02 演示程序" – 1

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

6.執行"02 演示程序" – 2

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

6.執行"02 演示程序" – 3

(5)編譯並上傳

注意 此時電腦只單獨連接到開發板,開發板先不連接到伺服馬達驅動板(即不和靈巧手連接)

上傳成功後,將開發板透過三根跳線連接到伺服馬達驅動板上,伺服馬達連接到伺服馬達驅動板,參考 MEGA328P 開發板調校時的接線方式。

靈巧手會不斷循環執行**「02 演示程式」**

執行結果如下:

6.執行"02 演示程序" – 4


二、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.0GUI 框架
pyserial>= 3.5序列埠通訊
系統Win10 / Win11任意版本

2. 安裝 Python ​

  1. 存取 https://www.python.org/downloads/
  2. 下載 Python 3.10+ 安裝程式
  3. 安裝時務必勾選 "Add Python to PATH"(否則命令列找不到 python)

驗證安裝:

bash
python --version

3. 安裝相依套件 ​

建議在虛擬環境中安裝,避免污染系統 Python:

bash
# 進入專案目錄
cd SCS0009_ServoController

# 建立虛擬環境
python -m venv .venv

# 啟用虛擬環境(Windows)
.venv\Scripts\activate

# 安裝相依套件
pip install -r requirements.txt

⚠️ 虛擬環境只需建立一次。重複執行會覆蓋原環境(清空已裝相依套件)。之後每次只需 activate 啟用即可。

提示:啟用後命令列前綴會出現 (.venv)。

4. 檢查環境 ​

bash
python setup.py

看到 [OK] 环境检查通过,可以运行项目 即表示環境正確。

5. 連接硬體 ​

  1. 將 USB 轉序列埠適配器(如 CH340 / CP2102)插入電腦
  2. 連接伺服馬達控制器(機械臂控制板)
  3. 給伺服馬達供電(建議 DC 5V 5A,Pro 版 DC 12V 5A)

開啟裝置管理員(Win+X → 裝置管理員)確認序列埠號:

端口 (COM 和 LPT)
  └─ USB-SERIAL CH340 (COM3)     ← 你的舵机串口

記下 COM 號,啟動程式時選擇。

6. 啟動 GUI ​

bash
python -m src.gui.factory_calibration_tool

或手動指定埠(序列埠被佔用時):

bash
python -m src.gui.factory_calibration_tool --port COM3

查看可用埠:

bash
python -m src.gui.factory_calibration_tool --list-ports

7. 介面操作流程 ​

介面為單面板佈局,視窗高度不足時自動出現捲軸,最大化時自適應拉伸。

7.1 序列埠連線 ​

  • 選擇埠、鮑率(預設 1M),點擊 連線
  • 狀態顯示 🟢 已連線

7.2 掃描伺服馬達 ​

  • 點擊 掃描伺服馬達,偵測 ID 1-254 線上伺服馬達
  • 掃描結果即時顯示在伺服馬達列表(帶型號)
  • 點擊伺服馬達列表某行 → 自動填入伺服馬達下拉框

7.3 參數讀寫 ​

  • 讀取參數:讀取全部 44 個暫存器(EEPROM + SRAM),日誌即時顯示結果
  • 參數表:5 欄展示(位址/暫存器/值/儲存區域/讀寫),EPROM/SRAM/DEFAULT 顏色區分
  • 點選連動:點擊參數表某行 → 自動填入「寫入位址」「長度」「值」
  • 寫入:修改值後點寫入,程式自動解鎖/寫入/鎖定
  • 寫入結果彈窗:成功彈綠色提示「✅ 已成功寫入」,失敗彈紅色提示「❌ 寫入失敗」(含原因)

7.4 修改伺服馬達 ID ​

  1. 匯流排上只接這一隻待改 ID 的伺服馬達,避免與已有 ID 衝突。
  2. 在參數表中找到「伺服馬達 ID」(位址 0x05)行並選取。
  3. 把「值」改為目標 ID,點 ✏️ 寫入;程式會自動解鎖 → 寫入 → 重新鎖定。
  4. 改完重新掃描匯流排確認。右手用 1–8,左手用 11–18。

7.5 位置控制 ​

  1. 拖動滑桿或直接輸入目標位置(0–1023),數值框與滑桿同步。
  2. 點 ▶ 移動,狀態列顯示「移動中…」。
  3. 到位後提示「已移動完成,請關閉力矩」,點 ⏹ 力矩關。

7.6 鮑率/恢復出廠 ​

  • 修改鮑率:選擇新鮑率(38400–1000000 bps)後寫入;程式會切換序列埠鮑率並 ping 驗證,失敗自動回滾。
  • 恢復出廠:恢復為出廠預設(ID=1,鮑率 1M),之後需重新掃描。

7.7 xdat 參數(僅儲存 EEPROM) ​

  1. 💾 儲存目前伺服馬達:儲存目前 ID 伺服馬達的 EEPROM 參數到 xdat 檔案(備份)
  2. 📂 開啟 xdat:載入備份檔案
  3. 📤 恢復參數到伺服馬達:把備份寫回伺服馬達

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. 注意事項 ​

  1. 寫入會持久化:參數寫入 EEPROM 後原值被覆蓋,無法復原;修改前先用 xdat 備份。
  2. 供電穩定:供電不足會導致丟步、通訊失敗或伺服馬達失聯;按 SCS0009 接線與供電 的要求供電。
  3. 序列埠獨佔:同一埠不能被兩個程式同時開啟;使用前關閉序列埠監視器、上位機等其他佔用程式。
  4. ID 修改風險:匯流排上只接一隻待改 ID 的伺服馬達;若改後失聯,可嘗試「恢復出廠設定」(ID 回到 1)。
  5. 過溫/過壓:工具會監控電壓和溫度(溫度 > 60 °C 告警);持續高溫時停機散熱。
  6. 熱插拔:拔掉 USB 後程式會嘗試重連;重新插回後點重新整理埠。
  7. Windows 主控台亂碼:命令列工具出現 emoji 亂碼時,設定 PYTHONIOENCODING=utf-8 後再執行。

10. 常見問題 ​

問題解決
找不到序列埠裝置管理員檢查驅動;換 USB 埠;裝 CH340 驅動
序列埠被佔用關閉序列埠監視器等程式;重新啟動工具
中文字型顯示空白系統預設微軟雅黑,若異常安裝中文字型
伺服馬達掃描不到檢查供電/接線;確認鮑率 1M
寫入失敗檢查伺服馬達供電與連接;確認目標暫存器可寫
PermissionError 開啟序列埠失敗確保沒有其他程序佔用該 COM 埠
Linux:Permission denied: /dev/ttyUSB0未加入 dialout 群組;見上文 Linux 小節
macOS:序列埠名稱帶 tty. 時卡住改用對應的 /dev/cu.* 裝置

11. 命令列(可選) ​

bash
# 列出可用序列埠
python -m src.gui.factory_calibration_tool --list-ports

# 指定埠啟動
python -m src.gui.factory_calibration_tool --port COM3

相關頁面 ​