CONECTANDO

SERVOMOTORES

Conectar servomotor con I2C a LEGO MINDSTORMS NXT
down-rojo-flecha

¿QUE ES UN SERVOMOTOR?


Un servo es un motor normal y corriente pero modificado para que solo se mueva unos grados determinados y luego vuelva a su sitio. Con esto podemos accionar determinados mecanismos como la palanca de los desvíos de los trenes o la palanca de neumática de LEGO.





Ambas palancas tienen 2 posiciones, por lo que son territorio perfecto para acoplar este tipo de mecanismos. Aunque ya los conocía, debo la idea de acoplarlo a LEGO Neumática al Foro Hispalug.





Los servos tendrán por tanto 3 cables como mínimo: alimentación, tierra y control, que determina el desplazamiento (nº de grados). Existen muchos servos según su fuerza, la tensión (voltios) de alimentación, el número de grados que se pueden desplazar, etc. Para saber cuántos grados se ha deplazado, simplemente incorporan un potenciómetro acoplado en su interior.


En este tutorial explicaremos paso a paso cómo construir el circuito (algo complicado) para conectar 1 servo y como hacer los primeros ajustes. Ya te aviso de antemano que es algo laborioso de ajustar, pero ya sabes, quien algo quiere...


Por otra parte, indicaremos cómo controlarlos, ya que se pueden conectar hasta 8 servos en un solo puerto. El autor del circuito en el que nos basaremos así como el icono en NXT-G para controlarlos puedes encontrarlos en la página de Extremenxt. Aquí haremos alguna pequeña adaptación.


Como te podrás imaginar, el NXT no da para alimentar tanto motor. Por esto será necesario una fuente de alimentación externa. 4 pilas recargables serán suficientes para la mayoría de servos que podamos usar con nuestro Mindstorms.


Una última cuestión: aunque no es el circuito habitual, este montaje también utiliza el bus I2C que estamos usando en los montajes digitales.


MATERIAL


En el circuito que sigue, verás que cada componente tiene un número correlativo. Estos números se corresponden con:


1. y 2. Resistencias de 82K

3. y 4. Resistencias de 2,2K

5. Resistencia de 22K

6. Diodo 1N4148

7. Condensador de 1uF


Adicionalmente necesitarás:


Un circuito integrado TDA8444.

Un circuito integrado NE556 (equivalente al TLC556).


Además de estos componentes, serán útiles 2 resistencias variables de 10K y 47K. Otros elementos comunes a otros circuitos son los cables rígidos para las conexiones "internas" del circuito, un board, un cable de conexión al NXT y unas pilas en el entorno de los 6V.


También resultará útil un multímetro o tester, aunque no es estrictamente necesario. Los hay muy baratos en las tiendas todo a 1€. Por último, un par de tornillos muy pequeños con rosca y arandela para fijar el servo a una viga Technic.


Obviamente, también necesitarás un servomotor adecuado.


CONECTANDO 1 SERVO


EL CIRCUITO


Como ya habrás comprobado, los circuitos asustan más en el papel (o web) que cuando los construimos. Más adelante tienes una colección de fotos paso a paso para su montaje, para que no te pierdas. El circuito es el siguiente:


Conectar servomotores con I2C a LEGO MINDSTORM NXT

MONTAJE DEL CIRCUITO


Montaremos lo primero el TDA8444 a la zquierda. El NE556 al lado. Para orientarlos bien, recuerda que en la parte superior del circuito integrado (CI) llevan una muesca. En la imagen se aprecia que la muesca está a la izquierda en ambos CI.


Conectar servomotores con I2C a LEGO MINDSTORM NXT

La línea superior será positivo del NXT, cable verde. La línea de bajo del todo sera tierra, cable negro del NXT. El pin 3 va a azul del NXT y el 4 a amarillo. Estas son las resistencias de 82K.


Conectar servomotores con I2C a LEGO MINDSTORM NXT

Ahora las 2 resistencias de 2,2K. La más oscura, desde el pin 1 al cable verde del NXT. La segunda resistencia (más clarita en la imagen pero es igual que la otra) sale del primer CI y controlará al servo. Concretamente la resistencia va desde DAC0 hasta CONTROL. Por último, la alimentación del segundo CI.


Estas 2 resistencias son especialmente importantes para el ajuste fino del servo. Luego lo explicamos con más calma.


Conectar servomotores con I2C a LEGO MINDSTORM NXT

