miércoles, 15 de octubre de 2014

Otro driver de servo


Hace ya unos meses, publiqué aquí (algo más que un inventillo) un circuito que permitía manejar servomotores de aeromodelismo. El circuito estaba hecho para manejar cuatro servos, con objeto de aprovechar mejor algunos de los circuitos integrados, que eran de tipo cuádruple.

Sin embargo, algunas personas que lo probaron me sugirieron que debería ser posible ajustar la velocidad de giro. Es curioso que los que me lo decían pensaban que debía ser fácil modificar el circuito para conseguirlo. Sin embargo, en cuanto se explica  cómo funcionaba ese circuito, queda claro que conseguir una velocidad variable no era posible.

El circuito generaba dos señales, la correspondiente al ángulo inicial y al ángulo final, alternativamente, según recibía la orden de situarse en un extremo o en el otro. Por lo tanto estando el servo en un extremo, al recibir la orden de cambio el circuito cambiaba instantáneamente la señal a la correspondiente al otro extremo. En respuesta a ese cambio de orden el servo giraba hacia la nueva posición, pero lo hacía todo lo rápido de que era capaz, puesto que la orden de cambio había sido instantánea. Por lo tanto la velocidad de movimiento dependía exclusivamente de lo rápido que fuera capaz de girar el servo, y no del circuito. De hecho un servo se considera que es de mejor calidad cuanto más rápido se mueva.

Por el contrario, si queremos que un servo se mueva más despacio, lo que hay que hacer es ir generando sucesivamente la señal correspondiente a una serie de posiciones intermedias, de manera que el servo se vaya moviendo al ritmo que va cambiando la señal. Queda claro que hacer esto, es decir, generar una serie de señales  para por ejemplo 100 posiciones intermedias, y hacerlo a un ritmo determinado, que se pueda ajustar, para que la velocidad de movimiento se pueda variar, es algo totalmente distinto que generar solo dos señales y cambiar de forma instantánea de una a otra, y parece que es mucho más difícil.

Yo estaba convencido que la única forma práctica de hacer eso era mediante un microcontrolador. De hecho, los driver de servo con velocidad ajustable que yo conozco están basados en microcontroladores,

Sin embargo, cuando hice un controlador con simulación de inercia (PWM05I) expliqué que se podía utilizar un potenciómetro digital como el DS1804 para automatizar un sistema que normalmente manejamos con un potenciómetro manual. En aquél proyecto, se utilizaba para controlar la velocidad de los trenes con un controlador PWM, y he pensado que el caso de los servos es análogo, porque si podemos hacer un driver para mover un servo con un potenciómetro manual, también podemos automatizar el movimiento con un potenciómetro digital.

Efectivamente, el sistema funciona, y no solo permite variar la velocidad de giro y la amplitud de giro del servo, sino que el circuito resulta sorprendentemente sencillo. Sólamente dos chips resuelven todo el tema.


He hecho un primer prototipo para probar el concepto y el resultado es el que vemos en la imagen de cabecera. La verdad es que me arriesgué demasiado encargando la fabricación de una placa de PCB, y luego he tenido que chapucear un poco en ella, como se ve en la imagen, pero ya tengo el diseño terminado, asi que me tocará encargar alguna nueva placa con las modificaciones derivadas de esta prueba.

Pero lo interesante, lo tenemos en el vídeo siguiente: 



Como se puede ver, el circuito funciona perfectamente, y eso que la prueba está hecha con un servo bastante malo. Voy a ver si me hago con uno más decente.

Como se ve en el vídeo, el circuito se maneja mediante pulsadores, es decir exactamente el método estándar para manejar desvíos. La alimentación es por corriente "de accesorios" y podría ser alterna o continua de entre 12 y 16 voltios.

Además se ven unos conectores no usados en la placa, de los cuales uno es para señalización por leds en un cuadro de control y el otro es un conmutador que puede usarse por ejemplo para la polarizacion del corazón de los desvíos.

Hay dos controles de ajuste, uno para la velocidad del giro, y el otro para ajustar la amplitud del movimiento.

Como decía antes, el circuito se basa en el potenciómetro digital DS1804 que es desplazado en un sentido u otro mediante pulsos generados por un circuito NE555. A su vez. la resistencia variable del potenciómetro sirve para cambiar la anchura de pulsos de un segundo NE555 que es el que genera los pulsos que controlan el servo. Los dos NE555 en realidad comparten un único chip NE556, asi que solo hay dos integrados, el potenciómetro y este temporizador doble.

Asi que la parte esencial del circuito es esta:



Espero que algún lector le pueda sacar utilidad a este circuito, ya que al conseguir un movimiento tan lento se pueden manejar por ejemplo barreras de pasos a nivel, portones de cocherones, etc. Por supuesto también desvíos, que se moverán con una "elegante lentitud" aunque posiblemente esto no sea muy realista, porque en realidad los desvíos motorizados del tren real, se mueven bastante rápidamente.


No hay comentarios:

Publicar un comentario en la entrada

Gracias por expresar tus opiniones.

Los comentarios aparecerán en el blog normalmente en unos pocos segundos