Controlando un motor de corriente directa desde la computadora con Arduino y Java
-
Upload
antony-garcia-gonzalez -
Category
Documents
-
view
13.276 -
download
0
description
Transcript of Controlando un motor de corriente directa desde la computadora con Arduino y Java
´
CONTROLANDO UN
MOTOR DE
CORRIENTE DIRECTA
DESDE LA
COMPUTADORA CON
ARDUINO Y JAVA Por Antony García González
Antony García González
Estudiante de la Universidad Tecnológica de
Panamá
Facultad de Ingeniería Eléctrica
Licenciatura en Ingeniería Electromecánica
Creador y Administrador del blog
PanamaHitek.com
Controlando Motor de Corriente Directa con Arduino y Java| Panama Hitek
1 Presentado por Antony García G. | [email protected]
Proyectos de Programación y Electrónica: Controlando un
Motor de Corriente Directa con Arduino y Java
Por Antony García González
Abstract
Un artículo breve acerca de cómo controlar el sentido de giro de un motor sencillo
de corriente alterna utilizando una interfaz electrónica, en este caso un puente H
conectado a Arduino y con una interfaz de software basada en Java. Se muestran
los diagramas electrónicos y el código que le permite al usuario tener el control sobre
el movimiento del motor desde su computadora personal.
INTRODUCCIÓN
Para lograr invertir el sentido de giro de un motor de corriente directa basta con invertir su
polaridad, es decir, cambiar la forma como la corriente pasa a través de él.
En otros aportes que se han hecho a este blog se ha tratado el tema de los motores y cómo
controlar su encendido desde Arduino1 con una sencilla interfaz de software creada en Java. En
este documento les voy a mostrar cómo lograr esto, con la única diferencia que ahora podremos
decidir hacia donde queremos que el motor se mueva.
En electrónica esto se logra utilizando una interfaz electrónica llamada puente H que normalmente
consiste en un juego de transistores (NPN en su configuración más sencilla) unidos entre sí y
activados en secuencia de tal forma que la corriente pase por el motor en un sentido para obtener
un movimiento en la dirección de las manecillas del reloj y luego, al cambiar el sentido de la
corriente habrá un movimiento contrario a las manecillas del reloj. El funcionamiento de esta
configuración es un tema que ya se ha tratado antes2.
Hay otras formas de lograr un efecto parecido al de la configuración mostrada, incluso hay
circuitos integrados que son puentes H, especiales para el control de motores. El problema es que
los más comunes no soportan corrientes tan altas, a diferencia de los transistorizados que pueden
manejar corrientes tan altas como los valores máximos de los transistores utilizados.
1 http://panamahitek.com/2013/05/29/arduino-java-y-los-motores/ 2 http://panamahitek.com/2013/08/26/el-puente-h-invirtiendo-el-sentido-de-giro-de-un-motor-con-arduino/
Controlando Motor de Corriente Directa con Arduino y Java| Panama Hitek
2 Presentado por Antony García G. | [email protected]
El modelo sugerido para este propósito es el siguiente:
Figura 1 – Esquemático del puente H – Creado en ISIS Proteus
Se observa que esta configuración requiere de 4 transistores NPN, 4 resistencias y 4 diodos. Éstos
son utilizados para suprimir cualquier corriente transitoria que pueda afectar el circuito. Con esto
se asegura la integridad del dispositivo que se utilizará como interfaz entre la parte electrónica y
en software, en este caso, Arduino.
Figura 2 – Diagrama pictórico de puente H conectado a Arduino – Creada en Fritzing
Controlando Motor de Corriente Directa con Arduino y Java| Panama Hitek
3 Presentado por Antony García G. | [email protected]
La conexión de este dispositivo se realiza en los pines 8 y 9 del micro controlador. La programación
utilizada para accionar este sistema desde el micro controlador se basa en enviar pulsos de voltaje
para accionar los transistores e iniciar la conducción de corriente a través del motor.
int LeftPin=8; //Pines de salida del Arduino
int RightPin=9;
int input=0;
void setup(){
Serial.begin(9600);
pinMode(LeftPin, OUTPUT);
pinMode(RightPin, OUTPUT);
}
void loop(){
if (Serial.available()){
if (input=='1'){ //El motor girará a la derecha
digitalWrite(LeftPin, LOW);
digitalWrite(RightPin, HIGH);
}
else
if (input=='2'){ //El motor girará a la izquierda
digitalWrite(LeftPin, HIGH);
digitalWrite(RightPin, LOW);
}
else
if (input=='0'){ //El motor se detendrá
digitalWrite(LeftPin, LOW);
digitalWrite(RightPin, LOW);
}
delay(10);
}
}
Controlando Motor de Corriente Directa con Arduino y Java| Panama Hitek
4 Presentado por Antony García G. | [email protected]
Con este código se logra que al recibir el micro controlador por medio del puerto serie alguno
de los tres posibles comandos (0, 1 y 2) el motor reaccionará de la siguiente manera:
Carácter de Entrada Resultado
0 El motor detiene su movimiento
1 El motor gira en sentido horario
2 El motor gira en sentido anti horario
Tómese en cuenta que si se conecta el motor de una u otra forma el sentido de giro podría
cambiar con respecto a la información presentada en la tabla por lo que se recomienda
hacer pruebas de funcionamiento para que coincida el comportamiento del motor con el
que deseamos tener en el diseño.
Programación en Java
La interfaz de software consistirá en una ventana con 3 botones para indicar el movimiento
hacia la izquierda, hacia la derecha u ordenarle al motor que se detenga.
Una vez más se recomienda el uso de la Librería Arduino para Java3. La implementación de
la misma es muy sencilla, por lo que su uso es muy provechoso para los propósitos que se
persiguen con este documento.
La interfaz de desarrollo (IDE) que se va a utilizar es Netbeans. El proyecto creado se llamará
ArduinoHDrive.
En la clase principal del proyecto, llamada ArduinoHDrive.java, se instancia un jFrame que se
agrega para colocar los controles que conformarán la interfaz del programa. El jFrame se
llamará Window.
La llamada a Window se hace de la siguiente manera:
Window interfaz = new Window();
interfaz.setVisible(true);
3 http://panamahitek.com/2013/03/08/libreria-arduino-para-java/
Controlando Motor de Corriente Directa con Arduino y Java| Panama Hitek
5 Presentado por Antony García G. | [email protected]
Figura 3 – Ventana de código en Netbeans con la clase principal y el jFrame Window.java
Con esto se puede trabajar en la interfaz con los botones. Se necesitan 3 botones para las tres
acciones que el dispositivo debe ejecutar.
Figura 4 – Distribución de los controles en el jFrame
Controlando Motor de Corriente Directa con Arduino y Java| Panama Hitek
6 Presentado por Antony García G. | [email protected]
Ahora hay que importar la librería Arduino y la librería RXTX al directorio de librerías del proyecto.
Figura 5 – Librerías importadas al proyecto en
Netbeans
Se debe asegurar que las librerías importadas
puedan ser utilizadas de forma satisfactoria en el
equipo en el que se va a ejecutar el programa
Estas librerías no van a funcionar si antes no han sido instaladas en la computadora que se esté
utilizando, por lo que se recomienda consultar la información existente acerca de la
implementación de estas librerías4.
Una vez importados ambos ficheros se procede a instanciar la librería Arduino y a iniciar la
conexión en el método principal del jFrame. Los errores que surjan deben ser corregidos por
Netbeans.
Figura 6- Se ha importado la librería Arduino,
se ha instanciado la misma en el código del
jFrame, se ha iniciado la conexión con el
micro controlador con el método ArduinoTX,
estableciendo un timeout de 2 segundos y
una velocidad de transferencia de 9600
baudios. El puerto seleccionado (COM21)
puede variar de computadora a
computadora.
La conexión se inserta dentro de una
estructura try-catch que detendrá la
ejecución si se produce algún inconveniente
con la ejecución del programa.
4 http://panamahitek.com/2013/01/31/requisitos-para-utilizar-arduino-con-java/
Controlando Motor de Corriente Directa con Arduino y Java| Panama Hitek
7 Presentado por Antony García G. | [email protected]
Una vez iniciada la conexión, se procede a programar cada botón. Se deshabilitará el botón que
detiene el motor si está detenido. Lo mismo se hará para los botones que estén presionados en
determinado instante. Esto se logra con una estructura condicional y tres variables de estado del
tipo boolean.
boolean botonizquierdo = false, botonderecho = false, botondetener = true;
Figura 7 – Programación del botón izquierdo.
El botón de la izquierda ha sido configurado de tal forma que al presionarlo se desactiva dicho
control para evitar que se le ordene al motor que se mueva hacia la izquierda cuando de hecho
se está moviendo hacia la izquierda.
Los botones para detener el movimiento y para mover el motor hacia la derecha se activan para
que cualquiera de las dos opciones pueda ser ejecutada cuando el usuario lo desea. El comando
que se envía por medio del método SendData hacia Arduino debe ser el carácter que se designó
para que el movimiento sea hacia la izquierda, en este caso, el número 2. La programación de los
otros botones es muy similar al de este botón.
Controlando Motor de Corriente Directa con Arduino y Java| Panama Hitek
8 Presentado por Antony García G. | [email protected]
Figura 8 – Programación para el botón derecho
Figura 9 – Programación del botón detener.
Controlando Motor de Corriente Directa con Arduino y Java| Panama Hitek
9 Presentado por Antony García G. | [email protected]
Una vez programado los 3 botones se puede proceder a ejecutar el software. Arduino debe estar
conectado a la computadora y el puente H debe estar unido a Arduino.
La interfaz del programa luce así:
Figura 10 – Interfaz del programa
Las pruebas sobre este sistema han sido satisfactorias al momento de escribir este documento por
lo que se espera que no haya problema a la hora de que otras personas los implementen en sus
proyectos personales.
CONCLUSIONES
Al haber confeccionado un dispositivo de control sobre motores de corriente directa
utilizando como interfaz electrónica un puente H y como medio de comunicación entre
software y hardware un modelo cualquiera de Arduino se concluye que:
La librería Arduino diseñada para el lenguaje Java facilita en gran medida la
comunicación entre una computadora y un dispositivo electrónico a través de
Arduino. Las posibilidades que se pueden lograr utilizando el poder de un lenguaje
tan robusto como Java y las posibles interfaces electrónicas que podamos diseñar
son muy amplias y los posibles resultados a obtener son prometedores.
El haber podido controlar un motor desde una computadora resulta ser el principio
fundamental de sistemas más especializados orientados al área de robótica.
Un reto a conquistar sería poder variar la velocidad con la que el motor gira o bien
implementar un sistema como este a motores paso a paso y a servomotores para
obtener un sistema mucho más especializado y apto para ser utilizado en diseños de
robótica.
Aunque existen circuitos integrados que cumplen la función del puente H, el utilizar
una interfaz transistorizada nos deja disponer de voltajes y corrientes más altas.
Controlando Motor de Corriente Directa con Arduino y Java| Panama Hitek
10 Presentado por Antony García G. | [email protected]
RECOMENDACIONES
Se debe tomar en cuenta las características técnicas del motor que se vaya a usar
para la prueba de este diseño, tales como voltaje máximo y corriente máxima. De
igual forma, los transistores y los diodos rectificadores deben poseer valores máximos
permisibles por encima de los requeridos por el motor para evitar averías y posibles
accidentes.
REFERENCIAS
* Toda la información acerca de este sistema puede ser encontrada en http://panamahitek.com.
** Este documento ha sido confeccionado en su totalidad por Antony García González, estudiante
de la Facultad de Ingeniería Eléctrica en la carrera de Licenciatura en Ingeniería Electromecánica
de la Universidad Tecnológica de Panamá, sede Azuero.
Cualquier consulta se puede realizar a través de la dirección de correo electrónico
antony.garcia.gonzá[email protected]