Porque nos cambiamos de ATMEGA328 a SAMD21

Porque nos cambiamos de ATMEGA328 a SAMD21
    • Adiós amor, primer amor
    • Comparativa
    • Sercom
    • Controlador USB
    • ADC y DAC
    • Relojes – RTC y Relojes de tiempo
    • Bootloader
    • Arduino
    • Precio

Adiós amor, primer amor

Hace un tiempo en  Electronic Cats tomamos la decisión de lograr costos competitivos en nuestros productos y conforme aumenta nuestra producción bajan más nuestros precios, una muestra de ello es el CaTSat que este año a bajado su precio casi en 30% gracias al aumento de misiones espaciales que se han realizado.

Tratar de conseguir mejores precios implica investigar nuevos productos y conseguir mejores precios con proveedores, hoy hablaremos  de la búsqueda de  nuevos productos.

Desde hace tiempo varios de nuestros productos están basados en el microcontrolador ATMEGA328 el chip principal del Arduino UNO, NANO y Pro Mini, pero también nos hemos topado con algunas limitantes en este chip que van desde la falta de suficiente memoria, tener que emular puertos seriales, no tener un DAC o agregar un RTC (reloj de tiempo real).

Es por eso que investigando un poco en internet nos encontramos con la familia SAM, pero más específicamente con los SAMD11 y SAMD21, una familia de microcontroladores de la desaparecida empresa ATMEL (ahora Microchip) que cuenta con una arquitectura ARM Cortex-M0.

SAMD11_SAMD21

Familia de microcontroladores SAM

Comparativa

Lo primero que podemos ver es que la arquitectura del chip cambia nos movemos de una AVR a un ARM Cortex-M0 esto implica aprovechar mejor la velocidad del microcontrolador gracias a la reducción de instrucciones y bajo consumo. Ahora tenemos 32 bits en vez de 8 bits, si bien es cierto que la mayoría de las aplicaciones reales se pueden resolver con 8 bits, también es cierto que cada día aparecen más aplicaciones en las que tenemos mejor desempeño con 32 bits. Hablando sobre memoria flash la versión más pequeña del SAMD21 tenemos desde 32Kb hasta 256Kb, con doble de velocidad de 20Mhz a 48Mhz. Todo esto a un voltaje de trabajo de 1.62–3.63 volts.

Algunas cosas interesantes para ver a detalle son:

SERCOM

Algo interesante que tiene el SAMD21 es el SERCOM una interfaz de seis puertos configurables que pueden ser ya sea un UART, I2C esclavo, I2C Maestro, SPI esclavo o SPI Maestro.

Cada puerto es multiplexable y puedes utilizar múltiples pines para la configuración de un puerto, para más información consulta este tutorial de Adafruit sobre SERCOM

Tabla de puertos SERCOM

Pudiendo crear múltiples puertos por hardware, es muy poco probable tengas que usar o emular puertos seriales “Software Serial” y desperdiciar memoria extra.

Controlador USB

Al igual que el ATmega32U4 en el Arduino Leonardo, el ATSAMD21 está equipado con un controlador USB integrado. Se puede usar como dispositivo USB o host .

En el modo de dispositivo, el SAMD21 puede emular un teclado, un mouse o un joystick, funcionar como un dispositivo de almacenamiento masivo o comunicarse como si fuera un puerto en serie. El modo del dispositivo es una parte crítica de la programabilidad USB del SAMD21. Se configura como un USB CDC (clase de dispositivo de comunicación), por lo que tu computadora puede hablar con él como si fuera un puerto en serie.

Como un host USB, el SAMD21 puede conectarse a un teclado o mouse, o incluso guardar datos en una unidad flash USB. Se necesita una planificación de suministro de energía adicional para que el SAMD21 funcione como un host USB, pero puede ser un componente gratificante de tu proyecto.

ADC y DAC

El SAMD21G18 tiene 14 pines de entrada ADC en total, cada uno con una resolución de 12 bits . Esa resolución incrementada significa cada bit entre 0 y 4095, representa aproximadamente 0.806mV (suponiendo que el procesador esté alimentado a 3.3V), permitiendo mediciones de voltaje más sensibles. Los pines de referencia analógicos también están disponibles, si necesita afinar aún más el sistema ADC.

Algo muy interesante es que el SAMD21 también cuenta con una salida de convertidor digital a analógico (DAC), para crear señales verdaderamente analógicas. El DAC tiene una resolución de hasta 10 bits y puede convertir hasta 350,000 muestras por segundo (350ksps). El pin de salida analógica se comparte con el pin Arduino “A0”, solo tiene un pin, es el único que tienes, así que aprovéchalo sabiamente.

RELOJES — RTC y RELOJES DE TIEMPO

Casi todos los pines en el SAMD21 están vinculados a un contador de temporizador, lo que significa que tenemos más GPIOS con capacidad PWM .

Los relojes en tiempo real (RTC) pueden ser componentes críticos en proyectos que requieren un tiempo preciso, ya sea para crear un reloj digital o un ciclo PID controlado. Mientras que el ATmega328 tiene un RTC y tendrás que sacrificar los ciclos de reloj por el tiempo, cambiando el cristal de 16 MHz por uno que funcione a 32.768kHz. En el SAMD21 tienes un sistema de reloj en tiempo real separado, alimentado por un cristal de 32.768kHz, y todavía cuenta con un oscilador interno a 48MHz.

BOOTLOADER

Al tener tanta memoria disponible encontramos una serie de bootladers interesantes desde el básico oficial de Microchip SAMBA, pasando por MicroPython y llegando hasta el uf2 de Microsoft que te permite programar el chip con MakeCode y por medio de emular un dispositivo USB de almacenamiento.

ARDUINO

Solo por aclarar Arduino tiene soporte oficial a la familia SAMD21 en su repositorio, además hay varias versiones modificadas del Core de Arduino como Adafruit y SparkFun que soportan otras variantes de la familia SAMD11.

Además ya varias de las bibliotecas básicas existentes ya soportan esta arquitectura, lo que permite una relativa fácil migración.

PRECIO

Y bueno, cualquier chip puede tener todas esta ventajas y más, lo realmente importa es que tenga un precio similar o mejor que el ATMEGA328, ok, haciendo la comparativa en precios, basado en un SAMD21E15B y un ATMEGA328PU dos chips con “similares” características.

Bueno pues resulta que por solo $2.28 Pesos Mexicanos es mas caro el SAMD21E, porque debemos de considerar que para que trabaje a 16 o 20 Mhz el atmega requiere un cristal externo y el SAMD21 solo requiere un cristal externo si necesitamos RTC.

Por $2.28 Pesos Mexicanos ($0.12 dolares) obtengo:

      • 4 puertos SERCOM
      • Misma Memoria Flash
      • 2kb mas de RAM
      • Doble de velocidad
      • 2 bits extras de ADC
      • un DAC que no tiene el ATMEGA
      • 32 bits
      • Sensor capacitivo
      • DMA
      • USB Nativo!

Estos son los consejos que les dejamos Makers creadores de hardware, si desean iniciar en con estos microcontroladores hay ya varias tarjetas con las que pueden probar desde el Arduino Zero, Arduino MKR1000 que tiene Wifi, Metro y feather de Adafruit, SAMD21 Dev Board de Sparfunk y algunas otras que pueden encontrar en Tindie.

WRITTEN BY: Andrés Sabas

Co-fundador ElectronicCats hardware libre en México, Promotor del Movimiento Maker, Hardware Libre

 

One Response
  • Extremely well written.. thanks!

Deja un comentario

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

Translate »