ESTE BLOG COMENZÓ A PUBLICARSE EN 2008, POR LO TANTO MUCHOS DE LOS TEMAS HAN QUEDADO DESACTUALIZADOS U OBSOLETOS. LOS LECTORES QUE DESEEN UTILIZAR ALGUNO DE LOS ELEMENTOS AQUI DESCRITOS DEBERÏAN ASEGURARSE DE BUSCAR LAS REFERENCIAS MAS MODERNAS DE LOS TEMAS DE SU INTERÉS. EL BUSCADOR INCLUIDO SERÄ UNA AYUDA PARA ESA BÚSQUEDA

miércoles, 14 de abril de 2021

Más sobre servos (y II)

 


En el artículo anterior, hemos llegado a un circuito que puede controlar un servo, llevándolo de un extremo a otro, mediante un conmutador de dos posiciones, y pudiéndose ajustar el ángulo de recorrido y la velocidad del giro mediante dos potenciómetros de ajuste. 

Pero tenemos dos temas más, que corresponden más bien a la tecnología del modelismo ferroviario que al del movimiento del servo en si: el primero es sencillamente que todo este circuito funciona a 5 V porque los servos funcionan a esta tensión. Sin embargo 5 V es una tensión no habitual en sistemas de trenes, que según las escalas Z, N o H0 usan tensiones de 10 V 12 V o 16 V para mover los accesorios, como los desvíos. Bueno, la solución a esto es incluir en el controlador de servos un circuito regulador de tensión , un 7805 que nos da una salida a 5 V para que funcione todo nuestro circuito, a partir de cualquiera de esas tensiones usuales en las maquetas de trenes.

La segunda cuestión es un poco más rebuscada. Hemos creado un sistema que maneja los servos, y por lo tanto los desvíos con un conmutador de dos posiciones, de manera que moviéndolo a una u otra posición manejamos el correspondiente desvío, y la propia posición del conmutador nos informa de la posición del desvío en todo momento. Esto está muy bien y de hecho muchos aficionados desean algo así de sencillo incluso para desvíos manejados por los habituales motores de desvío de dos bobinas. 

Pero el problema es que no es lo standard en la tecnología del modelismo ferroviario. Lo que se usa en cambio, cuando tenemos desvíos con motores de bobinas, es que para moverlos se envía a estas bobinas un único pulso, que mueve el desvío en una u otra dirección, según el pulso se haga llegar a una u otra bobina. Estos pulsos se producen mediante pulsadores momentáneos en las habituales botoneras que proporcionan las marcas, o con pulsadores de electrónica, o también mediante conmutadores, pero que este caso son de tres posiciones y quedan en posición central cuando han movido el desvío, por lo que no queda una indicación de cómo está el desvío. El problema de salirse del standard estriba en que los desvíos no solamente pueden ser manejados manualmente sino mediante sensores de paso, por ejemplo sensores Reed o Hall, vías de contacto, etc, y todos estos elementos producen un pulso de corta duración cuando una locomotora pasa sobre ellos. 

Y ,¿no podemos convertir esos pulsos en una conmutación que quede permanentemente en una u otra posición? Si podemos, y por ejemplo se usa este sistema cuando queremos poner leds de señalización a un desvío de bobinas. Si con el pulso actuamos sobre un circuito de los llamados de enclavamiento, el circuito se "enclava " en una posición y permanece así hasta que recibe otro impulso que lo enclava en la posición contraria. Es exactamente lo mismo que un relé de enclavamiento (o biestable) pero funcionando electrónicamente. Los chips que hacen esto se denominan "latch" (cerrojo en ingles) y fueron discutidos aquí largamente en el artículo  Circuitos sencillos y siguientes

Entonces lo que he hecho es poner un circuito integrado adicional de tipo latch, concretamente un  CD4044 y conectar las entradas de las señales (que vienen de los pulsadores o de los sensores Reed, etc) a las entradas de este circuito y a la salida de este circuito se conecta el terminal U/D del integrado.  Realmente un circuito 4044 tiene cuatro canales y aquí solo necesitamos uno para conseguir controlar el servo, así que este circuito queda bastante desaprovechado. Lo que he hecho, por no dejarlo así es utilizar las salidas sobrantes para poner salidas que enciendan leds de señalización.

