🧪 Neue Tutorials in Arbeit — vom Roboterarm bis zum Sensor
Zum Inhalt springen

SCS0009-Servo-Debugging und Kalibrierung ​

Die SCS0009-Version hat zwei Debugging-Bereiche:

  1. TTL-Montage und Mittelstellungs-Debugging: Verkabelung, Servo-ID setzen, Servohorn befestigen, Mittelstellung feinjustieren, Testprogramm ausführen.
  2. SCS0009-Debugging-Werkzeug: Python + PySide6 GUI, Bus scannen, alle Register lesen/schreiben, Positionssteuerung, Baudrate/Werkseinstellungen, xdat-EEPROM-Backup.

Details zu den Protokollregistern siehe SCS0009-Protokollspeichertabelle.
Arduino/Erweiterungsverkabelung siehe Arduino Nano.

1. TTL-Debugging: Montage, ID und Mittelstellung ​

Lade zuerst das Archiv "灵巧手调试.zip" herunter; nach dem Entpacken kannst du anhand des Dokuments „使用arduio程序调试灵巧手过程(TTL舵机)" Servo-IDs setzen, kalibrieren, die Mittelstellung justieren und das Demo-Programm ausführen, oder die offiziellen Open-Source-Codes verwenden.

Bei unmontiertem Fertigprodukt (Servo-IDs, Kalibrierung und Mittelstellung sind ab Werk eingestellt) kannst du direkt zu Punkt 6: „02-Demoprogramm" ausführen und zum Handtracking springen.

Werkzeuge und Verkabelung für das TTL-Debugging

1. Verkabelungsart beim Debugging der Dexterhand ​

Eine Möglichkeit ist, am PC Python und andere PC-Software zu verwenden, z. B. die Feetech-Servo-PC-Software oder Python-Code.

Eine andere ist, einen Mikrocontroller wie MEGA328P oder ein selbst gekauftes Entwicklungsboard bzw. eine Steuerung zu verwenden.

Die Verkabelung ist wie folgt:

(1) Verkabelung beim Debugging per Python (nur Servo-Treiberplatine anschließen):

1. Verkabelung beim Debuggen der Dexterhand – 1

(2) Verkabelung beim Debugging mit dem MEGA328P-Entwicklungsboard (Servo-Treiberplatine + 328P-Board):

Auf die Pinpositionen des MEGA328P-Entwicklungsboards achten!

1. Verkabelung beim Debuggen der Dexterhand – 2

1. Verkabelung beim Debuggen der Dexterhand – 3

1. Verkabelung beim Debuggen der Dexterhand – 4

1. Verkabelung beim Debuggen der Dexterhand – 5

Im Folgenden wird der Debugging-Ablauf mit dem Mikrocontroller beschrieben; der Mikrocontroller führt das Demo-Programm fortlaufend in einer Schleife aus, zum Stoppen einfach das Datenkabel abziehen.

2. Servo-IDs setzen ​

Eine einzelne Dexterhand verwendet insgesamt 8 Servos; die IDs der rechten Hand müssen auf 1-8, die der linken Hand auf 11-18 gesetzt werden.

Mittelstellungskalibrierung, Werksstandard: rechte Hand [451,571,451,571,451,571,451,571] linke Hand [571,451,571,451,571,451,571,451]

  1. Verkabeln: einen einzelnen Servo nacheinander mit der Servo-Treiberplatine verbinden.

2. Servo-ID setzen – 1

  1. Mit der vom Servohersteller bereitgestellten PC-Software FD1.9.8.2 einstellen

FD.rar

2. Servo-ID setzen – 2

2. Servo-ID setzen – 3

2. Servo-ID setzen – 4

3. Servohorn befestigen ​

  1. Das Codeprogramm „安装白色伺服喇叭时使用" (bei der Montage des weißen Servohorns verwenden) auf das Entwicklungsboard hochladen

