Kurtso/Curso: Ikasgaia/Tema:
Bachillerato 2 Microcontroladores
Ikasgaia/Asignatura: Dokumentua/Documento:
DAO Ficha 07 – Motores
Ficha 07 – Motores Introducción En esta ficha vamos a utilizar motores de corriente continua. Existen diferentes modos de conectar motores a un circuito, nosotros utilizaremos para ello el H-Bridge L293D del Arduino Starker Kit. Un H-Bridge es un circuito integrado que permite controlar el sentido de giro y la potencia de un motor de corriente continua. Este driver en concreto nos permite conectar y controlar 2 motores de manera independiente. Es importante saber que, generalmente, los motores necesitan una fuente de alimentación propia, ya que muchas veces pueden trabajar con voltajes diferentes a la placa Arduino. En nuestro caso, vamos a utilizar una pila de 9V para alimentar el motor. Es muy importante mantener el voltaje del circuito del motor separado del voltaje de la placa Arduino, ya que si no, podríamos quemar alguno de sus componentes. El driver se encargará de ello, pero hay que fijarse correctamente dónde se conecta cada cable. El esquema de conexión de un driver a una placa Arduino es el siguiente:
Visto como una fotografía:
Orrialde/página: 1/5
C/Iturribide, 78 C.P. 48006 - Bilbao - Tlfn. 94.432.91.00 www.maristasbilbao.com |
[email protected]
Kurtso/Curso: Ikasgaia/Tema:
Bachillerato 2 Microcontroladores
Ikasgaia/Asignatura: Dokumentua/Documento:
DAO Ficha 07 – Motores
El driver tiene 8 pines a cada lado. Estando la muesca en la parte superior del mismo, visto desde arriba, se numeran del siguiente modo:
Lateral izquierdo (cuidado: de arriba hacia abajo): o 1: control de potencia del motor 1 o 2: control de giro del motor 1 en sentido horario o 3: negativo del motor 1 o 4: tierra o 5: tierra o 6: positivo del motor 1 o 7: control de giro del motor 1 en sentido antihorario o 8: alimentación de los motores (en nuestro caso, 9V) Lateral derecho (cuidado: de abajo hacia arriba). Exceptuando el pin 9, todo lo demás es igual al lateral izquierdo, pero teniendo en cuenta que ahora contamos de abajo hacia arriba (por lo que los veríamos invertidos): o 9: control de potencia del motor 2 o 10: control de giro del motor 2 en sentido horario o 11: negativo del motor 2 o 12: tierra o 13: tierra o 14: positivo del motor 2 o 15: control de giro del motor 2 en sentido antihorario o 16: alimentación del H-Bridge (en nuestro caso, 5V)
Control de un motor Controlar un motor con un H-Bridge es muy sencillo:
El pin de control de potencia permite controlar la velocidad de giro. 0V indica que está quieto, y 5V que se mueve a su máxima velocidad posible. Valores intermedios nos proporcionarán velocidades intermedias, con lo que podemos usar las salidas analógicas (PWM, marcadas con ~) de Arduino para controlar la velocidad de giro.
Orrialde/página: 2/5
C/Iturribide, 78 C.P. 48006 - Bilbao - Tlfn. 94.432.91.00 www.maristasbilbao.com |
[email protected]
Kurtso/Curso: Ikasgaia/Tema:
Bachillerato 2 Microcontroladores
Ikasgaia/Asignatura: Dokumentua/Documento:
DAO Ficha 07 – Motores
Para hacer que el motor gire en sentido horario, es necesario enviar 5V (HIGH) al pin de giro en sentido horario, y 0V (LOW) al pin de giro en sentido antihorario, En caso opuesto, para hacer que gire en sentido antihorario, es necesario enviar 0V (LOW) al pin de giro en sentido horario, y 5V (HIGH) al pin de giro en sentido antihorario.
Vamos a realizar un ejercicio que haga lo siguiente:
El motor comenzará a girar en sentido horario, primero muy despacio, hasta alcanzar su velocidad máxima en 2,55 segundos. Disminuirá su velocidad de nuevo durante otros 2,55 segundos hasta pararse. Comenzará a girar en sentido antihorario, aumentando su velocidad durante 2,55 segundos. Disminuirá su velocidad hasta parar (2,55 segundos). Volverá a comenzar.
Para realizar este ejercicio, completa el siguiente código: const int pinSH = ???; // Pin para el sentido horario const int pinSA = ???; // Pin para el sentido antihorario const int pinPOT = ???; // Pin para la potencia // Potencia actual del motor int potencia = 0; // El sentido de giro es horario boolean sentidoHorario = true; // Se está aumentando la potencia boolean aumentando = true; void setup() { // Todos los pines que van a utilizarse son salidas. ... ... ... /* Utiliza "digitalWrite" para poner el motor inicialmente en estado de giro horario */ ... ... } /* Crea aquí una función que nos permita conocer el tiempo transcurrido desde la última vez que se cambió el estado del motor. Declara en la parte superior las variables que necesites. */ int tiempoTranscurrido... void cambiarEstado() { // Si se está aumentando la potencia if (...) { // Incrementa la potencia en uno ... // Envía la nueva potencia al motor ... // Si la potencia es la máxima (255) if (...) { // Ya no aumentamos. ... } } else { // Disminuye la potencia en 1 ... // Envía la nueva potencia al motor ...
Orrialde/página: 3/5
C/Iturribide, 78 C.P. 48006 - Bilbao - Tlfn. 94.432.91.00 www.maristasbilbao.com |
[email protected]
Kurtso/Curso: Ikasgaia/Tema:
Bachillerato 2 Microcontroladores
Ikasgaia/Asignatura: Dokumentua/Documento:
DAO Ficha 07 – Motores
// Si la potencia es mínima (0) if (...) { // Volvemos a aumentar ... // Si el sentido era horario if (...) { // Ahora el sentido es antihorario ... // Usa digitalWrite para poner el motor en sentido antihorario digitalWrite(...); digitalWrite(...); } else { // Ahora el sentido es horario ... // Usa digitalWrite para poner el motor en sentido horario digitalWrite(...); digitalWrite(...); } } } // Actualiza el tiempo del último cambio ... } void loop() { // Si han pasado más de 10 ms if (tiempoTranscurrido() > 10) { // Cambia el estado del motor cambiarEstado(); } }
Ejercicio 1: monta el circuito y completa el código del programa para que realice la funcionalidad descrita. Ejercicio 2: añade un segundo motor que haga lo mismo, pero que tarde el doble en realizar el cambio de sentido. Usa para ello los pines 5, 6 y 7 de Arduino. Tienes un vídeo de cómo debería funcionar en http://youtu.be/boGxT6oX2t4. Al final del vídeo puedes ver cómo se puede alimentar la placa Arduino sin necesidad de tenerla conectada al puerto USB, con una pila de 9V.
Reaccionando a estímulos Vamos a terminar con un ejercicio con un montaje un poco más complejo, pero con un código muy sencillo. En este ejercicio se van a utilizar:
Dos motores (a ser posible, iguales) Dos pulsadores Dos LEDs
El programa debe hacer lo siguiente: 1. 2. 3. 4.
Inicializar las entradas y salidas Inicializar el giro de uno de los motores en sentido horario, y el del otro, en sentido antihorario. Cada pulsador controla la velocidad de giro de uno de los motores: si el pulsador del motor no está pulsado, éste gira a un 20% de su velocidad; si está pulsado, al 100%. Además, si está girando rápido, el LED correspondiente a ese motor se enciende.
En http://youtu.be/wR0kngAmv_E puedes ver un vídeo con una muestra de lo que el programa debe realizar.
Orrialde/página: 4/5
C/Iturribide, 78 C.P. 48006 - Bilbao - Tlfn. 94.432.91.00 www.maristasbilbao.com |
[email protected]
Kurtso/Curso: Ikasgaia/Tema:
Bachillerato 2 Microcontroladores
Ikasgaia/Asignatura: Dokumentua/Documento:
DAO Ficha 07 – Motores
Controlando la potencia de los motores Vamos a juntar varios de los elementos vistos a lo largo de las fichas. La idea es la siguiente, partiendo del mismo montaje del ejercicio anterior:
Los motores estarán inicialmente apagados, pero configurados para girar uno en sentido horario, y otro, en sentido antihorario. Al detectar la pulsación de un pulsador, la velocidad del correspondiente motor se incrementa (tenemos 5 velocidades, siendo 0 parado, y 4 máxima velocidad). Si pulsamos estando en máxima velocidad, la velocidad empieza a decrementarse, hasta llegar a 0, con lo que se volvería a empezar. Los LEDs harán lo siguiente: si el motor está apagado, su correspondiente LED también lo estará; si el motor está a velocidad máxima, su correspondiente LED estará encendido; para velocidades intermedias (1, 2 y 3), el correspondiente LED parpadeará 2, 4 o 6 veces por segundo.
Aquí tienes un vídeo: http://youtu.be/3dtt3bU20Ag Ejercicio: ¡Si has llegado hasta aquí, el resto es cosa tuya!
Orrialde/página: 5/5
C/Iturribide, 78 C.P. 48006 - Bilbao - Tlfn. 94.432.91.00 www.maristasbilbao.com |
[email protected]