En el esquema adjunto vemos este circuito 4044 conectado a las entradas J6 y J7  y produciendo en sus salidas la señal I/O que es la que activa el potenciómetro digital, y las señales SIGNAL y BEAM. La primera va a las bornas de salida para conectar los leds de señalización, que irán en el cuadro de control

La señal BEAM es una salida adicional  que lleva un chip de intermitencia M34-2L  para conectar uno o más  leds que sirven para iluminar las balizas de aviso en los pasos a nivel. Realmente hay leds que ya de por si son intermitentes, pero son difíciles de encontrar y creo que no los hay en SMD. Si este fuera el caso este circuito proporcionaría la señal intermitente.

Con todo esto, construí el prototipo del circuito DRVSERVO que se veía en el correspondiente artículo de este blog. 

Como suelo hacer con los últimos desarrollos, ofrecí a mi "socio" la posibilidad de distribuir este producto para que él decidiera si le resultaba interesante ponerlo a la venta. Después de una "investigación de mercado" me confirmó que efectivamente los potenciales clientes los veían interesantes, como alternativa a la "solución Arduino" pero casi todos preguntaban que cuántos servos podía manejar el circuito. Seguramente esto es una reminiscencia de Arduino, al que efectivamente se pueden conectar varios servos, pero en este caso, no tiene mucho sentido, porque para manejar otro servo lo que habría que hacer es reproducir otro circuito igual y así cuántos queramos poner en una sola placa. pero no hay ninguna ventaja respecto de tener tantos cuántos de estos drivers para un solo servo como se quiera.

Pero aquí entran dos temas que llamaríamos "comerciales": Por un lado, si los clientes lo comparan con Arduino y éste ofrece la posibilidad de conectar varios servos, hay que hacer algo para ofrecer esa misma posibilidad. Por otra parte, uno de los elementos de coste más importantes de estos productos son las placas de circuito impreso, que son fabricadas bajo pedido. Y lo que ocurre es que una placa por ejemplo donde quepan cuatro circuitos, es solo ligeramente mas cara que una donde cabe uno, de manera que comparando con cuatro placas para un circuito cada una, casi se cuadruplica el coste.

Otro tema de índole "comercial", es el tema de las bornas de conexión.  Yo siempre pongo en mis circuitos bornas de tipo clema, es decir bornas en las que simplemente se introduce el cable pelado, y se sujeta apretando un tornillo que lleva cada borna. Utilizo este tipo, porque entiendo que es un sistema que no necesita usar soldadura ni crimpadora, ni ningún otro sistema o herramienta más que un destornillador, de manera que cualquier aficionado con poca experiencia los puede conectar. Sin embargo este tipo de bornes son francamente caros, sobre todo si se utilizan de buena calidad y no los típicos chinos.

Sin embargo Arduino utiliza conectores de tipo "Tira de pines" también llamados "Conectores Dupont". Estos conectores son mucho más simples y desde luego mucho más baratos, pero obligan al usuario a colocar en el cable que quiere conectar, un terminal del mismo tipo  y que necesita una herramienta especial, la llamada crimpadora para unir cada cable a cada pin. Como decía antes, las clemas las pone cualquiera, pero los conectores de pines requieren una cierta experiencia. Sin embargo aquí hay que suponer que este producto es ya para un aficionado de un cierto nivel, que además lo compara con Arduino, y que además va a conectar un servo que lleva ya conectores de este tipo. Aunque realmente el conector de lo servos es hembra, así que se necesitarían conectores macho en el circuito, pero he preferido usar conectores hembra en la placa, y dejar que para conectar el servo se use un cable macho-macho. Esto es lo que se hace con Arduino, y parece que nadie se queja. También se ve muchas veces que se utilizan estos conectores hembra para recibir los terminales de los cables que se usan para crear circuitos en las protoboards.

Otro cambio respecto del prototipo ha sido suprimir los leds que se encendían y apagaban en la propia placa del circuito para indicar la posición.   El motivo es que los servos y en consecuencia los drivers están normalmente en lugares ocultos, de manera que esos leds no se verían, Lo que si se mantiene evidentemente, es la conexión para conectar unos leds mediante cables que se llevarían normalmente a un tablero de control

