Controlar un servomotor

1

Estoy aprendiendo a controlar un servo (SG90). Leí en este tutorial: enlace

  

El servo espera ver un pulso cada 20 milisegundos (.02 segundos).   La duración del pulso determinará a qué distancia gira el motor. Un 1.5   El pulso de milisegundos, por ejemplo, hará que el motor gire a los 90   posición de grado (a menudo llamada la posición neutral). Si el pulso es   más corto que 1.5 ms, entonces el motor girará el eje para acercarse a 0   grados Si el pulso es más largo que 1.5ms, el eje gira más cerca de   180 grados.

¿Es esto cierto para SG90? No puedo encontrar esta información en la especificación:

Voltaje de operación: 4.8 ~ 6.0V
Velocidad de operación: 0.12sec / 60 degree (4.8V) ~ 0.1sec / 60 degree (6.0V)
 Par de torsión: 1.6kg / cm (4.8V)
 Ancho de la banda muerta: 5usec
 Rango de temperatura: -30 ~ + 60?
 Longitud del cable: 25cm
 Tipo de servo: Servo analógico
 Modelo de marca: SG90

    
pregunta nlnl

2 respuestas

2

Si bien una hoja de datos para este servo no parece estar disponible después de una búsqueda rápida en Google, yo diría que debería estar bien. Todos los servos de hobby / RC como el SG90 que he encontrado utilizan ese mismo protocolo. A menos que especifiquen que son un servo digital, que utiliza una frecuencia de pulso mayor, se sigue el estándar de 1,5 ms de ancho de pulso = posición central.

Lo mejor que se puede hacer es probarlo y ver qué sucede. Los pulsos son solo señales de control. Si le das al motor un impulso demasiado corto o demasiado largo, simplemente girará a sus ángulos mínimo y máximo.

    
respondido por el Justin Trzeciak
0

El SG90 parece ser un servomotor estándar incluido en la mayoría de los kits de aficionados en estos días (2017). Si bien la siguiente información menciona la Raspberry Pi específicamente, la explicación es buena para una variedad de microcontroladores.

Diferentes bibliotecas de software exponen la funcionalidad PWM con interfaces ligeramente diferentes. Algunos especifican una frecuencia como un valor con una sola llamada. Con otros, haces varias llamadas para configurar un divisor de reloj y un rango. Con este segundo tipo de interfaz, la frecuencia se calcula tomando la frecuencia del reloj original dividida por un divisor de reloj dividido por un rango.

Esta publicación en Raspberry Pi StackExchange, Frecuencia de PWM de Hardware de Control proporciona varias respuestas sobre el uso de la Modulación de ancho de pulso (PWM) para controlar un servomotor con el segundo tipo de interfaz (divisor de reloj y un rango).

Esta publicación se citó en el tutorial de adafruit Raspberry Pi de Adafruit Lección 8. Uso de un servomotor que utiliza un servo SG90.

También vea RASPBERRY PI LECCIÓN 28: CONTROLANDO UN SERVO EN RASPBERRY PI WITH PYTHON usando el primer tipo de interfaz, usando un valor de frecuencia, que dice:

  

Ahora podemos iniciar la secuencia pwm dando un comando para especificar el   Ciclo de trabajo de la señal. Antes de hacer esto, necesitamos hablar un poco.   Un poco sobre cómo funcionan los servos. Un servo típico quiere ver una frecuencia de   50 Hz en la línea de control. La posición a la que se mueve depende de la   Ancho de pulso de la señal. La mayoría de los servos se comportan más o menos como tales, pero tú   Tendrá que ajustar estos números para su servo en particular. Típicamente,   el servo irá a la posición completa izquierda cuando vea un ancho de pulso   de 1 milisegundo, irá a la posición intermedia cuando vea un pulso   ancho de 1.5 milisegundos, y irá a la posición correcta completa   cuando ve un ancho de pulso de 2 milisegundos.

También vea la respuesta a Posición del servo sin pulso que tiene esto decir acerca del protocolo de pulso para comandar un servo:

  

Las señales de control de servo no son en realidad PWM sino una variante, pulso   modulación de la duración: la posición del servo no está definida por el servicio PWM   ciclo (es decir, tiempo ON / OFF) pero solo por la duración del pulso. Como   siempre y cuando se encuentre en un rango de (típicamente) 40 Hz a 200 Hz, el   El valor exacto de la velocidad de fotogramas es irrelevante. El servo espera ver   Un pulso cada tantos ms, esto puede variar dentro de un amplio rango que   difiere de servo a servo.

    
respondido por el Richard Chambers

Lea otras preguntas en las etiquetas