Dieses Programm bewirkt: Die Getriebeposition des Servos wird in eine ungefähr mittige Position gebracht; die späteren Bewegungswinkel basieren auf dieser mittleren Position.

(1) Arduino-Software selbst installieren, je nach System die Installationsanleitung befolgen; zum Kompilieren und Herunterladen des Arduino-Programms zuerst in der Bibliotheksverwaltung die Bibliotheken FTServo und SCServo installieren

3. Servohorn befestigen – 1

(2) Board-Typ wählen: „Arduino Nano"

3. Servohorn befestigen – 2

  1. Servo 1, 2 debuggen

(1) Bearbeiten: je nach zu debuggendem Servo-ID die folgende Position ändern. Für den Zeigefinger z. B. die IDs auf 1, 2 setzen

3. Servohorn befestigen – 3

(2) Programm auf das Entwicklungsboard hochladen

(3) Verkabeln: Entwicklungsboard mit Servo-Treiberplatine und den Servos 1, 2 verbinden; man hört, wie das Servogetriebe um einen bestimmten Winkel dreht und dann stoppt.

3. Servohorn befestigen – 4

(4) Servohorn auf das Getriebe montieren, möglichst parallel ausrichten

3. Servohorn befestigen – 5

  1. Servo 3, 4 debuggen

(1) Die Verbindung zwischen 328P-Entwicklungsboard und Servo-Treiberplatine trennen (sonst ist das Hochladen nicht möglich)

(2) Bearbeiten: IDs auf 3, 4 setzen

3. Servohorn befestigen – 6

(3) Programm auf das Entwicklungsboard hochladen

(4) Verkabeln: Entwicklungsboard mit Servo-Treiberplatine und den Servos 3, 4 verbinden; man hört, wie das Servogetriebe um einen bestimmten Winkel dreht und dann stoppt.

(5) Servohorn auf das Getriebe montieren, möglichst parallel ausrichten

  1. Servo 5, 6 debuggen

Ablauf wie oben

  1. Servo 7, 8 debuggen

Ablauf wie oben

4. Mittelwert feinjustieren ​

  1. Das Codeprogramm „01 微调MiddlePos值时使用" (bei der Feinjustierung des MiddlePos-Werts verwenden) auf das Entwicklungsboard hochladen

  2. Wenn sich die Finger in der geschlossenen Position befinden, das Programm sofort stoppen (Datenkabel abziehen) und prüfen, ob die Servohörner korrekt ausgerichtet sind (siehe Bild unten). Wenn nicht, die Werte MiddlePos_1, MiddlePos_2 im Programm anpassen, bis sie ausgerichtet sind. Den Wert notieren (8 Servos entsprechen 8 Werten); er wird im letzten Programm benötigt.

4. Mittelwert feinjustieren – 1

4. Mittelwert feinjustieren – 2

5. Testprogramm ausführen ​

  1. Die oben gespeicherten Werte MiddlePos_1, MiddlePos_2 in das folgende Array eintragen und das Programm herunterladen.

5. Testprogramm ausführen – 1

6. „02-Demoprogramm" ausführen ​

(1) Arduino-Software selbst installieren, je nach System die Installationsanleitung befolgen

(2) Im Verzeichnis 灵巧手调试\00 TTL串口舵机\arduino程序(MEGA328P开发板)\02 演示程序 je nach linker oder rechter Hand die entsprechende .ino-Datei öffnen

6. „02-Demoprogramm" ausführen – 1

(3) Zum Kompilieren und Hochladen des Arduino-Programms auf das Entwicklungsboard zuerst in der Bibliotheksverwaltung die Bibliotheken FTServo und SCServo installieren

6. „02-Demoprogramm" ausführen – 2

(4) Board-Typ wählen: „Arduino Nano"

6. „02-Demoprogramm" ausführen – 3

(5) Kompilieren und hochladen

Achtung: Der PC ist jetzt nur mit dem Entwicklungsboard verbunden, das Board noch nicht mit der Servo-Treiberplatine (also nicht mit der Dexterhand).

