Archivo de la etiqueta: Microchip

Microcontroladores

Un microcontrolador (abreviado µC, UC o MCU) es un circuito integrado programable, capaz de ejecutar las órdenes grabadas en su memoria. Está compuesto de varios bloques funcionales, los cuales cumplen una tarea específica. Un microcontrolador incluye en su interior las tres principales unidades funcionales de una computadora: unidad central de procesamiento, memoria y periféricos de entrada/salida.

Características de un Microcontrolador:

  • Velocidad del reloj u oscilador
  • Tamaño de palabra
  • Memoria: SRAM, Flash, EEPROM, ROM, etc..
  • I/O Digitales
  • Entradas Analógicas
  • Salidas analógicas (PWM)
  • DAC (Digital to Analog Converter)
  • ADC (Analog to Digital Converter)
  • Buses
  • UART
  • Otras comunicaciones.

Microcontrolador: http://es.wikipedia.org/wiki/Microcontrolador

Estructura genérica de un microcontrolador:

Existen MCUs genéricas y otros de propósito especial como los DSP, para aplicaciones de voz y video por ejemplo.

Microcontroladores AVR

Los microcontroladores AVR son una familia de microcontroladores RISC del fabricante estadounidense Atmel. La arquitectura de los AVR fue concebida por dos estudiantes en el Norwegian Institute of Technology. Más información:

Las placas Arduino usan principalmente microcontroladores de la gama AVR de Atmel, pero también de otras gamas de Atmel y de Intel.

RISC es una filosofía de diseño de CPU para computadora que está a favor de conjuntos de instrucciones pequeñas y simples que toman menor tiempo para ejecutarse. El tipo de procesador más comúnmente utilizado en equipos de escritorio, el x86, está basado en CISC en lugar de RISC, aunque las versiones más nuevas traducen instrucciones basadas en CISC x86 a instrucciones más simples basadas en RISC para uso interno antes de su ejecución.

Es importante saber que arduino no es el único microcontrolador ni la única plataforma. Lo mismo que hacemos con arduino se puede hacer con otros microcontroladores y otras plataformas de desarrollo, pero Arduino es la más extendida, con más documentación y soporte de la comunidad.

Un sistema embebido es un sistema diseñado para realizar una o algunas pocas funciones dedicadas, frecuentemente en un sistema de computación en tiempo real. Al contrario de lo que ocurre con los ordenadores de propósito general que están diseñados para cubrir un amplio rango de necesidades, los sistemas embebidos se diseñan para cubrir necesidades específicas. En un sistema embebido la mayoría de los componentes se encuentran incluidos en la placa base (la tarjeta de vídeo, audio, módem, etc.). Algunos ejemplos de sistemas embebidos podrían ser dispositivos como un termostato, un sistema de control de acceso, la electrónica que controla una máquina expendedora o el sistema de control de una fotocopiadora entre otras múltiples aplicaciones. El firmware es la programación o software que ejecuta y es lo que vamos a aprender a programar.

Microcontroladores Mega AVR, algunos usados en las plataformas Arduino: http://www.atmel.com/products/microcontrollers/avr/megaavr.aspx

El programa de muestras de Atmel permite obtener muestras gratuitas de productos de Atmel. Más información en: https://aprendiendoarduino.wordpress.com/2015/02/25/como-conseguir-un-arduino-gratis/

Atmel Studio, el IDE proporcionado por Atmel para programar sus MCUs: http://www.atmel.com/tools/ATMELSTUDIO.aspx

Un buen artículo de Atmel sobre Microcontroladores vs Microprocesadores: http://www.atmel.com/Images/MCU_vs_MPU_Article.pdf

Reference Guide para AVR MCUs, un poco antiguo pero muy interesante para saber la gama de MCUs de Atmel y donde situarlos: http://www.atmel.com/Images/doc4064.pdf

Microcontroladores ARM de Atmel

Los nuevos Arduinos ya no son microcontroladores Atmel AVR de 8-bit como hasta ahora eran casi todos, sino que ha apostado por la nueva gama de Atmel con arquitectura ARM http://www.atmel.com/products/microcontrollers/arm/default.aspx y en especialmente por la serie SMART SAM D ARM® Cortex®-M0+: http://www.atmel.com/products/microcontrollers/arm/sam-d.aspx

Microcontroladores ARM Cortex-M: https://en.wikipedia.org/wiki/ARM_Cortex-M