Ahora hacemos las conexiones de la imagen. Añadimos también el condensador. Este tipo de condensadores cilíndricos tienen polaridad, es decir, sus patas no son equivalentes como los LEDs. Para distinguirlas verás que una de sus patas es más corta que la otra. La pata corta es el negativo y el negativo va a la línea de abajo.


Conectar servomotores con I2C a LEGO MINDSTORM NXT

Vamos con la resistencia de 22K. Se conecta entre el pin 1 y el 2. Ahora el diodo que también tiene polaridad. Para distinguir cada una de sus patas, verás que tiene una pequeña franja negra. La parte de la franja negra se une al pin 6. Lo pongo de la forma que ves en la imagen porque los componentes quedan ya muy apretados, y así se descongestiona un poco. Por último, el pin 7 a tierra.


Conectar servomotores con I2C a LEGO MINDSTORM NXT

Y ahora el servo, las pilas y el cable de control. Hay servos con cables de otros colores. Por ejemplo negro para tierra o negativo, rojo para positivo y amarillo para control.


Conectar servomotores con I2C a LEGO MINDSTORM NXT

Todo junto quedará más o menos así, ya que hay componentes que no están exactamente en la misma posición que en las fotos anteriores:


Conectar servomotores con I2C a LEGO MINDSTORM NXT

DESCARGA DEL SOFTWARE DE CONTROL


El icono para controlar el servo puedes descargartelo de la página de Extremenxt. Al final de la misma verás un enlace para la descarga. Recuerda que si tienes dudas de como descargar e instalar nuevos iconos, tienes una ayuda para Descargar nuevos iconos. Hay que ubicar el icono en "Advanced".


PRIMERAS PRUEBAS


La primera tarea es la de conectar el cable al puerto 1 del NXT. Por defecto, ya viene seleccionado el puerto 1 y el canal 0, correspondiente a la salida DAC0 que hemos usado en el circuito. Una vez ajustado, con el Power seleccionas la amplitud del desplazamiento del servo.


Una vez instalado el icono, programa lo siguiente y no te preocupes mucho si no funciona a la primera. El primer icono está configurado como el tercero pero con la variable "Power" = 0. El segundo icono es igual al cuarto.


Conectar servomotores con I2C a LEGO MINDSTORM NXT

Al conectar y ejecutar el programa, el servo debería moverse desde su posición inicial (cero) hasta su máximo recorrido, unos 60º con el servo que he usado cada vez que pulses el botón naranja del NXT. Si no sucede esto o se desplaza muy poco, será necesario realizar un ajuste fino de tu servomotor.


AJUSTE FINO DEL SERVO


Antes que nada un aviso: vamos a probar a ajustar un par de resistencias usando una resistencia variable (potenciómetro). Una vez ajustado, habrá que medir su valor con un TESTER para poder sustituirla por ressietncias fijas. Existen Testers baratos en las tiendas de todo a 1€.


Y ahora una aclaración: si te has fijado bien en el montaje y el el circuito, verás que el servo lo alimentamos directamente con las baterías y que por lo tanto, todo el circuito solo sirve para una cosa: controlar el desplazamiento del servo.


Esto se consigue proporcionando distintas tensiones al cable de control del servo. Desde 0,1V hasta 2,5V. Según programemos, aportaremos una tensión y con ella, un desplazamiento concreto.


Si has probado el funcionamiento con un servo diferente al que yo he usado, quizás hayas comprobado que no funciona bien (o quizás sí, no sé). El ajuste lo único que hace es afinar con el circuito de control la tensión necesaria para que el servo se desplace los grados necesarios, dentro de sus márgenes de trabajo, claro.


¿Recuerdas las 2 resistencias de ajuste que hemos comentado en el apartado de montaje un poco más arriba? De esas 2 resistencias, empezaremos a probar con la más oscura de la imagen. Se trata de sustituir esa resistencia (la número 3 en el circuito) por una resistencia variable (o sea, un potenciómetro) de 47K.


Monta el potenciómetro en un board aparte para evitar conexiones con otros componentes. Si no dispones de otro board, simplemente haz las conexiones y sujeta el potenciómetro en la mano. O vuelve a montar todo el circuito con los componentes más apretados.


Conectar servomotores con I2C a LEGO MINDSTORM NXT

Ahora, con el programa en ejecución, ve ajustando el potenciómetro hasta obtener el desplazamiento deseado en el servo. Si el resultado no te convence, sustituye la segunda resistencia de 2,2K por una variable de 10K y juega con ambas hasta conseguirlo.


