Libro




CURSO DE ARDUINO con mBlock - 2

IDE de Arduino Visualino mBlock
Versión IDE Arduino
(programación en código)

Versión Visualino
( bloques+ código)
Versión mBlock
(sólo bloques)
Vamos a adentrarnos en un  ambiente distinto: cambiamos el software por el hardware. ¿De qué forma? Aprenderemos a manejar una placa de Arduino.

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 con mBlock - 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:
mBlock:
mBlock (versión más simple):




IDE:

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:
mBlock (versión 1):
mBlock (versión 2. Mejor):



Versión para IDE:

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. En la versión 1, una vez que el motor se ha detenido ¿Sigue el programa funcionando?
  4. Y en la versión 2. Una vez que la variable llega al final de su recorrido ¿Qué ocurre con el motor? ¿Se detiene el programa en este caso?



    • 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:
mBlock:


IDE:

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"), tampoco el motor 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:
mBlock:
IDE:

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 repetirá continuamente

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

    • 4.6.I. MOTOR DC con L293D. ACELERACIÓN Y DESACELERACIÓN. Habrás observado que los movimientos del motor son muy bruscos en todas estas prácticas. Incluso se puede notar en algunos casos (con motores de poca potencia) un ligero olor a "chamuscado". Para evitar someter al motor a bruscos cambios de tensión o a tensiones elevadas repentinas vamos a experimentar con un programa que permite acelerar y desacelerar el motor.
      • Se trata de usar las entradas ENABLE de los amplificadores del L293D.
      • Si la entrada ENABLE correspondiente está a nivel Alto ("1") el amplificador asociado estará activo.
      • Si la entrada ENABLE está a nivel Bajo ("0") el amplificador asociado estará inactivo.
      • ¿Podemos activar una amplificador "a medias"? Hay una forma de conseguir que un amplificador funcione "a medias": Como hicimos con el LED en la práctica 4.4.H la forma de hacerlo es aplicar una señal en forma de pulsos, es decir, usando las salidas Digitales tipo PWM ( las que vienen marcadas con el signo ~ )
SALIDAS DIGITALES PWM~ APLICADAS A MOTORES
  • Recordamos que PWM significa Pulse Width Modulation, es decir, Modulación por Anchura de Pulsos.
  • Las salidas de Arduino Marcadas como PWM~ son salidas también Digitales, por tanto sólo pueden ofrecer una tensión de 5V (nivel alto) o 0V (nivel bajo)
  • Sin embargo, se trata de salidas en forma de Pulso. Al aplicarlas a un motor, el resultado es bien claro:
    • Si los pulsos son cortos (el valor de 5V se mantiene poco tiempo), el motor funcionará durante un pequeño tramo y luego continuará girando por su inercia o se parará hasta el siguiente "empujón".
    • Si el pulso es más largo, el tramo en que el motor recibe energía es mayor, por tanto recorrerá más espacio, acumulando más velocidad e inercia hasta pararse. Además estará menos tiempo parado, porque el Ciclo total es el mismo.
Recuerda:
  • En Arduino, una señal PWM de un valor pequeño se traduce en pulsos muy cortos. (0 es el mínimo y equivale a un valor 0V continuo)
  • En Arduino, una señal PWM de un valor alto se traduce en pulsos muy largos. (255 es el máximo y equivale a un valor 5V continuo)

  • Estos pulsos ocurren de forma muy rápida, así que no pueden distinguirse las paradas que, de todas formas, en muchos casos no llegan a producirse por la inercia del motor. El efecto global es que el motor da más o menos vueltas según sea mayor o menor el valor PWM. Es decir:
    • Un valor PWM pequeño produce una velocidad lenta.
    • A mayor valor PWM la velocidad es mayor.



Vamos a aplicar las salidas PWM a motores, como antes lo hicimos con los LED.


