Remote Control of DC Motor by Android Applications

Anuncio
Remote Control of DC Motor by Android Applications
Francisco Marcos Rodríguez Rivera - fran.rodriver@gmail.com
CONTROL REMOTO DE UNA MINI PLATAFORMA DE TIJERA ACCIONADO
POR UN MOTOR DC CONTROLADO POR ARDUINO
1. Resumen
El objetivo del proyecto es implementar un control remoto de una mini
plataforma de tijera accionada por un motor de corriente continua, cuyo
dispositivo de control remoto es un teléfono móvil con Android, con canal de
comunicación Bluetooh y con un controlador de motor DC basado en Arduino
UNO R3. El proyecto consta de los siguientes desarrollos:
1) Aplicación Android que implementa el control remoto, descrito en el
presente documento: Remote Control of DC Motor-Section-I-Android
Applications by AppInventor.pdf
2) Controlador de un motor DC basado en Arduino, descrito en el
documento: Remote Control of DC Motor-Section-II-Controller DC Motor
by Arduino.pdf
2. Diagrama de contexto
3. Funciones de los componentes del sistema de control
Cada uno de los componentes del sistema de control cumple funciones claramente
definidos y todos contribuyen con el objetivo de control. A continuación de describe
brevemente las funcionalidades de cada uno de ellas.
1
Proyecto AppInventor: http://ai2.appinventor.mit.edu/#5199644048490496
Nombre del Proyecto: SLT_CONTROL
Proyecto Fritzing: Remote Control of DC Motor by Android Applications
http://fritzing.org/projects/remote-control-of-dc-motor-by-android-applications
Remote Control of DC Motor by Android Applications
Francisco Marcos Rodríguez Rivera - fran.rodriver@gmail.com
El dispositivo móvil tiene las siguientes funcionalidades:
 Conectar y desconectar el canal Bluetooth con Arduino (HC06)
 Generar los comandos que serán enviados a Arduino: Subir,
Bajar o detener la mini plataforma que es accionado por un
motor DC.
 Cambiar la velocidad del motor DC (dentro de un rango
predefinido).
El canal de comunicación Bluetooth establece el
enlace de comunicación inalámbrica entre el
dispositivo móvil y el Bluetooth shield de Arduino.
El Bluetooth shield (HC-06) tiene la funcionalidad de recibir los
comandos enviados desde el dispositivo móvil y transferirlo al
controlador Arduino.
El controlador Arduino interpreta los comandos
(Subir, Bajar, detener, aumentar o disminuir la
velocidad del motor) e invoca las funciones del
controlador para que se ejecuten las acciones
correspondientes.
El driver del motor DC (L293D), conocido como puente H, tiene
la función de generar la señal de control PWM con el ciclo de
trabajo definido para controlar el giro del motor, la misma que
se expresa en las acciones de subir, bajar o detener la
plataforma de tijera.
El motor DC es el actuador y tiene la función de
transformar la energía eléctrica en energía mecánica,
específicamente expresada en el movimiento de la mini
plataforma de tijera.
Una plataforma de tijera o mesa elevadora es una
herramienta que permite transportar objetos a cualquier
altura dentro de su rango <altura mínima, altura
máxima>, ejecutando un movimiento vertical.
Las partes básicas de una mesa elevadora son:
 La base
 Las tijeras
 La plataforma
2
Proyecto AppInventor: http://ai2.appinventor.mit.edu/#5199644048490496
Nombre del Proyecto: SLT_CONTROL
Proyecto Fritzing: Remote Control of DC Motor by Android Applications
http://fritzing.org/projects/remote-control-of-dc-motor-by-android-applications
Remote Control of DC Motor by Android Applications
Francisco Marcos Rodríguez Rivera - fran.rodriver@gmail.com