La conclusión de todas estas consideraciones ha sido: Crear dos versiones del driver: Una para un servo y otra pasa cuatro servos. En la de cuatro servos se mantiene la independencia de los cuatro circuitos de cada servo, excepto por el control de la velocidad que es común para los cuatro. De esta forma, contando con este control común, aprovechando las cuatro vías de un único circuito 4044 y por supuesto una única alimentación se obtiene un driver para cuatro servos solo un poco más grande y solo algo más caro que la versión para un servo. Todas las conexiones serán mediante conectores de pines hembra, excepto la alimentación.

En la imagen de portada de este artículo se pueden ver las dos versiones del controlador, para uno y para cuatro servos.

La versión para un solo servo DRVSERVO, parece más apropiada para quien quiera motorizar un paso a nivel (no es habitual encontrar varios pasos a nivel motorizados en una maqueta) y por eso se ha mantenido con el chip de intermitencia para las balizas.

En cambio la versión de cuatro servos MULTISERVO, parece más apropiada para el manejo de desvíos, ya que lo habitual es que haya varios desvíos a mover en cada maqueta, y no lleva salidas para intermitentes

Estas diferencias no son esenciales: se puede utilizar perfectamente un DRVSERVO para mover desvíos y uno de los cuatro servos de un MULTISERVO para un paso a nivel. 

A continuación se puede ver el siguiente video, que muestra el funcionamiento de ambos controladores. Realmente se parece mucho al video DRVSERVO que incluía en el artículo DRVSERVO. Sin embargo en este nuevo vídeo aparece ya la versión definitiva del DRVSERVO y también aparece el nuevo sesarrollo MULTISERVO.



Observarán los habituales de este blog, que he roto mi costumbre de titular los videos en YouTube con la simple referencia del dispositivo que se está describiendo, lo que en este caso hubiera llevado a titularlo sencillamente "DRVSERVO".

Sin embargo, el orto día me puse a repasar YouTube para ver si encontraba algún dispositivo similar para mover los desvíos, pero lo único que obtuve fué una larga lista de videos en los cuales se empleaba casi de forma unánime Arduino.  Sin embargo, esa búsqueda me dio la idea de que si yo subía un video titulado DRVSERVO nadie lo iba a encontrar, y de hecho, todos los que me aparecían, llevaban títulos descriptivos bastante largos, y, cómo no, incluían la palabra Arduino.

Curiosamente encontré uno que se anunciaba como "sin Arduino" asi que pensé que había encontrado un competidor (o un aliado, porque esto ya parece una guerra).  La verdad es que lo que ví en ese video estaba muy verde, y no me convenció en absoluto, pero si me dio la idea de que debería nombrar mis vídeos con títulos más descriptivos, para que aparezcan con más facilidad en las búsquedas de YouTube.

Y dicho y hecho: este vídeo se llama: CONTROLADOR DE SERVOS PARA DESVIOS SIN ARDUINO

Asi que por mi que no quede: Titulo largo, descriptivo y con la inclusión de la palabra Arduino como clickbait


lunes, 15 de marzo de 2021

Más sobre servos (I)


Pulsar dos veces para arrancar el video

En dos artículos recientes (Motorizacion del paso a nivel fe FALLER 282730) y (DRSERVO), comentaba que, con motivo de la necesidad de aplicar un servo para mover las barreras del paso a nivel, había retomado un tema que ya traté hace unos cuantos años (2014) y me puse a trastear con los servos y sobre todo con los circuitos que sirven para controlarlos, los llamados drivers de servo, y al final diseñé un nuevo circuito capaz de manejar uno de estos servos, y lo apliqué en el paso a nivel de FALLER.

En los citados artículos, mencionaba que aunque la mayoría de los aficionados recurren a un Arduino como driver, a mi me parecía excesivo utilizar estos elementos que en definitiva actúan como un pequeño ordenador.

Parece que algún lector no está de acuerdo con mi opinión y me dice que para qué meterse a diseñar y montar un circuito especial, cuando el Arduino ya nos lo da resuelto.

Esa frase me ha recordado inmediatamente un artículo (Y.D.I.Y?) donde comentaba un artículo leído en un foro americano, donde su autor explicaba que cuando él hacía uno de sus desarrollos y funcionaba, siempre salía el compañero de turno con el comentario de porqué hacerlo cuando lo puedes comprar hecho. En su artículo este compañero de afición, comentaba la satisfacción nunca antes conocida que le proporcionaba diseñar y construir un dispositivo que funcionaba igual o mejor que el sistema comercial equivalente y que probablemente es incluso más barato.