Arduino con el lanzamiento del Arduino 101 también ha dado el salto al las MCUs de Intel, en concreto con las MCU Intel Curie: http://www.intel.com/content/www/us/en/wearables/wearable-soc.html

Y Arduino no solo se queda en los microcontroladores sino que con el Arduino Yun y Arduino Yun Shield entra dentro de los sistemas con linux embebido en un microprocesador al estilo de una Raspberry Pi pero con una filosofía diferente.

Otras utilidades y placas en lugar de Arduino para programar MCUs de Atmel:

La compra de ARM por casi 30000 millones de euros demuestra el interés del mercado por estos dispositivos que marcarán el futuro tecnológico: http://economia.elpais.com/economia/2016/07/18/actualidad/1468824631_822455.html

Otros Microcontroladores

Existen muchos fabricantes de microcontroladores pero los principales son:

Ejemplo de microcontrolador de TI: http://es.wikipedia.org/wiki/MSP430 y su software de desarrollo: http://www.ti.com/tool/msp430ware?DCMP=msp430ware&HQS=msp430ware

Otros microcontroladores muy conocidos son los PIC de microchip:

MPLAB: entorno de desarrollo para los PIC: http://www.microchip.com/mplab/mplab-x-ide  

Ejecutar código de Arduino en un PIC mediante MPLAB: http://circuitcellar.com/cc-blog/execute-open-source-arduino-code-in-a-pic-microcontroller-using-the-mplab-ide/

Microchip ha sacado MPIDE http://chipkit.net/started/learn-basics/mpide-quick-start-guide/ para programar como Arduino las MCUs PIC en sus plataformas de prototipado chipkit http://www.microchip.com/devtoolthirdparty/ThirdpartyListing.aspx?catId=904c0424-a68f-44ac-aca4-eb13a629a9f8 y http://store.digilentinc.com/brands/chipKIT.html

Recientemente Microchip y ATmel se han fusionado: http://www.nasdaq.com/article/microchip-atmel-merger-closing-today-on-shareholders-vote-cm601083

Interesante articulo sobre las MCUs de Microchip y de AVR: http://makezine.com/2016/01/25/why-im-excited-that-microchip-is-buying-atmel/

Un enlace muy interesante con mucha información sobre microcontroladores para ampliar conocimientos: http://www.mikroe.com/chapters/view/79/capitulo-1-el-mundo-de-los-microcontroladores/

Y mucha más información sobre cómo programar microcontroladores PIC: http://www.mikroe.com/products/view/285/book-pic-microcontrollers-programming-in-c/

Anuncios

Otros “Arduinos” y clones

Además de los productos oficiales de Arduino que hemos visto, existen otros productos compatibles con Arduino, ya sean placas para programar con el mismo entorno de programación o Shields.

En el mercado del open hardware los fabricantes están trabajando por entrar en el negocio que inició Arduino con Atmel. Otros fabricantes de microcontroladores como Intel y MicroChip han sacado sus propias placas con el mismo concepto que arduino.

Principales fabricantes de microcontroladores:

Chipkit de Microchip

Microchip ha decidido mover las piezas del tablero y avanzar sobre el mercado de Arduino. Con una plataforma de código abierto que es compatible con el hardware y el software de Arduino, Microchip ingresa al mercado con placas basadas en microcontroladores de 32bits, con las MCUs PIC32 y son totalmente compatibles en hardware y entorno de desarrollo con Arduino.

El chipKIT Uno32 ™ es una placa de desarrollo que es un clon de la placa Arduino Uno, y cuenta con 128 KB de memoria de programa Flash y 16 KB de RAM, con dos buses I2C, SPI y UART.

Una alternativa a la placa Arduino Mega, el chipKIT Max32 ™, es una placa de desarrollo que cuenta con 512 KB de memoria de programa Flash y RAM de 128 KB, con USB, CAN y Ethernet, así como 5 buses I2C, 4 SPI , y 6 periféricos UART.

Comparación Entre chipKIT 32 y Arduino Estándar

chipKIT Uno32 chipKIT Max32 Arduino Uno Arduino Mega
Hardware Open Source
Software Open Source
Velocidad de Reloj 80MHz 80MHz 20MHz 16MHz
Memoria Interna 128k 512k 32k 256k
RAM 16k 128k 2k 8k
Programable con IDE alternativa
E/S Digitales 28 (5 PWM) 58 (5 PWM) 14 (6 PWM) 54 (14 PWM)
E/S Análogas 12 16 6 16
E/S de Comunicaciones 4 8 2 10
RTCC Interno N/A N/A
Ethernet Interno N/A N/A N/A
USB 2 Interno N/A USB 2.0 OTG Controller N/A N/A
Controladores Can N/A 2 N/A N/A
Temporizadores Internos 16/32-bit 16/32-bit 8/16-bit 8/16-bit
Comparadores 2 2 1 1
I2C 2x 5x 1x 1x
SPI 2x 2x 1x 1x
UART 2x con IrDA 6x con IrDA 1x 4x