El accionador (en nuestro caso, un motor DC)
La unidad de control (en nuestro caso, una placa
Arduino).
4. Protocolo de comunicaciones
Crear y definir un protocolo de comunicación es un aspecto muy importante en
todo proceso de comunicación. En nuestro caso, para el intercambio de
mensajes se define la siguiente sintaxis:
A continuación se detalla la semántica:
Elemento
Descripción
StartCommand Identifica el inicio del comando
Velocity
Action
EndCommand
Separator
Establece el valor de la velocidad del motor,
dentro de un rango predefinido (obtenido de
manera experimental). Permite:
 Incrementar la velocidad
 Decrementar la velocidad
Expresa las acciones que se pueden ejecutar
sobre la plataforma
 Subir
 Bajar
 Parar
Identifica el fin del comando
Desde 225 hasta
255
Permite separar cada una de los elementos del
comando de control.
Carácter: |
Ejemplo:
El motor debe subir a una velocidad de 250.
Comando: “*|250|20|#”
3
Valores
Carácter: *
Proyecto AppInventor: http://ai2.appinventor.mit.edu/#5199644048490496
Nombre del Proyecto: SLT_CONTROL
Proyecto Fritzing: Remote Control of DC Motor by Android Applications
http://fritzing.org/projects/remote-control-of-dc-motor-by-android-applications
Subir : 20
Bajar : 10
Parar : 00
Carácter: #
Remote Control of DC Motor by Android Applications
Francisco Marcos Rodríguez Rivera - fran.rodriver@gmail.com
5. Desarrollo del Control Remoto con AppInventor
Proyecto: http://ai2.appinventor.mit.edu/#5199644048490496
Nombre del Proyecto: SLT_CONTROL
Diseñando los componentes
Para nuestra aplicación SLT_CONTROL (Scissor Lift Table Remote Control)
tenemos que crear y definir el comportamiento de componentes visibles y no
visibles.
Componentes no visibles
Tipo de
Paleta
Componente
BluetoothClient Connectivity
Notifier
User Interface
Nombre
Propósito
BluetoothClient1
Notifier1
Conectar al Arduino
Mostrar los mensaje de
alerta, error o
informativo
Componentes visibles
Se crean los componentes visibles de la interfaz gráfica del usuario.
Tipo de
Paleta
Nombre
Propósito
Componente
VerticalArrangement
ListPicker
Layout
User
Interface
VerticalArrangement1
connectListPicker
Image
User
Interface
Layout
connectedImage
HorizontalArrangement
Button
HorizontalArrangement
Button
Button
Button
HorizontalArrangement
Button
4
Layout
User
Interface
User
Interface
User
Interface
Layout
HorizontalArrangement2
upButton
HorizontalArrangement1
leftVelocityButton
stopButton
rightVelocityButton
HorizontalArrangement3
disconnectButton
Proyecto AppInventor: http://ai2.appinventor.mit.edu/#5199644048490496
Nombre del Proyecto: SLT_CONTROL
Proyecto Fritzing: Remote Control of DC Motor by Android Applications
http://fritzing.org/projects/remote-control-of-dc-motor-by-android-applications
Contenedor visual.
Seleccionar el dispositivo
“Bluetooth” de Arduino y
conectar el dispositivo.
Mostrar el estado
“Conectado” del Bluetooth.
Contenedor visual
Elevar la plataforma
Contenedor visual
Disminuir la velocidad del
motor
Detener el movimiento del
motor
Incrementar la velocidad
del motor
Contenedor visual
Desconectar el Bluetooth.
Remote Control of DC Motor by Android Applications
Francisco Marcos Rodríguez Rivera - fran.rodriver@gmail.com
Visor del proyecto en AppInventor
Añadiendo el comportamiento de los componentes
En esta sección se debe programar el comportamiento de cada uno de los
componentes, permitiendo que el usuario:
 se conecte a la aplicación del controlador Arduino, mediante la
selección del Bluetooth HC-06 .
 se desconecte de la aplicación del controlador.
 ejecute las acciones de subir, bajar o detener la plataforma.
 Incremente o disminuya la velocidad del motor.
