fbpx

Foros

Avisos
Vaciar todo

Sincronizar servos opuestos

Página 1 / 2

isotopo
Respuestas: 113
Registrado
Topic starter
(@isotopo)
Ardero estimado
Registrado: hace 15 años

Tras estudiar el comportamiento de un servo de rotación continua (trucado) me doy cuenta de que el giro hacia un lado es diferente que al otro, es decir, varía ligeramente tanto la zona muerta como la curva de aceleración y por tanto no tiene un movimiento simétrico.

Eso quiere decir que si colocamos 2 servos de forma opuesta, por ejemplo los que están en el mismo eje de tracción, no pueden controlarse de la misma forma y debe ser bastante dificultoso el sincronizar el movimiento de las dos ruedas.

Este "defecto" también lo he detectado con servos sin trucar al hacer dos hombros, teniendo en cuenta que la zona central es de 1,5ms de pulso, si envío 2ms, no sirve envíar 1ms para realizar una acción simétrica con el servo opuesto, no concuerda exactamente.

¿Cómo se soluciona este problema?.

Responder
9 respuestas
acicuecalo
Respuestas: 652
Registrado
(@acicuecalo)
Ardero honorable
Registrado: hace 17 años

Solución sencilla : Como tampoco creo que necesites 100 intervalos de velocidad diferentes, puedes hacerlo con 5 ó 6 para cada sentido y así será tan fácil como crear una tabla tipo "lookup" y asignar un PWM a cada velocidad. Después de eso, puedes buscar, por ejemplo, que PWM corresponde a cada punto de velocidad y ¡ya está!

Si necesitas más precisión y suavidad en la velocidad, yo lo solucionaría parametrizando los servos y creando una tabla con diferentes anchos de pulso y midiendo la velocidad real en cada punto, después con eso determinaría una función matemática con la que calcular el PWM necesario para una determinada velocidad y así poder aplicar el factor de corrección de velocidad necesario para cada servo.

Otra solución, aunque más complicada (pero la más efectiva) sería dotar a cada servo de un encoder que permitiera al control recibir la velocidad real de rotación, por medio de un lazo local cerrado crear una realimentación y permitir que el controlador ajuste por medio de un programa la nueva demanda de velocidad (o posición). Este sistema, para ser realmente eficaz, necesitará de unos algoritmos del tipo de control proporcional integral derivado (PID) muy usados en controles industriales, que quizás no te resulte nada fácil de ajustar e implementar.

Responder
isotopo
Respuestas: 113
Registrado
Topic starter
(@isotopo)
Ardero estimado
Registrado: hace 15 años

La última solución descartada para mí con mis limitados conocimientos de electrónica.

La primera solución me viene mejor como programador, hacer un estudio de unas cuantas velocidades, a ser posible al menos 10 y su correspondiente tabla. Aunque no me acaba de gustar del todo, si no encuentro nada mejor será lo que haga.

De todos modos me choca un poco que no haya algún invento o solución práctica en este sentido. Me parece muy interesante el poder por ejemplo mediante la misma señal controlar las 4 ruedas.

¿No se podría hacer algo en la electrónica más sencillo de lo que has mencionado anteriormente?, como por ejemplo invertir las patillas del potenciómetro, la polaridad del motor, ...o yo qué sé. ¿se os ocurre algo?

Responder
boops
Respuestas: 1813
Socio
(@boops)
Ardero noble
Registrado: hace 17 años

isotopo, no lo he probado pero si la reductora es la mima
con cambiar la polaridad del motor y invertir los extremos del potenciometro deberia ser "simetrico" y seguramente ese fallo venga dado por el propio ponenciometro al no ser lineal... En fin no cabilemos, pruebalo y nos cuentas 😀

PD: yo monte hace poco un robot con 2 servos y mas o menos andaba rectito :S

Responder
acicuecalo
Respuestas: 652
Registrado
(@acicuecalo)
Ardero honorable
Registrado: hace 17 años

BoOpS, lo que comentas es cierto y funciona a la perfección, eso lo usé yo en una articulación de un robot que tenía dos servos enfrentados para doblar el par motor. Para eliminar el problema de los desajustes entre servos, usé un sistema de acoplamiento elástico por medio de unos tornillos rodeados de una especie de pequeños "silent-blocks" que absorbían las pequeñas diferencias.

Con respecto a lo que dice isótopo, se me acaba de ocurrir una idea que quizás funcione, y consiste en lo siguiente:
Para un servo modificado para rotación continua, en condiciones óptimas de ajuste, si enviamos un pulso continuado de 1500 microsegundos, con el potenciómetro de control de posición desacoplado mecánicamente y perfectamente centrado, tendríamos que tener el servo estático (parado), entonces la idea consiste en utilizar ese potenciómetro para crear un pequeño desfase o desajuste forzado para corregir las diferencias entre los dos servos.
Aunque yo he notado que los servos modificados para rotación contínua utilizando la electrónica del servo no son 100% estables y su punto neutro puede variar con las temperatura ambiente por ejemplo, y entonces es preciso andar haciendo pequeños ajustes en sus potenciómetros para que todos los motores se sincronicen.
Esto lo he experimentado mucho en la base robot de tracción a las 6 ruedas que hice con la bandeja de una caja de herramientas:
http://www.webdearde.com/modules.php?na ... fullsize=1

Responder
Página 1 / 2
Compartir: