2 votos

¿Cómo puedo hacer pasos más pequeños con mi servo?

Tengo una Raspberry Pi con la que controlo un servo. El servo controla el timón de un barco autónomo que estoy construyendo. Estoy usando Golang y esta biblioteca gpio para controlar el PWM.

La entrada que obtengo del programa oscila entre -100 (toda la izquierda) y 100 (toda la derecha). Tengo un código (prueba de concepto) que funciona muy bien ( pegar aquí ).

Yo uso:

  • una frecuencia de 100
  • una longitud de ciclo de 100
  • Varío el ciclo de trabajo entre 3 (completo a la izquierda) y 14 (completo a la derecha).

Esto funciona muy bien, pero como la biblioteca sólo acepta ints como entrada para el ciclo de trabajo, sólo tengo 11 pasos discretos a los que se puede ajustar el servo. Sin embargo, me gustaría poder tener un control más fino. Me gustaría utilizar un mínimo de unos 25 pasos discretos.

Así que jugué con los números de la frecuencia, la longitud del ciclo y el ciclo de trabajo mínimo y máximo, pero realmente no puedo conseguir más pasos.

¿Podría alguien darme algunas pistas sobre cómo puedo crear pasos más discretos? Todos los consejos son bienvenidos.

Hasta aquí todo bien.

2voto

GSerg Puntos 33571

La frecuencia de sus pines es demasiado baja. Esto establece el reloj básico utilizado para producir el PWM.

Normalmente se desea que la señal PWM tenga un periodo cercano a los 20 ms, lo que corresponde a una frecuencia de actualización de 50 Hz. El ancho de pulso debe variar entre 1 y 2 ms. Si quieres que 200 pasos cubran este rango (-100 a +100), la frecuencia del pin (PIN_FREQ) tiene que ser

$$\frac{200}{2\text{ ms} - 1\text{ ms}} = 200\text{ kHz}$$

Si quieres actualizar a 50 Hz, eso significa que la longitud del ciclo (CYCLE_LENGTH) debe ser

$$\frac{200\text{ kHz}}{50\text{ Hz}} = 4000$$

y para variar el ancho del pulso entre 1 ms y 2 ms, se utilizan valores de ciclo de trabajo (dutyCycle) entre

$$200\text{ kHz} \times 1\text{ ms} = 200$$

y

$$200\text{ kHz} \times 2\text{ ms} = 400$$

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X