Libro



CURSO DE ARDUINO 2

Seguimos conociendo las posibilidades de la placa de Arduino.  Recuerda que puedes acceder a la web deArduino a través de la dirección: www.arduino.cc
Para realizar las prácticas con Arduino necesitamos el material electrónico que se  describe en la siguiente LISTA DE MATERIALES.
Muchas webs ofrecen circuitos y programas para experimentar con Arduino. Una de ellas, de la que hemos obtenido información es: www.fritzing.org siendo muy recomendable el programa libre Fritzing, que puede descargarse desde su web y que hemos utilizado para los diseños de circuitos con placa de prototipos. Este programa permite diseñar circuitos mediante placa de prototipos, obteniendo a la vez su esquema y pudiendo usar el diseño para crear una placa PCB (placa de circuito impreso) que puede fabricarse a partir del modelo resultante, e incluso encargarse a la web de Fritzing para que ellos lo fabriquen (previo pago en este caso, claro). También es muy interesante el KIT Fritzing basado en Arduino, pues contiene casi todo el material que se necesita para las prácticas propuestas.
Como en todos los capítulos, la idea del curso y los archivos de video han sido obtenidos de www.miriadax.net, de un curso de Xnergic-TecnoCampusMataró (TCM) dirigido y presentado por Marco Antonio Rodríguez, al cual agradecemos calurosamente su esfuerzo.

Manejo básico de Arduino 2

SCRATCH
Se recomienda ver todos los videos en PANTALLA COMPLETA y usar unos AURICULARES. Los videos imprescindibles para realizar el curso se marcan con una tabla con fondo Naranja. Los ejercicios aparecen en color Verde.

MÓDULO 4B. ARDUINO. MOTORES.

(Pincha en los enlaces para acceder al canal de Youtube y ver los videos)
4.5 MOTORES
Aprenderemos a conectar a Arduino 3 tipos de motores:
  • Servomotor estándar: puede girar 180º (sólo media vuelta)
  • Servomotor de Rotación Continua: puede girar de forma continua.
  • Motor de Corriente Continua: También gira de forma continua. Son muy baratos pero para conectarlos a Arduino necesitan un circuito más complejo.
SERVOMOTOR ESTÁNDAR
Este motor se puede posicionar en el ángulo que deseemos entre 0 y 179º
Para ello dispone de 3 patillas:
  • Polo +  (o Vcc):  Se conecta al polo + de una pila o a la toma de 5V en Arduino)
  • Polo -  (o GND)  (se conecta al polo - de una pila o a la toma GND en Arduino)
  • Pulsos  (también llamado Señal, Signal o SGN): es la patilla de  control. A través de esta patilla se le proporcionan los pulsos necesarios para situarlo en el ángulo deseado
Servomotor
Cada una de las patillas se identifica mediante un color. Sin embargo no todos los fabricantes asignan los mismos colores. A continuación se ven varios ejemplos:


En este diagrama se ve cómo se identifican las patillas para servos de distintos fabricantes:

En resumen, podemos decir que la asignación de colores es algo así:
  • Rojo: Polo + (o Vcc). En Arduino se conectaría a la toma de 5V.
  • Negro o Marrón: Polo - (o GND). En Arduino se conecta a GND.
  • Amarillo, Naranja o Blanco: Señal. Es la patilla por la que se proporcionan los Pulsos necesarios para que funcione. En Arduino se conecta a una salida digital (p. ej. PIN 9)


4. 5. SERVOMOTOR ESTÁNDAR (Ejercicios):
  • 4.5.A. Comprueba el funcionamiento del programa propuesto: Conecta el Servomotor a la placa de Arduino como se ve en el diagrama siguiente. Carga el programa indicado y pruébalo.
4.5.A. SERVOMOTOR ESTÁNDAR
Esquema:
Programa:


