Guía practica de Arduino

22
1 Santiago Sur. Automatización y Control Industrial. Proyecto de Control. Guía de Arduino. Nombre Alumno (s): Joshua González Almarza Christian Lara Arellano Nombre Profesor (s): Hernán Pimentel Torrejón Joel Vega Caro Fecha: 29 de Noviembre de 2013

Transcript of Guía practica de Arduino

1

Santiago Sur. Automatización y Control Industrial. Proyecto de Control.

Guía de Arduino. Nombre Alumno (s): Joshua González Almarza

Christian Lara Arellano

Nombre Profesor (s): Hernán Pimentel Torrejón

Joel Vega Caro

Fecha: 29 de Noviembre de 2013

2

CONTENIDO

1 Información General sobre Hardware Arduino……………..………………… 3

2. Especificaciones técnicas Arduino Mega 2650………………………………...4

2.1. Alimentación....................................................................................................4

2.2. Pines de alimentación...................................................................................... 5

2.3. Ancho de pulso (PWM)................................................................................... 5

2.4. Entradas analógicas..........................................................................................5

2.5. Software de Programación...............................................................................6

2.6. Características físicas compatibilidad del Shield…………………………….6

2.7. Instalación y conexión de placa Arduino.........................................................6

2.8. Comunicación serial Arduino Y Matlab (Simulink)…………………………10

2.9. Experiencias prácticas de Arduino..................................................................15

2.9.1. Encender y Apagar un LED..........................................................................15

2.9.2. Conectar una pantalla LCD 16x2 a la placa de desarrollo Arduino. .......... 16

2.9.3. Ultrasónico................................................................................................... 18

2.9.4. Control dual................................................................................................. 19

2.9.5. Control de un Servomotor………………………………………………....20

BIBLIOGRAFIA………………………………………………………….………22

3

1. Información General sobre Hardware Arduino

Arduino es una plataforma física computacional open-hardware basada en una sencilla placa con

entradas y salidas (E/S), analógicas y digitales, y en un entorno de desarrollo que implementa el

lenguaje Processing/Wiring. Arduino puede utilizarse en el desarrollo de objetos interactivos

autónomos o puede conectarse a un PC a través del puerto serie utilizando lenguajes como Flash,

Processing, MaxMSP, etc. Las posibilidades de realizar desarrollos basados en Arduino tienen

como límite la imaginación.

El Arduino Mega está basado en el microcontrolador ATMega2560. Tiene 54 pines de

entradas/salidas digitales (14 de las cuales pueden ser utilizadas como salidas PWM), 16 entradas

análogas, 4 UARTs (puertos serial por hardware), cristal oscilador de 16 MHz, conexión USB, jack

de alimentación, conector ICSP y botón de reset. Incorpora todo lo necesario para que el

microcontrolador trabaje; simplemente conéctalo a tu PC por medio de un cable USB o con una

fuente de alimentación externa.

4

2. Especificaciones técnicas Arduino Mega 2650

Microcontrolador Atmega2560

Voltaje de funcionamiento Interno 5V

Voltaje de Entrada

(recomendado)

7-12V

Voltaje de Entrada (Límites) 6-20V

Digital pines I / O 54 (de los cuales 14 proporcionan una

salida PWM)

Pines de entrada analógica 16

Corriente DC máxima por Pin en 5v 40 mA.

Corriente DC máxima por Pin en 3,3v 50 mA.

Memoria Flash 256 KB de los cuales 8 KB utilizadas por

gestor de arranque

SRAM 8 KB

EEPROM 4 KB

Velocidad 16 MHz

2.1. Alimentación.

Arduino mega puede ser alimentado mediante el puerto USB o con una fuente externa de

poder. La alimentación es seleccionada de manera automática. Cuando se trabaja con una

fuente externa de poder se debe utilizar un convertidor AC/DC y regular dicho voltaje en el

rango operático de la placa. De igual manera se puede alimentar el micro mediante el uso

de baterías. Preferiblemente el voltaje debe estar en el rango de los 7v hasta los 12v.

2.2. Pines de alimentación.

Arduino mega posee algunos pines para la alimentación del circuito aparta del adaptador

para la alimentación:

VIN: A través de este pin es posible proporcionar alimentación a la placa.

5V: Podemos obtener un voltaje de 5V y una corriente de 40mA desde este pin.

3.3V: Podemos obtener un voltaje de 3.3V y una corriente de 50mA desde este pin.

GND: El tierra (ground) de la placa (0V).

