lunes, 2 de enero de 2012

Comenzando por lo Básico (2): "Diseños basados en microcontrolador"

En la última entrada se introdujeron los conceptos que se emplearán en el blog para referir a diferentes tipos de equipo que comúnmente se pueden encontrar en la industria. Como se comentó, desde el punto de vista del control podemos encontrar, partiendo desde lo más sencillo a lo más complejo:

  • Electrónica pura
  • Diseños basados en microcontrolador
  • Electrónica Reconfigurable
  • PLCs
  • PCs industriales

Continuando con la descripción de estos equipos, hoy voy a describir los diseños basados en microcontrolador.

Diseños basados en microcontrolador: Cuando se habla de diseños basados en microcontrolador, normalmente nos referimos a placas electrónicas que incorporan para su funcionamiento un microcontrolador, de cualquier tipo o marca. La ventaja de este tipo de diseño, es su versatilidad, ya que un microcontrolador no es más que un minicomputador que integra la RAM, ROM, Memoria de programa y datos (flash), CPU, entradas/salidas digitales y analógicas y un conjunto de periféricos que podemos emplear en los programas, como son: Convertidores Analógico Digital, Temporizadores, Contadores, Dispositivos de interrupción externos, unidades de comunicación serie universales USART, unidades de comunicación UART de sistemas específicos como I2C, SPI, CAN, Ethernet,etc.

El uso más común de estos microncotroladores es centralizar el control del sistema recibiendo señales a través de las entradas digitales o analógicas, y empleando las salidas digitales y analógicas para mandar señales al resto del circuito de forma que estas decisiones se toman en función de la lógica programada en el microcontrolador. Por lo general, en las entradas del microncontrolador se conectan sensores que permiten obtener información acerca del entorno, o botones que permiten a un operador mandar señales de usuario al sistema, y las salidas se emplean para realizar una acción sobre sistemas de actuación como diodos leds, motores, displays, etc.

Estos microcontorladores pueden ser de tipos muy sencillos, básicos y baratos como los archiconocidos 16F84 ó su hermando mayor el 16F876A ambos de microchip. Se trata de microcontroladores de 8 btis, sencillos y fáciles de programar dada su arquitectura RISC cuyo repertorio de instrucciones (ensamblador) es muy reducido y por tanto fácil de manejar. Son válidos para la mayoría de los proyectos que se puedan plantear, por poner dos ejemplos de uso, las viejas tarjetas programables empleadas para piratear los dispositivos de Canal+ empleaban el microcontrolador 16F84 y muchos otros proyectos de electrónica sencilla como el robot para principiantes Skybot emplea el microcontrolador 16F876A. Microchip es una de las marcas lideres en el campo de los microcontroladores ya que tienen una amplia gama, cuyas especificaciones permiten encontrar uno que cubra los requisitos de una determinada aplicación, por un precio muy ajustado. Dada la enorme popularidad de estos microcontroladores y su bajo coste existe multitud de proyectos, esquemas y páginas dedicadas a este tema en la Web, aquí os dejo una página con recursos sobre microchip.

Otros de los microcontroladores de 8 bits más famosos del momento, son los pertenecientes a la familia AVR de ATEML. El uso de los microcontroladores ATMEGA 128/328/1280/2560 en las placas de prototipo ARDUINO han dado a conocer sus altas prestaciones y han popularizado el uso de los bootloaders. Las arquitecturas AVR como estas, están especialmente diseñada para ejecución eficiente de código C. Esto supone una gran ventaja sobre los PIC en diseños con un alto requerimiento de complejidad en el control, aunque los microcontroladores PIC pueden ser programados en C hay que tener cuidad con ciertos detalles. Entre otras cosas, hay que tener especial cuidad con la pila del microcontrolador, cuando se llama a una función o se está evaluando una sentencia if, se van apilando resultados intermedios, parámetros y direcciones de retorno en la pila. La pila de los microcontroladores PIC es de 8 niveles, por lo que el uso indiscriminado de estos mecanismos, puede dar lugar a que la pila se llene no pudiendo almacenar más valores y en consecuencia obtener comportamientos aparentemente ilógicos. Esto no ocurre con los microcontroladores ATMEGA de la familia AVR cuya arquitectura Hardvard les proporciona una memoria de datos y una memoria de programa independientes, de esta manera son capaces de utilizar una pila dinámica en la memoria de datos SRAM (RAM estática)

