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
|
|
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:
- 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: |
- Monta el circuito y prueba el
programa.
- El motor se detiene al llegar a
180º (realmente 179º). ¿Por qué crees que ocurre esto?
- En la versión 1, una vez que el motor se ha
detenido ¿Sigue el programa funcionando?
- 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:
|
|
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.
|
(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.
|
|
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.
|
|
|
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.
|
|
|
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.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: |
- Completa este circuito y prueba
el
programa, que es el mismo que en el ejercicio anterior.
- El motor y el LED deben
activarse a la vez, en pulsos de 1/2 segundo de duración.
- 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: |
- Completa este circuito. El
programa es el mismo que en los ejercicios anteriores.
- ¿Gira el motor mientras se
enciende el LED?
- Cuando el motor está girando
¿Está el LED encendido o apagado?
- 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: |
- Usa el mismo programa que en
todos los ejercicios 4.6 anteriores
- Sólo debería cambiarse la
patilla del motor que antes iba conectada a GND, uniéndola ahora a Vcc
(MOTORES).
- 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: |
- Monta el circuito y carga el
programa.
- Prueba el funcionamiento del
circuito.
- 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: |
- Monta el circuito y carga el
programa.
- Prueba el funcionamiento del
circuito.
- Comprueba que cuando:
- El LED Verde está
encendido, el motor gira en sentido Horario.
- 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: |
- Monta el circuito y prueba el
programa propuesto.
- Comprueba que cuando:
- El LED Verde está
encendido, el motor gira en sentido Horario, arrancando
gradualmente y desacelerando.
- El
LED
Rojo está encendido, el motor gira en
sentido Antihorario, arrancando gradualmente y
desacelerando
- 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. |
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
|