NOTA: Al alimentar la placa Arduino corrobore que el voltaje de entrada esté dentro del

rango recomendado entre 7 y 12 voltios. Si utiliza más de 12V, el regulador de voltaje se

puede sobrecalentar y dañar la placa.

5

Memoria: El Atmega2560 tiene 256 KB de memoria flash para almacenar código (de los

cuales 8 KB se utiliza para el gestor de arranque), 8 KB de SRAM y 4 KB de EEPROM

(que puede ser leído y escrito con la librería EEPROM).

Cada uno de los 54 pines digitales de la placa Arduino Mega se puede utilizar como entrada

o de salida, mediante las funciones pinMode (), digitalWrite (), y digitalRead (). Ellos

operan a 5 voltios. Cada pin puede proporcionar o recibir un máximo de 40 mA. Y tiene

una resistencia interna de pull-up (desconectado por defecto) de 20 a 50 kΩ.

2.3. Ancho de pulso (PWM).

A través del software de programación, cualquier pin digital puede ser utilizado como

PWM, pero por defecto la placa Arduino viene pre-programada para trabajar con este

sistema en los pines 2 al 13 y 44 al 46, con una frecuencia de trabajo de 498 Hz,

aproximadamente 0,5KHz.

Figura 2.3.1.

Como se sabe, en ocasiones el trabajo de motores de corriente continua modulados a través

de ancho de pulso a bajas frecuencia, puede provocar sonidos audibles o perceptibles al

oído humano. Dado esto, la placa Arduino viene equipada con una función que permite

modificar la frecuencia de trabajo de algunos pines PWM; mediante 3 Timers incluidos en

la placa.

2.4. Entradas analógicas.

La placa Arduino Mega2560 tiene 16 entradas analógicas, cada una proporciona 10 bits de

resolución (es decir 1024 valores diferentes). Por defecto miden desde Gnd a 5 voltios,

aunque es posible cambiar el extremo superior de su rango, mediante los pines AREF y

analogReference () función.

6

2.5. Software de Programación.

El Arduino Mega se puede programar con el software de Arduino el cual se puede

descargar desde la página http://arduino.cc/en/Main/Software.

El Atmega2560 en el Arduino Mega viene pre-quemado con un gestor de arranque que le

permite cargar nuevo código a la misma, sin el uso de un programador de hardware

externo. Se comunica con el protocolo original STK500 También puede pasar por alto el

gestor de arranque y el programa del microcontrolador a través de la ICSP (programación

In-Circuit Serial).

2.6. Características físicas compatibilidad del Shield.

El largo y ancho de la placa Arduino Mega2560 es de 4 y 2,1 pulgadas respectivamente,

con el conector USB y conector de alimentación se extiende más allá de la dimensión

anterior. Tres orificios de los tornillos permiten que la tarjeta sea sujeta a una superficie o

caja. Obsérvese que la distancia entre los pines digitales 7 y 8 es de 160 milésimas de