Nach erfolgreichem Hochladen das Entwicklungsboard über drei Jumperkabel mit der Servo-Treiberplatine verbinden, die Servos an die Servo-Treiberplatine, siehe Verkabelung beim Debugging mit dem MEGA328P-Entwicklungsboard.

Die Dexterhand führt das „02-Demoprogramm" fortlaufend in einer Schleife aus.

Ergebnis:

6. „02-Demoprogramm" ausführen – 4


2. SCS0009-Debugging-Werkzeug ​

Geeignet für Windows 10 / 11; Unterschiede unter Linux und macOS siehe Abschnitt 8. Dieses Tutorial deckt jeden Schritt von der Umgebungsinstallation bis zum vollständigen Debugging ab.

⚠️ Kompatibilitätshinweis: Dieses Werkzeug unterstützt derzeit nur Feetech SCS0009-Servos (SCS-Serie, Potentiometer-Positionsrückmeldung, 10-Bit-Auflösung 0–1023). Registertabelle und xdat-Parameterformat sind für den Feetech SCS0009 ausgelegt; andere Marken/Modelle sind nicht garantiert kompatibel.

1. Umgebungsanforderungen ​

AbhängigkeitVersionBeschreibung
Python>= 3.8empfohlen 3.10+, von python.org herunterladen
PySide6>= 6.0GUI-Framework
pyserial>= 3.5serielle Kommunikation
SystemWin10 / Win11beliebige Version

2. Python installieren ​

  1. https://www.python.org/downloads/ besuchen
  2. Python-3.10+-Installer herunterladen
  3. Bei der Installation unbedingt "Add Python to PATH" ankreuzen (sonst findet die Kommandozeile python nicht)

Installation prüfen:

bash
python --version

3. Abhängigkeiten installieren ​

Empfohlen in einer virtuellen Umgebung, um das System-Python nicht zu verschmutzen:

bash
# in das Projektverzeichnis wechseln
cd SCS0009_ServoController

# virtuelle Umgebung erstellen
python -m venv .venv

# virtuelle Umgebung aktivieren (Windows)
.venv\Scripts\activate

# Abhängigkeiten installieren
pip install -r requirements.txt

⚠️ Die virtuelle Umgebung muss nur einmal erstellt werden. Erneutes Ausführen überschreibt die Umgebung (löscht installierte Abhängigkeiten). Danach genügt jedes Mal activate.

Hinweis: Nach dem Aktivieren erscheint der Präfix (.venv) in der Kommandozeile.

4. Umgebung prüfen ​

bash
python setup.py

Wenn du [OK] 环境检查通过,可以运行项目 siehst, ist die Umgebung korrekt.

5. Hardware anschließen ​

  1. USB-Seriell-Adapter (z. B. CH340 / CP2102) in den PC stecken
  2. Servo-Controller (Roboterarm-Steuerplatine) anschließen
  3. Servos mit Strom versorgen (empfohlen DC 5 V 5 A, Pro-Version DC 12 V 5 A)

Geräte-Manager öffnen (Win+X → Geräte-Manager) und COM-Nummer bestätigen:

Anschlüsse (COM und LPT)
  └─ USB-SERIAL CH340 (COM3)     ← dein Servo-Seriellport

COM-Nummer notieren, beim Start des Programms auswählen.

6. GUI starten ​

bash
python -m src.gui.factory_calibration_tool

Oder Port manuell angeben (wenn der serielle Port belegt ist):

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

Verfügbare Ports anzeigen:

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

7. Ablauf der Oberflächenbedienung ​

Die Oberfläche ist ein einziges Panel; bei zu geringer Fensterhöhe erscheint automatisch eine Bildlaufleiste, maximiert passt sie sich an.

7.1 Serielle Verbindung ​

  • Port und Baudrate wählen (Standard 1M), auf Verbinden klicken
  • Status zeigt 🟢 Verbunden

