Esta placa se ha diseñado con la simplicidad y la modularidad en mente. Ninguna funcionalidad del microcontrolador se ha prefijado ni cableado directamente a periféricos externos. Todos los puertos del microcontrolador están disponibles en conectores IDC-10 (con $V_{cc}$ y $GND$) para poder destinarlos a voluntad a las funciones que se necesiten.

Requerimientos del diseño

Alimentación

La alimentación de la placa es dual: desde USB y desde fuente externa.

Para la fuente externa el conector elegido es un bornero de 2 polos sin polaridad fijada. Se coloca para ello un puente de diodos para obtener siempre una polaridad adecuada, indistintamente de cómo se conecte la tensión externa. Además, el circuito se puede encender y apagar a través de un conmutador en placa. Esta tensión de alimentación es regulada por un LM7805, así que el rango de tensión de entrada es bastante amplio.

La segunda entrada de tensión es a través de USB. Esta entrada de tansión es únicamente para alimentar al FT232RL.

Ambas fuentes de alimentación están señalizadas con sendos LEDs para indicar presencia de tensión en cada una, así como un LED general de encendido de la PCB. Además, la fuente de alimentación desde USB se protege con un fisible térmico en placa de $500mA$.

Conexión al PC

Para la conexión al PC se dispone de un USB (conector tipo B) que va a un FT232RL en la placa. Este circuito es un "conversor" de USB a puerto serie, o más bien a UART. Realmente es un IC complejo que aparece para el PC como un "serial-to-USB converter" y emula un puerto serie completo. En este caso sólo se utilizan las señales RxD, TxD y DTR. Este chip está en modo autoalimentado desde USB; en ningún caso depende de la alimentación externa. El integrado permite indicar actividad por el puerto serie; para ello se han cableado 2 LEDs (RxD y TxD) que parpadearán al envió de datos en ambas direcciones.

Este chip está pensado para conservar compatibilidad con Arduino o utilizar cualquier bootloader serie directamente. De esta manera, si el microcontrolador tiene preprogramado un bootloader, ya no es necesario utilizar un programador ISP para cargar los programas, se hace directamente por este puerto.

Microcontrolador

El microcontrolador elegido para esta placa ha sido el ATmega2560, el de más capacidad de la familia AVR ATmega de 8 bits de Atmel. Existen muchas subcategorías en la gram familia AVR de Atmel (ATxmega, ATmega, ATtiny, AT90...). El footprint del chip es TQFP100 de 100 patillas. Es prácticamente insoldable "a mano", requiriéndose de una centralita de aire caliente para una correcta soldadura. Por ese motivo, en la PCB, se ha dispuesto su footprint en el centro de 4 grupos de pines cableados a las patillas. Esto permite soldar el microcontrolador si se dispone de una centralita de aire caliente o permite comprar el chip soldado (o mandarlo a soldar) en un sombrero o hat (algo como esto) y conectarlo a los 4 conectores para pines de la PCB.

Foto 1: Detalle del montaje con el chip en sombrero

Es una buena opcion, si se consiguen los chip y la placa, llevarlo a soldar a alguna tienda de reparacion de móviles o consolas.

Para la programación del chip se han dispuesto varios mecanismos. El standard para los AVR de Atmel es el conector ISP de 6 pines, que se usa con los programadores tipo AVRISP mkII de Atmel. Pero además se ha incluido la circuitería para hacer la placa 100% compaible con Arduino. Existe una placa llamada Arduino Mega 2560 que utiliza este mismo microcontroldor, pero viene pregrabada con un bootloader y es programable directamente por el puerto serie (a través del FT232RL a USB) desde el mismo entorno de Arduino. Esto lo consiguen usando la señal DTR del puerto serie para darle un reset al dispositivo y hacerlo entrar desde el bootloader, el cual acepta órdenes al arranque desde el puerto serie. De esta manera se elimina la necesidad de usar un programador externo a costa de sacrificar un par de kB de flash. La funcionalidad de bootloader no es una artimaña sino que está soportada por el chip, permitiendo utilizar desde esa área reservada de la memoria comandos para grabar y borrar el resto de la flash interna.

Fuentes de reset

En conjunción con lo comentado en el punto anterior se introducen en esta placa varias fuentes de reset para el microcontrolador. En primer lugar, un pulsador para permitir un reset manual del mismo en cualquier momento. En segundo lugar, desde el conector ISP, se cablea la señal de reset, ya que es necesario que los programadores la controlen en el momento de programar el micro. En tercer lugar, se permite que la señal DTR del FT232 (puerto serie a través de USB) resetee el micro (compatibilidad con Arduino). Para esto se ha dispuesto de un condensador de desacople y un jumper (JARD1) que permite deshabilitar esta función.

Puertos de 8 bits

Este microcontrolador tiene los puestos dispuestos como registros de 8 bits. Aunque no todos tienen disponibles todas las patillas, la mayoría son completos, permitiendo una gran versatilidad a la hora de añadir periféricos para cualquier aplicación. Los puertos son nombrados con letras, que en el caso de este microcontrolador son: A, B, C, D, E, F, G (faltan los bits 6 y 7), H, J, K, L. Todos estos se han mapeado directamente a conectores IDC-10 con el pinout típico de nuestros diseños.

Pin   1 - GND
Pin   2 - Bit 0
Pin   3 - Bit 1
Pin   4 - Bit 2
Pin   5 - Bit 3
Pin   6 - Bit 4
Pin   7 - Bit 5
Pin   8 - Bit 6
Pin   9 - Bit 7
Pin 10 - VCC

 

Otra circuitería

Además de los circuitos ya mencionados, la placa incorpora cristal externo para aplicaciones en la que los osciladores internos del propio microcontrolador no sean los más adecuados o precisos.

Para utilizar de forma cómoda el ADC del microcontrolador se ha incorporado un sencillo ciruito para generar una referencia de tensión externa fija a $V_{CC}$ o variable a través de un potenciómetro multivuelta de precisión (AREF) y un par de jumpres.

Resultado

Primer prototipo

Como en otras ocasiones, antes de fabricar la PCB, montamos un prototipo en wrapping que utiliza conectores para el sombrero antes mencionado.

Foto 2: Detalle de la placa prototipo

Foto 3: Detalle de la placa prototipo por debajo

Placa final

Foto 4: Placa terminada con chip soldado

Foto 5: Placa con conectores hembra para montaje del sombrero

Foto 6: Montaje con sombrero definitivo (sin conectores hembra, directamente soldado)

Documentos

Web del bootloader de Arduino

Placa de desarrollo para ATmega2560

ATmega2560

FT232RL