El servomotor no gira sin empujar

Entonces, por favor, perdónenme por la ingenuidad que ciertamente voy a exhibir aquí. Soy principalmente un tipo de software, por lo que este proyecto está un poco fuera de mi zona de confort. Sin embargo:

Proyecto

Me han dado un script de Python que envía comandos a una placa Arduino, que a su vez hace funcionar un servomotor, girando una placa a la que está conectado.

Cuando ejecuto este script, se supone que la placa debe hacer 1 rotación completa.

Problema

El motor no gira. El script funciona y el Arduino obtiene los comandos adecuados, pero la placa simplemente se sienta. Este es el flujo de trabajo esperado:

  • Ejecutar guión
  • Giros de motor
  • La placa gira 360 grados

Este es el único flujo de trabajo en el que puedo trabajar:

  • Ejecutar guión
  • Dale un empujón al plato
  • Giros de motor
  • La placa gira 360 grados

Fondo

No hay nada que obstruya el motor o la placa. Esta configuración exacta supuestamente ha funcionado en el pasado. Debido a que no tengo mucha experiencia con Arduinos y servos, me resulta difícil señalar dónde comenzar a depurar este problema. Cualquier ayuda o sugerencia sería muy apreciada.

Hardware

Pruebas adicionales

Aproximadamente una de cada 5 veces (20%), simplemente funcionará. Sin empujar ni pinchar; simplemente se cierra a la velocidad y gira.

Aproximadamente una vez cada 50 veces (2%), no se moverá en absoluto, ni siquiera al empujarlo. Esto, sin embargo, podría ser un problema con la comunicación script/Arduino.

Parece que al servo le cuesta arrancar. Es probable que la corriente de arranque sea mucho más alta y que usted la empuje lo ayude. ¿Cuál es la fuente de alimentación que estás usando? ¿Podría estar bajo potencia?
@Kellenjb He agregado el hardware específico. Parece que definitivamente debería ser lo suficientemente potente como para impulsar la placa.
¿Hay alguna posibilidad de que tenga un alcance que pueda colocar en las líneas eléctricas para ver qué sucede con el voltaje cuando no se mueve?
No sin desmantelar algunas cosas que no tengo autoridad para desmantelar. Quizás si pudiera asegurarle a mi superior que se trata de un problema de hardware, estaría dispuesto a ayudar, pero primero tendría que estar seguro.
No veo cómo esto podría ser un problema de software puro. Los problemas de software puro rara vez, si acaso, pueden solucionarse dando un empujón al hardware.
Vaya a la tienda de pasatiempos o al lugar de pedidos por correo para obtener un cable en Y para el cable del servo. (Esta es una parte EXTREMADAMENTE estándar). Esto le permitirá probar los cables de control y potencia al servo con un alcance, y ver lo que realmente está sucediendo. NORMALMENTE, el cable central estará conectado a tierra, con +5 y el control en dos cables externos, pero unos segundos con un multímetro lo dirán con certeza.
Ese es un servo SERIAMENTE fornido. Me sorprendería si no estuvieras sobrecargando la fuente de alimentación. ¿Qué tan pesado es el plato? Es posible que necesite algunos cojinetes de empuje para mantener las cosas en línea.

Respuestas (2)

Primero, déjame decirte que no proporcionaste suficiente información para saber con certeza cuál es la causa del problema. No es gran cosa, realmente, excepto que debes entender que mi respuesta puede no ser 100% correcta.

El enlace al sitio web de Hobbico no da mucha información sobre ese servo. Creo que dice que extraerá 0,7 amperios cuando funcione sin carga. Si este es el caso, puede suponer que en el arranque o con una carga (también conocida como placa) consumirá más de 0,7 amperios. Esta cantidad de corriente no me parece alta, dado el gran tamaño del servo.

Lo que no sabemos es cuánto más de 0,7 amperios consume el servo. Una buena conjetura es, "mucho más de 0,3 amperios más". Lo que esto significa es que probablemente esté consumiendo más corriente de la que puede proporcionar la fuente de alimentación de 1 amperio.

Hay varias cosas que pueden suceder cuando el servo intenta consumir más energía de la que está disponible. Lo más probable es que una o más de estas cosas estén sucediendo:

  • La salida de la fuente de alimentación (PS) cae, provocando una pérdida de par en el servo. Esto hará que el servo se adhiera hasta que se empuje.
  • La salida PS cae, lo que hace que la electrónica de control en el servo se reinicie.
  • La salida de PS cae, lo que hace que la placa Arduino se bloquee o se reinicie.
  • PS detecta una falla y se apaga. Puede volver a encenderse inmediatamente, o después de un tiempo, o no volver a encenderse hasta que se desconecte y vuelva a enchufar.
  • PS se daña.

La forma sencilla de ver si algo de esto está sucediendo es colocar un o-scopio en la salida de la fuente de alimentación. Mientras tiene el o-scopio fuera, también podría mirar otras señales, como las señales que van al servo. También puede probar con una fuente de alimentación diferente, más potente, pero que es menos informativa.

Hace muchos años, integré un circuito 555 para controlar un servo estándar de Tower Hobbies. En condiciones normales, el servo consumía unos 250 mA en movimiento. Cuando "zumbaba" (inestable), generaba picos de medio amperio y más.

Lo que aprendí: 1. Los servos consumen mucho jugo para girar el eje a través del tren de engranajes. Nunca consideraría conducir un servo estándar desde una fuente de alimentación que no pudiera entregar al menos 1 amperio continuo POR SERVO. 2. Los servos ponen MUCHA basura en sus cables de alimentación. Nunca consideraría conducir un servo estándar sin colocar aproximadamente 250 uF en los cables de suministro, en CADA servo, para inundar la basura (y suministrar la corriente de entrada de arranque).

Los servos con los que he tratado estaban contentos con suministros de 5 V.

Mirando la hoja de datos de Hobbico, como dijo el otro tipo, su servo quiere 700 mA (0.7 A) en movimiento continuo sin carga. Eso es aproximadamente tres veces lo que quiere un servo estándar. Su suministro está clasificado para 1 A. Mi instinto es que su fuente de alimentación no es lo suficientemente fuerte como para suministrar la corriente de entrada del servo y mantener feliz a la placa del procesador. Si su sistema funciona con un suministro de 5 V, cambiaría ese suministro de 6 V, 1 A por un suministro lineal de 5 V, 3 A. (Esos solían estar disponibles casi gratis.) Como mínimo, pondría varios cientos de uF a través de los cables de alimentación del servo.