pulgada (0,16 "), diferente al resto de los pines, para dar a conocer al usuario, el cambio de

“timer” que utiliza el puerto de salida.

2.7. Instalación y conexión de placa Arduino.

Para instalar el driver de Arduino y realizar su conexión con el computador es necesario lo

siguiente:

1. Es necesario de nuestra placa Arduino en este caso usaremos el modelo Mega 1280

y un cable USB tipo B.

Cable USB tipo B (impresoras) Placa Arduino Mega 1280

7

2. Es necesario también tener el Software de Arduino, se recomienda utilizar las

últimas versiones disponibles en la página oficial del Hardware. Cuando finalice la

descarga, descomprimir el archivo descargado. Haga doble clic en la carpeta para

abrirla. En el interior están los archivos de funcionamiento doble click en el

ejecutable y seguimos las recomendaciones del programa.

3. Conecte la placa Arduino al computador mediante el cable USB. El LED de

encendido verde (con la etiqueta PWR) debe encender y parpadear.

4. Respecto a la instalación de los controladores cuando conectas la placa, Windows

debería inicializar la instalación de los drivers (siempre y cuando no hayas utilizado

ese ordenador con una placa Arduino anteriormente).

En Windows Vista y Windows 7, los drivers deberían descargarse e instalarse

automáticamente.

En Windows XP, se abrirá el diálogo de instalación de Nuevo Hardware:

Cuando aparezca en la pantalla la siguiente pregunte: ¿Puede Windows

conectarse a Windows Update para buscar el software? Selecciona

“No”, no esta vez. Haz click en Siguiente.

Selecciona Instalar desde una lista o localización específica

(Avanzado) haz click en Siguiente.

Asegúrate que Buscar los mejores drivers en estas localizaciones esté

seleccionado; deselecciona Buscar en medios removibles;

selecciona Incluye esta localización en la búsqueda y navega al

directorio drivers/FTDI USB Drivers dentro de la carpeta de Arduino que

has descomprimido previamente.

El asistente de instalación buscará los drivers y te anunciará que encontró un

"USB Serial Converter" (se traduce por Conversor USB-Serie). Haz click

en Finalizar.

El asistente de instalación de hardware volverá a iniciarse. Repite los

mismos pasos que antes y selecciona la misma carpeta de instalación de

los drivers. Esta vez el sistema encontrará un "USB Serial Port" (o Puerto

USB-Serie).

8

Puedes comprobar que los drivers se han instalado correctamente abriendo la

carpeta del Administrador del Dispositivos, en el grupo Dispositivos del

panel de control del sistema. Busca "USB Serial Port" (o Puerto USB-Serie)

en la sección de puertos; esa es tu placa Arduino.

5. Ejecuta la Aplicación Arduino haciendo doble click en la aplicación Arduino.

6. Seleccione el programa de ejemplo para hacer parpadear un LED ("LED blink"):

Archivo > Ejemplos > Basics > Blink.

9

7. Para seleccionar el tipo de placa a utilizar nos posicionamos en el menú de

herramientas > Tarjeta > Arduino Mega (ATmega 1280).

8. Para seleccionar el puerto serie posicionamos el cursor en Herramientas > Puerto

Serial > ComX, (ComX, se dejara expresado de esta forma para cualquier número

que acompañe a “Com”). Lo más probable es que venga predeterminado con el

puerto COM3 o mayor (COM1 y COM2 se reservan, por regla general para

puertos serie de hardware). Para asegurarte de cuál es, puedes desconectar la placa y

volver a mirar el menú; el puerto de la placa habrá desaparecido de la lista.

Reconecta la placa y selecciona el puerto apropiado.

10

Después de los pasos anteriores cargamos el ejemplo en nuestra placa Arduino, unos

pocos segundos después de finalizar el proceso de envió del programa deberías ver

cómo el led de la placa comienza a parpadear (con un color naranja).

Nota: Si se instala el software de Arduino en un idioma incorrecto, puede cambiarlo

en el diálogo de preferencias.

2.8. Comunicación serial Arduino Y Matlab (Simulink)

1) Para empezar es necesario entrar en Matlab e iniciar Simulink como se muestra en

la imagen

2) Una vez que adentro de Simulink seleccionamos la librería llamada “Instrument

Control Toolbox” agregamos los bloques para la comunicación de la placa con el

software de Arduino y Matlab, cuales son:

11

Elementos de Comunicación Serial:

Serial Send.

Serial Receive.

Serial Configuration.

8.1) una vez seleccionados los elementos se comunicación serial es necesario

Configurarlos, damos doble click en el bloque “Serial Receive” apareciendo un

nuevo bloque llamado “Source Block: Serial Receive” donde debemos seleccionar

la opción “Communication Port”, esta opción nos permite seleccionar el puerto de

comunicación para él envió o recepción de datos.

Se debe seleccionar el mismo puerto de comunicación que se utiliza en la placa

Arduino, caso contrario no se producirá la comunicación entre el software y el

hardware.

12

8.2) De igual forma se debe configurar el bloque “Serial Send” dando doble click

en él, apareciendo un cuadro llamado “Sink Block Parameters: Serial Send”, acá

debemos cambiar al parámetro de comunicación llamado “Communication port” en el

seleccionamos el puerto de comunicación designado en los demás bloques de

comunicación y en la placa Arduino.

8.3) respecto al bloque “Serial Configuration” lo configuramos de igual forma

que los demás bloques haciendo doble click en él, acá es necesario seleccionar el

puerto de comunicación y además es necesario modificar el parámetro “Baud

Rate”, lo que configura esta opción es el número de unidades de señal por segundo

y el valor a ingresar es “115200”.

13

Este bloque se puede agregar de 2 formas, una es agregándolo directamente de la

librería de Simulink y la segunda forma agregar solo los 2 bloques restantes y al ser

configurado y apretando “Apply” aparecerá el siguiente cuadro:

Este bloque nos indica que para la configuración de comunicación es necesario

