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
1
CONTENIDO 1 Información General sobre Hardware Arduino…………….. Arduino……………..………………… ………………… 3 2. Especificaciones técnicas Arduino Mega 2650………………………………...4 2650………………………………...4 2.1. Alimentación....................................................................................................4 2.2. Pines de alimentación...................................................................................... 5 2.3. Ancho de pulso ( PWM PWM )................................................................ ................... 5 5 2.4. Entradas analógicas..........................................................................................5 2.5. Software de Programación...............................................................................6 2.6. Características físicas compati bilidad bilidad del Shield……………………………. Shield…………………………….6 6 2.7. Instalación y conexión de placa Arduino.........................................................6 2.8. Comunicación serial Arduino Y Matlab (Simulink)…………………… (Simulink)………………………… ……10 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 ………………………………………………....20 BIBLIOGRAFIA…………………………………………………………..………22 BIBLIOGRAFIA…………………………………………………………
2
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.
3
2. Especificaciones técnicas Arduino Mega 2650 Microcontrolador Voltaje de funcionamiento Interno Voltaje de Entrada (recomendado) Voltaje de Entrada (Límites) Digital pines I / O
Atmega2560 5V 7-12V 6-20V 54 (de los cuales 14 proporcionan una salida PWM) 16 40 mA. 50 mA. 256 KB de los cuales 8 KB utilizadas por gestor de arranque 8 KB 4 KB 16 MHz
Pines de entrada analógica Corriente DC máxima por Pin en 5v Corriente DC máxima por Pin en 3,3v Memoria Flash SRAM EEPROM Velocidad
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. 4
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. 5
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
6
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
selecciona Incluye
esta
localización
en en
medios la
removibles;
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). 7
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 .
8
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.
9
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:
10
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.
11
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”.
12
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.
13
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.
14
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 H IGH, 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 } 15
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 men sajes (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.
16
// Incluir la siguiente librería para controlar LCD #Include
// Inicializar la librería según los pines de conexión e n 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); }
17
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 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); }
18
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 19
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 //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 20
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.
21
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
22