Proto-Board:

    • 4.5.B. Usando el mismo montaje anterior, haz los cambios necesarios en el programa para posicionar el Servomotor cada vez en alguno de los ángulos siguientes:
      • 45º, 150º, 90º, 60º.

    • 4.5.C. FUNCIONAMIENTO PASO A PASO.
      • Vamos a hacer que el motor avance, paso a paso, desde la posición 0º hasta 180º (en realidad 179º). Observa los cambios necesarios en el programa. Se trata de introducir una variable x cuyo valor se va modificando desde 0 hasta 180º, con incrementos de 1:

4.5.C. FUNCIONAMIENTO PASO A PASO
Programa:
Instrucciones:
  1. Monta el circuito y prueba el programa.
  2. El motor se detiene al llegar a 180º (realmente 179º). ¿Por qué crees que ocurre esto?
  3. Una vez que el motor se ha detenido ¿Sigue el programa funcionando?



    • 4.5.D. FUNCIONAMIENTO PASO A PASO en SENTIDO INVERSO.
      • Modifica el programa para que el motor avance, grado a grado, desde la posición 180º hasta 0º (en realidad 179º hasta 0º).

    • 4.5.E. Pasos más largos. Cambia el programa para que el motor haga la siguiente secuencia:
      • El motor debe variar desde 0º hasta 180º en saltos de 10º en 10º
      • Tras cada salto, el motor debe pararse un instante en esa posición. El tiempo suficiente para que se aprecie cada salto.
      • Pasado ese tiempo, volverá a repetirse el ciclo, hasta llegar a 180º
      • ¿Cuántos pasos da el motor en total?
        • Prueba a hacer saltos de 5º en 5º y cuenta los pasos que da el motor.
        • ¿Hace los pasos que debería? Si no es así, ¿a qué puede deberse?

    • 4.5.F. Ciclo de funcionamiento combinado Adelante-Atrás. Crea un programa que realice el siguiente ciclo:
        • El motor debe variar desde 0º hasta 180º en saltos de 30º en 30º (0º, 30º, 60º,...)
        • Cuando llegue a 180º, debe estar parado un tiempo prolongado en esa posición.
        • A continuación, variará su posición de forma inversa: desde 180º hasta 0º en saltos de 30º.
        • Cuando llegue a 0º, estará parado otro tiempo prolongado.
        • Se repetirá el proceso indefinidamente.
        • Entre paso y paso del motor, habrá un pequeño instante de parada, suficiente para que sea perceptible.
          • ¿Cuántos saltos hace el motor entre 0º y 180º?
          • ¿Y entre 180º y 0º?
          • ¿Hace todos los saltos programados el motor?
          • Si no es así ¿cuál crees que es la razón?

MOTOR DE CONTINUA
Este tipo de motores, más baratos y de construcción más sencilla, necesita una cantidad de corriente que Arduino no puede proporcionar, por lo que es necesario utilizar un circuito adicional de control.
Se les conoce como Motores CC (de Corriente Continua) o Motores DC (Direct Current).
Puede usarse muchos símbolos para representarlos:
símbolos de motores DC o CC

La característica de funcionamiento de este motor es que, si se conecta con la polaridad correcta, gira en sentido horario (el de las agujas del reloj).
En cambio, si se conecta de manera inversa, el motor gira en sentido antihorario (contrario a las agujas del reloj)

¿Cómo se sabe cual es la conexión + y - del motor? En la mayoría de los casos tendrás que comprobarlo manualmente, pues no hay ninguna indicación.


CIRCUITO INTEGRADO L293D
Este circuito es necesario para que Arduino pueda controlar un Motor DC.
Las señales de control de Arduino llegan al L293D, que controla los motores conectados, proporcionándoles suficiente energía para funcionar.
Como se ve en la figura, un circuito integrado o microchip tiene una serie de patillas numeradas en sentido contrario a las agujas del relojo, comenzando por el lugar donde hay una ranura o un pequeño agujero que lo indica.
Debemos conocer el diagrama interior de este circuito para saber cómo se usa.

Otra posibilidad más fácil, aunque algo más cara, es usar el Driver de Motores L298N que se verá en una práctica posterior. Puede usarse como alternativa al L293D si éste resulta muy complejo al principio, pero conviene conocer ambos.
L293D
(pincha el dibujo para ver la hoja de características)