7.2 Servos scannen ​

  • Auf Servos scannen klicken, IDs 1-254 online erkennen
  • Scanergebnis wird in der Servoliste in Echtzeit angezeigt (mit Modell)
  • Auf eine Zeile der Servoliste klicken → automatisch ins Servo-Dropdown übernehmen

7.3 Parameter lesen/schreiben ​

  • Parameter lesen: alle 44 Register (EEPROM + SRAM) lesen, Log zeigt das Ergebnis in Echtzeit
  • Parametertabelle: 5 Spalten (Adresse/Register/Wert/Speicherbereich/Lesen-Schreiben), EPROM/SRAM/DEFAULT farblich unterschieden
  • Auswahl-Kopplung: auf eine Zeile der Parametertabelle klicken → „Schreibadresse", „Länge", „Wert" automatisch ausfüllen
  • Schreiben: nach Änderung des Werts auf Schreiben klicken, das Programm entsperrt/schreibt/sperrt automatisch
  • Ergebnisdialog: Erfolg grüner Hinweis „✅ Erfolgreich geschrieben", Fehler roter Hinweis „❌ Schreiben fehlgeschlagen" (mit Grund)

7.4 Servo-ID ändern ​

  1. Nur den einen Servo, dessen ID geändert werden soll, am Bus anschließen, um Konflikte mit vorhandenen IDs zu vermeiden.
  2. In der Parametertabelle die Zeile „Servo-ID" (Adresse 0x05) suchen und auswählen.
  3. „Wert" auf die Ziel-ID ändern, auf ✏️ Schreiben klicken; das Programm entsperrt → schreibt → sperrt wieder.
  4. Nach der Änderung den Bus neu scannen. Rechte Hand 1–8, linke Hand 11–18.

7.5 Positionssteuerung ​

  1. Schieberegler ziehen oder Zielposition direkt eingeben (0–1023), Zahlenfeld und Schieberegler sind synchron.
  2. Auf ▶ Bewegen klicken, Statusleiste zeigt „Wird bewegt …".
  3. Nach Erreichen: „Bewegung abgeschlossen, bitte Drehmoment ausschalten", auf ⏹ Drehmoment aus klicken.

7.6 Baudrate/Werkseinstellungen ​

  • Baudrate ändern: neue Baudrate wählen (38400–1000000 bps) und schreiben; das Programm wechselt die serielle Baudrate und verifiziert per Ping, bei Fehler automatischer Rollback.
  • Werkseinstellungen: auf Werkseinstellung zurücksetzen (ID=1, Baudrate 1M), danach neu scannen.

7.7 xdat-Parameter (nur EEPROM speichern) ​

  1. 💾 Aktuellen Servo speichern: EEPROM-Parameter des aktuellen ID-Servos in xdat-Datei speichern (Backup)
  2. 📂 xdat öffnen: Backup-Datei laden
  3. 📤 Parameter auf Servo zurückschreiben: Backup auf den Servo zurückschreiben

8. Unterschiede Linux und macOS ​

Linux ​

  • Schriftarten: sudo apt install fonts-noto-cjk fonts-noto-color-emoji, sonst kann die chinesische Oberfläche leer sein und Emoji als Kästchen erscheinen.
  • Serielle Berechtigungen: sudo usermod -a -G dialout $USER, nach Ab- und Anmelden wirksam; groups sollte dialout enthalten. Temporär sudo chmod 666 /dev/ttyUSB0.
  • Gerätenamen: /dev/ttyUSB* (CH340 / CP2102 / PL2303) oder /dev/ttyACM* (Onboard-USB-Seriell); Hersteller mit lsusb, dmesg | grep -i tty prüfen.
  • Fester Gerätename (optional): in /etc/udev/rules.d/99-servo.rules SUBSYSTEM=="tty", ATTRS{idVendor}=="1a86", ATTRS{idProduct}=="7523", SYMLINK+="ttyServo" eintragen, danach /dev/ttyServo verwenden.
  • Start: python -m src.gui.factory_calibration_tool --port /dev/ttyUSB0.
  • Häufige Probleme: bei pip-Meldung externally-managed-environment venv verwenden oder --break-system-packages ergänzen.

