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

更多資源

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

在維基百科上閱讀全文 →

在JuxiTech 維基中開啟