En esta imagen vemos un diagrama de bloques del circuito interior del L293D (y el L293 simple).
Cada triángulo representa un amplificador. Como vemos hay 4 amplificadores, numerados del 1 al 4, los cuales están relacionados de dos en dos: el 1 con el 2, y el 3 con el 4.
Las entradas se distinguen por la letra A, y las salidas con la letra Y.
Por tanto, hay 4 entradas: 1A, 2A, 3A y 4A y las respectivas salidas 1Y, 2Y, 3Y y 4Y.

En el diagrama se indica, con los números interiores, a qué patilla del microchip corresponde cada entrada o salida.


Hay una conexión denominada ENABLE, que afecta a los amplificadores 1 y 2 y otra que afecta a los 3 y 4.

ENABLE significa "permitir" o "activar". Estas conexiones (1,2EN y 3,4EN) permiten que los amplificadores funcionen o no. Es decir, activan o desactivan los amplificadores. También pueden activarlos "a medias" como ya veremos. En definitiva, ENABLE permite que pase más o menos corriente por el amplificador.

Para que un amplificador esté activo, la patilla ENABLE  correspondiente debe estar conectada al voltaje de la pila (5V en nuestro caso). Si se conecta a 0V (o GND), los amplificadores a los que afecta estarán completamente desactivados.


IMPORTANTE: si una patilla ENABLE se deja "al aire"
, es decir, si no se conecta a nada (ni a 0V ni a 5V), resulta que, debido a la construcción interna del circuito, mantiene un valor de tensión alto (de 5V), con lo cual todos los amplificadores estarán activados. Esta será la opción que nosotros usaremos en principio para simplificar el circuito: Todas las patillas ENABLE sin conectar.


Diagrama del L293
Patillas del L293 y L293D
El diagrama de abajo presenta la misma información de bloques pero ordenada tal y como se presenta en el microchip.
Vemos que aparecen varias patillas denominadas GND. Se trata de la masa, toma de tierra o punto de 0V del circuito integrado. No es necesario conectarlas todas. Basta con usar una de ellas pues internamente están unidas.

También hay dos tomas de tensión continua: Vcc1 y Vcc2.

  • Vcc1 es la tensión que necesita el circuito integrado para funcionar, y en nuestro caso serán 5V que obtendremos de la placa de Arduino.
  • Vcc2 es la tensión que se usará para que funcionen los motores y no tiene por qué coincidir con Vcc1. Nosotros usaremos una batería aparte que proporcione 9V a los motores. OJO: Nunca se debe usar la conexión de Arduino porque no tiene potencia suficiente y podría dañarse.

DIFERENCIA ENTRE EL  L293D  Y EL  L293
En los siguientes esquemas se observa 3 modos distintos de conectar motores a los integrados L293 y L293D.

Las patillas de ambos circuitos son equivalentes. La única diferencia está en que, en el
L293 es necesario añadir exteriormente unos diodos que protejan al circuito de posibles picos de tensión elevada producidos por los motores.

Como se ve en el diagrama, en el
L293D estos diodos están ya incluidos internamente en el circuito integrado, por lo que no es necesario añadirlos y el montaje resulta más simple.