Pero además en este caso, si he podido diseñar algo que permite manejar servos de un modo más sencillo, lo más probable es que acabe por poder ser adquirido, (aunque yo ya no vendo mis diseños, hay un compañero que los comercializa) por cualquier aficionado que no quiera verse en la necesidad de emplear un Arduino. No olvidemos que Arduino es un microordenador, que por lo tanto necesita ser programado, y aunque se diga que los programas para manejar servos están accesibles en Internet no se evita tener que bajarlos, cargarlos, etc. Y  si se quiere modificar algo, vuelta a tocar el programa (el que sepa hacerlo) a cargarlo, etc. Mi propuesta es un circuito analógico, que no hay más que conectarlo y empieza a funcionar. "Plug and Play" que se dice.

Supongo que se puede pensar que un circuito analógico que sustituye a un Arduino, debe ser algo muy complicado, porque no olvidemos que un ordenador, por sencillo y compacto que sea, es algo muy complejo. La respuesta a eso es que naturalmente depende de lo que queramos hacer con el servo, y que desde luego para una utilización sencilla el circuito es elemental, pero incluso para hacer algo que maneje todas las posibilidades de un servo solo se requiere añadir un poco más de electrónica. El que quiera convencerse no tiene más que seguir leyendo.

La imagen anterior muestra todo lo que se necesita para manejar un servo. Hay un circuito integrado, posiblemente el circuito integrado más popular, el NE555, cuatro resistencias, tres condensadores y dos diodos. Para controlar el servo añadimos el potenciómetro RV1 de 100K y vemos a la derecha el servo representado como un círculo que lleva en la parte inferior el indicador de su posición. Con este sencillo montaje alimentado por Vcc 5 Voltios, ya podemos hacer funcionar el servo de forma semejante a como lo haría un aeromodelo o un barco de radiocontrol.  Según la posición del cursor del potenciómetro el servo se pone en el ángulo que corresponde a esa posición.  De hecho este circuito le vale perfectamente a todo aquél que quiera un "probador de servos".



Por si a algún incrédulo le parece inverosímil, que solamente con ese circuito tan sencillo se pueda manejar eficazmente un servo, he incluido un vídeo que recoge la imagen de pantalla del programa Proteus mientras se hace funcionar en simulación el circuito anterior. La imagen incluye un osciloscopio virtual donde podemos ver la señal que llega al servo. Al funcionar vemos que según se mueve el cursor del potenciómetro arriba y abajo, el servo gira en un sentido o en otro, e incluso que si dejamos el cursor en puntos intermedios el servo se queda también en un giro intermedio. También vemos que la acción sobre el servo consiste en una señal de 27 o 28 Hz (se ve en el frecuencímetro bajo el osciloscopio) compuesta por pulsos cuya anchura varía de 1 ms a 2 ms y según sea esa anchura, así se ajusta la posición del servo.

Y en nuestra afición, ¿nos vale esto tan sencillo?  Lo habitual en modelismo ferroviario es utilizar los servos para mover los desvíos, y también se usan para mover las barreras de los pasos a nivel, las puertas de cocheras, para hacer girar grúas de carbón o grúas de agua, etc. Lo malo de este montaje es que para mover el servo tenemos que girar a mano el potenciómetro, y esto hará girar el servo, pero eso va muy bien por ejemplo para hacer girar una grúa , o incluso para cerrar o abrir puertas, pero no es práctico para mover desvíos o barreras. En estos casos se requiere que el servo adopte dos posiciones determinadas (desvio recto o desviado, barreras levantadas o bajadas etc) pero sin detenerse nunca en posiciones intermedias.

Bueno, si aceptamos que esas dos posiciones extremas deben coincidir con el equivalente a llevar el mando del potenciómetro a un extremo o a otro, podemos sustituir el potenciómetro por un conmutador de dos posiciones. Poniendo en lugar del potenciómetro una resistencia del mismo valor 100K el conmutador hace lo mismo que el giro del mando a un extremo y al otro. 


