bclose

Adafruit Motor Shield V2 II

Controlando servos y apilando shields

Objetivos

 

 

    • Seguimos con el Adafruit Motor Shield V2.
    • Ver como conectar un par de servos a él.
    • Mostrar un programa sencillo para mover un par de servos.
    • Mostrar como apilar Shields y como cambiar sus direcciones I2C.

 

Material requerido.

 

  Tienda España Tienda Mexico
ArduinoUNO Arduino Uno o compatible y con el firmware para S4A cargado.  

Arduino Uno o compatible y con el firmware para S4A cargado.

 

Img_3_4Img_3_6 Una Protoboard más cables. Una Protoboard más cables.
Vista lateral  Motor shield V2  Motor shield V2
Vista superior  Un servo MG945  Un servo MG945

 

Esta sesión es poco más que una traducción libre del magnífico documento de Adafruit sobre este Shield y que podéis encontrar aquí, y en el que encontrareis una información mucho más extensa sobre este Shield, de lo que pretendemos en este sencillo tutorial.

 

Motor Shield V2

 

En la sesión previa como hablamos de cómo usar este Motor Shield V2 para controlar motores CC y Steppers o paso a paso y también comentamos porque este Shield era de lo más interesante porque aceptaba intensidades del doble de lo que aceptaba el V1.

Esto está muy bien,  pero su gran ventaja no era tanto esto como el hecho de que permite apilar estos Shields para el caso de que necesitemos manejar más de 4 motores CC o más de 2 Steppers.

Si. Eso significa que puedes poner un Shield V2 encima de otro y así hasta un número ridículamente grande e Shields (Como 32), lo que  permite manejar hasta 128 motores CC o 64 Steppers.

No es fácil imaginar que proyecto puede requerir semejante número de motores, pero Adafruit ha aplicado el conocido principio de “Mas madera…” y que por nosotros no quede.

Como cada Shield incorpora un controlador I2C basta con cambiar la dirección de cada Shield y asegurarnos de que no hay conflicto de direcciones, para tener el asunto resuelto y a otro tema.

En esta sesión trataremos este tema de como fijar esta dirección I2C del Shield, no solo para poderlos apilar, sino también por si en algún momento queréis usar este Shield en combinación con algún otro dispositivo, con la mala fortuna de que tengáis un conflicto de direcciones.

Veremos cómo cambiar esta configuración, y veremos también, en la próxima sesión, que hay otros Shield de Adafruit que utilizan el mismo sistema para cambiar el direccionamiento I2C.

Pero antes y para descansar un poco, veremos cómo usar Servos con este Shield, porque lo dejamos en la última sesión para no ponerme demasiado pesado, y estaba pendiente.

 

Motor Shield V2 y Servos

 

Los servos son unos motores de lo más simpáticos que básicamente se diseñan, no para que giren a una determinada velocidad, sino más bien, para giren un cierto ángulo y se mantengan allí quietos.

Imaginad un timón de un barco o los alerones de un avión. Quieres darle una señal de control y que el motor tome una posición angular sostenida que ayude a dirigir la nave.

 
  • También hay servos de 360º que giran de continuo y de los que hablaremos en algún momento en el futuro.  
.

Ya hemos hablado en más de una ocasión de los servos y por eso no quisiera repetirme, y el objetivo de este rollo. simplemente era hacer las presentaciones y mostraros como los podemos usarlos cómodamente desde el Motor Shield V2.

Para empezar este Shield no está pensado para muchos servos, no señor, solamente permite 2. En el futuro hablaremos de un Shield pensado para manejar un gran número de servos (Que asombrosamente recibe el creativo nombre de Adafruit Servo Shield), pero en este caso permite un par de ellos además de los motores CC y pasó a paso que ya vimos.

El Shield V2 dispone de 2 conectores tipo servo junto a la entrada de USB:

Motor Shield V2

Están rotulados como Servo 1 y 2 y un poco más a la derecha podéis ver que los pines de control son el 10 y 9 respectivamente. El único problema que podéis tener con los servos es que cada fabricante pinta los cables de color que se le pone y no es fácil a veces saber cuál es cual.

Los servos tienen siempre tres hilos: GND, Vcc y señal. Si la cosa fuera tan fácil que los fabricantes se pusieran de acuerdo y pusieran el Vcc en rojo (Esto prácticamente se cumple siempre) y el GND en negro (Normalmente es así) el otro seria la señal y no habría confusión posible.

Pero como sois gente despierta, ya sospecháis que esto sería demasiado fácil y no van a desaprovechar una ocasión de ser unos capullos. ¡¡Faltaría más!!

Por eso parece un buen momento para pintar aquí una tablita con el código de colores que suelen emplear, dependiendo del fabricante:

Codigo colores servos

Por ejemplo los servos que yo voy a usar en este tuto son tan simpáticos que son Marrón, Rojo y Amarillo (Es por subir el nivel). Por lo demás es bastante fácil conectar los servos:

Ejemplo de muestra

Y para manejarlos podéis usar el programa de siempre porque los servos no tienen problemas.

 

Controlando los servos

 

Los servos se controlan muy fácil con un programa como este:

Contenido solo disponible para suscriptores. ¡Accede al contenido!

     

Incluimos la Liberia Servo y creamos dos objetos del tipo servo1 y servo2, y después simplemente escribimos el ángulo que queremos que gire.

Para darle algo de gracia vamos a mover dos servos diferentes al revés y que el video quede un poco más vistoso (Y porque si no, me aburro). Aquí tenéis un mini video con el resultado:

 

Alimentando los servos

 

Según viene de fábrica el Motor Shield V2,  alimenta directamente los servos mediante el regulador de Arduino lo que supone una limitación importante de potencia. Si usáis un par de servos sin carga, como en el ejemplo que os he puesto en el vídeo, no habrá problemas, pero en cuanto metáis un servo de una cierta potencia o le pidáis un cierto esfuerzo, el alimentador de Arduino se demostrará insuficiente.

Además si la intensidad se agacha, son muy probables daños irreparables en tu Arduino o en los servos y no es cosa de broma porque al final pueden valer pasta.

Por eso, si prevéis que vamos a necesitar un poco más de potencia de la que Arduino puede suministrar es buena idea usar los conectores que el Shield V2 trae para alimentación externa de los servos:

Contenido solo disponible para suscriptores. ¡Accede al contenido!

Cuando envías una orden al motor Shield V2, puedes omitir la dirección hexadecimal del mismo pero entonces Arduino asumirá que es la dirección 0x60. Para ordenar algo a un Shield con dirección diferente, tienes que especificar la dirección concreta para quien es la orden y por eso puedes manejar más motores sin más que especificar a que Shield está conectado. ¿Elegante. a que si?

Quedaros con la copla porque volveremos a ver más Shields que usan este mismo sistema para asignar direcciones.

 

Resumen de la sesión

 

 

    • Hemos visto mas posibilidades del Adafruit Motor Shield V2.
    • Vimos como conectar servos a él
    • Presentamos unos programas sencillos para mover un par de servos.
    • Vimos como asignar y cambiar la dirección I2C de cada Shield.
    • Vimos que podíamos apilar estos Shields para aumentar el número de motores a controlar. 

 

 

No Comments

Para porder realizar consultas a nuestros expertos, tienes que ser suscriptor. Suscribiendote nos ayudas a mantener este proyecto en marcha.

¡ Quiero Suscribirme !

Si ya eres premium y no puedes comentar haz login. Hacer login
Tienda y Tutoriales Arduino