Por ello, dada la escasa diferencia de precio, es siempre
preferible usar el L293D.
Conexiones L293
Conexiones L293D
MODOS DE CONEXIÓN DEL L293D
Por último,  observa el siguiente montaje en el que aparecen los tres modos de conexión de un motor al circuito L293D. Los analizaremos con detalle en el momento de las prácticas.
Sin embargo conviene resaltar aquí algunas cosas:
  • Son necesarias dos pilas:
    • Vcc1 es la tensión que necesita el circuito L293D para funcionar. Usaremos 5V que podemos obtener de la placa de Arduino.
    • Vcc2 es la tensión que los motores usan. En nuestro caso, una pila externa de 9V será la que proporcione la energía necesaria a los motores.
  • En varias patillas aparecen indicaciones de tensión en forma de pulsos de nivel alto "1" o bajo "0". Se trata de las entradas del circuito, que producen distintos efectos. El valor 0 o 1 es una denominación del tipo binario y realmente corresponde a:
    • "1": nivel alto. Se llama así cuando se aplica 5V a esa entrada
    • "0": nivel bajo. Es cuando se aplica 0V.
  • Las patillas 1 y 9 son las llamadas ENABLE (EN). Sirven para activar los amplificadores. Aunque en principio es necesaria una tensión de 5V (nivel alto o "1") para activar un amplificador, en la práctica, se puede observar que si la patilla EN se deja sin conectar el resultado es el mismo que si estuviera a nivel alto. Por tanto, para simplificar el circuito, no las conectaremos, a no ser que se quieran utilizar para no permitir el paso de corriente (en todo o en parte).
  • Por último, es importante indicar que todos los componentes que usemos en el crcuito deben conectarse a un punto de GND común, es decir, a la misma toma de tierra o masa:
    • La placa de Arduino
    • el L293D
    • El polo negativo de las pilas utilizadas
    • y el polo negativo del motor en la conexión Directa.
Como el L293D tiene varias tomas de GND, que internamente están conectadas, pueden usarse para centralizar todas las tomas de tierra.

En el esquema siguiente aparece un ejemplo con todas estas conexiones mínimas necesarias entre la
Placa de Arduino, el L293D y un motor conectado en forma Directa. Esta será nuestra primera práctica.

Modos de conexión L293D



4. 6. MOTOR DE CONTINUA (DC) (Ejercicios):
  • 4.6.A. Monta el siguiente circuito con un MOTOR DC conectado de FORMA DIRECTA: Antes de conectar el motor debes comprobar cuáles son sus polos + y - conectándolos directamente a la pila de 9V y comprobando en qué caso gira en sentido Horario.
4.6.A. MOTOR DC EN FORMA DIRECTA
Esquema:
Programa:


Proto-Board:
Este es un circuito de muestra, no es la única posibilidad de montaje. Cualquiera de las patillas 0V (GND) del L293D puede usarse para conectar el GND de Arduino, el polo negativo del motor o el polo negativo de la pila de 9V.
Instrucciones:
  1. Monta el circuito y prueba el programa.
  2. Aplicando el programa que se propone, el motor debe funcionar a pulsos de 1/2 segundo de duración.
  3. Comprueba que cuando el motor funciona lo hace en sentido Horario. Si no es así es porque está conectado al revés.

    • 4.6.B. Añade al circuito anterior un LED Verde en paralelo con una resistencia de 220 Ohmios.  El LED se conecta justo en la Salida Digital D2 de Arduino o, lo que es lo mismo (ya que están conectadas), en la entrada "In 1" (1A) del L293D. Con esto conseguimos que cada vez que la salida D2 proporcione un pulso de nivel alto, se encienda el LED. Puedes ver el esquema del circuito en el recuadro siguiente:
4.6.B. MOTOR DC EN FORMA DIRECTA con un LED de Control
Esquema:
Nota: el LED con la Resistencia y el Motor se podían haber conectado de otra forma para que no fuera necesario cruzar por encima de los otros cables. Se ha hecho así para que en los siguientes ejercicios se pueda usar este mismo montaje sin hacer muchos cambios. De todas formas prueba tú a hacer otro esquema en el que no sea necesario este cruce.

Proto-Board:
Instrucciones:
  1. Completa este circuito y prueba el programa, que es el mismo que en el ejercicio anterior.
  2. El motor y el LED deben activarse a la vez, en pulsos de 1/2 segundo de duración.
  3. El motor debe funcionar en sentido Horario.


    • 4.6.C. Con pequeñas variaciones sobre el montaje anterior, vamos a conectar el MOTOR DC de forma INVERSA:
      • Desconecta la patilla del motor de la toma GND.
      • Conecta esa patilla del motor al polo positivo de la Pila de 9V que alimenta a los motores, es decir, al punto Vcc (MOTORES)
      • El programa no cambia.
      • Se mantiene el LED Verde con su resistencia limitadora de 220 Ohmios
