¿Como Mover un Motor DC con Matlab?
En esta sencilla guía aprenderás como puedes controlar un motorreductor para arduino utilizando un puente H l298n y Matlab, un programa muy interesante, completo y con muchas posibles aplicaciones.
Recuerda si no sabes como conectar tu arduino a Matlab te invitamos a revisar la guía dedicada:
MATERIALES NECESARIOS
- Arduino (Uno – Mega – Nano).
- Puente H l298n.
- Motorreductor amarillo para arduino.
PASOS A SEGUIR:
- Conecta tu arduino al PC y abre Matlab.
- Inicia la conexión de tu arduino con Matlab, si no sabes como realizar la conexión, por favor revisa la guía inicial en Matlab que encontraras al inicio de este tutorial.
- Para este ejemplo utilizaremos un arduino Mega2560 conectado al puerto COM17, por ello el código de conexión inicial sera el siguiente: .
a = arduino('COM17','Mega2560')
- Confirmaremos la conexión exitosa para ello Matlab nos arrojara las propiedades de nuestra placa Arduino MEGA2560.
- Ahora procederemos a conectar nuestro Arduino al Puente H l298n como se muestra en la siguiente imagen, (D8 – IN2 & D7 – IN1)
- El funcionamiento de este puente H es demasiado sencillo, para activar el motor es necesario que en IN1 se envíen 5V mientras que en IN2 enviaremos 0V asi el motor se moverá en sentido derecho, si deseamos invertir su giro (sentido Izquierdo), enviaremos 0V a IN2 y 5V a IN1, para apagar dicho motor solo hace falta enviar 0V a las dos entradas.
- Ahora procederemos a mover nuestro servomotor a la derecha para ello activaremos el Pin D7 y apagaremos el Pin D8, utilizaremos el siguiente código: .
writeDigitalPin(a,'D7',1);writeDigitalPin(a,'D8',0);
Donde:
- Podemos entender que los valores lógicos corresponden a 1 = 5V y 0 = 0V.
- Después de enviados los comandos podremos observar como nuestro servomotor se moverá en sentido derecho, si deseamos que se mueva en sentido contrario solo debemos cambiar los valores lógicos de la formula: .
writeDigitalPin(a,'D7',0);writeDigitalPin(a,'D8',1);
- Por ultimo y para terminar esta guía si deseamos apagar nuestros motores solo debemos enviar valores lógicos de 0: .
writeDigitalPin(a,'D7',0);writeDigitalPin(a,'D8',0);