macOS ​

  • Python: empfohlen per Homebrew brew install python, nicht die mitgelieferte alte Systemversion.
  • Seriellnamen: /dev/cu.* verwenden, nicht /dev/tty.* (letzteres kann blockieren); mit ls /dev/cu.* anzeigen.
  • USB-Treiber: CH340 / CP2102 / FTDI meist treiberfrei; ältere CH340-Chargen benötigen den WCH-Treiber, mit system_profiler SPUSBDataType prüfen.
  • Start: python -m src.gui.factory_calibration_tool --port /dev/cu.usbserial-0001.
  • Apple Silicon: natives Python 3.10+ verwenden, kein altes Python unter Rosetta; beim ersten Start bei „Entwickler kann nicht verifiziert werden" unter „Datenschutz & Sicherheit" zulassen.
  • Energiesparen: macOS-Ruhezustand kann die serielle Schnittstelle trennen, während der Bedienung wach halten.

9. Hinweise ​

  1. Schreiben ist persistent: Nach dem Schreiben in EEPROM wird der alte Wert überschrieben und kann nicht rückgängig gemacht werden; vor Änderungen mit xdat sichern.
  2. Stabile Stromversorgung: unzureichende Versorgung führt zu Schrittverlust, Kommunikationsfehlern oder Servo-Ausfall; Versorgung gemäß SCS0009-Verkabelung und Stromversorgung.
  3. Exklusiver Seriellport: derselbe Port kann nicht von zwei Programmen gleichzeitig geöffnet werden; vor der Nutzung Seriellmonitor, PC-Software und andere belegende Programme schließen.
  4. Risiko der ID-Änderung: nur einen Servo, dessen ID geändert werden soll, am Bus anschließen; bei Verbindungsverlust nach der Änderung „Werkseinstellungen" versuchen (ID zurück auf 1).
  5. Übertemperatur/Überspannung: Das Werkzeug überwacht Spannung und Temperatur (Warnung bei Temperatur > 60 °C); bei anhaltend hoher Temperatur abschalten und kühlen.
  6. Hot-Plug: Nach Abziehen des USB versucht das Programm die Wiederverbindung; nach erneutem Anstecken den Port aktualisieren.
  7. Windows-Konsole Zeichensalat: Bei Emoji-Zeichensalat in Kommandozeilenwerkzeugen PYTHONIOENCODING=utf-8 setzen und erneut ausführen.

10. Häufige Probleme ​

ProblemLösung
Serieller Port nicht gefundenim Geräte-Manager Treiber prüfen; USB-Port wechseln; CH340-Treiber installieren
Serieller Port belegtSeriellmonitor und andere Programme schließen; Werkzeug neu starten
Chinesische Schrift leerSystemstandard Microsoft YaHei; bei Problemen chinesische Schrift installieren
Servo wird nicht gefundenStromversorgung/Verkabelung prüfen; Baudrate 1M bestätigen
Schreiben fehlgeschlagenServo-Stromversorgung und Verbindung prüfen; bestätigen, dass das Zielregister beschreibbar ist
PermissionError beim Öffnen des Portssicherstellen, dass kein anderer Prozess den COM-Port belegt
Linux: Permission denied: /dev/ttyUSB0nicht in der Gruppe dialout; siehe Linux-Abschnitt oben
macOS: hängt bei Seriellname mit tty.entsprechendes /dev/cu.*-Gerät verwenden

11. Kommandozeile (optional) ​

bash
# verfügbare serielle Ports auflisten
python -m src.gui.factory_calibration_tool --list-ports

# mit angegebenem Port starten
python -m src.gui.factory_calibration_tool --port COM3

Verwandte Seiten ​