Utilizamos cookies propias y de terceros para mejorar nuestros servicios y mostrarle publicidad relacionada con sus preferencias mediante el análisis de sus hábitos de navegación. Si continua navegando, consideramos que acepta su uso. Puede cambiar la configuración u obtener más información aquí

View site in english Ir a la página de inicio Contacta conmigo
sábado, 16 de julio de 2016

Controlador de motor bidireccional con Arduino

Las placas Arduino, con una gran cantidad de salidas y entradas analógicas y digitales, nos permiten controlar dispositivos electrónicos desde un ordenador a través de un interfaz USB con una programación muy sencilla utilizando un lenguaje similar al C. Existen gran cantidad de módulos prefabricados para controlar motores, relés y todo tipo de sensores, pero, si te gusta la electrónica como a mí, también puedes diseñar y conectar tus propios circuitos analógicos o digitales.

En este artículo voy a mostrar cómo construir un sencillo circuito para controlar un motor de corriente continua y la manera de controlar el giro en una u otra dirección mediante una placa Arduino y un sencillo programa escrito en CSharp.

En este enlace puedes descargar el proyecto BidiMotorArduino con el código fuente del programa, escrito con Visual Studio 2013.

Lo primero que necesitas es una placa Arduino. El precio de estas placas es bastante asequible, por lo que lo mejor es que adquieras la más completa que puedas conseguir. Yo, por ejemplo, tengo la placa Arduino MEGA, con una gran cantidad de entradas y salidas.

Placa Arduino mega
Placa Arduino mega

El motor que voy a utilizar es un viejo destornillador eléctrico reciclado. Funciona con unos 3 voltios y tiene una gran potencia, que nos permite mover cargas pesadas.

Motor eléctrico reciclado
Motor de destornillador eléctrico reciclado

Para controlar el motor, he construido una sencilla placa que consta de un relé de dos circuitos para cambiar la dirección de giro del motor, controlado por un transistor, y de otro par de transistores que encienden o apagan el motor.

La placa montada
Montaje de los componentes electrónicos en la placa

Este es el esquema de la placa:

Diseño del circuito
El diseño del circuito

El relé, que conmuta dos circuitos, se controla mediante un transistor NPN 2N2222, que se activa o desactiva mediante una de las salidas digitales de la placa Arduino. Funciona con 12 voltios y el diodo BA158 protege al transistor de las corrientes de retorno que se pueden producir al despolarizar la bobina.

Para encender o apagar el motor, utilizo un transistor 2N3055. Este transistor admite una corriente máxima de 4 amperios, lo que nos permite controlar motores de gran potencia. El diodo BY255 protege al transistor como en el caso anterior.

Como la corriente de base para activar el transistor 2N3055 puede ser elevada, en lugar de conectarlo directamente con una de las salidas digitales de la placa Arduino, la alimento con la salida de 5 voltios de la fuente de alimentación, controlada por otro transistor 2N2222, que solo pedirá unos pocos miliamperios a la salida del Arduino.

Como fuente de alimentación, he utilizado una fuente de PC, que nos ofrece todos los voltajes necesarios para este circuito y para alimentar a la placa Arduino. (El Arduino puede alimentarse simplemente con la conexión USB, pero si lo conectamos a una fuente de alimentación externa, aumentamos la potencia máxima de sus señales de salida).

Si queréis ver el montaje completo donde he utilizado este circuito, podéis seguir este enlace donde explico cómo construir una torreta airsoft robotizada.

El programa para el controlador Arduino es muy sencillo, en mi caso, utilizo el pin 22 para controlar el relé y el pin 24 para encender o apagar el motor:

void setup() {
pinMode(22, OUTPUT);
digitalWrite(22, LOW);
pinMode(24,OUTPUT);
digitalWrite(24, LOW);
Serial.begin(9600);
}

void loop() {
if(Serial.available() > 0) {
int val = Serial.read();
if (val & 1) { // Cambiar dirección motor
digitalWrite(22, HIGH);
}
else {
digitalWrite(22, LOW);
}
if (val & 2) { // Mover motor
digitalWrite(24, HIGH);
}
else { // Parar motor
digitalWrite(24, LOW);
}
}
}

Y, desde el programa C#, solo tenemos que escribir un byte en el puerto serie con los bits 0 y 1 activados o desactivados:

SerialPort p = new SerialPort(txtCOM.Text);
p.BaudRate = 9600;
p.Open();
byte[] val = new byte[1] { 2 };
p.Write(val, 0, 1);
p.Close();

Para terminar, os dejo un par de libros para iniciarse en el mundillo del Arduino:

Comparte este artículo: Compartir en Twitter Compártelo en Facebook Compartir en Google Plus Compartir en LinkedIn
Comentarios (0):
* (Su comentario será publicado después de la revisión)

E-Mail


Nombre


Web


Mensaje


CAPTCHA
Change the CAPTCHA codeSpeak the CAPTCHA code