3

Primeros pasos con Arduino

Hace un tiempo habíamos empezado a hablar del uso de Arduino, una mera introducción. En este post veremos un ejemplo y algunas cosas sobre la programación. Antes que nada es indispensable descargarse y leer un buen manual, preferiblemente en español con los conceptos básicos.

Nuestra placa elegida es un clon de Arduino MEGA que contiene un microcontrolador ATmega1280. Sus principales características son:

* Microcontrolador: ATmega1280
* Frecuencia: 16MHz
* Tensión de entrada: 7~12V
* Pines digitales I/O: 54 (de los cuales 14 pueden ser salidas PWM)
* Entradas analógicas: 16
* Memoria Flash: 128K
* Memoria SRAM: 8K
* Memoria EEPROM: 4K

Como primer experimento vamos a practicar utilizando pines digitales para controlar un motor paso a paso. El elegido es uno de origen chino adquirido en DealExtreme a muy bajo costo.


Es muy importante conocer qué tipo de motor es, la tensión de trabajo y la secuencia de pasos para lograr que el motor funcione. Obligada consulta a la hoja de datos. La siguiente tabla nos muestra la secuencia que debemos programar en nuestro Arduino para que las bobinas del motor sean excitadas convenientemente y lograr que el eje gire!

PROGRAMANDO

La estructura básica del lenguaje de programación Arduino es bastante simple y se organiza en al menos dos partes o funciones que encierran bloques de declaraciones. Ambas funciones son requeridas para que el programa funcione.

void setup()
{
statements;
}

void loop()
{
statements;
}

La función setup() debería contener la declaración de cualquier variable al comienzo del programa. Es la primera función a ejecutar en el programa, es ejecutada una vez y es usada para asignar los modos de pines o inicializar las comunicaciones serie por ejemplo.

La función loop() se ejecuta a continuación e incluye el código que se ejecuta contínuamente leyendo entradas, activando salidas, etc. Esta función es el núcleo de todos los programas Arduino y hace la mayor parte del trabajo.

El programa a continuación hará que nuestra placa Arduino utilice 4 pines como salidas digitales, y «escriba» en ellos la secuencia correspondiente para mover el motor en un sentido. Cambiando el tiempo de demora se podrá incrementar la velocidad de giro del eje del motor.

/* EMPEZANDO CON ARDUINO, EJEMPLOS BASICOS CON PINES DIGITALES
 CONTROL DE UN MOTOR PASO A PASO BIPOLAR - 27 de mayo de 2012
 www.automatismos-mdq.com.ar - www.mateslab.com.ar
 */

// Funcion "setup". Declaraciones de variables o inicializaciones
// van aqui. Se ejecuta por unica vez al iniciar el programa.

void setup ()
{
  pinMode(47, OUTPUT); // ajusta pin47 como salida
  pinMode(49, OUTPUT); // ajusta pin49 como salida
  pinMode(51, OUTPUT); // ajusta pin51 como salida
  pinMode(53, OUTPUT); // ajusta pin53 como salida
}

// Funcion "loop". Aqui va el codigo que se ejecutara continuamente.

void loop()
{
  // PASO 1
  digitalWrite(47, LOW);
  digitalWrite(49, LOW);
  digitalWrite(51, LOW);
  digitalWrite(53, HIGH);
  delay(200); // retardo de 200 milisegundos

  // PASO 2
  digitalWrite(47, LOW);
  digitalWrite(49, LOW);
  digitalWrite(51, HIGH);
  digitalWrite(53, HIGH);
  delay(200); // retardo de 200 milisegundos

  // PASO 3
  digitalWrite(47, LOW);
  digitalWrite(49, LOW);
  digitalWrite(51, HIGH);
  digitalWrite(53, LOW);
  delay(200); // retardo de 200 milisegundos

  // PASO 4
  digitalWrite(47, LOW);
  digitalWrite(49, HIGH);
  digitalWrite(51, HIGH);
  digitalWrite(53, LOW);
  delay(200); // retardo de 200 milisegundos

  // PASO 5
  digitalWrite(47, LOW);
  digitalWrite(49, HIGH);
  digitalWrite(51, LOW);
  digitalWrite(53, LOW);
  delay(200); // retardo de 200 milisegundos

  // PASO 6
  digitalWrite(47, HIGH);
  digitalWrite(49, HIGH);
  digitalWrite(51, LOW);
  digitalWrite(53, LOW);
  delay(200); // retardo de 200 milisegundos

  // PASO 7
  digitalWrite(47, HIGH);
  digitalWrite(49, LOW);
  digitalWrite(51, LOW);
  digitalWrite(53, LOW);
  delay(200); // retardo de 200 milisegundos

  // PASO 8
  digitalWrite(47, HIGH);
  digitalWrite(49, LOW);
  digitalWrite(51, LOW);
  digitalWrite(53, HIGH);
  delay(200); // retardo de 200 milisegundos

}

Por último el diagrama a modo de ejemplo. Reemplazamos las bobinas del motor por LEDs para poder ver la secuencia. Recuerden que no es posible conectar el motor directamente a los pines de salida de Arduino por el consumo del mismo. Es necesario utilizar un circuito driver adecuado para tal caso, como puede ser el L298. En próximos artículos veremos en detalle la electrónica.

Lucas Martin

Electrónico por sobre todas las cosas. Disfrutando del Hardware y Software Open Source.

3 comentarios

  1. Pingback: Bitacoras.com
  2. es muy bueno, tengo pensado comprar en dx un arduino y ésta mini guia me intusiasma mas.
    por favor desarrollen mas del tema en el blog gracias!!

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.