FEETECH 串列伺服馬達 - 產品介紹

FEETECH 匯流排伺服馬達 - 適用於機器人、自動化和DIY專案的高效能伺服解決方案
Language

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

記憶體表概述

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 重置伺服狀態和參數

更多資源

這篇文章是摘要。請在維基上閱讀完整的技術文件。

在維基百科上閱讀全文 →

在飛書知識庫中開啟