5.e. Comandos para servos
Maestro tiene varios comandos para ajustar el canal, recoger la posición actual y ajustar limites de
velocidad y aceleración.
(Pololu/Compact protocol)
Set Target
Compact protocol: 0x84,numcanal,destinoLB,destinoHB
Pololu protocol: 0xAA,numdispos,0x04,numcanal,destinoLB,destinoHB
Los 7 bits bajos (LB) del 3er byte representan los bits 0–6 del destino (7 bits bajos), los 7 bits bajos
del cuarto byte de datos representan los bits 7–13 del destino. El destino no es entero negativo.
Si el canal está configurado para servo, el destino representa el ancho de pulso a transmitir en
cuartos de microsegundo. El valor destino 0 indica a Maestro que pare el envío de pulsos al servo.
Si el canal está configurado como salida digital los valore menores de 6000 indican que debe poner
la línea en bajo, en cambio si son mayores la línea estará en alto.
Por ejemplo, si el canal 2 está configurado para servo y quieres ajustar el destino a 1500 µs (1500×4
= 6000 = 01011101110000 en binario), enviarás la siguiente secuencia de bytes:
en binario: 10000100, 00000010, 01110000, 00101110
en hex: 0x84, 0x02, 0x70, 0x2E
en decimal: 132, 2, 112, 46
Aquí hay algunos ejemplos en código C que generará los bytes correctos, dando un número entero
al "canal" que contiene el número del canal, un entero "destino" para el destino deseado (en
unidades de cuartos de microsegundos si es servo) en una matriz denominada serialBytes:
serialBytes[0] = 0x84;
serialBytes[1] = channel;
serialBytes[2] = target & 0x7F;
serialBytes[3] = (target >> 7) & 0x7F;
Algunas aplicaciones de servo control no necesitan una resolución en cuartos de microsegundo. Si
quieres un pequeño paquete de comandos de baja resolución para trabajar usa Mini-SSC.
(Mini SSC protocol)
Set Target
Mini-SSC protocol: 0xFF, direccioncanal, 8-bit destino
Este comando ajusta el destino del canal con un valor de 8 bits, entre 0 y 254. El valor objetivo de 8
bits se convierte en otro de alta resolución de acuerdo con la configuración neutral y rango
almacenados en Maestro para ese canal. Entonces 127 corresponde a neutral en ese canal, mientras
que 0 o 254 corresponden a neutral menos o más el valor del rango. Esta configuración puede ser
útil para calibrar la marcha sin cambiar el programa que envía los comandos.
La dirección del canal es un valor entre 0–254. Por defecto la dirección de canal es igual al número
de canal y está entre 0 y 23. Para permitir múltiples Maestros controlados por la misma línea debes
establecer el parámetro
Offset se añade al número de canal para dirigir el comando a la dirección correcta. Por ejemplo
Micro Maestro de 6 canales con el Mini SSC Offset de 12 obedece a los comandos cuya dirección
este entre 12–17.
Set Multiple Targets
Compact protocol:
0x9F,numdestinos,1numcanal,1destinoLB,1destinoHB,2destinoLB,2destinoHB, ...
Pololu protocol:
0xAA,numdispos,0x1F,numdestinos,1numcanal,1destLB,1destHB,2destLB,2destHB, ...
El comando ajusta simultáneamente los destinos con bloques contiguos de canales. El primer byte
especifica cuantos canales hay en el bloque; será el numero de valores de destinos que necesitas
enviar. El segundo byte especifica el numero de canal bajo en el bloque. Los siguientes bytes
contienen los valores de destino para cada canal en orden de número de canal con el mismo formato
que el Set Target Comando. Por ejemplo, para ajustar canales 3 a 0 (off) y canal 4 a 6000 (neutral),
enviaras los siguientes bytes:
0x9F,0x02,0x03,0x00,0x00,0x70,0x2E
El comando
Set Multiple Targets
principalmente cuando se controlan un largo número de servos configurados en cadena. Por
con diferentes valores para cada Maestro. El Mini SSC
Mini SSC Offset
(Mini Maestro 12, 18, y 24 solo)
permite la rápida actualización de Maestro, y se usa
// Comando Set Target.
// 1º byte datos numerocanal.
// 2º byte los LB 7 bits destino.
// 3º byte los HB 7-13 destino.
21