este bloque ya que en él se configuran variables importantes como lo es la

velocidad de comunicación.

14

Cuando aparece el cuadro solo ponemos “Yes” y aparecerá configurado con el

puerto ya seleccionado en el bloque de envió o de recepción según cual fue

configurado.

15

2.9. Experiencias prácticas de Arduino.

2.9.1. Encender y Apagar un LED

Al implementar el conexionado de la imagen; se deberá cargar el siguiente código, el cual

permitirá encender y apagar un LED.

Abra el software de programación Arduino y pegue el siguiente código, luego cárguelo al

Arduino con el botón de carga.

/* Inicia una sección de comentarios

-----------------------------------

Encender y apagar un LED

-----------------------------------

El LED enciende y apaga de manera infinita mientras el Arduino se encuentre con

suministro eléctrico.

*/ Cierra la sección de comentarios

int led = 2; //se declara el pin 2 como LED,

void setup () {

pinMode (led, OUTPUT); }// Se configura el pin 2, como salida

void loop () {

digitalWrite (led, HIGH); // Activa el pin 2, se envía la señal HIGH, y entrega 5v.

// Se enciende el LED

delay (1000); // Se debe esperar 1000ms o 1 segundo

digitalWrite (led, LOW); // Desactiva el pin 2, envía la señal LOW//

// Entrega 0v y posterior a esto se apaga el LED

delay (1000); // Se esperan 1000ms o 1 segundo// El ciclo se reiniciara

}

16

2.9.2. Conectar una pantalla LCD 16x2 a la placa de desarrollo Arduino.

Las pantallas de cristal líquido LCD o Display LCD para mensajes (Liquid Cristal

Display) tienen la capacidad de mostrar cualquier carácter alfanumérico, permitiendo

representar la información que genera cualquier equipo electrónico de una forma simple y

económica.

Para estos casos, Arduino dispone de una librería LiquidCrystal.h que permite utilizar y

manipular de forma sencilla pantallas LCD de diferentes tamaños y formatos.

Análogamente se podrá comparar una pantalla LCD con una matriz de la siguiente forma:

1 Potenciómetro de 4,7 K.

1 Display LCD 16x2 (16 columnas y 2 filas)

Dependiendo del fabricante, en ocasiones la disposición de los pines de salida de la pantalla

LCD puede variar, remplace el conexionado de los pines según la disposición de estos,

refiriéndose al datasheet del LCD adquirido y la siguiente referencia:

LCD RS pin al pin digital número 52 de la placa Arduino

LCD Enable pin al pin digital número 50 de la placa Arduino

LCD R/W pin al pin Gnd Arduino

LCD DB4 pin al pin digital número 48 de la placa Arduino

LCD DB5 pin al pin digital número 46 de la placa Arduino

LCD DB6 pin al pin digital número 44 de la placa Arduino

LCD DB7 pin al pin digital número 42 de la placa Arduino

LCD Vcc pin a alimentación 5v.

LCD GND pin al Gnd del Arduino

Adicionalmente se deberá conectar un potenciómetro en cuyos extremos deberá conectar

+Vcc a 5v y Gnd correspondientemente. La pata interior del potenciómetro se deberá

conectar el pin V0 del LCD. El potenciómetro permitirá modificar el contraste de la

pantalla LCD Por último se procederá a conectar la conexión USB de la placa de desarrollo,

el usuario abrirá el software de desarrollo de Arduino y se procederá a carga el siguiente

código.

17

// Incluir la siguiente librería para controlar LCD

#Include <LiquidCrystal.h>

// Inicializar la librería según los pines de conexión en la //placa de desarrollo

LiquidCrystal lcd (52, 50, 48, 46, 44, 42);

void setup () {

// Se configura el LCD para utilizar 16 columnas y 2 filas

lcd.begin (16, 2);

// Posicionar el cursor en la posición 0,0, eso es extremo superior izquierdo

lcd.setCursor (0, 1);

// Se imprime por la pantalla LCD, el mensaje

lcd.print ("Guía Inacap!");

}

void loop () {

// posicionar el cursor en la posición 0,1, eso es extremo inferior izquierdo

lcd.setCursor (0, 1);

// Se imprime el número de segundo desde el ultimo reinicio del Arduino

lcd.print (millis ()/1000);

}

18

2.9.3. Ultrasónico.

Módulo de alcance ultrasónico HC - SR04 ofrece 2 cm - 400 cm sin contacto función de

