Dentro de nuestra serie de Arduino, y siguiendo con sus primerísimos pasos, vamos a realizar un pequeño montaje para controlar un motor DC a través de las salidas de Arduino. Tal y como podemos ver en la página de especificaciones de Leonardo, la placa cuenta con salidas analógicas y digitales.

Las salidas digitales permiten dos valores en la salida, 0 o 1, encendido o apagado pero no hay posibilidad de modulación.

Ahí entran las salidas analógicas de Arduino. En la placa Leonardo son la 3, 5, 6, 9, 10, 11 y 13 de entre los pines digitales. Veréis que aparecen con una señal ~ y entre paréntesis está escrito (PWM ~), o sea, modulación por ancho de pulsos, luego por tanto permite ir modificando la tensión de salida entre 0 y su valor máximo.

Vamos a aprovechar esta característica para realizar un montaje que realice una aceleración y desaceleración de un motor DC (tendréis que escoger uno del voltaje adecuado, recordad que Arduino tiene una salida máxima de 5V y sería interesante que vuestro motor se moviese a bajos voltajes, que no era mi caso).

Este es el programa Arduino necesario:

/*
Fading a simple DC motor

Created to test de analog output using the analogWrite() function over a small DC motor.

The circuit:
* DC motor connected to pin nº 9

Created 5 Dec 2012
By Galideas

https://galideas.wordpress.com

This example code is in the public domain.
*/

int DCMotorPin = 9; // DC motor connected to digital pin 9 (which has the possibilite of PWM as analog output)

void setup() {
// nothing happens in setup
}

void loop() {
// fade in from min to max in increments of 5 points:
for(int fadeValue = 0 ; fadeValue <= 255; fadeValue +=85) {
// sets the value (range from 0 to 255):
analogWrite(DCMotorPin, fadeValue);
// wait for 3000 milliseconds to see the increasing speed effect
delay(3000);
}

// fade out from max to min in increments of 5 points:
for(int fadeValue = 255 ; fadeValue >= 0; fadeValue -=85) {
// sets the value (range from 0 to 255):
analogWrite(DCMotorPin, fadeValue);
// wait for 3000 miliseconds to see the decreasing speed effect
delay(3000);
}
}

En el inicio del programa se le indica a Arduino en qué pin está conectado el motor con la variable int DCMotorPin.

Como veis, en la función loop, se hace uso de un bucle for de modo semejante a C o Java para ir cambiando el valor de la variable fadeValue. En este caso se trata de 3 incrementos en rangos de 3 segundos pero podéis emplear otros valores que os gusten más (también dependiendo de la “sensibilidad” de vuestro motor DC). Ya podemos hacer uso de función necesaria: analogWrite.

Esta función lleva dos parámetros, el pin al que aplicar la salida (el de nuestro DCMotor) y el valor de modulación que queremos, que deberá estar entre 0 (apagado) y 255 (potencia total!!!).

Así que las co00 exiones son muy simples, salida 9 a pata de motor y la otra pata a pin GND. Cargamos el programa en la placa Leonardo tal y como se indica este post, desconectamos y enchufamos esta placa a nuestro suministro de 7,5V (qué gran compra el convertidor ACDC con salida variable). En cuanto deje de parpadear el LED L de la placa el programa se habrá lanzado y ya tendremos nuestro motor acelerando y decelerando.

PS. El montaje es muy sencillo, no creo que hagan falta imágenes para detallar lo que digo. En caso contrario, comentario por favor 😉

Anuncios