En realidad, es casi más sencillo así, y en principio es lo que necesitamos. Sólo con esto ya podemos utilizar este circuito para controlar un desvío, o las barreras de un paso a nivel. Con el conmutador SW1 en una posición, el servo estará completamente en un extremo y cambiando el conmutador a la otra posición, el servo se moverá hasta la posición opuesta. Nadie podrá decir que no es ésta una solución sencilla y barata.

Pero una cuestión interesante es esta: Con el mando del potenciómetro, cuando lo giramos más o menos deprisa, el servo sigue ese movimiento a la misma velocidad y si dejamos el mando en cualquier punto, el servo se quedará también en la correspondiente posición intermedia. Pero con el conmutador esto no ocurre, sino que estando en una posición, al accionar el conmutador el servo se encuentra con que la señal que le llega corresponde al extremo opuesto, sin pasos intermedios. En teoría debería cambiar instantáneamente. Sin embargo un servo tiene una velocidad limitada y lo que hace es moverse a esa velocidad, que es la mayor que puede alcanzar, hasta llegar al extremo opuesto. De hecho se considera que un servo es tanto mejor cuanto más deprisa es capaz de moverse, pero en todo caso es la velocidad de que es capaz el servo la que marca la velocidad a la que se mueve, y por lo tanto si estamos moviendo un desvío, poco podemos hacer para conseguir que se mueva más deprisa o más despacio.

En realidad los aficionados al modelismo ferroviario prefieren que sus desvíos se muevan con lentitud, y también las barreras y los demás elementos. Así que preferirían un movimiento lento de los servos, más lento que lo que se consigue con el montaje anterior.

Lo que realmente sería perfecto, es que el sistema permitiera hacer que el movimiento se pueda regular en dos aspectos: por un lado que se puedan marcar los extremos de desplazamiento del servo, de manera que no gire siempre 180º completos sino que podamos graduar el alcance del giro, y por otro lado que pudiéramos variar la velocidad de giro, para conseguir movimientos verdaderamente lentos de los desvíos.

Afortunadamente esto es perfectamente posible complicando un poco el circuito de control. El cambio más sencillo es el del alcance del ángulo de giro, ya que basta para conseguirlo modificar el valor de la resistencia R1  El valor de 71K que aparece en el esquema es un valor extraño, pero es el que produce exactamente el giro de 180º justos Un valor inferior haría que el servo tendiese a girar más, pero como no puede hacerlo, no pasa nunca de su tope. Sin embargo un valor superior, si que limita el giro, de modo que con 150K el servo no llega a moverse. Así que una solución facilísima es añadir un potenciómetro de 100K de ajuste, en serie con esa resistencia, y con ello la resistencia de esa rama se podrá ajustar entre los 71 K y los 171K lo que consigue desde un giro máximo, de 180 grados, hasta un mínimo prácticamente nulo.  Conseguir tener este ajuste es muy importante porque cuando se ponen las bielas y transmisiones que mueven los desvíos, hay que conseguir que el movimiento se ajuste al recorrido que tengan que hacer los espadines, y si el servo se intenta mover más, se forzarán estas transmisiones.

Y ¿podemos hacer algo con respecto a la velocidad? Realmente en el primer esquema, cuando mandábamos el giro con un potenciómetro, la velocidad de giro podía ser la que quisiéramos, pues basta girar más o menos lentamente el mando. Pero claro, no es cosa de estar moviendo un montón de potenciómetros lentamente para conseguir un movimiento lento de los desvíos. Necesitamos unos deditos mágicos que muevan lentamente ese potenciómetro por nosotros, a la velocidad que queramos. Curiosamente esto es posible, y la verdad es que yo ya he usado esos deditos mágicos en todos los controladores que he desarrollado que llevan control de inercia. Y es que el problema es el mismo: en un controlador normal, sin inercia, nosotros movemos el regulador de velocidad más o menos lentamente para acelerar o frenar más o menos rápido, pero en un controlador con inercia, la velocidad aumenta o disminuye lentamente, y con mayor o menos rapidez según ajustemos el mando a una inercia menor o mayor. De nuevo es como si esos deditos mágicos se encargasen de mover más o menos rápidamente el control de velocidad.

Bueno el secreto está en lo que se llama un potenciómetro digital, como el DS1804-100 que se ve en todos mis controladores con simulación de inercia.  El nombre puede ser un poco confuso, pero que quede claro que esto no tiene nada que ver con los sistemas digitales para el manejo de trenes.


