CÓMO SURGIÓ LA IDEA:
Un proyecto típico en 3ª de ESO es el diseño y construcción de un caminocito de DM con dos motores y rueda loca controlado por cable, usando dos conmutadores para el cambio de sentido de giro de los motores.
Un proyecto típico en 3ª de ESO es el diseño y construcción de un caminocito de DM con dos motores y rueda loca controlado por cable, usando dos conmutadores para el cambio de sentido de giro de los motores.
La experiencia dice que los alumnos manejan muy bien la parte constructiva, pero a la hora de construir el mando es donde empiezan los problemas.
Los primeros proyectos tenían un mando con dos conmutadores caseros hechos cada uno de ellos con tres clavos, un listoncito de madera y dos chapas metálicas.
Pero estos conmutadores caseros con frecuencia funcionaban mal debido a malos contactos entre las chapas metálicas y los clavos, por lo que se mejoró su diseño cambiándolos por dos conmutadores dobles con posición de reposo.
Aunque estos mandos ya funcionan perfectamente, la evolución lógica suponía la eliminación del cable. Para ello se aprovecharon las maquetas de los camioncitos realizados en 3º de ESO y los conocimientos de microcontroladores de 4º de ESO para que, combinados, dieran lugar a un proyecto superior: el camioncito controlado por bluetooth.
1) DISEÑO: a partir de algunas maquetas ya construidas de años anteriores, los alumnos realizan los planos en Autocad y el resto de los documentos del proyecto
2) CONSTRUCCIÓN DE LA MAQUETA.
Se cortan y se ensamblan las diferentes partes. Luego se colocan los motores y la rueda loca.
Una vez terminada la maqueta, hay que elegir y conectar el microcontrolador que va a sustituir a los conmutadores para el control de los motores.
1) ELECCIÓN DEL MICROCONTROLADOR
Aunque los actuadores a conectar en nuestro camioncito son sencillos, ya que solamente hay dos motores con reducción de velocidad, estos motores necesitan una corriente elevada para un microcontrolador, de unos 200 mA en vacío, y que pueden llegar hasta 400 mA con grandes cargas.
En caso de elegir Arduino UNO, esta corriente está limitada como máximo a 40 mA, lo que nos obligaría a colocar unos amplificadores externos.
En caso de elegir Picaxe, se pueden elegir varias placas controladoras que ya tienen estos amplificadores integrados en ellas, lo que permiten activar los motores en dos sentidos sin necesidad de amplificadores externos. Existen varias soluciones:
a) Picaxe 28 Project Board (Axe 020): Esta placa la hemos usado ampliamente como entrenador en todo tipo de proyectos, pero en este caso su empleo es farragoso por tener que conectar las entradas y salidas por medio de las tiras de cables
b) Picaxe 18 High power board (Chi035): Esta placa tiene cuatro Mosfet de potencia en las salidas, lo que le da gran potencia, pero tiene el inconveniente que hay que soldar los cables de salida.
c) Instant Robot Shield (Axe 401), en combinación con el Picaxe 28X2 Shield Base. Esta placa tiene como inconveniente que en realidad son dos placas unidas, por lo que es más caro, pero tiene la ventaja que ya viene con las fichas de conexión incorporadas para conectar directamente los cables de los actuadores
Para este proyecto hemos elegido esta última solución, aunque se podría implementar con otras.
3.1. MÓDULO DE BLUETOOTH HC-05
Es un circuito impreso que utiliza el protocolo de comunicación serie para comunicarse fácilmente con un controlador, móvil o PC. Puede ser configurado para trabajar como Master (Emisor) o como Slave (Receptor)
PATILLAS:
STATE → Indicador de estado. Está a nivel bajo cuando no se conecta y pasa a nivel alto cuando está conectado
RXD → Receptor de señal Bluetooth (conectar con terminal TXD del controlador)
TXD → Emisor de señal Bluetooth (conectar con terminal RXD del controlador)
GND → Masa (0V)
Vcc → +5V
EN → Sirve para cambiar el modo de funcionamiento
1) Modo de datos (modo por defecto)
2) Modo de comandos. Usa comandos AT cuando lo ponemos a nivel alto.
3.2. CONEXIÓN DEL MÓDULO HC-05 A PICAXE
1º) Descargar una aplicación en el móvil para controlar el HC-05. Para ello ir a PlayStore y elegir una. Nosotros hemos descargado “ARDUINO BLUETOOTH CONTROLLER” porque se adapta a lo que queremos. Fíjate bien que el nombre sea exactamente ese, porque todas las aplicaciones se parecen pero muchas no nos sirven. El icono de esta aplicación es éste:
.
2º) Conectar el módulo HC-05 a la placa controladora. Para ello conectar:
3º) Proceso de emparejamiento para vincular la aplicación “Arduino Bluetooth Controller” al módulo HC-05
- Conectar la alimentación del HC-05 y abrir la aplicación
- Cuando “Arduino bluetooth Controller” encuentre el HC-05, pinchar encima e introducir el pin para vincular (usar 1234). Una vez vinculados, el HC-05 cambia el parpadeo
- Ir a “Settings” (configuración) y definir cada uno de los controles a una letra (código Ascii). Nosotros vamos a elegir las siguientes:
Seleccionar “Controller mode” y ya está listo para transmitir los códigos. El aspecto que tendrá la pantalla del móvil será la siguiente:
4º) Conectar los motores. Para la placa controladora elegida (Instant Robot Shield (Axe 401), la conexión del módulo HC-05 y de los motores queda como se puede ver a continuación:
La señal del HC-05 se conecta a la entrada A5 del “Shield” (B.4 del “Base”).
Los motores se conectan a las salidas de un puente H (L293D)
Para otras placas controladoras consultar los patillajes del fabricante.
POSIBILIDAD 1: Utilizar el lenguaje de programación BASIC de Picaxe.
Para ello descargamos de la página de Picaxe la aplicación “Programming Editor”. La abrimos y escribimos el programa. Podemos empezar por un programa sencillo para ver si el controlador se comunica correctamente con el móvil. Podría ser el siguiente:
setfreq m8 ‘pone la frecuencia interna del Picaxe a 8 MHz
inicio:
serin B.4, T9600_8,b5 'Definimos la entrada serie por B.4, con el protocolo T9600 y se almacena en la variable b5
debug b5 'Mostramos la variable b5 en pantalla
goto inicio ‘repite el bucle
Una vez que hemos visto que se comunican perfectamente, podemos decirle al
controlador qué hacer cuando le lleguen las señales del módulo Bluetooth. Por
ejemplo:
if b5 = 82 then high C.1 low C.0 'Si pulsamos el botón asociado a letra R (=ascii 82) pone en marcha el motor conectado a las salidas C.1 y C.0 por medio del L293D
POSIBILIDAD 2: Usar BLOCKLY, la programación por bloques de Picaxe
Blockly es un entorno de programación por bloques muy parecido a “APP inventor” y algo a Scratch, y tiene disponible la opción de utilizar la entrada serie para comunicarnos con el módulo bluetooth.
En la última versión del “Programming Editor” ya viene instalado por defecto el entorno de programación “Blockly”.
Primeros pasos con Blockly
1º) conectar la alimentación a la placa controladora
2º) Conectar el cable AXE027
3º) Abrir el programa Blockly.
4º) Ir a “settings” y seleccionar el chip que vamos a utilizar (18M2 o 28X2) y el puerto de comunicación.
5º) Escribir el programa arrastrando los bloques correspondientes. Un ejemplo de programa que se comunica con el HC-05 y activa la salida C.7 dependiendo de los valores enviados puede ser el de la figura:
3) Descargar el programa en ”Picaxe / Program”.
4) Probar todo el sistema desde el mando por bluetooth hasta la salida programada.
SOLUCIÓN ELEGIDA: Programación con BLOCKLY
Previamente hay que definir las entradas y las salidas. En nuestra placa controladora, el motor A se controla mediante los pines C.1 (On/Off) y C.0 (sentido de giro) y el motor B mediante los pines C.2 (On/Off) y C.5 (sentido de giro)
TABLA DE MOVIMIENTOS:
El programa completo resulta el siguiente:
Al probar el funcionamiento del camión con todas las formas posibles, se observa que al pasar de marcha adelante a marcha atrás o viceversa, el módulo bluetooth HC-05 se desempareja del móvil y deja de responder. ¿Cómo es posible esto si aparentemente todo está bien?. La respuesta está en las tensiones transitorias en la conexión y desconexión de los motores.
Todos los motores están formados por bobinas de cobre que al pasar la corriente se transforman en pequeños imanes que hacen girar al motor por repulsión magnética. Estas bobinas se oponen a cambios bruscos de corriente, por lo que en el momento de la desconexión, producen un pulso de tensión que trata de mantener la corriente. Además, al dar la orden de parada del motor, este sigue girando unas décimas de segundo, en los que empieza a funcionar como generador, produciendo una tensión en sus extremos.
Esos pulsos de tensión en el arranque y parada de los motores son los que producen el desemparejamiento del módulo HC-05.
Solución del problema de desconexión:
La solución a este problema es doble.
1) Por un lado podemos tratar de mantener la tensión de alimentación del módulo bluetooth lo más estable posible conectando un condensador en las patillas de alimentación.
2) Por otro lado podemos esperar un tiempo a que se pare completamente el motor antes de cambiar el sentido de giro. Esto se puede hacer facilmente añadiendo un tiempo de parada de los motores antes de cada arranque, tal y como aparece en la imagen:
Y esto lo podemos hacer en cada tipo de arranque. Resultando el siguiente programa:
Con estas modificaciones ya hemos solucionado el problema del desemparejamiento del Módulo bluetooth.
Solución del problema del funcionamiento irregular:
Al crear las pausas antes de cada arranque de los motores aparece un nuevo problema: esas pequeñas paradas hacen que el movimiento del camioncito sea irregular. La solución consiste en hacer que las paradas de los motores no ocurran en cada arranque de los motores, sino solamente cuando se producen cambios de sentido. Y ¿cómo saben los motores si el sentido de giro anterior era el contrario?. La solución en programación consiste en crear una nueva variable del estado anterior, que vamos a llamar “variable B”.
Por ejemplo, cuando llega la señal de avance de los dos motores (VarA = 85), comprobamos si el estado anterior ha sido la marcha de los motores en sentido contrario o no. Si el camión ha ido para atrás (variable B = 68) y entonces se para medio segundo antes de arrancar. Pero si no ha ido para atrás (VarB ≠ 68) no ha habido cambio de sentido y no hace falta parar los motores.
Y si ahora aplicamos este método al programa completo, resulta el programa final completo: