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?
Respuestas:
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.
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.
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.
fuente
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:
Imagen de SparkFun
fuente
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.
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.
fuente
No, en cambio, consiga algunos motores decentes y conduzca a través de un puente h como lo encontrará en este escudo de motor .
fuente