En la imagen precedente vemos que toda la parte derecha, sigue igual,  y se ha incluido el potenciómetro de ajuste de 100 K, identificado como RANGE para permitir modificar el alcance del giro, tal como decíamos anteriormente.

Pero, donde antes hubo un potenciómetro manual de 100K ahora hay un potenciómetro digital también de 100k marcado como U1. Si nos fijamos la parte derecha de este chip lleva tres terminales marcados como H W y L (Hight, Wipper y Low) que corresponden exactamente a las tres patillas de un potenciómetro, siendo la W la del cursor, y las otras dos las de los extremos de la pista. 

Para "mover" ese potenciómetro tenemos los tres terminales de la izquierda de los cuales el central CS está unido a tierra y es simplemente para activar o desactivar el dispositivo. Por el terminal superior INC tiene que recibir un tren de pulsos de la frecuencia que queramos. Cada vez que recibe un pulso el "cursor" de este potenciómetro sube o baja una centésima parte de la resistencia total, así que como en este caso es de 100 ohmios subirá o bajará un ohmio. Es como si en un potenciómetro manual moviéramos el mando una centésima parte de su recorrido.

Y el tercer terminal U/D (Upper / Down) hace que esos saltos sean hacia arriba o hacia abajo.  De manera que si el terminal U/D es positivo por cada impulso que llegue por INC el cursor se mueve un ohmio hacia arriba, y si es U/D es negativo se mueve un ohmio hacia abajo. Con eso, el conmutador SW1 actúa como en el segundo esquema. es decir, en una posición conecta U/D al positivo y por lo tanto con cada pulso que llegue el cursor irá subiendo, y si ponemos el conmutador hacia abajo con cada pulso que llegue el cursor baja hasta llegar abajo. 

Lo fundamental de esto es que el cursor sube o baja al ritmo que le marcan la llegada de pulsos por el terminal INC, de manera que si llegan muy rápido enseguida subirá o bajará el cursor y por lo tanto el giro del servo será rápido, Por el contrario si el ritmo es más lento, el servo se moverá más despacio. En definitiva que de la frecuencia del tren de impulsos que llega por  INC depende  la velocidad a la que se mueve el servo. Por ejemplo si la frecuencia es 20  llegarán 20 pulsos por segundo, así que en 5 segundos, el servo se moverá de extremo a extremo, y si llegan por ejemplo 10 pulsos por segundo, el servo se moverá de extremo a extremo en 10 segundos. Etc

Nótese que los pulsos no dejan nunca de llegar, así que el cursor llega siempre al extremo superior o al inferior y nunca se para en posiciones intermedias. Cuando llega a uno de los extremos los pulsos que siguen llegando se ignoran, hasta que U/D cambie de signo.

O sea, es lo mismo que el segundo esquema, en cuanto a que tenemos un conmutador y moviéndolo a uno y otro lado el servo pasa de un extremo a otro, pero ya no lo hace a la máxima velocidad que permite el servo, sino al ritmo impuesto por la frecuencia de los pulsos que llegan a INC. También, al decir de extremo a extremo, ya no es obligatorio que estos extremos estén separados 180º, sino que podemos ajustar el ángulo deseado con potenciómetro RANGE.

Necesitamos por lo tanto añadir a este circuito, algo que genere unos pulsos con una frecuencia que podamos ajustar. Afortunadamente esto es también muy sencillo y se basa también en un NE555. Además como ya teníamos un N555, podemos usar un integrado NE556 que es como dos NE555 en la misma cápsula. Se ahorra espacio, pero ambos son independientes y de hecho en los esquemas aparecen como dos chips independientes.

La imagen adjunta, recoge el circuito que puede generar un tren de impulsos de una frecuencia variable. El potenciómetro de 100k identificado como SPEED permite ajustar esa frecuencia en límites amplios. Como comentaba, este circuito es un viejo conocido para mi, porque es el que hace aumentar o disminuir la velocidad a un ritmo mayor o menor en los controladores con simulación de inercia. De hecho en ellos las frecuencias utilizadas son más bajas, ya que se puede llegar a que el potenciómetro digital tarde más de un minuto en pasar de extremo a extremo. Aumentando el valor del condensador C1 se puede llegar a frecuencias muy bajas. Nótese que la salida de este circuito se identifica como "CLOCK" que es efectivamente la señal que recibe el potenciómetro digital por la entrada INC en el esquema anterior.

