FEETECH Serial Servo – Introducción al producto

Servomotores de bus serie FEETECH: soluciones de servomotores de alto rendimiento para robótica, automatización y proyectos de bricolaje
Language

Los servomotores de bus serie FEETECH son soluciones de servomotores de alto rendimiento y rentables diseñadas para robótica, automatización y proyectos de bricolaje. Utilizan el protocolo de comunicación propietario FT-SCS, compatible con comunicación TTL de bus único y RS485, lo que permite controlar varios servomotores mediante un solo bus.

Características principales

Protocolo de comunicación

  • Compatibilidad de comunicación dual: Compatible con TTL (alta velocidad) y RS485 (fuerte inmunidad a interferencias)
  • Comunicación dúplex asíncrona: Utiliza un modelo de interacción de pregunta-respuesta entre el controlador y el servomotor
  • Control de bus multiservo: Se pueden conectar hasta 254 servomotores en un solo bus, cada uno con una ID única (0-253)
  • Configuración predeterminada: Baud rate de 1M, 8 bits de datos, 1 bit de parada, sin paridad
  • Control de difusión: La ID 254 se puede usar para enviar comandos a todos los servomotores simultáneamente

Modos de control

  • Modo servo de posición: Control de posición preciso con resolución de 0,087°
  • Modo de velocidad constante: Control suave de velocidad para aplicaciones de rotación continua
  • Modo de lazo abierto PWM: Control PWM directo para regulación de velocidad personalizada
  • Modo paso a paso: Control de posición por pasos para aplicaciones de precisión

Protección & monitorización

  • Protección contra sobretemperatura
  • Protección contra sobretensión/subtensión
  • Protección contra sobrecorriente
  • Protección contra sobrecarga
  • Retroalimentación en tiempo real de posición, velocidad, carga, voltaje y temperatura

Ejemplo básico de control

A continuación se muestra un ejemplo sencillo en Python que demuestra cómo controlar un servo FEETECH a través del puerto serie:

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()

Resumen de la tabla de memoria

Los servos FEETECH cuentan con una estructura completa de tabla de memoria para configuración y monitoreo de estado:

Región Descripción Persistencia
Información de versión Versión de firmware, información de hardware Solo lectura
Configuración EPROM ID del servo, baud rate, límites de ángulo, parámetros PID, configuraciones de protección Persiste después del apagado
Control SRAM Interruptor de torque, posición objetivo, velocidad de rotación, límite de torque Se restablece al apagarse
Retroalimentación SRAM Posición actual, velocidad, carga, voltaje, temperatura, estado Solo lectura en tiempo real
Parámetros de fábrica Parámetros de calibración, límites de rendimiento Solo lectura

Comandos comunes

Comando Valor Función
PING 0x01 Consultar el estado de funcionamiento del servo
READ DATA 0x02 Leer datos de la tabla de control
WRITE DATA 0x03 Escribir datos en la tabla de control
REG_WRITE 0x04 Escritura asíncrona (se ejecuta con el comando ACTION)
ACTION 0x05 Activar todos los comandos REG_WRITE en cola
SYNC_WRITE 0x83 Escribir sincrónicamente en varios servos a la vez
RESET 0x0A Restablecer el estado y los parámetros del servo

Más recursos

Este artículo es un resumen. Lee la documentación técnica completa en el Wiki.

Leer el artículo completo en el Wiki →

Abrir en el Wiki de Feishu