¿Cómo puedo modificar un servo de hobby de bajo costo para que se ejecute 'libremente'?


15

Tengo algunos servos de hobby ( Power HD 1501MG ) y me gustaría poder controlarlos (a través de un Arduino) para que puedan ir al ángulo que configuré o ponerlos en modo de "funcionamiento libre", donde la carga los llevará a donde sea que vaya.

¿Es esto posible, o voy a terminar desnudando los engranajes?

Mi primer pensamiento es simplemente matar el poder del servo, pero la fuerza requerida para moverlos en ese estado es más de lo que me gustaría.

Si es posible, ¿estoy viendo un cambio de hardware o podría hacerlo en el software?


3
Los servos de hobby no son realmente adecuados para robótica robusta, y los servos de hobby modificados son aún peores. No te gustará lo que obtienes si haces esto. Compre un motor DC con reductor asequible y un pequeño puente H para conducirlo, será mucho más robusto y será mucho más feliz. Puede construir un puente H desde un circuito L298 a muy bajo costo.
Jon Watte

1
Supongo que mi próxima pregunta aquí será '¿qué es un puente h?' (¡Pero probaré google primero!)
Khrob

Respuestas:


13

Lo que estás preguntando no será muy fácil con un servo RC estándar.

Lo que estás pidiendo es un servo manejable hacia atrás. IE uno que puede girar libremente aplicando un par externo. Ciertamente es posible crearlos, y se usan en muchos robots, pero la mayoría de los servos RC requieren un torque considerable para conducirlos. Yo los llamaría semi-backdrivable.

¿Qué te impide volver a conducirlos? Dos cosas:

Fricción: en primer lugar, fricción en la cadena de engranajes y el motor. Los servos RC siempre están orientados hacia abajo; La salida gira más lentamente que el motor. Por supuesto, esto significa que cuando intentas retroceder, tienes que hacer girar el motor muy rápido. Cualquier fricción o engranaje en el motor se sentirá docenas de veces en la salida.

manejabilidad

Actual: algo sorprendente sobre los motores eléctricos es que, si cortas los terminales, se vuelven más difíciles de girar. La rotación del motor genera una corriente eléctrica que funciona contra su rotación. La electrónica dentro del servo podría permitir que fluya suficiente corriente, incluso cuando está apagada, para evitar notablemente la capacidad de retroceso. En el pasado, he notado que algunos motores paso a paso grandes, incluso cuando no están engranados, son casi imposibles de manejar cuando están enchufados a equipos sin alimentación. Pero cuando los desconecta, se pueden girar libremente.

Por lo tanto, una forma de mejorar la capacidad de conducción hacia atrás es evitar el flujo de corriente. La forma obvia de hacer esto es desconectar completamente el motor de su electrónica. Pero esto es difícil de hacer, incluso usando FET, porque los diodos dentro de los FET podrían permitir que fluya la corriente. Sin embargo, podría usar un relé, que realmente desconectaría el motor. Solo tendría que usarlo en uno de los terminales del motor.

ESCONO DE MAXON

Los servocontroladores 'adecuados' (como el ESCON de Maxon) en realidad contienen un controlador de corriente que puede prevenir activamente el flujo de corriente aplicando el voltaje correcto en los terminales del motor. Reemplazar la electrónica en el servo con algo capaz de controlar la corriente realmente podría ayudar.

Lo que debe hacer: abra el servo, suelde el motor y vuelva a armarlo. ¿Qué tan fácil es retroceder ahora? Si es fácil, entonces es posible hacer lo que quieras. Si todavía es demasiado difícil para su aplicación, entonces tendrá que elegir un servo diferente o hacer uno propio. Haga uno con una sola etapa de engranaje para que la fricción del engranaje se reduzca lo más posible, y use la electrónica de accionamiento con un circuito de control de corriente para garantizar un flujo de corriente cero.


La respuesta de SimpleCoder también es excelente.
Khrob

7

Interesante pregunta.

La primera opción que investigaría sería cortar la energía como usted sugirió (tal vez controlar un MOSFET en el software para cambiar la energía).

