CARACTERÍSTICAS
Este modelo de Ardunio lleva el microcontrolador ATMega2560 (datasheet). Dispone de 54 pines de entrada/salida digitales de los cuales 15 pueden usarse como salidas PWM (Pulse Width Modulation, modulación por anchura de pulso), 16 pines de entrada analógicas, funciona a una velocidad de reloj de 16Mhz, dispone de entrada de alimentación externa a través de un Jack de 5,5/2,1mm (positivo interior) o a través del conector USB, conexión para periféricos por puerto ICSP, 4 USARTs (puertos serie por hardware) y botón de reset en placa.
La comunicación con el ordenador se realiza a través del puerto USB y la conversión de USB a datos serie para que los entienda el MCU (microcontrolador ATMega2560) lo realiza otro MCU de la casa Atmel, el ATMega16U2. Este es un MCU completo, que en este caso viene programado con la única función de realizar la comunicación serie entre el MCU principal y el puerto USB del ordenador.
La alimentación de la placa es autoconmutable entre el jack y el conector USB. Ademas tenemos un polifusible que se encarga de supervisar los excesos de carga y si superan los limites corta la alimentación hasta que los niveles vuelvan a estar dentro del rango correcto. La tensión de alimentación deberá estar entre 6 y 20 voltios y un mínimo de 500mA (en esta placa con la cantidad de pines I/O que posee la recomendación debería aumentar a 1000mA). Recomiendan que el rango este entre 7 a 12 voltios para no sobrecalentar el regulador de tensión incorporado en la placa y así prolongar su vida útil.
ESPECIFICACIONES TÉCNICAS
Microcontrolador | ATMega2560 |
Voltaje de la placa | 5V |
Voltaje de entrada (recomendado) | 7-12V |
Voltaje de entrada (máximo) | 6-20V |
Pines entrada/salida Digitales | 54 (15 de ellos PWM en salida) |
Pines digitales PWM salida | 15 |
Pines analógicos de entrada | 16 |
Corriente max. pines I/O | 20 mA |
Corriente max. pin 3.3V | 50 mA |
Memoria Flash | 256 KBytes (dentro del ATMega2560) |
SRAM | 8 KBytes (dentro del ATMega2560) |
EEPROM | 4 KByte (dentro del ATMega2560) |
Velocidad de Reloj | 16 Mhz |
Led en placa | Pin 13 |
Longitud | 101.52 mm |
Ancho | 53.3 mm |
Peso | 37 gr |
PROGRAMACIÓN
Para programar este modelo de Arduino tenemos dos opciones:
- Usar el puerto USB y descargar los programas hechos en el IDE de Arduino
- Usar el programador externo que descarga los programas al MCU a través del puerto ISP.
Hasta hace bien poco teníamos dos versiones del IDE, pero ya quedo solo una que podemos descargar de la pagina de www.arduino.cc. Los pasos para instalarlo los podemos encontrar aquí.
En la memoria del MCU ATMega2560 tenemos el bootloader (8 Kbytes) que es el encargado, cada vez que encendemos la placa o se resetea, de monitorizar si tenemos algún programa para descargar del ordenador a la placa. Si es así lo carga en la memoria del Arduino y lo ejecuta. Si no hay programa para descargar pasa a la ejecución del programa que tuviera en la memoria previamente cargado.
Si necesitáramos este espacio de memoria o simplemente no quisiéramos usar el bootloader, podríamos borrarlo y programar directamente el MCU desde el puerto ISP conectando la placa Arduino al programador ISP y este al ordenador mediante un puerto USB. En este caso al encender o resetear la placa Arduino se ejecuta siempre el programa cargado en la memoria sin retardos ni esperas.
Igualmente si compramos un MCU nuevo sin el bootloader cargado, podríamos cargarlo mediante este programador. Podemos descargar todos los bootloader de todas las placas y de los adaptadores USB en la página www.arduino.cc.
DESCRIPCIÓN DEL PINEADO
La funcionalidad de cada pin es la siguiente:
IOREF - Este pin se usa como referencia para los shield del voltaje al cual funcionan los pines de entrada y salida de la placa Arduino, en este caso 5V. Es importante este dato, ya que en placas como la MEGA que funcionan a 5V si el shield cree que estamos ante una placa de 3,3V el nivel alto digital podría ser insuficiente. Igualmente si estuviéramos en una placa que funcionara a 3,3V de este pin obtendríamos este voltaje y el shield funcionaria a 3,3V, de otro modo podría funcionar a 5V y destruiríamos las entradas de la placa Arduino.
RESET - Este pin se usa para resetear la placa Arduino desde fuera. Es activo a nivel bajo.
3V3 - Este pin se usa para obtener de la placa Arduino un voltaje de 3,3V (solo un 1% de error) y poder alimentar componentes o shields con hasta 50mA. El chip encargado de regular esta tensión es el LP2985. Tenemos esta tensión tanto si la placa esta alimentada por la clavija de 2,1mm o por el puerto USB.
5V - Este pin se usa para una doble función: por un lado obtenemos una tensión regulada a 5V para alimentar los shields o los componentes externos que deseemos (independientemente de como alimentemos la placa arduino, jack 2,1mm o USB), siendo 40mA la máxima corriente que podremos extraer. Pero también podremos alimentar nuestra placa Arduino UNO a través de este pin con una fuente de alimentación externa de 5V (regulada).
GND - Estos pines se usan para obtener una conexión de tierra de la placa. Es importante que todas las placas y componentes externos tenga una referencia de tierra común. Disponemos de 3 pines de GND (sin contar los disponibles en ICSP).
VIN - Este pin se usa para una doble función: por un lado obtenemos la tensión sin regular con la que estemos alimentando la placa Arduino mediante el jack 2,1mm o si estamos alimentando a traves del puerto USB obtendríamos una tensión de 5V regulados. Por otro lado también podemos alimentar la placa Arduino desde una fuente de alimentación externa (respetando los márgenes de alimentación de 7 a 12V recomendados) sin usar el jack 2,1mm ni el puerto USB.
A0 a A15 - Estos pines se usa para recibir una tensión entre 0 y 5V. Esta tensión será convertida mediante un conversor A/D de 10 bits incorporado en el MCU a un valor digital utilizable en nuestros programas. Tener en cuenta que solo hay un conversor A/D en el MCU, por lo que si vamos a leer mas de un pin de entrada analógico los leerá uno y luego el otro (funcionalmente para nosotros funciona como si tuviera un conversor en cada entrada).
También podemos usar este pin como entrada y salida digital. Si lo declaramos asi en nuestro programa la entrada A0 tomara el número 54 y será un puerto digital igual que los demás. La A1 tomara el número 55, así sucesivamente hasta la A15 que tomara el número 69.
0-RX - Este pin se usa para enviar o recibir una señal digital. Dentro de nuestros programas configuraremos si es de salida o de entrada y en este último caso disponemos de una resistencia "pull-up" de 20Kohm (por defecto esta desconectada). Especialmente en este pin lo tenemos conectado al AtMega 16U2 para la recepción de datos del puerto USB. Lo podemos usar también para enviar a la placa Arduino señales serie TTL-UART (serial 0)desde el exterior.
1-TX - Este pin se usa para enviar o recibir una señal digital. Dentro de nuestros programas configuraremos si es de salida o de entrada y en este último caso disponemos de una resistencia "pull-up" de 20Kohm (por defecto esta desconectada). Especialmente en este pin lo tenemos conectado al AtMega 16U2 para la transmisión de datos al puerto USB. Lo podemos usar también para transmitir de placa Arduino señales serie TTL-UART (serial 0) hacia el exterior.
2 - Este pin se usa para enviar o recibir una señal digital. Dentro de nuestros programas configuraremos si es de salida o de entrada y en este último caso disponemos de una resistencia "pull-up" de 20Kohm (por defecto esta desconectada). Este pin ademas es una posible salida PWM o salida analógica simulada. Realmente es una salida digital que genera una señal cuadrada de 490Hz y variando el ancho del pulso podemos simular una señal analógica (tensión promediada) de 8 bits de resolución (256 valores).
También podemos configurar por software este pin para lanzar la interrupción 0.
3 - Este pin se usa para enviar o recibir una señal digital. Dentro de nuestros programas configuraremos si es de salida o de entrada y en este último caso disponemos de una resistencia "pull-up" de 20Kohm (por defecto esta desconectada). Este pin ademas es una posible salida PWM o salida analógica simulada.
También podemos configurar por software este pin para lanzar la interrupción 1.
4 a 12 - Estos pines se usan para enviar o recibir una señal digital. Dentro de nuestros programas configuraremos si son de salida o de entrada y en este último caso disponemos de una resistencia "pull-up" de 20Kohm (por defecto esta desconectada). Estos pines ademas son una posible salida PWM o salida analógica simulada.
13 - Este pin se usa para enviar o recibir una señal digital. Dentro de nuestros programas configuraremos si es de salida o de entrada y en este último caso disponemos de una resistencia "pull-up" de 20Kohm (por defecto esta desconectada). Este pin ademas esta marcado con ~ lo que nos indica que es una posible salida PWM o salida analógica simulada. Este pin tiene un LED conectado y visible en la placa Arduino, muy util para visualizar señales sin nada externo.
AREF - Este pin se usa para entregar al MCU una referencia superior del rango del conversor A/D del MCU. Normalmente tenemos esta referencia a 5V, lo que hace que al tener 1024 pasos (10 bits) de resolución la precisión del conversor es de: 5V/1024pasos=0,00488V, aprox. 5mV. Pero si estuviéramos seguros de no tener en la entrada analógica nunca mas de, por ejemplo 1V, estaríamos desperdiciando resolución y precisión. Aquí entra en juego el pin AREF: si proporcionamos a este pin un voltaje de 1V conseguiremos que el conversor solo acepte la ventana desde 0V a 1V y la precisión de la conversión seria ahora de: 1V/1024pasos=0,000976V o lo que es lo mismo 0,97mV. Efectivamente hemos aumentado muchísimo la precisión de la conversión y será mas exacta.
14-TX3 - Este pin se usa para enviar o recibir una señal digital. Dentro de nuestros programas configuraremos si es de salida o de entrada y en este último caso disponemos de una resistencia "pull-up" de 20Kohm (por defecto esta desconectada). Lo podemos usar tambien para transmitir de placa Arduino señales serie TTL-UART (serial 3) hacia el exterior.
15-RX3 - Este pin se usa para enviar o recibir una señal digital. Dentro de nuestros programas configuraremos si es de salida o de entrada y en este último caso disponemos de una resistencia "pull-up" de 20Kohm (por defecto esta desconectada). Lo podemos usar también para enviar a la placa Arduino señales serie TTL-UART (serial 3)desde el exterior.
16-TX2 - Este pin se usa para enviar o recibir una señal digital. Dentro de nuestros programas configuraremos si es de salida o de entrada y en este último caso disponemos de una resistencia "pull-up" de 20Kohm (por defecto esta desconectada). Lo podemos usar también para transmitir de placa Arduino señales serie TTL-UART (serial 2) hacia el exterior.
17-RX2 - Este pin se usa para enviar o recibir una señal digital. Dentro de nuestros programas configuraremos si es de salida o de entrada y en este último caso disponemos de una resistencia "pull-up" de 20Kohm (por defecto esta desconectada). Lo podemos usar también para enviar a la placa Arduino señales serie TTL-UART (serial 2)desde el exterior.
18-TX1 - Este pin se usa para enviar o recibir una señal digital. Dentro de nuestros programas configuraremos si es de salida o de entrada y en este último caso disponemos de una resistencia "pull-up" de 20Kohm (por defecto esta desconectada). Lo podemos usar tambien para transmitir de placa Arduino señales serie TTL-UART (serial 1) hacia el exterior.
También podemos configurar por software este pin para lanzar la interrupción 5.
19-RX1 - Este pin se usa para enviar o recibir una señal digital. Dentro de nuestros programas configuraremos si es de salida o de entrada y en este último caso disponemos de una resistencia "pull-up" de 20Kohm (por defecto esta desconectada). Lo podemos usar también para enviar a la placa Arduino señales serie TTL-UART (serial 1)desde el exterior.
También podemos configurar por software este pin para lanzar la interrupción 4.
20-SDA - Este pin se usa para enviar o recibir una señal digital. Dentro de nuestros programas configuraremos si es de salida o de entrada y en este último caso disponemos de una resistencia "pull-up" de 20Kohm (por defecto esta desconectada). También podemos usar este pin para realizar comunicaciones I2C, sería el SDA o linea de datos en las comunicaciones I2C.
También podemos configurar por software este pin para lanzar la interrupción 3.
21-SCL - Este pin se usa para enviar o recibir una señal digital. Dentro de nuestros programas configuraremos si es de salida o de entrada y en este último caso disponemos de una resistencia "pull-up" de 20Kohm (por defecto esta desconectada). También podemos usar este pin para realizar comunicaciones I2C, sería el SCL o linea de reloj en las comunicaciones I2C.
También podemos configurar por software este pin para lanzar la interrupción 2.
22 a 53 - Estos pines se usan para enviar o recibir una señal digital. Dentro de nuestros programas configuraremos si son de salida o de entrada y en este último caso disponemos de una resistencia "pull-up" de 20Kohm (por defecto esta desconectada).
Los pines 44 y 46 son una posible salida PWM o salida analógica simulada.
Ademas tenemos un puerto SPI en cuatro de estos pines: 50 (MISO), 51 (MOSI), 52 (SCK) y 53 (SS). Estos 4 pines están duplicados en la placa mega en un conjunto de 6 pines reunidos y llamados ICSP para programar directamente el MCU a través del protocolo ISP. La funcionalidad de los pines la tenemos descrita en las siguientes lineas, cuando que toca el tema de los conectores ICSP.
Tenemos también en este último conector los 2 pares de pines situados en los extremos. Los situados junto a los pines 22 y 23 tiene la función de entregar 5V y los situados junto a los pines 52 y 53 son una toma de tierra GND.
Luego tenemos los dos conectores ICSP (In Circuit Serial Programming).
El situado al debajo del MCU (imagen de la izquierda) para programarlo desde un programador externo, como vimos anteriormente, y el situado al lado del conector USB (imagen de la derecha) para programar el ATMega16U2. Programar este último normalmente no será necesario nunca y programar el MCU desde tiene sentido si nos deshacemos del bootloader.
Los seis pines que configuran el conector del MCU son:
RESET - Conectado al pin 30 del MCU, evidentemente lo resetea. Cuando recibe un nivel bajo reseta el MCU y lo deja en estado de espera para recibir un programa a través de la conexión serie. Es la misma conexión que el pin de RESET de la placa junto al IOREF y 3V3.
SCK- Conectado al pin 20 del MCU, lleva la señal de reloj al programador o periférico conectado. Es la misma conexión que el pin de I/O digital 52.
MISO - Conectado al pin 22 del MCU, lleva la señal de datos del programador o periférico a la entrada del MCU. Es la misma conexión que el pin de I/O digital 50. Este siempre es el pin que esta situado junto a la marca negra en la esquina del conector y sirve de referencia para localizar los demás pines.
GND - Conectado a la linea de tierra de la placa. Importante siempre que el programador, shield o periférico conectado aquí compartan tierra.
MOSI - Conectado al pin 21 del MCU, lleva la señal de datos desde el MCU al programador o periférico conectado. Es la misma conexión que el pin de I/O digital 51.
5V - Conectado a la linea de alimentación regulada de la placa Arduino.
Los seis pines del conector que atacan al ATMega16U2 están situados en la misma disposición y tienen las mismas funciones con la diferencia que van a los pines del microcontrolador ATMega16U2 para poder programarlo.
Ademas del conector ICSP para el ATMega16U2, tenemos otro conector de 4 pines que nos da acceso a cuatro pines de I/O del microcontrolador. Son los pines 18, 19, 20 y 21 que corresponden respectivamente a los puertos, PB4, PB5, PB6 y PB7.
También tenemos tres led en esa zona, como se ve en la imagen a la derecha. TX y RX están conectados al ATMega16U2 y nos informan de una comunicación activa entre el puerto USB de la placa arduino y el MCU principal. Se verán estos led parpadeando, por ejemplo, cuando estemos volcando un programa desde nuestro ordenador al Arduino UNO. También podremos ver parpadear el led TX cuando en nuestro programa hayamos programado una conexión con el monitor serie del IDE. El parpadeo indicara que el Arduino esta transmitiendo datos hacia el puerto USB para que puedan ser visionados en el monitor serie. El LED L esta conectado al pin I/O 13 para indicarnos su actividad.
También disponemos de un LED que nos indica la presencia de alimentación en la placa Arduino UNO, etiquetado como ON y un botón de reset para reiniciar la ejecución del programa y si tenemos el bootloader cargado, antes de la ejecución la carga de un programa nuevo, si esta disponible en el IDE del ordenador.