Si ahora no te funciona, es el momento de preocuparse. Revisa como siempre todas las conexiones y asegurate de que ningún componente de la placa se está tocando con otro.


ADAPTANDO EL SERVO A LEGO


Bueno, pues si ya funciona todo, vamos a adaptar el servo para poder usarlo con LEGO. Habrá tantas formas de adaptarlo como servos diferentes uses. Los servos llevan unos agujeros laterales. Alli acoplaremos una viga con tornillos pequeñas, arandelas y tuercas. Vamos por pasos:


Conectar servomotores con I2C a LEGO MINDSTORM NXT

Un detalle del lateral:


Conectar servomotores con I2C a LEGO MINDSTORM NXT

Ahora solo queda poner una viga y ya tenemos un conjunto bien sólido. Puede apreciarse el eje central en blanco.


Conectar servomotores con I2C a LEGO MINDSTORM NXT

En ese eje central podemos acoplar distintas piezas que vienen con el servo. En el logo al principio de la página tienes otro ejemplo de cómo quedan.


Conectar servomotores con I2C a LEGO MINDSTORM NXT



CONECTANDO 8 SERVOS


CIRCUITO


Si subes y revisas el circuito para 1 servo verás que el segundo CI (el NE556) solo usa la mitad de sus pines. La otra mitad es exactamente igual que la primera. Revisa el pdf de la hoja técnica. Por tanto, por cada NE556 que pongamos, podremos controlar 2 servos.






Si te fijas en la hoja técnica, verás que los pines del NE556 están exactamente en el mismo orden por lo que, al margen del follón de cables y componentes, es relativamente fácil de montar.


Para ello, reproduce exactamente el mismo montaje que tienes hecho pero en el lado opuesto del NE556. La única diferencia será que ahora vendrá un cable desde el TDA8444 desde DAC1. Por tanto desde el primer Circuito Integrado (el TDA) vendrán ahora 2 cables con su resistencia correspondiente hasta el NE. Cada uno para a un servo.


En cuanto a las conexiones de los servos, serán las siguientes: todos los cables de masa o tierra se conectan al cable negro del NXT directamente. Los cables de alimentación de los servos (cable rojo) se conectan a la pila al polo positivo. Cuidado de no conectarlo al cable verde del NXT.


Por último, el cable de control del servo 1 al OUTPUT 1 del NE556 y el cable de control (naranja o amarillo habitualmente) del servo 2 al OUTPUT 2 del NE556.


Conectar servomotores con I2C a LEGO MINDSTORM NXT

Para controlar los servos, simplemente selecciona Channel 0 para el primer servo y Channel 1 para el segundo.


Conectar servomotores con I2C a LEGO MINDSTORM NXT

Para los siguientes 2 servos, habrá que añadir un nuevo NE556, pero el TDA8444 es el mismo. Así hasta 8 servomotores.


Conectar servomotores con I2C a LEGO MINDSTORM NXT

USOS


En el video inicial hemos acoplado el servo a un desvio de trenes. El otro uso "natural" es acoplarlo a una válvula de LEGO pneumatics. Seguramente haré un montaje más adelante, estate atent@.


Estos son los 2 usos más lógicos, pero sin duda puedes construir robots tipo gusano que se desplacen movidos por 8 servos o cualquier otro más atrevido. Recuerda que puedes enseñarnos tus creaciones (MOCs), por sencillos que sean en el foro.


¿HASTA DONDE?

¿Quieres más? El protocolo I2C permite ampliar las entradas/salidas. Simplemente conectando el pin A0 a positivo en lugar de a negativo tenemos una nueva dirección, aunque esto no lo he probado. Supongo que también se podrían enlazar varios TDA8444. Cada uno de ellos habilita 8 servos. Cada 2 servos necesitan 1 NE556.


Conectando el pin A0, A1 y A2 a tierra tenemos la dirección 64 para controlar los servos en el panel de configuración del DAC. Conectando estos pines de otras formas tenemos el resto de direcciones posibles: 66, 68, 70, 72, 74, 76 y 78. No quiero pensar la barbaridad de servos que podrían conectarse, al menos en teoría.


En 16 entradas digitales puedes revisar conceptos sobre direcciones y cómo montar varios circuitos similares. DESCONOZCO si el montaje es el mismo, todo es cuestión de probar. Lo que seguro que no falla es repetir el mismo montaje y conectarlo al puerto 2. Esto habilitaría 8 servos adicionales.



up-rojo-flecha
Conectar un teclado matricial
Un espacio comunitario para crear sensores
.