FEETECH Serial Servo – 제품 소개

FEETECH 시리얼 버스 서보 – 로봇 공학, 자동화 및 DIY 프로젝트를 위한 고성능 서보 솔루션
Language

FEETECH 시리얼 버스 서보는 로봇 공학, 자동화 및 DIY 프로젝트를 위해 설계된 고성능, 비용 효율적인 서보 솔루션입니다. 자체 FT-SCS 통신 프로토콜을 사용하며 TTL 단일 버스 및 RS485 통신 방식을 모두 지원하여 단일 버스로 여러 서보를 제어할 수 있습니다.

주요 기능

통신 프로토콜

  • 이중 통신 지원: TTL 레벨(고속) 및 RS485(강한 노이즈 내성) 통신 방식과 호환
  • 비동기 양방향 통신: 컨트롤러와 서보 간 질의응답 방식의 상호 작용 모델 사용
  • 멀티 서보 버스 제어: 단일 버스에 최대 254개의 서보를 연결할 수 있으며, 각 서보에 고유한 ID(0-253)가 부여됨
  • 기본 구성: 1M 보드레이트, 데이터 비트 8개, 스톱 비트 1개, 패리티 없음
  • 브로드캐스트 제어: ID 254를 사용하여 모든 서보에 동시에 명령을 보낼 수 있음

제어 모드

  • 위치 서보 모드: 0.087° 분해능의 정밀 위치 제어
  • 정속 모드: 연속 회전 애플리케이션을 위한 부드러운 속도 제어
  • PWM 오픈 루프 모드: 맞춤형 속도 조절을 위한 직접 PWM 제어
  • 스테핑 모드: 정밀 애플리케이션을 위한 단계 기반 위치 제어

보호 & 모니터링

  • 과열 보호
  • 과전압/저전압 보호
  • 과전류 보호
  • 부하 과부하 보호
  • 위치, 속도, 부하, 전압, 온도의 실시간 피드백

기본 제어 예제

다음은 직렬 포트를 통해 FEETECH 서보를 제어하는 방법을 보여주는 간단한 Python 예제입니다:

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 서보 상태 및 매개변수 재설정

추가 리소스

이 글은 요약본입니다. 전체 기술 문서는 Wiki에서 읽어보세요.

Wiki에서 전체 글 읽기 →

Feishu Wiki에서 열기