Controlando un motor de corriente directa desde la computadora con Arduino y Java

11
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

description

Un documento breve donde se muestra una opción fácil y rápida para el control sobre un motor de corriente directa desde la computadora con Arduino y Java,

Transcript of Controlando un motor de corriente directa desde la computadora con Arduino y Java

Page 1: 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

Page 2: Controlando un motor de corriente directa desde la computadora con Arduino y Java

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/

Page 3: Controlando un motor de corriente directa desde la computadora con Arduino y Java

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

Page 4: Controlando un motor de corriente directa desde la computadora con Arduino y Java

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);

}

}

Page 5: Controlando un motor de corriente directa desde la computadora con Arduino y Java

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/

Page 6: Controlando un motor de corriente directa desde la computadora con Arduino y 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

Page 7: Controlando un motor de corriente directa desde la computadora con Arduino y Java

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/

Page 8: Controlando un motor de corriente directa desde la computadora con Arduino y 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.

Page 9: Controlando un motor de corriente directa desde la computadora con Arduino y Java

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.

Page 10: Controlando un motor de corriente directa desde la computadora con Arduino y Java

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.

Page 11: Controlando un motor de corriente directa desde la computadora con Arduino y Java

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]