Observa que es el mismo circuito anterior pero hemos aplicado la salida PWM~3 de Arduino a la patilla 1 ENABLE 1,2 del L293D.
      • Aplicando la señal PWM a la toma ENABLE, activamos durante más o menos tiempo los Amplificadores, traduciéndose esto en que los motores conectados a los amplificadores adquirirán mayor o menor velocidad.
      • Usaremos una salida digital del tipo  PWM~.  Por ejemplo, la salida ~3.
      • Igual que hicimos en la práctica 4.4.H, vamos a usar directamente un programa en el que se escriba de forma automática en la salida ~3, valores digitales del 0 al 255, que equivalen a pulsos desde el más lento (0) hasta el más rápido (255).
4.6.I. MOTOR DC con L293D. ACELERACIÓN Y DESACELERACIÓN
Programa:
mBlock
IDE

Las órdenes que hemos añadido son equivalentes a las mismas que utilizamos en la práctica 4.4.I.



En este caso, lo que ocurre es que el programa escribe en la salida analógica PWM~3 (que está conectada a ENABLE) los valores: 5, 10, 15, 20, 25,...  hasta 255, dando como resultado que el amplificador correspondiente transmite los pulsos al motor.

Esquema:

Proto-Board:
Instrucciones:
  1. Monta el circuito y prueba el programa propuesto.
  2. Comprueba que cuando:
    1. El LED Verde está encendido, el motor gira en sentido Horario, arrancando gradualmente y desacelerando.
    2. El LED Rojo está encendido, el motor gira en sentido Antihorario, arrancando gradualmente y desacelerando
    3. Explica cómo funciona la sección del programa etiquetada como Decreciente.


  • 4.6.J. MOTOR DC con L293D. Aceleración y Desaceleración. Ciclo II. Trata de canbiar el ciclo de aceleración y desaceleración para conseguir lo siguiente:
    • El motor, cuando funciona en sentido Horario, Acelera y desacelera despacio, pero no llega al tope de aceleración posible.
    • Hay una pausa de 1 segundo con el motor parado.
    • Cuando funciona en sentido Antihorario, acelera y desacelera más deprisa. En este caso sí llega al tope de aceleración.
    • Hay una pausa de 2 segundos con el motor parado.


  • 4.6.K. MOTOR DC en modo DIRECTO con aceleración y desaceleración. Trata de utilizar la toma ENABLE en el circuito del Motor DC en conexión Directa (ejercicio 4.6.A) para conseguir que el motor acelere y desacelere gradualmente:
    • El motor arrancará gradualmente hasta girar a máxima velocidad (en sentido Horario)
    • El motor se mantendrá 1/2 segundo a máxima velocidad.
    • A continuación decrecerá su velocidad hasta pararse completamente.
    • El motor permanecerá parado 1 segundo.
    • El ciclo se repetirá continuamente.

LA TOMA "ENABLE" EN EL L293D
¿Por qué las salidas PWM~ se aplican a la toma ENABLE y no directamente a la entrada del amplificador? Sí que podría hacerse, pero hay una pequeña diferencia en el caso de la conexión Directa o Inversa respecto a la conexión Push-Pull:

  • Poner ENABLE a "0" en la conexión Directa, o la Inversa, deja el motor "desconectado", "separado" del circuito, pero la inercia del movimiento que llevaba, hace que se mantenga unos instantes en movimiento.
  • En cambio, un "0" en la entrada de los amplificadores en modo Directo (o un "1" en modo Inverso), fuerza al motor a pararse, por lo que, al aplicarle una serie de pulsos PWM~, el motor marcharía a tirones, resultando un movimiento poco fluido.
  • Observa las siguientes "tablas de estados" obtenidas de la hoja de características del L293D
L293D - CONEXIÓN DIRECTA
1,2 EN
1A
MOTOR
1
1
Gira (sentido Horario)
1 0
Parada forzada
0
X
Parada libre, hasta cesar la inercia
1=HIGH o PWM~255
0=LOW o PWM~0
X = No importa, es indiferente su estado