medición, la precisión que van puede llegar a 3 mm. Los módulos incluye transmisores

ultrasónicos, el receptor y el circuito de control.

5 Voltios (VCC), Tigger Entrada de pulsos (Trigonometría), Echo de salida de pulsos

(Echo), 0 Voltios (GND)

#include <Ultrasonic.h>

Ultrasonic ultrasonic(12,11); // (Trig PIN,Echo PIN)

void setup() {

Serial.begin(9600);

}

void loop()

{

Serial.print(ultrasonic.Ranging(CM)); // CM or INC

Serial.println(" cm" );

delay(100);

}

19

2.9.4. Control Dual.

Controlador de motor dual de 4.8V- 46V y 2A, que es la versión revisada del DF-MDV1.0.

Su rendimiento ha sido altamente mejorado. Puede soportar una mayor corriente debido a

que cuenta con una mayor disipación de calor. Es fácil de controlar, ya que usa el chip de

control de motor L298N de LGS de alta potencia. Este chip permite el control directo de 2

motores DC bidireccionales, e incorpora diodos cortos de alta velocidad para su protección.

Salida de corriente de hasta 2A. El controlador usa un diseño broad-brush que reduce la

resistencia que producen los cables.

int ENA = 5 ; / / conectarse al puerto de Arduino 5 (salida PWM)

int IN1 = 2 ; / / conectarse a la Arduino puerto 2

int IN2 = 3 ; / / conectarse al puerto de Arduino 3

int ENB = 6 ; / / conectarse a Arduino de puerto 6 (salida PWM)

int IN3 = 4 ; / / conectarse al puerto de Arduino 4

int IN4 = 7 ; / / conectarse al puerto de Arduino 7

digitalWrite ( IN1 , BAJA ) ;

digitalWrite ( IN2 , HIGH ) ; / / establecer directon de Motora

digitalWrite ( IN3 , HIGH ) ;

digitalWrite ( IN4 , BAJA ) ; / / establecer directon de motorB } void loop ( ) {

analogWrite ( ENA , 255 ) ; / / iniciar la conducción motora

analogWrite ( ENB , 255 ) ; / / empezar a conducir motorB

20

2.9.5. Control de un Servomotor.

En el siguiente ejemplo se procederá a manipular la posición de un servomotor, a través de

un potenciómetro.

Los servomotores tienen tres cables: alimentación, tierra, y de la señal. El cable de

alimentación es típicamente rojo, y debe ser conectado al pin de 5V en la placa Arduino. El

cable a tierra es típicamente negro o marrón y debe ser conectado a un pin Gnd o tierra de

la placa Arduino. El pin de la señal es generalmente de color amarillo o naranja y debe ser

conectado al pin 9 en la placa Arduino.

El potenciómetro debe ser conectado de modo que las dos conexiones exteriores están

conectadas a la alimentación (+5 V) y tierra, y la conexión del medio estará conectada a la

entrada analógica 2 en el Arduino.

Código Arduino control de un servo motor

#include <Servo.h>

//Se debe incluir la librería Servo.h para la manipulación de los

//servos.

Servo myservo;

// Creamos un objeto llamado servo, para poder manipularlo más fácilmente//

int potepin = 2;

// la variable potepin almacenara el pin en que está conectado el potenciómetro//

int val=0;

//variable que almacenara el valor leído desde el potenciómetro

21

void setup()

{

myservo.attach(9);

//Configuraremos que el objeto “myservo” tendrá el pin 9 para comunicarse//

}

void loop()

{

val = analogRead(potepin);

//lee el valor desde el potenciómetro (este valor estará comprendido entre (0 y 1023)//

val = map(val, 0, 1023, 0, 179);

// En la variable val almacenara un escalamiento entre los 1023

//posibles datos transmitidos desde el potenciómetro y los 180

//posibles datos que pueden ser recibidos por el servomotor.

myservo.write(val);

Escribe el valor del variable val en el pin del servo, para poder manipular la posición del

servo.

delay(15);

// Espera 15 milisegundos para que el servo alcance la posición indicada

}

Con este programa a través de la manipulación del potenciómetro, manipularemos la

posición del servomotor.

22

BIBLIOGRAFIA.

La información se obtuvo de las siguientes páginas:

http://arduino.cc/en/Main/ArduinoBoardMega2560

http://arduino.cc/en/Tutorial/Blink?from=Tutorial.BlinkingLED

http://juancolombo.com.ar/index.php/trabajos/conocimiento/26-arduino1