4.6.C. MOTOR DC EN FORMA INVERSA con un LED de Control
Esquema:
Proto-Board:
Instrucciones:
  1. Completa este circuito. El programa es el mismo que en los ejercicios anteriores.
  2. ¿Gira el motor mientras se enciende el LED?
  3. Cuando el motor está girando ¿Está el LED encendido o apagado?
  4. El motor debe girar en sentido Antihorario. ¿Por qué crees que pasa eso?


  • 4.6.D. MOTOR DC EN FORMA INVERSA sin LED de Control
Si te resulta más fácil, antes de hacer el circuito anterior, monta primero este circuito sin LED:


4.6.D. MOTOR DC EN FORMA INVERSA sin LED de Control
Esquema:
Proto-Board:
Instrucciones:
  1. Usa el mismo programa que en todos los ejercicios 4.6 anteriores
  2. Sólo debería cambiarse la patilla del motor que antes iba conectada a GND, uniéndola ahora a Vcc (MOTORES).
  3. De esta forma, el motor debe girar en sentido Antihorario.


    • 4.6.E. MOTOR DC conectado en modo PUSH-PULL. Esta forma de conexión tiene las siguientes características:
MOTOR DC en modo PUSH-PULL
  • Se llama "push-pull", que significa "empuja-tira" o en español diríamos mejor "tira-afloja".
  • Necesitamos usar 2 amplificadores del L293D.
  • Cada polo del motor se conecta a cada uno de los amplificadores (a las salidas)
  • En cada momento, uno de los amplificadores está activo y el otro inactivo, con lo cual, unas veces está a nivel alto ("1") un extremo mientras el otro está a nivel bajo ("0"). En otras ocasiones están al contrario. Por eso se llama push-pull.
  • La corriente, por tanto, circulará unas veces en un sentido y otras veces en otro.
  • En consecuencia, el motor girará unas veces en sentido horario y otras en sentido antihorario.

  • Hay que tener en cuenta que, si ambos amplificadores están a nivel bajo ("0") el motor no se moverá.
  • Y además, si ambos amplificadores están a nivel alto ("1"), el motor tampoco se moverá.
  • Es decir, si ambos "empujan" o ambos "tiran" el motor queda parado. Para que se mueva, deben actuar de forma contraria.

AMPLIFICADORES MOTOR
1 2
0
0
PARO
1
0
HORARIO
0
1
ANTIHORARIO
1
1
PARO


Este sería el esquema del motor en modo Push-Pull con un L293D conectado a Arduino:


4.6.E. MOTOR DC EN PUSH-PULL
Esquema:
Programa:
Trata de entender el programa por tí mismo
Proto-Board:
Instrucciones:
  1. Monta el circuito y carga el programa.
  2. Prueba el funcionamiento del circuito.
  3. Comprueba que el motor gira alternativamente en sentido Horario y Antihorario.


    • 4.6.F. MOTOR DC en PUSH-PULL con LEDs de control. Añade al circuito anterior dos LEDs de colores distintos (con su resistencia limitadora incluida) para verificar cuándo el motor gira en sentido horario/antihorario. Recuerda que las resistencias deben ser de 220 Ohmios. El programa es el mismo anterior.
4.6.F. MOTOR DC EN PUSH-PULL con LEDs de control
Esquema:
Proto-Board:
Instrucciones:
  1. Monta el circuito y carga el programa.
  2. Prueba el funcionamiento del circuito.
  3. Comprueba que cuando:
    1. El LED Verde está encendido, el motor gira en sentido Horario.
    2. El LED Rojo está encendido, el motor gira en sentido Antihorario.


    • 4.6.G. MOTOR DC en PUSH-PULL. Cambio de ciclo I. Modifica el programa anterior para que el motor haga lo siguiente:
      • Debe girar 1/2 segundo en sentido Horario.
      • Estará parado 1 segundo.
      • A continuación girará 1/2 segundo en sentido Antihorario.
      • Finalmente, estará parado 1 segundo.
      • El ciclo se