L293D - CONEXIÓN INVERSA
1,2 EN
1A
MOTOR
1
1
Parada forzada
1
0
Gira (sentido Antihorario)
0
X
Parada libre, hasta cesar la inercia
1=HIGH o PWM~255
0=LOW o PWM~0
X = No importa, es indiferente su estado

  •  En el caso de la conexión Push-Pull, conectar ENABLE a "0" sí hace que se detenga el motor de forma rápida por lo cual es indiferente usar esta toma, o bien usar las entradas de los amplificadores, para obtener el efecto de variación de velocidad con pulsos PWM~ . De todas formas hemos usado ENABLE también en la práctica porque es más evidente el funcionamiento del programa.

L293D - CONEXIÓN PUSH-PULL
1,2 EN
1A
1B
MOTOR
1
1
0
Gira (sentido Horario)
1
0
1
Gira (sentido Antihorario)
1
0
0
Parada forzada
1
1
1
Parada forzada
0
X
X
Parada forzada
1=HIGH o PWM~255
0=LOW o PWM~0
X = No importa, es indiferente su estado




  • 4.6.L. MOTOR DC en modo DIRECTO con aceleración y desaceleración SIN USAR LA TOMA ENABLE. Cambia el programa anterior para conseguir el mismo efecto de aceleración y desaceleración pero introduciendo las señales PWM~ directamente en la entrada del amplificador, no en la toma ENABLE. El ciclo propuesto es el siguiente:
    • El motor arranca en sentido Horario pero de forma progresiva, pasando de estar parado hasta obtener la máxima velocidad.
    • Se mantiene 1/2 segundo a la máxima velocidad.
    • El motor disminuye su velocidad hasta pararse del todo.
    • Se mantiene parado durante 1 segundo.
    • El ciclo se repite continuamente.
    • Prueba este programa y compáralo con el anterior tratando de notar la diferencia. ¿En qué consiste esa diferencia?

  • 4.6.M. MOTOR DC en modo PUSH-PULL con aceleración y desaceleración SIN USAR LA TOMA ENABLE. Cambia el programa del circuito 4.6.I de modo que consigas el mismo efecto de aceleración y desaceleración pero introduciendo las señales PWM~ directamente en las entrada de los amplificadores, no en la toma ENABLE. Trata de realizar el ciclo siguiente:
    • El motor arranca en sentido Horario de forma progresiva, desde estar parado hasta obtener el máximo de velocidad.
    • Se mantiene 1/2 segundo a máxima velocidad (en sentido Horario).
    • A continuación decrece hasta quedarse parado.
    • Está parado durante 1 segundo.
    • A continuación crece la velocidad pero en sentido contrario, hasta llegar al máximo.
    • Permanece 1/2 a máxima velocidad (en sentido Antihorario).
    • Decrece hasta pararse de nuevo.
    • Se mantiene parado 1 segundo.
    • Prueba este programa y compáralo con el del circuito 4.6.I. ¿Notas alguna diferencia? ¿Debería haberla? Explica tus respuestas.

4.7 SERVOMOTOR MODIFICADO PARA ROTACIÓN CONTINUA

Se puede modificar un servomotor para conseguir que sobrepase los 180º de giro. Habitualmente, esto produce un servomotor que ya no es capaz de colocar el eje con un ángulo de giro determinado. En cambio podemos  utilizarlo como motor de rotación continua, haciéndolo girar en un sentido u otro según nos convenga. El mismo video anterior explica cómo hacerlo. Pero antes de nada es necesario disponer de un servomotor modificado para este fin. No es habitual obtenerlo en tiendas.