IDE y el resto de los productos de Chipkit: http://www.digilentinc.com/Products/Catalog.cfm?NavPath=2,892&Cat=18

Intel también ha entrado en este mercado con el Intel Galileo: http://arduino.cc/en/ArduinoCertified/IntelGalileo

Galileo es un placa basada en el microcontrolador de Intel Quark SoC X1000 un núcleo, un hilo, compatible con la arquitectura de conjunto de instrucciones (ISA) del procesador Intel®Pentium®, que funciona a velocidades de hasta 400 MHz, compatible con el sistema de pines de Arduino. También es compatible con el IDE de Arduino.

Compatible con una amplia gama de interfaces de E/S estándar de la industria, como la ranura de tamaño completo mini-PCI Express, el puerto Ethernet de 100 Mb, la ranura de microSD, el puerto host USB y el puerto cliente USB.

DDR3 de 256 MB, SRAM integrada de 512 kb, memoria NOR Flash de 8 MB y EEPROM de 8 kb de serie en placa; además, admite una tarjeta microSD de hasta 32 GB.

MCU Intel Galileo datasheet: https://communities.intel.com/docs/DOC-21835

Pero no sólo los fabricantes de procesadores quieren entrar en el mercado, las empresas de software también quieren que los usuarios programen con sus lenguajes de programación las MCUs.

También cabe destacar el Arduino Yun, que va más allá de un microcontrolador, añadiendo un sistema Linux embebido. http://arduino.cc/en/Main/ArduinoBoardYun

Se trata de otro concepto pero también muy interesante.

Arduino Yun está basado en ATmega32u4 y Atheros AR9331. El procesador Atheros soporta una distribución Linux basada en OpenWrt llamada OpenWrt-Yun. Ofrece la ventaja que el microcontrolador se puede comunicar con la distribución linux.

Esto mismo lo haremos con un Arduino Uno y un ordenador comunicando por puerto serie u otro protocolo, pero está todo en una sola plataforma.

Otras alternativas a Arduino:

  • netduino. Microcontrolador programable con .NET. Netduino es una placa de desarrollo open source, que utiliza el .net Micro Framework como runtime por lo que puede ser programado mediante el IDE Visual C# (C-Sharp) Express Edition. En cuanto a hardware cuenta con un microcontrolador ATMEL ARM de 32 bits corriendo a 120 MHz y es compatible con la mayoría de los Shields de Arduino: http://netduino.com/
  • seeedunio, un clon de Arduino UNO: http://www.seeedstudio.com/depot/Seeeduino-V30-Atmega-328P-p-669.html
  • Waspmote de Libellium. es un dispositivo diseñado para crear redes inalámbricas de sensores con unos requerimientos bastantes específicos y destinados a ser desplegados en un escenario real. Este se trata de una versión profesional.  Waspmote y Arduino utilizan el mismo entorno de desarrollo y el código que podamos desarrollar para un Arduino lo podremos usar en este dispositivo, simplemente ajustando pequeñas cosas. http://www.libelium.com/products/waspmote/

El resto de fabricantes de microcontroladores también han sacado sus plataformas de prototipado para entrar en el mercado:

Hay una amplia variedad y podemos elegir el HW y SW en función de las necesidades de nuestro proyecto. Este curso pretende no sólo a capacitar al alumno en el uso de Arduino, sino en otras plataformas cambiado ya sea el entorno de programación o el HW a usar.

Una tabla resumen: http://es.wikipedia.org/wiki/Arduino#Especificaciones

Y para el que quiera más… http://playground.arduino.cc/Main/SimilarBoards

Ejercicio: ¿Que Arduino es el más adecuado para mi proyecto?

Ejemplo: Chipkit MAX 32 porque tiene dos controladores CAN o el Arduino UNO si usamos el adaptador a UART del conector OBD.

Para finalizar esta sección vamos a aclarar la diferencia entre Arduino y Raspberry Pi:

También hay Shields para Raspberry Pi:

Una librería en C++ para manejar las GPIO de Raspberry Pi para los que están familiarizados con Arduino: http://wiringpi.com/