Direccionamiento en el bus de servos
También disponible en: Català · English
La idea
En el brazo SO-101, los servos Feetech STS3215 comparten un bus serie half-duplex: una sola línea de datos y los servos se turnan para hablar. Cada servo tiene un ID guardado en su EEPROM, que se conserva sin alimentación.
El paquete
FF FF | ID | LEN | INST | parámetros | CHK
LEN= número de parámetros + 2.CHK= NOT bit a bit de la sumaID + LEN + INST + parámetros(byte bajo).
Ejemplo: PING al servo 1 → FF FF 01 02 01 FB, porque ~(1 + 2 + 1) = 0xFB.
Reglas
- Todos los servos oyen todos los paquetes; solo contesta el que tiene ese ID.
- ID 254 = broadcast: lo ejecutan todos y ninguno responde.
- IDs válidos de 0 a 253; en la práctica el límite lo ponen la alimentación y la velocidad del bus.
- Un servo nuevo sale con ID 1. Dos servos con el mismo ID contestan a la vez y se pisan; por eso, al configurarlos, se conecta uno solo cada vez.
En la demo
Marca «dos servos con el ID 1» para ver la colisión, prueba el broadcast y un ID que nadie tiene (timeout).
Preguntas típicas
¿Por qué half-duplex? Ahorra cables: una sola línea para todos. A cambio, no pueden hablar a la vez.
Demo interactiva
Conceptos relacionados
Cómo hablan los chips (UART, I2C, SPI, CAN)
Un bus son unos cables compartidos. Cada protocolo resuelve a su manera quién habla, a quién y cuándo: UART punto a punto, I2C por dirección, SPI con un cable de selección y CAN por ID de mensaje.
Cómo funcionan los motores
Corriente dentro de un campo magnético = fuerza. Tres familias según quién cambia la corriente: escobillas (DC), un controlador que cuenta pasos (stepper) o electrónica que lee el rotor (brushless).