Variables
Las variables definidas, creadas e inicializadas para el manejo del protocolo de
comunicaciones son:
 velocityMin
 separator
 startCommand
 velocityMax
 endCommand
5
Proyecto AppInventor: http://ai2.appinventor.mit.edu/#5199644048490496
Nombre del Proyecto: SLT_CONTROL
Proyecto Fritzing: Remote Control of DC Motor by Android Applications
http://fritzing.org/projects/remote-control-of-dc-motor-by-android-applications
Remote Control of DC Motor by Android Applications
Francisco Marcos Rodríguez Rivera - fran.rodriver@gmail.com




command
action
velocity
Procedimientos
Los procedimientos definidos y creados para la generación de la trama del
comando y controlar los límites de la velocidad del motor, son:
 generateCommand
 velocityLimit
6
Proyecto AppInventor: http://ai2.appinventor.mit.edu/#5199644048490496
Nombre del Proyecto: SLT_CONTROL
Proyecto Fritzing: Remote Control of DC Motor by Android Applications
http://fritzing.org/projects/remote-control-of-dc-motor-by-android-applications
Remote Control of DC Motor by Android Applications
Francisco Marcos Rodríguez Rivera - fran.rodriver@gmail.com
ListPicker – Muestra los dispositivos Bluetooth
Bloque connectListPicker.BeforePicking presenta la lista de dispositivos
Bluetooth disponibles y el usuario debe seleccionar el Bluetooth
correspondiente al HC-06 de Arduino.
ListPicker – Establece la conexión del dispositivos Bluetooth
Bloque connectListPicker.AfterPicking permite establecer la conexión al HC-06
de Arduino. En caso de error, se presenta el mensaje de alerta “Unable to make
a Bluetooth connection”.
7
Proyecto AppInventor: http://ai2.appinventor.mit.edu/#5199644048490496
Nombre del Proyecto: SLT_CONTROL
Proyecto Fritzing: Remote Control of DC Motor by Android Applications
http://fritzing.org/projects/remote-control-of-dc-motor-by-android-applications
Remote Control of DC Motor by Android Applications
Francisco Marcos Rodríguez Rivera - fran.rodriver@gmail.com
Bloque para subir la plataforma
El bloque upButton.Click permite establecer el valor del elemento Action= '20'
que significa “Subir (UP)”, generar la trama del comando con el procedimiento
generateCommand y, finalmente, se envía la trama por el Bluetooth.
Bloque para bajar la plataforma
El bloque downButton.Click permite establecer el valor del elemento Action=
'10' que significa “Bajar (DOWN)”, generar la trama del comando con el
procedimiento generateCommand y, finalmente, se envía la trama por el
Bluetooth.
Bloque para detener la plataforma
El bloque stopButton.Click permite: establecer el valor del elemento Action=
'00' que significa “Detener (STOP)”, generar la trama del comando con el
procedimiento generateCommand y, finalmente, se envía la trama por el
Bluetooth.
8
Proyecto AppInventor: http://ai2.appinventor.mit.edu/#5199644048490496
Nombre del Proyecto: SLT_CONTROL
Proyecto Fritzing: Remote Control of DC Motor by Android Applications
http://fritzing.org/projects/remote-control-of-dc-motor-by-android-applications
Remote Control of DC Motor by Android Applications
Francisco Marcos Rodríguez Rivera - fran.rodriver@gmail.com
Bloque para incrementar la velocidad del motor
El bloque rightVelocityButton.Click permite: incrementar la velocidad del
motor, con paso incremental igual a 2, valida que la velocidad no se encuentre
por encima del rango permitido (255), generar la trama del comando con el
procedimiento generateCommand y, finalmente, se envía la trama por el
Bluetooth.
En caso que la velocidad configurada supere la velocidad máxima del motor, se
presentara un mensaje de alerta:
Y se establece la velocidad del motor al valor máximo permitido (255).
Bloque para decrementar la velocidad del motor
El bloque leftVelocityButton.Click permite: decrementar la velocidad del motor,
con paso decremental igual a 2, valida que la velocidad no se encuentre por
debajo del rango permitido (225), generar la trama del comando con el
procedimiento generateCommand y, finalmente, se envía la trama por el
Bluetooth.
En caso que la velocidad configurada sea menor que la velocidad mínima del
motor, se presentara un mensaje de alerta:
Y se establece la velocidad del motor al valor mínimo permitido (225).
9
Proyecto AppInventor: http://ai2.appinventor.mit.edu/#5199644048490496
Nombre del Proyecto: SLT_CONTROL
Proyecto Fritzing: Remote Control of DC Motor by Android Applications
http://fritzing.org/projects/remote-control-of-dc-motor-by-android-applications
Remote Control of DC Motor by Android Applications
Francisco Marcos Rodríguez Rivera - fran.rodriver@gmail.com
Bloque para desconectar el Bluetooth
El bloque disconnectButton.Click permite realizar la desconexión del Bluetooth
HC-06.
6. Ejecución del Control Remoto
Pantallas del Control Remoto en el teléfono inteligente
Icono en la pantalla del smart-phone.
10
Pantalla principal del control remoto, con
los botones para el control del motor.
Proyecto AppInventor: http://ai2.appinventor.mit.edu/#5199644048490496
Nombre del Proyecto: SLT_CONTROL
Proyecto Fritzing: Remote Control of DC Motor by Android Applications
http://fritzing.org/projects/remote-control-of-dc-motor-by-android-applications
Remote Control of DC Motor by Android Applications
Francisco Marcos Rodríguez Rivera - fran.rodriver@gmail.com
Selección del Bluetooth HC-06 de
Arduino.
Pantalla, después de conectarse al
Bluetooth.
Para el control remoto del motor DC se debe accionar los botones de control:
Botón/Imagen
Acción
Seleccionar el Bluetooth de Arduino y conectar el
dispositivo.
Subir (el motor gira en sentido horario)
Bajar (el motor gira en sentido anti horario)
Parar (el motor se detiene)
Incrementar la velocidad del motor
Decrementar la velocidad del motor
Desconectar el Bluetooth Arduino
11
Proyecto AppInventor: http://ai2.appinventor.mit.edu/#5199644048490496
Nombre del Proyecto: SLT_CONTROL
Proyecto Fritzing: Remote Control of DC Motor by Android Applications
http://fritzing.org/projects/remote-control-of-dc-motor-by-android-applications
Remote Control of DC Motor by Android Applications
Francisco Marcos Rodríguez Rivera - fran.rodriver@gmail.com
Componentes del controlador
Arduino, Driver del motor DC y el Motor DC (actuador)
La plataforma desplegado a diversas alturas.
12
Proyecto AppInventor: http://ai2.appinventor.mit.edu/#5199644048490496
Nombre del Proyecto: SLT_CONTROL
Proyecto Fritzing: Remote Control of DC Motor by Android Applications
http://fritzing.org/projects/remote-control-of-dc-motor-by-android-applications
Remote Control of DC Motor by Android Applications
Francisco Marcos Rodríguez Rivera - fran.rodriver@gmail.com
7. Referencias
Proyecto ArduDroid escrito por Hazim Bitar,
http://www.techbitar.com/ardudroid-simple-bluetooth-control-for-arduinoand-android.html
Control velocidad y sentido de giro de un motor DC
http://diymakers.es/control-velocidad-y-sentido-de-motor-dc/
AppInventor.org
http://www.appinventor.org/
13
Proyecto AppInventor: http://ai2.appinventor.mit.edu/#5199644048490496
Nombre del Proyecto: SLT_CONTROL
Proyecto Fritzing: Remote Control of DC Motor by Android Applications
http://fritzing.org/projects/remote-control-of-dc-motor-by-android-applications
Descargar