CÓMO "TRUCAR" UN SERVOMOTOR PARA ROTACIÓN CONTINUA
¿Cómo conseguirlo?
En internet hay muchos tutoriales que explican la manera de modificar un servomotor. De entre las muchas posibles he escogido la siguiente explicación, que he obtenido de  ardumania:
Cómo trucar un servomotor para rotación continua.
Hay que tener en cuenta que, dependiendo del motor comercial del que dispongamos, puede variar ligeramente la construcción, por tanto, variará la forma de "trucarlo" para conseguir lo que se persigue en definitiva:
  • Que el eje motor gire libremente, sin topes.
  • Anular el potenciómetro o fijarlo para que siempre marque un valor intermedio.(Así "engañamos" al circuito del servomotor para que "crea" que está en posición media: 90º)
¿Qué ventajas tiene un servo modificado? (información obtenida de infogomez)

Ventajas de un servo frente a un motor DC:
  • Es sumamente poderoso para su tamaño (mucho "torque", "momento angular" o, en otras palabras, fuerza de giro).
  • No consume mucha energía.
  • Mayor precisión que un motor DC, permitiendo escoger el ángulo deseado (entre 0º y 180º), excepto en el caso del servo modificado, en que se pierde esta posibilidad.
  • Se puede controlar directamente por Arduino, sin necesidad de un circuito añadido (como el L293) o una placa de control (Llamada "Driver" o "Shield de motores")
Desventajas de un servo frente a un motor DC:
  • No es posible cambiar las características eléctricas del motor por tanto no se puede cambiar la velocidad del mismo.
  • Está limitado por el circuito de control a únicamente variar de 0° a 180°. (en el caso del servo modificado no hay control posible)
  • Su construcción puede ser costosa. La modificación de un servo es un proceso delicado, aunque se puede comprar, siendo un poco más caro que los servos "normales". Como ejemplo, busca en internet las palabras: Servomotor de rotación continua
  • El método de control de un servo o un servo modificado, es complicado, necesitando circuitos electrónicos complejos o sistemas basados con microcontroladores (como por ejemplo Arduino). Aunque una vez que disponemos de Arduino, el control de un servo es bastante simple
En definitiva, salvo por la mayor potencia de giro, el servomotor modificado no es un tipo de motor muy ventajoso, pero aún así vamos a ver cómo manejarlo con Arduino porque nunca se sabe si necesitaremos usarlo.

4.7.A. SERVOMOTOR MODIFICADO
Una vez conseguido el servo modificado vamos a realizar el montaje propuesto en el video:
Esquema:
Programas:
(equivalente en mBlock)
Programa A
Programa B Programa C





Programas:
(equivalente en IDE)
Programa A
Programa B Programa C



Proto-board:
Instrucciones:
  1. Monta el circuito y prueba el programa A.
  2. ¿Qué movimiento hace el motor?
  3. Prueba los distintos programas B y C, completando la siguiente tabla con los resultados
4.7.A. SERVO MODIFICADO
Ángulo del servo
(para mBlock)
Tiempo en estado HIGH
(para IDE)
SENTIDO DE GIRO
Horario
Parado
Antihorario
45
delayMicroseconds (1000)



90
delayMicroseconds (1500)


135
delayMicroseconds (2000)



  1. ¿Qué ocurre si se usa un ángulo inferior a 90 grados (o retardo inferior a 1500 microsegundos)? (prueba varios valores)
  2. ¿Y si se usa un ángulo superior a 90 grados (o retardo superior a 1500 microsegundos)? (prueba varios valores)



MILISEGUNDOS Y MICROSEGUNDOS
La orden denominada delay(...) introduce un retardo en el programa, necesario para que al motor le dé tiempo a cambiar de posición, antes de que le llegue la siguiente orden.
La cantidad que se pone entre paréntesis (...) es una medida del tiempo en milisegundos (la milésima parte de un segundo)

