飞特技串行舵机——产品介绍

FEETECH 串口总线舵机 - 适用于机器人、自动化和DIY项目的高性能舵机解决方案
语言

FEETECH 串口总线舵机是专为机器人、自动化和 DIY 项目设计的高性能、高性价比舵机解决方案。它们采用定制的 FT-SCS 通信协议,支持 TTL 单总线和 RS485 两种通信方式,允许通过单根总线控制多个舵机。

主要特点

通信协议

  • 双重通信支持:兼容 TTL 电平(高速)和 RS485(强抗干扰)通信方式
  • 异步双工通信:控制器与舵机之间采用问答式交互模型
  • 多舵机总线控制:单条总线上可连接多达 254 个舵机,每个舵机具有唯一的 ID (0-253)
  • 默认配置:1M 波特率,8 位数据位,1 位停止位,无奇偶校验
  • 广播控制:ID 254 可用于同时向所有舵机发送命令

控制模式

  • 位置舵机模式:0.087° 分辨率的精确位置控制
  • 恒速模式:适用于连续旋转应用的平稳速度控制
  • PWM 开环模式:直接 PWM 控制,用于自定义速度调节
  • 步进模式:基于步进的位置控制,适用于精密应用

保护与监控

  • 过温保护
  • 过压/欠压保护
  • 过流保护
  • 负载过载保护
  • 实时反馈位置、速度、负载、电压和温度

基本控制示例

以下是一个简单的 Python 示例,演示如何通过串口控制 FEETECH 舵机:

import serial
import time

# Initialize serial port
ser = serial.Serial('COM3', 1000000, timeout=1)  # 根据需要调整 COM 端口

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"舵机 ID {servo_id} 连接成功")
        
        # Move servo to position 2048 (middle position, approximately 180°) at 1000 steps/sec
        set_servo_position(servo_id, 2048, 1000)
        print(f"舵机移动到位置 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"舵机移动到位置 0")
    else:
        print(f"连接舵机 ID {servo_id} 失败")
    
    ser.close()

内存表概述

FEETECH 舵机具有全面的内存表结构,用于配置和状态监控:

区域 描述 持久性
版本信息 固件版本、硬件信息 只读
EPROM 配置 舵机 ID、波特率、角度限制、PID 参数、保护设置 断电后保持
SRAM 控制 扭矩开关、目标位置、运行速度、扭矩限制 断电后重置
SRAM 反馈 当前位置、速度、负载、电压、温度、状态 实时只读
出厂参数 校准参数、性能限制 只读

常用命令

命令 值 功能
PING 0x01 查询舵机工作状态
READ DATA 0x02 从控制表中读取数据
WRITE DATA 0x03 向控制表写入数据
REG_WRITE 0x04 异步写入(在 ACTION 命令时执行)
ACTION 0x05 触发所有排队的 REG_WRITE 命令
SYNC_WRITE 0x83 同时同步写入多个舵机
RESET 0x0A 重置舵机状态和参数

更多资源

本文为概述。请阅读维基上的完整技术文档。

阅读维基百科上的完整文章 →

在JuxiTech 维基中打开