Pues con esto ya tenemos todo: Un circuito que es capaz de manejar un servo moviéndolo de un extremo a otro al accionar un conmutador, y con la posibilidad de ajustar el ángulo de giro y la velocidad del giro. Respecto de lo que podemos conseguir de un servo ya no hay más posibilidades, y supongo que esto lo máximo a lo que se suele llegar con Arduino.

El diseño del circuito DRVSERVO que vemos funcionando en el video de la cabecera de este artículo y también en un video más extenso en el artículo anterior tiene alguna cosa más , así que para no alargar mas éste, vamos a dejar el resto para una segunda parte donde además comentaré algunas modificaciones hechas sobe el prototipo inicial, con vistas a su comercialización.

viernes, 5 de marzo de 2021

DRVSERVO

 

DRVSERVO 1.0


Hace poco, comenté aquí, que cuando quise motorizar el paso a nivel FALLER 282730, con un servo, utilicé para manejar el servo un viejo proyecto de un controlador de servos que hice en el año 2014. Funcionar funcionó, pero cuando estuve trabajando con él encontré algunas cosas que no acababan de gustarme. Y no es de extrañar, porque ese diseño fue de las primeras cosas que yo hacía en este campo de la electrónica, y es raro que después de ocho años y unas docenas de diseños, no hubiera aprendido nada.

Así que llegue a la conclusión de que yo, hoy, lo haría de otra forma, y como esto no es más que un hobby me puse a hacer un diseño actualizado para un nuevo "diver" de servos.

El resultado, que podemos ver en la cabecera, es más pequeño, y tiene bastantes menos componentes, y entre otras cosas no lleva ningún relé, como el antiguo, así que resulta bastante más barato.

Iba a decir, "y funciona mejor", pero no es cierto, funciona exactamente igual, porque el principio de funcionamiento es el mismo.

La diferencia mayor estriba en que el antiguo proyecto pretendía funcionar "como un desvío", mientras que este, funciona más bien como un controlador de desvíos, como el DDESVIO3 o el KDESVIO3 que he diseñado posteriormente, es decir se activa mediante entradas que se conectan a elementos tales como pulsadores, sensores hall, conmutadores, etc, que no envían corriente al driver sino que establecen una tensión nula en una entrada. De esta forma la conexión es común a todos los demás dispositivos que he hecho y que estoy utilizando en mi maqueta. 

En el siguiente video puede verse el nuevo driver, bautizado como DRVSERVO y una demostración bastante completa de sus características y funcionamiento.


Como se puede comprobar, el video acaba con unos ejemplos de aplicación, que comprenden, en primer lugar el manejo de un desvío PECO y después el paso a nivel 282730 de Faller que vimos montar en el artículo Motorizacion del paso a nivel FALLER 282730En ese artículo se veía como al final se colocaba el antiguo controlador de servos en la base del paso a nivel, y se hacía funcionar con él. Lo que he hecho, es montar uno de los nuevos DRVSERVO, es sustituir el antiguo por este, dejando todo lo demás igual, incluyendo el mismo servo, y grabar unas escenas más de vídeo con el nuevo driver. Por cierto, que este este nuevo video se utilizan sensores Hall para accionar el paso a nivel, cosa que ahora es fácil porque como decía el nuevo está preparado para ser accionado con sensores Hall, cosa que el viejo no tenía, y habría que haber hecho un poco de bricolaje para conseguirlo. 

Llamo la atención a los lectores que se hayan interesado por estos temas, sobre el buen resultado que se obtiene con el ejemplo del movimiento del desvío PECO, ya que se obtiene un movimiento excepcionalmente lento, y uniforme, y todo ello con unos elementos muy sencillos. He estado curioseando por YouTube, donde hay muchos vídeos que demuestran diferentes formas de mover este tipo de desvíos, y entre el abundante material que aparece al respecto, no he encontrado nada que funcione tan bien y de forma tan simple.