Además de las dos comentadas, existen muchas otras marcas que se dedican a fabricar microcontroladores como ST, Freescale antes perteneciente a Motorola, Intel, National Semiconductors, entre otros. También existen arquitecturas de microcontroladores de 16 bits y 32 bits que permiten realizar sistemas más complejos con mayor necesidad de cálculo, mayores requerimientos de velocidad o necesidad de periféricos avanzados como UART extra, CAN ó Ethernet. Estas arquitecturas son conocidas como ARM, en esta familia se incluyen microcontroladores como los Cortex-M3 ampliamente utilizados por su buen equilibrio entre simplicidad, coste y potencia, como ejemplos de uso podemos encontrar el robot uXbot y un proyecto imitador de ARDUINO llamado MAPLE y que ofrece una buena alternativa cuando ARDUINO no dá la talla. Las arquitecturas ARM de ATMEL ofrecen un excelente abanico de funcionalidades, por ejemplo el microcontrolador SAM7X512 empleado en el proyecto NetDuino, otro imitador de ARDUINO, en este caso incorpora un RunTime del Micro Framwork 4.1 de .NET lo que nos permite programarlo en C# a través del IDE de Microsoft Visual Studio Express.

Otro problema clásico en la programación de microcontroladores es la necesidad de una placa entrenadora. Estas llamadas placas entrenadoras son las tradicionalmente utilizadas para grabar los programas en las las memorias EPROM o EEPROM de los microcontroladores, además estas placas suelen ser caras y es complejo programar el microcontrolador ya que para ello hay que extraerlo de la placa de aplicación e introducirlo en la entrenadora cada vez. No obstante, para solucionar este problema se suelen emplear los conocidos bootloader, que no son más que unos programas que preparan lo básico en el microcontrolador para que esté listo para funcionar. Estos bootloader son grabados en los microcontroladores inicialmente y a partir de ese momento permiten grabar nuevos programas en el chip a través del puesto serie. Esta funcionalidad se debe a que en cada reinicio, el bootloader encuesta el puerto serie del microcontrolador, en caso de haber alguien a la escucha (software de programación), recoge los datos enviados por el software y los mete en una dirección de memoria del microcontrolador que usa como memoria de inicio de programa, en caso de que no haya datos disponibles en el serie o de que ya se haya terminado de grabar el programa salta a esa dirección de inicio y ejecuta el código que haya a partir de ella. De esta manera es posible programar a posteriori el microcontrolador a través del puerto serie de una forma muy simple y cómoda. En este principio es en el que se basan los diseños comentados anteriormente como ARDUINO, NetDuino, uXbot, MAPLE, etc. Para ello, proporcionan un IDE de desarrollo que permite escribir el código en lenguajes de alto nivel y permiten grabar los programas generados en chips que tenga cargado el correspondiente bootloader. De esta manera el problema se reduce a grabar un único programa mediante la tarjeta entrenadora, el bootloader, y el resto ya serán grabados empleando un protocolo serie a través de la USART.

A pesar de estas pequeñas cuestiones, los diseños basados en microcontrolador siguen siendo una alternativa segura y muy flexible con respecto a los diseños basados únicamente en componentes electrónicos no programables. Siguen ofreciendo una alta estabilidad, siempre que se haya verificado la parte electrónica y que se haya comprobado adecuadamente que no existen posibilidades de que la pila del microcontrolador se llene, lo que provocaría comportamientos anómalos. Aún así, la verificación de estos sistemas es compleja, dado que se habrá de tener en cuenta toda posible sucesión de eventos, incluyendo aquellos que pueden producirse de forma imprevista o asíncrona, como una interrupción interna provocada por un timer, o bien una interrupción externa provocada por las comunicaciones o por una entrada de interrupción. Una solución, para que no se apilen interrupciones solapadas puede ser inhibir las inrerrupciones cuando se está atendiendo una de ellos. Para supervisar que el comportamiento sea adecuado, los microcontroladores incorporan los Watchdog Timer que permiten reiniciar el sistema en caso de que quede en un estado anómalo.

