Recientemente comencé a jugar con un kit Arduino UNO R3 que compré hace algún tiempo, y me emocioné tanto que decidí construir un brazo robótico.
Este brazo robótico que encontré en Thingiverse requiere el uso de 4 servomotores. Conseguí algunos motores SG90 baratos en Amazon. Dado que estos servos requieren una corriente bastante grande para funcionar, voy a usar una fuente de alimentación externa para alimentarlos al mismo tiempo y un servocontrolador PCA9685 de 16 canales.
Ahora... he llegado a la conclusión de que la posición de la bocina de un servomotor se puede elegir utilizando modulación de ancho de pulso (PWM) a 50 Hz, con anchos de pulso de 1 ms correspondientes a 0 ° y 2 ms a 180 °, según la hoja de datos de mi servo SG90.
Sin embargo , he visto que dado que mi motor es bastante barato, podría ser que las posiciones de los servos correspondan a anchos de pulso ligeramente diferentes de la hoja de datos.
¿Cómo puedo determinar con certeza qué ancho de pulso corresponde a 0 ° y 180 ° usando Arduino?
Además, si enviara un ancho de pulso inferior al correspondiente a 0° al servo, ¿dañaría el motor?
¡Muchas gracias!
¿Cómo puedo determinar con certeza qué ancho de pulso corresponde a 0 ° y 180 ° usando Arduino?
No puedes. Para empezar, ningún servo de hobby, incluso los más caros, tiene un recorrido exacto de 180°. Servos baratos casi garantizados para tenerlo diferente. Además, algunos servos electrónicos baratos dependen de la frecuencia, por lo que la posición 0 a 60 Hz puede ser diferente de 0 a 65 Hz.
si enviara un ancho de pulso inferior al correspondiente a 0° al servo, ¿dañaría el motor?
No debería, al menos no inmediatamente. Pero lo más probable es que el servo intente llegar allí, consumiendo una corriente de bloqueo bastante alta y calentándose.
Para abordar ambas preguntas, debe calibrar los ciclos de trabajo mínimo y máximo para cada servo individualmente. Hay una buena descripción de este procedimiento en el sitio de Adafruit. Cuando tenga datos de calibración, puede escalar el comando de control proporcionalmente para que cada servo llegue a la posición deseada.
En caso de duda, consulte la hoja de especificaciones.
0 grados = 1,5 ms
-90 grados = 1 ms
+90 grados = 2 ms
¿Informó el % de error a una frecuencia de 50 Hz? Mostrar errores reales. El error se puede calcular o clasificar como compensación y/o ganancia , sujeto a las tolerancias de los componentes (sin especificar).
tlfong01
tlfong01