Otro enfoque más complicado podría ser monitorear el consumo actual del servo para detectar cuándo está bajo una carga pesada. Cuando desee pasar al modo de "funcionamiento libre", haga que su software intente mover continuamente el servo a una posición que genere el menor consumo de corriente. Esto no dará como resultado un servo de "funcionamiento libre", ya que habrá algunos movimientos nerviosos del servo a medida que el software intente encontrar la posición "correcta", pero podría funcionar dependiendo de su aplicación.

No necesitaría modificar sus servos para controlar el consumo de corriente. Una placa como esta de SparkFun se ubicará entre el servo y su fuente de alimentación (necesita una de estas por servo) y emitirá un voltaje analógico (que puede leer en un pin ADC del microcontrolador) que corresponde a la corriente:

ingrese la descripción de la imagen aquí

Imagen de SparkFun


@Khrob: Por favor vea mi edición
Chris Laplante

Bien, ¡ahora he ordenado un montón de esos!
Khrob

@Khrob: Bien, ¡cuéntanos cómo funcionan! (Y por favor no me culpen si no funciona;))
Chris Laplante

@Khrob: Además, tenga en cuenta que dependiendo de qué tan pequeñas corrientes esté midiendo, es posible que necesite un tablero más sensible: sparkfun.com/products/8883
Chris Laplante

1
¡Comenzaré barato y subiré!
Khrob

5

Por lo general, estos tipos de servos de pasatiempo no están hechos para una rotación continua, y a menudo incluirán una parada mecánica. Tenga en cuenta que lo que describo a continuación es una forma infalible de nunca obtener una operación de bucle cerrado real, sino que hará que el servo sea solo continuo.

La mayoría de las veces, puede hacer una búsqueda rápida en línea de "Modificación continua para el servo x", pero aquí esbozaré el proceso general.

  • Determine si el servo tiene una parada física. Si lo hace, tendrá que abrir el servo y quitarlo (recomiendo la herramienta Dremel).
  • Luego, desea encontrar el "centro" del mecanismo de retroalimentación.
    • Conecte el servo a su Arduino y envíe un comando "central" (generalmente PWM 127).
    • Encuentre el mecanismo de retroalimentación (generalmente un potenciómetro) y recórtelo hasta que el servo no se mueva en absoluto.
    • Pegue el potenciómetro en su lugar o mida la resistencia y reemplace el potenciómetro con una resistencia de valor establecido.
  • Vuelva a armar el servo.

Ahora, enviar un comando "central" al servo debería evitar que se mueva, mientras que enviarle un comando positivo o negativo debería hacer que gire continuamente en una dirección u otra. La velocidad de rotación debe ser proporcional a la "distancia" desde el centro del comando enviado.

Si desea restaurar la operación del servo a su servo recién modificado, puede agregar algún tipo de codificador para volver a cerrar el bucle.

Alternativamente, es posible que desee ver el servo de la serie Dynamixel , que permite la operación continua y servo, e incluye algo de soporte Arduino.


Estoy de acuerdo con que haya un límite mecánico para el movimiento, ¡pero esta sería una buena manera de extenderlo aún más para tener una grieta en una configuración de péndulo invertido! He visto las cosas de Dynamixel, y es muy bueno, pero más $$ de lo que espero gastar en esto.
Khrob

Mi impresión fue que el OP quería comenzar algo en movimiento conduciendo un servo y luego dejarlo "encallar" sin energía hasta que naturalmente se detenga por inercia. No conozco ningún diseño de servo (continuo o no) que permita que ocurra este efecto.
Crake el

@ Crake, estoy de acuerdo, creo que respondí la pregunta equivocada, pero dejaré esto, ya que ya hice el trabajo: p. IIRC, los servos Dynamixel deben tener una configuración de "costa".
mjcarroll

@mjcarroll Sí, creo que es útil tener una mención de cómo modificar un servo para la rotación continua, ya que es una tarea común para proyectos de robots baratos. Tengo curiosidad por saber si los servos Dynamixel usan el algoritmo de medición de corriente descrito en la respuesta de SimpleCoder, buscando constantemente minimizar la corriente ajustando PWM, o si tienen un embrague físico para desconectar el servomotor del eje de transmisión.
Crake el

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.