Y es que se juntan dos factores: por un lado el DRVSERVO permite un control muy preciso del servo, ya que se puede ajustar la velocidad de giro del servo, y la amplitud del giro, para ajustar el movimiento a lo deseado. La inmensa mayoría de los ejemplos que se ven en YouTube utilizan un Arduino para controlar el servo. A mi me parece un despropósito utilizar un Arduino para eso, porque al fin y al cabo un Arduino es un microprocesador que necesita un programa, mientras que mi sistema es un simple circuito analógico. Por ejemplo si queremos que un servo manejado por Arduino se mueva más rápido o mas lento, o que el movimiento sea más o menos amplio, hay que actuar sobre el programa de Arduino, modificarlo y volverlo a cargar, mientras que con mi circuito hay dos potenciómetros que se mueven con un destornillador, y modifican esos valores incluso mientras el driver está funcionando, de manera que se puede comprobar el efecto conseguido mientras se modifican los ajustes.

Y eso no es todo: Arduino necesita una alimentación de 5V que no es normal en el ámbito del modelismo ferroviario. En lugar de eso, el mío funciona con tensiones entre 9 y 15 V que son las habituales en las escalas Z, N y H0. y por otra parte el sistema de mando del Arduino probablemente no admite con facilidad la conexión por ejemplo de sensores Hall, (que necesitan una alimentación que DRVSERVO les proporciona). 

En definitiva este driver es un sistema creado especialmente para manejar servos en el entorno del modelismo ferroviario, mientras que Arduino es un sistema con una amplísima gama de posibilidades, que en la mayoría de los casos quedan infrautilizadas. Un amigo mío decía que utilizar un Arduino para esto, es como utilizar un Ferrari para ir a comprar el pan a 100 metros de casa. 

Y el otro factor que contribuye al buen funcionamiento del desvío que se ve en el vídeo, es el sistema que mueve el desvío a partir del giro del servo. En la generalidad de los casos se conecta la traviesa móvil del desvío con la leva del servo mediante un alambre o varilla rígido, que tira o empuja la traviesa móvil del desvío. Incluso muchas veces se ve que han hecho un zigzag en esa varilla, lo cual es una técnica copiada del aeromodelismo, para absorber el movimiento excesivo del servo cuando las agujas ya se han movido hasta sus topes. En primer lugar contando con un ajuste del ángulo de giro como tiene mi sistema ese zigzag sería innecesario, aunque sería delicado ajustar exactamente el desplazamiento requerido. Pero lo peor es que con un sistema de leva y varilla, que hacia un lado tira y hacia el otro empuja la traviesa, se producen muchas holguras difíciles de evitar, lo que da lugar a movimientos un tanto imprecisos. 


Lo que yo he hecho es, en primer lugar cambiar la varilla que tira y empuja, por un hilo, que naturalmente solo puede tirar. El movimiento hacia el lado contrario lo garantiza un resorte que tira hacia el lado contrario. Este resorte, puede ser una sencilla goma elástica, como veíamos en el vídeo del paso a nivel, o también, y es una idea mejor, un resorte metálico formado a partir de un imperdible, al que se han cortado los extremos y se han doblado hacia arriba (hacia abajo, en la imagen anterior, que está "cabeza abajo") , para hacer que uno de ellos mueva directamente la traviesa y el otro se fije a un punto que proporcione siempre una tensión que desplace la traviesa móvil hacia el lado contrario al que tira el hilo.

El hilo se enrolla sobre un carrete formado en la cabeza del eje del servo, y que se hace sencillamente con dos arandelas y una sección de macarrón. 

El hilo además hace un reenvío alrededor de la varilla que actúa sobre la traviesa móvil. Este reenvío hace que el movimiento sea la mitad de lento de lo que sería con tiro directo, pero además proporciona una forma muy cómoda de ajustar la longitud del hilo. Aquí se ha sujetado a un tornillo con una arandela que pisa el hilo, pero puede haber otras formas menos aparatosas.

Creo sinceramente que este sistema, es con mucho, el más sencillo de los que se pueden encontrar por Internet, y los resultados son tan buenos o mejores como la mayoría de los mostrados. Todos aquellos que quieran hacer que sus desvíos se muevan de forma espectacularmente lenta, lo tienen a su disposición. Por cierto, los desvíos reales modernos, no se mueven tan lentamente, gracias a los motores eléctricos que llevan. Lo del movimiento lento es una reminiscencia de cuando los desvíos se movían a mano con las célebres "marmitas" o incluso desde un puesto centralizado ("enclavamientos", se llamaban) con palancas manuales.