SDK Servos#

El SDK ofrece varios métodos de control y comunicación con servos, así como un par de métodos ocultos que se pueden acceder fácilmente.

Explicación general#

Explicación de PWM (Modulación de Ancho de Pulso)#

Los servos se controlan mediante una señal PWM. La señal PWM es aquella en la que la señal se enciende durante un número de microsegundos y luego se apaga durante un número de microsegundos. Los servos se controlan enviando pulsos de longitud variable cada 20 ms, siendo la longitud de los pulsos la que dicta a qué ángulo debe moverse el servo (o, en el caso de los servos CR, a qué velocidad debe moverse). Esta longitud del pulso, expresada en microsegundos, se llama ancho de pulso PWM. Por defecto, el sdk genera señales de 600 a 2400 microsegundos (siendo 600 microsegundos el SDK 0 y 2400 microsegundos el SDK 1). Sin embargo, el expansion hub puede generar entre 500 y 2500 microsegundos si se establece el rango manualmente.

5V Energía#

Todos los servos requieren un mínimo de 5V para funcionar, por lo que el expansion hub genera 5V para alimentar los servos. La alimentación de 5V se comparte entre pares de puertos (0-1, 2-3, 4-5). Por defecto, esta alimentación de 5V está APAGADA y no proporciona energía. Sin embargo, cualquier operación de servo, como establecer la posición de un servo, activará la alimentación de 5V en ambos puertos compartidos. Llamar a disable PWM parece apagar la alimentación compartida, sin embargo, si se utiliza otro servo o está activo, la alimentación de 5V permanecerá ENCENDIDA en su lugar.

Un ejemplo de una onda PWM para un servo inventado.

Un ejemplo de ondas PWM de servo. NOTA: Los ángulos del servo se seleccionan arbitrariamente y no serán precisos para todos los servos.#

Advertencia

Cada par de dos puertos, (0-1, 2-3, 4-5) comparten la MISMA limitación de 2 amperios, así que se debe tener cuidado de que los pares de servos no consuman más de 2 amperios. Se recomienda colocar los servos en cada otro puerto cuando sea posible.

Métodos Ocultos#

ServoImplEx#

Todos los servos REV hub son instancias de «ServoImplEx», que expone algunos métodos adicionales al usuario, como establecer el rango PWM del servo.

Nota

No hay ninguna desventaja en usar «ServoImplEx», para convertir un «Servo» a «ServoImplEx» el usuario simplemente necesita hacer un cast del «Servo» devuelto por «hardwareMap» a «ServoImplEx».

Consejos:

  • Puedes usar setPwmRange() para aumentar el rango del servo a un máximo de 500 a 2500 microsegundos. Esto cambia el mapeo del SDK, con 0 convirtiéndose en el mínimo de microsegundos y 1 convirtiéndose en el máximo de microsegundos. Aumentar el rango a 500-2500 puede proporcionar más rango al controlar servos que utilizan un rango de PWM de 500-2500, como los servos goBILDA y el REV Smart Robot Servo

  • setPwmDisable() y setPwmEnable() se pueden utilizar para encender y apagar la señal PWM a un servo. En algunos servos, esto hará que el servo se desenergice y se «apague» sin potencia de retención. Otros servos pueden permanecer encendidos y mantener su posición. El comportamiento variará de un fabricante de servo a otro. También desactivará la alimentación de 5V si el servo es el único en su grupo de puertos.

Truco

Ambos servos REV Smart Robot y goBILDA dejarán de mantener su posición cuando se llame a «setPwmDisable», sin importar si la alimentación de 5v está encendida o no.