En resumen, la electrónica basada en microcontrolador permite una corrección de errores mas flexible ya que en muchos casos se puede realizar a través de una actualización del software, y permite realizar operaciones mucho más complejas de una forma más sencilla. Como desventaja, requieren de una mayor formación ya que es necesario tener buenos conocimientos de electrónica, al igual que en el caso de los sistemas basados en electrónica pura, y además requiere conocimientos de programación y nociones de arquitectura de Computadores para poder sacar el máximo partido al microcontrolador. Sin ninguna duda, esta es la opción por la que se está decantando el mercado actualmente, por tratarse de una opción intermedia entre los PLC y la electrónica pura, son flexibles por ser programables como un PLC y económicos como los circuitos basados en electrónica pura.

Más adelante veremos en detalle algunas de las múltiples cuestiones que han aparecido hoy como las comunicaciones, los bootloader, el acople de sensores y actuadores o el uso de los periféricos de los microcontroladores.

10 comentarios:

  1. Alumno: Juan Manuel Sosa Solas
    OpenPicus
    http://www.openpicus.com/

    Microcontrolador: microchip PIC24FJ256GA110
    http://www.microchip.com/wwwproducts/Devices.aspx?dDocName=en531069

    OpenPicus permite realizar tareas usando wifi, como el control de motores o servicios web básicos (como un servidor web o de correo).

    Periféricos:
    -La CTMU soporta aplicaciones de pantalla capacitiva
    -El pin selector de periférico permite el remapeado de las entradas y salidas de varios periféricos en tiempo real
    -4 módulos UART con soporte para LIN y IrDA, 4 deep fifo
    -3 módulos spi con 8 deep fifo
    -3 módulos i2c con modos maestro y esclavo
    -5 módulos timer de 16 bits
    -hasta 9 capturadores de entrada y 5 salidas comparación/pwm con tiempo base dedicados
    -Hardware RTCC, calendario y tiempo real con alarmas
    -PMP, paraller master port, con 16 líneas de dirección y 8/16 líneas de datos

    ResponderEliminar
  2. Alumno: Rubén Linares Javaloyes
    Espardino
    http://www.espardino.com/

    Microcontrolador: NXP LPC2148 (basado en cpus ARM)
    http://ics.nxp.com/products/lpc2000/lpc214x/
    http://ics.nxp.com/products/lpc2000/datasheet/lpc2141.lpc2142.lpc2144.lpc2146.lpc2148.pdf

    Espardino es un microcontrolador cuya cpu esta basada en la tecnologia ARM 7 (presente en moviles). Dispone de velocidades altas, asi como bastante memoria.

    Periféricos:
    - Controladora USB 2.0
    - 2 ADCs de 10 bits (14 entradas analogicas).
    - 1 DAC de 10 bits (
    - 2 timers/contadores de eventos externos de 32 bits con 4 canales de captura y 4 canales de comparación cada uno.
    - PWM (6 salidas)
    - Whatchdog
    - Reloj de tiempo real (RTC) con alimentación independiente.
    - 2 UARTS.
    - 2 buses I2C rapidos (400kbits/s)
    - SPI y SSP con buffer y longitud de datos variable.

    ResponderEliminar
  3. Picaxe
    http://www.picaxe.com/

    El poder del sistema PICAXE radica en su sencillez. No necesita de ningún programador, borrador o complejo sistema electrónico - el microcontrolador es programado (con un simple programa en BASIC o un diagrama de flujo) mediante una conexión de tres alambres conectada al puerto serie del ordenador. El circuito operacional PICAXE utiliza únicamente tres componentes y puede ser ensamblado fácilmente en un tablero experimental paracomponentes electrónicos, en una placa corriente o en una placa PCB.

    EL sistema PICAXE está disponible en dos variedades - 18 pines y 28 pines. El controlador PICAXE-28 provee 22 pines de entrada/salida (8 salidas digitales, 8 entradas digitales y 4 entradas analógicas). El sistema PICAXE-18 provee 8 salidas y 5 entradas.

    Las características principales del sistema PICAXE son las siguientes:
    • bajo costo, circuito de fácil construcción
    • hasta 8 entradas, 8 salidas y 4 canales analógicos
    • rápida operación de descarga mediante el cable serial
    • Software "Editor de Programación" gratuito y de fácil uso
    • lenguaje BASIC simple y fácil de aprender
    • editor de diagramas de flujo incluido
    • puede ser programado también mediante el software "Crocodile Technology"
    • extenso número de manuales gratuitos y foro de apoyo en línea
    • tablero experimental tutorial y tutoriales incluidos
    • paquete de control remoto infrarrojo disponible
    • paquete de servocontrolador disponible

    Datasheets:
    http://www.picaxe.com/Datasheet-List

    ResponderEliminar
  4. Alumno: Daniel Garibaldi Rodríguez
    Gadgeteer
    http://www.netmf.com/gadgeteer/

    Gadgeteer es la alternativa de Microsoft a Arduino y se programa en C#

    Aqui podeis ver las características de la placa

    http://www.ghielectronics.com/catalog/product/297

    las mas destacables son:

    72MHz 32-bit ARM7 processor
    4.5 MB Flash
    16 MB RAM

    y algunos de sus perifericos:

    2 SPI (8/16bit)
    I2C
    4 UART

    Saludos

    ResponderEliminar
  5. Alumno: Damián Poveda Payá

    PowerJaguar

    http://www.neoteo.com/powerjaguar-una-alternativa-a-arduino-16240
    http://www.josephperez.es/2010/03/power-jaguar-placa-de-aprendizaje-y-desarrollo-en-torno-al-pic18f2550/


    Power Jaguar está considerado como una alternativa a Arduino, emplea un PIC18F2550 de Microchip, que puede ser programado en varios lenguajes usando múltiples compiladores.
    A grandes rasgos Power Jaguar cumple con las mismas funcionalidades de Arduino, ya que está montado sobre una pequeña placa con conexión USB, donde encontramos las I/O en regletas laterales. Características Principales:

    CPU:

    Memoria SRAM de 2048 bytes.
    Memoria flash de 26,7 Kb (Total – bootloader)
    Velocidad de reloj (CPU) a 48Mhz.
    Optimizado para programación en C, posibilidad de usar un conjunto de instrucciones extendido.

    Periféricos:

    4 módulos Timer
    3 interrupciones externas
    2 módulos CCP/PWM
    21 Puertos I/O
    10 puertos A/D

    ResponderEliminar
  6. Alumna: Marisa Galán Oca

    mbed
    http://mbed.org/

    Microcontrolador: mbed NXP LPC1768
    http://mbed.org/handbook/mbed-Microcontrollers

    El mbed NXP LPC1768 está diseñado para crear prototipos de todo tipo de dispositivos, en especial los que incluye Ethernet, USB, y aplicaciones de gran alcance.

    Algunas de sus características son:

    ARM de alto rendimiento ® Cortex ™-M3 Core
    Velocidad de 96MHz
    Memoria RAM de 32 KB de RAM y FLASH de 512KB
    Se puede programar en C/C++ y compilar usando(mbed online, gcc, Keil uVision o Code Red)

    y sus periféricos:

    Ethernet, USB Host , USB Device, GPIO
    2 SPI, 2 I2C, 2 CAN
    6 PWM, 6 ADC

    ResponderEliminar
  7. Alumno: Damián Mira Martínez

    Raspberry Pi
    http://www.raspberrypi.org/

    Como se puede comprobar en todos la mayoría de diseños basados en microcontroladores de los que se habla (todos ellos de precio asequible) el mayor "problema" que tienen es la capacidad de cálculo, en estos casos no suelen superar los 100MHz y los 16MB de RAM. En la mayoría de las ocasiones con esas especificaciones hay de sobra.

    El gran problema se nos presenta cuando necesitamos mayor capacidad de cálculo, con lo que debemos establecer una conexión con un PC/FPGA/DSP para que realice los cálculos pesados, esto implica normalmente o un mayor coste o la perdida de libertad de movimientos. En este aspecto es donde entra el Raspberry Pi, el cual es un microPC de 25/35$ (según la versión) que nos ofrece todas las ventajas de un PC en un tamaño muy reducido (tarjeta de crédito) y a un bajo coste.

    Este sistema destaca por:

    Procesador: ARM11 a 700MHZ
    256MB de RAM
    2 puertos USB
    Puerto Ethernet
    Salida HDMI
    lector de tarjetas SD
    Salida de video RCA
    Salida de audio Jack
    Conector cámara CSI
    Conexiones I2C
    8 GPIO

    Ademas de todo esto su sistema está basado en Linux con diferentes API implementadas como OPENGL ES 2.0, OPENVG, OPENMAX IL etc...

    Finalmente también podemos acceder a los periféricos del BCM2835, seguidamente tenemos un datasheet resumido para ello:
    http://dmkenr5gtnd8f.cloudfront.net/wp-content/uploads/2012/02/BCM2835-ARM-Peripherals.pdf

    Para concluir destacar que dicho microPC se podrá empezar a obtener a partir de finales de Febrero desde su página, tal y como indican sus creadores.

    Un saludo.

    ResponderEliminar
    Respuestas
    1. Buena aportación Damian,

      La verdad es que tiene muy buena pinta y ahora mismo está teniendo una demanda tan grande que sólo se puede conseguir bajo previa reserva en Farnell.
      Yo ya he encargado la mía.

      Un saludo.

      Eliminar
  8. Alumno: José Ángel García Martínez

    LaunchPad de Texas Instruments.
    http://e2e.ti.com/group/msp430launchpad/w/default.aspx

    LaunchPad es una plataforma de desarrollo low-cost de Texas Instruments basada en su serie de microcontroladores MSP430 Value Line de 16 bits y con un consumo muy bajo. El socket del microcontrolador permite el intercambio del microcontrolador según nuestras necesidades (siempre dentro de la serie MSP430G2xx Value Line de TI).

    Cuando lo compras viene con 2 microcontroladores que puede ser el MSP430G2211IN14 y MSP430G2231IN14, o el MSP430G2452IN20 y MSP430G2553IN20, dependiendo de si te llega la rev. 1.5 o 1.4 del kit. La placa no trae conectores de entrada y salida, sino que viene con los orificios al aire y luego te trae dos bloque de conectores de 10 pin machos y otros dos bloques de 10 pines hembras para que lo soldemos nosotros. También viene un cristal de 32kHz (MS3V-T1R 32.768kHz CL: 12.5pF +/-20ppm, www.microcrystal.com).

    Esta es la lista de todos los microcontroladores compatibles y
    sus características:
    http://e2e.ti.com/group/msp430launchpad/w/contents/compatible-devices.aspx

    Algunos periféricos son:
    -Cristal de 3.5'' con sensor táctil capacitativo (http://e2e.ti.com/group/msp430launchpad/b/boosterpacks/archive/2012/01/09/3-5-quot-ito-glass-capacitive-touch-sensor-boosterpack-from-kentec-electronics.aspx)
    - Interfaz hombre-maquina con una pantalla lcd de 2 lineas y 16 caracteres y 4 botones. Incluye un módulo RF por ejemplo para uso de aplicaciones de acceso con RFID . (http://e2e.ti.com/group/msp430launchpad/b/boosterpacks/archive/2011/07/13/golden-ic-rf-module-with-lcd-boosterpack.aspx)

    Para finalizar cabe destacar su bajo precio: el kit de la entrendadora, 2 microcontroladores, cristal de 32 kzh, cable usb cuesta 4.30$ y que permite hace debug del programa que está corriendo en la placa, ejecutando comando por comando y permite también el cambio del código en ejecución.

    ResponderEliminar
  9. Alumno: Carlos Cano Espinosa

    gooseberry
    http://gooseberry.atspace.co.uk/?page_id=13

    Se trata de una nueva placa que sigue la linea de los micro-PC. Por aproximadamente 60 dolares se tiene un procesador A10 a 1-1.5Ghz, un procesador gráfico Mali 400Mhz. Cuenta también con lo siguiente (como se puede ver en su pagina web):

    puertos:

    - Power Jack
    - Micro USB
    - Mini HDMI
    - jacks in/out audio

    botones:

    - Reset
    - Power
    - Audio +/-

    Otros:

    - 4Gb almacenamiento (ampliable con una tarjeta sd de hasta 16Gb)
    - Wifi 802.11 b/g/n
    - Slot SD-Card


    Esta placa es una clara referencia a la también actual Raspberry Pi, aunque se podría deducir que es superior a la misma, habrá que esperar a los estudios de rendimiento de ambas.

    ResponderEliminar