Si queremos indicar un retardo con más precisión, usaremos la orden delayMicroseconds(...) indicando entre paréntesis el tiempo exacto en microsegundos (la millonésima parte de un segundo). Sin embargo no podemos introducir valores de 1000000 o más (1 segundo o más).

    • 4.7.B. SECUENCIA CON SERVOMOTOR MODIFICADO. Usando el mismo circuito anterior, y los conocimientos adquiridos hasta el momento sobre Arduino y control de motores, cambia el programa para conseguir la siguiente secuencia de acciones con un Servomotor modificado:
      • El motor debe girar en sentido Horario durante 3 segundos
      • A continuación, permanecerá parado 3 segundos
      • Acto seguido, debe girar en sentido Antihorario durante 3 segundos
      • Por último estará parado durante 6 segundos
      • El ciclo se repetirá continuamente

    • 4.7.C. ESTUDIO MÁS DETALLADO DEL COMPORTAMIENTO DE UN SERVO MODIFICADO. (mBlock sólamente). Usando el mismo circuito y programa anteriores, completa la tabla siguiente donde aparecen diversos valores cercanos a 90 grados y observa lo que ocurre:
4.7.C. ESTUDIO DEL COMPORTAMIENTO DE UN SERVO MODIFICADO. (mBlock sólamente).
  mBlock

Ángulo
del servo
modificado
Sentido de Giro Velocidad
Horario
Parado
Antihorario
Rápida
Lenta
Muy Lenta
0





45





80





88





90





92





100





135





180







Servomotor modificado
control por mBlock

 
CONCLUSIONES:
Como consecuencia de lo anterior se observa lo siguiente:

  • Para un valor de 90º, el servo modificado SE PARA. El punto exacto de calibración del servo influye en que el ángulo de parada o reposo del servo modificado sea exactamente 90º o ligeramente distinto.
  • Para valores inferiores a 90º el servomotor GIRA EN UN SENTIDO (Horario por ejemplo) y
  • Para valores superiores a 90º el servomotor GIRA EN SENTIDO CONTRARIO al anterior (Antihorario por ejemplo).
  • Si el valor del ángulo está cerca del punto de reposo (90º en teoría), el servomotor modificado GIRA MÁS LENTO
  • Conforme nos alejamos de 90º (el punto de reposo), el servomotor GIRA MÁS DEPRISA, resultando poco significativa la variación de velocidad cuanto más nos separamos del punto de reposo.

    • 4.7.D. ANÁLISIS DE UN SERVOMOTOR MODIFICADO. OBTENCIÓN DE LA TABLA DE COMPORTAMIENTO. (mBlock sólamente). Tomando un servomotor modificado real, completa la siguiente tabla con los ángulos que permiten que se consiga los distintos sentidos de giro y velocidades que se indica:
4.7.D. Estudio de un servomotor comercial real
Control mediante mBlock
de un Servo modificado

SENTIDO DE GIRO
VELOCIDAD
ÁNGULO
NECESARIO
HORARIO
Rápida

Lenta

Muy Lenta

PARADO
PARADO

ANTIHORARIO
Muy Lenta

Lenta

Rápida



    • 4.7.E. VARIACIÓN DE VELOCIDAD DE UN SERVOMOTOR MODIFICADO. (mBlock sólamente). Usando el circuito anterior y aplicando las consecuencias extraídas del análisis del funcionamiento de tu servomotor modificados, al ser programado con mBlock, cambia el programa para conseguir la siguiente secuencia de acciones con un Servomotor modificado:
        • El motor debe girar LENTAMENTE en sentido Horario durante 5 segundos
        • A continuación, girará RÁPIDAMENTE en sentido Horario durante otros 5 segundos
        • permanecerá parado 2 segundos
        • Acto seguido, debe girar en RÁPIDAMENTE en sentido Antihorario durante 5 segundos
        • A continuación, girará MUY LENTAMENTE en sentido Antihorario durante 5 segundos
        • Por último, estará parado durante 3 segundos
        • El ciclo se repetirá continuamente





arriba

libro