FEETECH Serial Servo – Présentation du produit

Servos à bus série FEETECH – des solutions de servomoteurs haute performance pour la robotique, l'automatisation et les projets DIY
Language

Les servos à bus série FEETECH sont des solutions de servomoteurs haute performance et rentables conçues pour la robotique, l'automatisation et les projets DIY. Ils utilisent le protocole de communication propriétaire FT-SCS, prenant en charge la communication TTL sur bus unique et RS485, ce qui permet de contrôler plusieurs servos via un seul bus.

Caractéristiques principales

Protocole de communication

  • Double prise en charge de la communication: Compatible avec les niveaux TTL (haute vitesse) et RS485 (forte immunité aux interférences)
  • Communication duplex asynchrone: Utilise un modèle d'interaction question-réponse entre le contrôleur et le servo
  • Contrôle multi-servos sur bus: Jusqu'à 254 servos peuvent être connectés sur un seul bus, chacun avec un ID unique (0-253)
  • Configuration par défaut: Débit de 1 Mbaud, 8 bits de données, 1 bit d'arrêt, sans parité
  • Contrôle par diffusion (broadcast): L'ID 254 peut être utilisé pour envoyer des commandes à tous les servos simultanément

Modes de contrôle

  • Mode servo de position: Contrôle de position précis avec une résolution de 0,087°
  • Mode vitesse constante: Contrôle de vitesse fluide pour les applications de rotation continue
  • Mode boucle ouverte PWM: Contrôle PWM direct pour une régulation de vitesse personnalisée
  • Mode pas à pas: Contrôle de position par pas pour les applications de précision

Protection & surveillance

  • Protection contre la surchauffe
  • Protection contre les surtensions/sous-tensions
  • Protection contre les surintensités
  • Protection contre les surcharges
  • Retour en temps réel de la position, de la vitesse, de la charge, de la tension et de la température

Exemple de contrôle de base

Voici un exemple simple en Python montrant comment contrôler un servo FEETECH via le port série :

import serial
import time

# Initialize serial port
ser = serial.Serial('COM3', 1000000, timeout=1)  # Adjust COM port as needed

def calculate_checksum(data):
    """Calculate checksum for SCS protocol"""
    checksum = sum(data)
    return (~checksum) & 0xFF

def ping_servo(servo_id):
    """Ping servo to check connection"""
    command = [0xFF, 0xFF, servo_id, 0x02, 0x01]
    checksum = calculate_checksum(command[2:])
    command.append(checksum)
    ser.write(bytearray(command))
    response = ser.read(6)
    return len(response) > 0

def set_servo_position(servo_id, position, speed=1000):
    """Set servo target position with specified speed"""
    # Position: 0-4095 corresponds to 0-360° (adjust based on your servo model)
    # Speed: steps per second
    pos_low = position & 0xFF
    pos_high = (position >> 8) & 0xFF
    speed_low = speed & 0xFF
    speed_high = (speed >> 8) & 0xFF
    
    command = [0xFF, 0xFF, servo_id, 0x09, 0x03, 0x2A, 
               pos_low, pos_high, 0x00, 0x00, speed_low, speed_high]
    checksum = calculate_checksum(command[2:])
    command.append(checksum)
    ser.write(bytearray(command))
    response = ser.read(6)
    return response

# Example usage
if __name__ == "__main__":
    servo_id = 1
    
    # Check if servo is connected
    if ping_servo(servo_id):
        print(f"Servo ID {servo_id} connected successfully")
        
        # Move servo to position 2048 (middle position, approximately 180°) at 1000 steps/sec
        set_servo_position(servo_id, 2048, 1000)
        print(f"Servo moving to position 2048")
        
        time.sleep(2)
        
        # Move servo to position 0 (minimum position, approximately 0°) at 500 steps/sec
        set_servo_position(servo_id, 0, 500)
        print(f"Servo moving to position 0")
    else:
        print(f"Failed to connect to servo ID {servo_id}")
    
    ser.close()

Vue d'ensemble de la table mémoire

Les servos FEETECH disposent d'une structure complète de table mémoire pour la configuration et la surveillance de l'état :

Région Description Persistance
Informations de version Version du firmware, informations matérielles Lecture seule
Configuration EPROM ID du servo, débit en bauds, limites d'angle, paramètres PID, réglages de protection Persiste après la mise hors tension
Contrôle SRAM Interrupteur de couple, position cible, vitesse de rotation, limite de couple Réinitialisé à la mise hors tension
Retour SRAM Position actuelle, vitesse, charge, tension, température, état Lecture seule en temps réel
Paramètres d'usine Paramètres d'étalonnage, limites de performance Lecture seule

Commandes courantes

Commande Valeur Fonction
PING 0x01 Interroger l'état de fonctionnement du servo
READ DATA 0x02 Lire les données de la table de contrôle
WRITE DATA 0x03 Écrire des données dans la table de contrôle
REG_WRITE 0x04 Écriture asynchrone (exécutée sur commande ACTION)
ACTION 0x05 Déclencher toutes les commandes REG_WRITE en attente
SYNC_WRITE 0x83 Écrire simultanément sur plusieurs servos
RESET 0x0A Réinitialiser l'état et les paramètres du servo

Plus de ressources

Cet article est un résumé. Lisez la documentation technique complète sur le Wiki.

Lire l'article complet sur le Wiki →

Ouvrir dans le Wiki Feishu