CARACTERÍSTICAS
Este modelo de Ardunio lleva el microcontrolador ATSAMD21G18 (datasheet familia SAMD21E,G,J). Dispone de 14 pines de entrada/salida digitales de los cuales 12 pueden usarse como salidas PWM (Pulse Width Modulation, modulación por anchura de pulso), 6 pines de entrada analógicas (12bits), una de ellas también salida analógica (10bits), funciona a una velocidad de reloj de 48Mhz, 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 y botón de reset en placa.
La comunicación con el ordenador se realiza a través del puerto USB, esta vez con un conector micro-USB. A diferencia de otras placas Arduino, el puerto USB se conecta directamente al MCU.
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. 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 | ATSAMD21G18 |
Voltaje de la placa | 3,3V |
Voltaje de entrada (recomendado) | 7-12V |
Voltaje de entrada (máximo) | 6-20V |
Pines entrada/salida Digitales | 20 (12 de ellos PWM en salida) |
Pines digitales PWM salida | 12 |
Pines analógicos de entrada | 6 |
Corriente max. pines I/O | 7 mA |
Corriente max. pin 3.3V | 1 A |
Memoria Flash | 256 KBytes |
SRAM | 32 KBytes |
EEPROM | 0 KByte |
Velocidad de Reloj | 48 Mhz |
Led en placa | Pin 13 |
Longitud | 68.5 mm |
Ancho | 53.0 mm |
Peso | 21 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 ATSAMD21G18 tenemos el bootloader (4 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.
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 3,3V. Es importante este dato, ya que en placas como la UNO 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 como estamos en una placa que funciona a 3,3V en 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 1A. 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 1A la máxima corriente que podremos extraer. Pero también podremos alimentar nuestra placa Arduino M0 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 través 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 - Este pin se usa para recibir una tensión entre 0 y 3,3V. Esta tensión será convertida mediante un conversor A/D de 12 bits incorporado en el MCU a un valor digital utilizable en nuestros programas.
En esta placa tenemos en este pin la salida analógica de un DAC (Digital Analog Converter) de 10 bits de resolución. Podemos sacar una señal de audio usando la librería AUDIO.
Tambien puede usarse para lanzar la interrupción 2.
A1 - Este pin se usa para recibir una tensión entre 0 y 3,3V. Esta tensión será convertida mediante un conversor A/D de 12 bits incorporado en el MCU a un valor digital utilizable en nuestros programas.
Tambien puede usarse para lanzar la interrupción 8.
A2 - Este pin se usa para recibir una tensión entre 0 y 3,3V. Esta tensión será convertida mediante un conversor A/D de 12 bits incorporado en el MCU a un valor digital utilizable en nuestros programas.
Tambien puede usarse para lanzar la interrupción 9.
A3 - Este pin se usa para recibir una tensión entre 0 y 3,3V. Esta tensión será convertida mediante un conversor A/D de 12 bits incorporado en el MCU a un valor digital utilizable en nuestros programas.
Tambien puede usarse para lanzar la interrupción 4.
A4 - Este pin se usa para recibir una tensión entre 0 y 3,3V. Esta tensión será convertida mediante un conversor A/D de 12 bits incorporado en el MCU a un valor digital utilizable en nuestros programas.
Tambien puede usarse para lanzar la interrupción 5.
A5 - Este pin se usa para recibir una tensión entre 0 y 3,3V. Esta tensión será convertida mediante un conversor A/D de 12 bits incorporado en el MCU a un valor digital utilizable en nuestros programas.
Tambien puede usarse para lanzar la interrupción 2.
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 tenemos la señal 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 desde el exterior.
Tambien puede usarse para lanzar la interrupción 11.
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 tenemos la señal para la transmisión de datos al puerto USB. Lo podemos usar también para transmitir de placa Arduino señales serie TTL-UART hacia el exterior.
Tambien puede usarse para lanzar la interrupción 10.
~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 esta marcado con ~ lo que nos indica que 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 no enmascarable NMI.
~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 esta marcado con ~ lo que nos indica que es una posible salida PWM o salida analógica simulada.
También podemos configurar por software este pin para lanzar la interrupción 9.
~4 - 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.
También podemos configurar por software este pin para lanzar la interrupción 14.
~5 - 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.
También podemos configurar por software este pin para lanzar la interrupción 15.
~6 - 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.
También podemos configurar por software este pin para lanzar la interrupción 4.
~7 - 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.
También podemos configurar por software este pin para lanzar la interrupción 5.
~8 - 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.
También podemos configurar por software este pin para lanzar la interrupción 6.
~9 - 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.
También podemos configurar por software este pin para lanzar la interrupción 7.
~10 - 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.
Igualmente podemos usar este pin para realizar comunicaciones SPI, sería el SS o linea de selección del esclavo en las comunicaciones SPI.
También podemos configurar por software este pin para lanzar la interrupción 2.
~11 - 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.
Igualmente podemos usar este pin para realizar comunicaciones SPI, sería el MOSI o linea de transmisión del maestro al esclavo en las comunicaciones SPI.
También podemos configurar por software este pin para lanzar la interrupción 0.
~12 - 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).
Igualemnte podemos usar este pin para realizar comunicaciones SPI, sería el MISO o linea de transmisión del esclavo al maestro en las comunicaciones SPI.
También podemos configurar por software este pin para lanzar la interrupción 3.
~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 tiene un LED conectado y visible en la placa Arduino, muy útil para visualizar señales sin nada externo.
Igualmente podemos usar este pin para realizar comunicaciones SPI, sería el SCK o linea de reloj en las comunicaciones SPI.
También podemos configurar por software este pin para lanzar la interrupción 1.
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 3,3V, lo que hace que al tener 4096 pasos (12 bits) de resolución la precisión del conversor es de: 3,3V/4096pasos=0,0008V, aprox. 0,8mV. Pero si estuvíeramos 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/4096pasos=0,00024V o lo que es lo mismo 0,24mV. Efectivamente hemos aumentado muchísimo la precisión de la conversión y será mas exacta.