lunes, 22 de diciembre de 2014

Arduino Beetle


Una vez que ya hemos presentado cómo de pequeña puede quedarse nuestra placa Arduino si nos decidimos a montar la versión Arduino Nano, ahora vamos a intentar partir la placa en dos. De hecho vamos a intentar dejarla tan pequeña como básicamente lo permita el hacer uso de un micro ATmega32U4 y un puerto microUSB. Esta placa se llama Arduino Beetle y en la siguiente figura podremos ver la relación de tamaño que guardan entre ellas.

En la figura podemos ver de izquierda a derecha, las placas Leonardo, Nano, Nova y Beetle.




Aún siendo así de pequeña usa el mismo micro de 8 bits y 16 MHz que la versión Leonardo de Arduino, el ATmega32U4,


aunque como podemos ver en la figura y por su tamaño 20mmx22mm, la placa está diseñada para manejar menor número de entradas,  3 digitales ( D9, D10, y D11) que pueden funcionar como PWM, y tres analógicas (A0, A1 y A2)




Está pensada para que se pueda programar de forma amigable a través del puerto micro USB


y del IDE del Arduino (en donde a la hora de seleccionar el tipo de placa que tenemos deberemos especificar Leonardo).

El propósito de esta placa es resolver problemas de forma sencilla para proyectos que no requieran microcontroladores caros, por ejemplo todo tipo de proyecto Do It Yourself (DIY, háztelo tú mismo), weareables, educativos, etc.

Por ejemplo, el famoso robot InsectBot de DFRobots, usa al Arduino Beetle como controlador de un sensor de proximidad de infrarrojos y un par de servomotores que hacen las veces de solución motriz. En una entrada especialmente dedicada veremos como podemos montarlo.

Al ser tan pequeño, si no queremos soldar la electrónica directamente a los terminales, necesitará de su propia tarjeta de expansión, algo que aunque incrementa enormemente la facilidad de montaje y desmontaje de sensores y actuadores, incrementará un poco (no mucho) el tamaño de nuestro proyecto.  La placa de expansión es llama Beetle Shield,

y cuando se montan ambas juntas queda de la siguiente forma


Algo que nos permitirá montar nuestra electrónica sin la necesidad de protoboard







domingo, 21 de diciembre de 2014

Arduino Nano




En esta ocasión vamos a presentaros una de las muchas versiones de reducido tamaño que se han diseñado para dar solución a aquellos proyectos que exigen reducir el tamaño de toda la electrónica asociada, el Arduino Nano.

Así que comencemos con una de sus virtudes, sus dimensiones: 43,18mm x 15,24mm


Desde la versión 3, incorpora el micro ATmega328 igual que su hermano mayor el Arduino UNO R3, por lo que tendremos sus mismas prestaciones.

El espaciado de los pines es el estándar de 2,54mm para que podamos insertarlo directamente en la protoboard.


Como se puede observar en la foto, tiene un LED azul en la base para indicar el encendido.

Así mismo para transmisión (TX) y recepción (RX)  usa LEDs de color verde y rojo respectivamente.

Además podemos apreciar en la imagen, que también le han cambiado el USB grandote clásico a la version mini B, y no la versión microUSB porque esta versión fue diseñada en el 2008-2009.


Al igual que Arduino UNO R3, tiene RESET automático al cargar programas, no necesitando apretar físicamente el botón antes de grabarle uno nuevo, y al igual que Arduino UNO R3 tiene el bootloader integrado que nos permite programarlo con el entorno de desarrollo de Arduino y sin necesidad de un programador externo. Aunque si eso es lo que se desea, incorpora un conector ICSP que nos permitirá programarlo con un programador externo.

La placa monta la regulación de tensión a 5V así como el chip de comunicación en la segunda cara, permitiéndole un mayor nivel de integración de la electrónica que monta Arduino UNO R3.


El chip FTDI FT232RL solo se activará si la placa está alimentada a través del puerto mini USB. Como consecuencia de ello, cuando el Arduino Nano está alimentado con una fuente externa, y no a través del puerto mini USB, la salida de 3.3V (que es suministrada por el chip FTDI) no estará disponible.


sábado, 20 de diciembre de 2014

Funduino UNO




Esta placa tiene unas cuantas ventajas y algún pequeño inconveniente.

Veamos qué podemos decir de ella.

Tamaño: 68x53mm, el mismo que la Arduino UNO
Frecuencia de reloj: 16 MHz, el mismo que la Arduino UNO
Microprocesador: ATmega328P, el mismo que la Arduino UNO
Voltaje de funcionamiento: 3.3V / 5V,  Arduino UNO solo da 5V.
Voltaje de entrada: 7-12V (aunque al igual que Arduino UNO,  podría llegar a 6-20V)
Interfaz de E/S digitales: 14 (4PWM, de difícil identificación)

Las ventajas inmediatas que le vemos a esta placa son las siguientes:

1.- El precio es de solo 13,99$
2.- Permite conectar sensores o actuadores directamente a los pines sin necesidad de empalmes ni protoboard gracias a los conectores de 3 pines que incorporan en cada I/O.
3.-  Mientras que Arduino UNO no puede suministrar más de 100mA de corriente máxima, Funduino es capaz de suministrar hasta un máximo de 500mA, y llegando a ser capaz de suministrar hasta 5V 2A, cuando está conectado a una fuente externa. Posiblemente gracias al uso del regulador MP2307.
4.- Permite gracias a un interruptor, que las tensiones de funcionamiento sean 5V o 3,3V, permitiendo así trabajar con módulos de bajo voltaje, algo que con Arduino UNO tenemos que hacerlo con algo más de electrónica.
5.- El famoso botón de reinicio que se ha ido moviendo de una versión a otra, está aquí colocado en una posición a la que se puede acceder incluso cuando le coloquemos una tarjeta de expansión (Shield)
6.- Aunque Arduino UNO funciona con tensiones de entrada de 7-12 (con un máximo de 20V), Funduino puede a llegar a soportar tensiones de hasta 23V. Posiblemente gracias al uso del regulador MP2307.


Las desventajas inmediatas que le vemos a esta placa son las siguientes:

1.- Que no se encuentra documentación en internet sobre ella, al menos con facilidad.
2.- Que dado que mantiene el mismo tamaño de placa que Arduino UNO, las regletas de pines auxiliares impiden la identificación cómoda de los pines, haciendo el acceso intuitivo a algunos de ellos, por ejemplo los PWM, imposible.
3.- Que aparentemente la versión que estamos usando usa el chip de ATmega8U2 para la comunicación USB/Serie, que es la que montaba Arduino UNO hasta la revisión R2, sin embargo actualmente montan la ATmega32U2, por lo que me imagino que algún problemilla de comunicación podría llegar a dar. Aunque lo hemos probado contra la versión del IDE 1.0.6, y no hemos encontrado nada anómalo.
4.- Que posiblemente por ser una versión un poco más antigua, aunque renuncia a implementar el conector USB de impresoras, no salta al microUSB, sino que lo sustituye por un microUSB esto hace pensar que es posible que en la siguiente versión incluya estas dos evoluciones.

Así que, llegados a este punto, lo mejor será ir probándola y reportaros los problemas que vayamos localizando.

Si encontráis más temas que consideréis que marcan la diferencia, así como documentación sobre la misma,  agradeceríamos que nos lo mandaseis, seguro que más de uno os lo va a agradecer.




Tabla comparativa de Arduinos


Aunque a lo largo de las próximas entradas iremos presentando algunas de las placas con las que vamos a trabajar en nuestros proyectos, a continuación se recoge las versiones más ortodoxas y las diferencias más relevantes entre ellas.

Característica de Arduino
UNO
Mega 2560
Leonardo
DUE
Tipo de microcontrolador
Atmega 328
Atmega 2560
Atmega 32U4
AT91SAM3X8E
Velocidad de reloj
16 MHz
16 MHz
16 MHz
84 MHz
Pines digitales de E/S
14
54
20
54
Entradas analógicas
6
16
12
12
Salidas analógicas
0
0
0
2 (DAC)
Memoria de programa (Flash)
32 Kb
256 Kb
32 Kb
512 Kb
Memoria de datos (SRAM)
2 Kb
8 Kb
2.5 Kb
96 Kb
Memoria auxiliar (EEPROM)
1 Kb
4 Kb
1 Kb
0 Kb

A partir de aquí, tendremos versiones compatibles de mayor o menor tamaño, con regulación de tensión o sin ella, con tensiones de trabajo de 5V y/o de 3,3V, etc.

La  placa Arduino con microcontroladores de 8 bits Atmel es actualmente la más popular. Entre otras, incluye las placas UNO, MEGA 2560 y Leonardo, aunque tendremos ocasión de presentar alguna otra versión que se sale de esta regla.

Arduino Leonardo se diferencia de sus predecesoras en que utiliza un chip ATmega32U4 que contiene el controlador USB, eliminando la necesidad de ningún otro procesador secundario.

Las salidas analógicas presentes en la Arduino DUE, de 32 bits, proporcionan una resolución (4096 niveles) que podrían emplearse para crear una salida de audio.




miércoles, 3 de diciembre de 2014

¿Para qué sirven los pines en la placa Arduino?






Con objeto de poder identificar mejor las partes de una placa Arduino UNO, en esta entrada, vamos a recorrer cada uno de los pines que tiene nuestra placa y os vamos a contar para qué sirven.

En algunos casos, sobre todo si todavía no la habéis usado mucho, algunos términos os resultarán extraños, pero no os preocupéis por ello porque en posteriores entradas iremos explicando cada uno de ellos.

La placa que debéis tener en la mano, debe parecerse a la de figura inicial, y aunque hay muchas placas compatibles con Arduino UNO, la mayoría de ellas respeta la disposición de los regleteras negras de pines. Ver un ejemplo en la imagen siguiente, donde en rojo hemos remarcado dos de las versiones de microcontrolador que puede encontrarse dentro de la familia Arduino UNO, y en amarillo, la ubicación idéntica de las regleteras de pines que presentaremos a continuación:



Es por ello, y para que solo nos concentremos en las similitudes y no en las diferencias, por lo que a continuación hemos preparado un esquema simplificado de la placa, que nos permitirá recorrer los pines sin perdernos.




Así que si empezamos con el pin naranja AREF  (situado en la zona superior central del dibujo) y recorremos la tarjeta en sentido horario, nos vamos a encontrar con los siguientes tipos diferentes de pines
  • Pin analógico de Referencia pin (naranja)
  • Tierra digital (verde claro)
  • Pines digitales 2-13 (verde)
  • Pines digitales 0-1 para comunicación serie In/Out - TX/RX (verde oscuro) - Estos pines no pueden ser usados (digitalRead y/o digitalWrite) como Entrada/Salida digitales si se está usando la comunicación serie (Serial.begin).
  • Botón de Reset - S1 (En el dibujo no sale, pero es un pequeño botón que cambia su posición depende de la placa)
  • Conector de programación ICSP (In-circuit Serial Programmer) (turquesa)
  • Pines analógicos 0-5 (celeste)
  • Pines de Alimentación y Tierra (Alimentación (POWER): naranja, Tierra (GND): naranja claro)
  • Conector jack 21mm para alimentación externa (9-12VDC) - X1 (rosa)
  • Conector USB (que usaremos parar subir los programas que hayamos escrito en nuestro ordenador) (amarillo)

En las próximas entradas explicaremos uno a uno para qué sirve cada uno.


martes, 2 de diciembre de 2014

Regulación de Tensión - Potencia máxima






Como vimos en la entrada  sobre la regulación del voltaje en las placas Arduino, éstas usan normalmente un regulador de tensión lineal del tipo MC33269D-5.0 de On Semiconductor.

Cuando se alimenta Arduino a través del conector de alimentación externa  (el jack negro, no el conector USB), hay que calcular primero la cantidad de corriente que necesitaremos consumir para alimentar a nuestra placa.

Esta medida de precaución la debemos respetar siempre, independientemente de que estemos enchufando un simple LED, o una placa de expansión (shield) o una batería de componentes. Será la diferencia entre disfrutar de nuestra placas años o solo unos segundos.  

Por lo pronto ya sabemos que la placa en sí misma consume unos 50mA, ahora tendremos que ver cuánto consume el resto. En el caso de un diodo LED, pues es posible que el consumo esté en el rango de 10-30 mA. Por lo que si fuera así, el consumo total de nuestro proyecto sería inferior a 80mA. Sea lo que fuere, no debemos enchufar nuestro Arduino sin saber cuál es el consumo por pin (recomendado 20mA, obligatorio menos de 40mA).

Hay muchas formas de romper una placa por errores en nuestro diseño, pero hay una particular asociada al sobreconsumo y que viene dada por las limitaciones de nuestro regulador lineal.

Un regulador de tensión lineal es un dispositivo electrónico que permite obtener una tensión de salida muy precisa, transformando el exceso de tensión que nos sobra en forma de calor. Esto es,  que si estamos alimentando nuestra placa con 9V y solo vamos a necesitar 5V, hay 4V que tendremos que disipar en forma de calor.  Y esto en condiciones normales no debería ser un problema, pero merece la pena recordar que el calor localizado genera puntos calientes que pueden ocasionar fallos catastróficos.



Así que lo segundo que vamos a hacer es ver qué tipo de regulador de tensión viene montado en nuestra placa  con objeto de evaluar la cantidad de calor puede soportar.

Y para ello necesitamos saber dos cosas, 
  • la resistencia térmica del regulador y 
  • los mecanismos de disipación de calor que lleva la placa.  
Empecemos por lo segundo, 

¿Qué mecanismos de disipación del calor lleva montado el regulador de tensión?.
Respuesta: Ninguno.

Es la placa la que hace disipar el calor a través de sus pistas de cobre, por lo que si necesitara disipar más tendríamos que pegarle encima algún tipo de disipador mecánico del estilo del que se puede ver en la siguientes imágenes




Esto nos lleva al primer punto,  así que consultemos en la hoja de datos (datasheet) la resistencia térmica del regulador y la potencia máxima que puede disipar.

Cuando un regulador está funcionando se calienta. Esto es debido a que parte de la potencia tomada del rectificador es disipada en el regulador. La potencia disipada depende de la corriente que se esté entregando a la carga y de la caída de tensión que haya en el regulador.

La figura muestra un regulador funcionando.

http://electronica.webcindario.com/tutoriales/imagenes/regu5.gif

La corriente que lo atraviesa es la corriente de la carga IL. Recordemos también que para que un regulador funcione correctamente la tensión de entrada Vin tenía que ser mayor que la tensión de salida Vout. Por lo tanto la caída de tensión en el regulador Vr (llamada tensión de dropout),  será:

Vr = Vin – Vout

Y la potencia disipada vendrá dada por el producto de la tensión de dropout por la corriente de la carga IL, según la siguiente ecuación:

PD = Vr * IL

Como vimos en la entrada donde explicábamos la regulación de tensión del Arduino, el esquema del circuito era:


Donde podemos ver que hay un diodo de protección de polaridad en el conector (D1) cuya caída de tensión también hay que considerar (normalmente 0,7V), siendo por lo tanto la tensión de entrada en el regulador igual a

Vregulador_in = VPOWERIN-Vdiodo

y por lo tanto siendo la diferencia de tensión de dropout es:

Vdropout = Vregulador_in - Vregulador_out

El consumo en corriente de la placa en modo estable depende, evidentemente del programa que tengamos corriendo en el microcontrolador, del número de pines activos como salidas,  etc. imaginemos que no estuviéramos nada entonces podríamos decir que más o menos la placa estaría consumiendo 50mA.

La potencia que disipa por defecto, en su modo estático, el regulador sería:

Pdisipada_regulador = Vdropout * Iout

Considerando que alimentamos externamente con 9V (VPOWERIN), la potencia disipada será:

Pdisipada = (9V - 0,7V - 5V) * 0,05A = 165 mW


Ahora volvamos al regulador que monta la placa Arduino. Un regulador de On Semiconductor llamado MC33269D-5.0. Debemos verificar cual es la que monta nuestra placa para no confundir las características de cada uno. A fin de cuentas el calor se disipa a través del encapsulado al aire y a la placa, y cuanto más grande sea el encapsulado y mayor la superficie de cobre en la que disipará este calor, más potencia podrá gestionar el regulador sin riesgos de sufrir daños.

El encapsulado que venía montado antes en las placas Arduino (por ejemplo en las Duemilanove) era el encapsulado DPAK, 




aunque actualmente podemos ver montados el SOT-223 


En la imagen que viene a continuación podemos ver las diferencias físicas entre uno y otro.




Y aunque puedan parecer iguales, es importante saber identificarlos, dado según el encapsulado, así será su capacidad de disipación de calor y por tanto su capacidad de proporcionar más o menos corriente a la salida.

En el datasheet del regulador MC33269D-5.0 encontramos la gráfica que relaciona la resistencia térmica, con la máxima potencia que se puede disipar y el cobre de la placa que le sirve de disipador de calor. A continuación mostramos las curvas características de cada uno de ellos.



Si en las placas del Arduino, el cobre que hubiera bajo el regulador fuera la mínima área posible, señalada en la figura como Minimum Size Pad, esto significaría que la máxima potencia que puede disipar el regulador a 50ºC sería de 1.5W, con una resistencia térmica de unos 68ºC/W para el encapsulado DPAK, y 0.78W con una resistencia térmica de unos 154 ºC/W para el SOT-223.

Como podemos ver solo el hecho de cambiar el encapsulado ha limitado la potencia máxima que podrá regular nuestra placa a la mitad.

Por lo tanto si tenemos nuestra placa enchufado a una fuente externa de 9V,


tendremos un Dropout = 9V-0,7V-5V= 3,3V.

Es decir, que la máxima corriente que podríamos tener con 3,3V de dropout, para no dañar el regulador, sería de 

  • I= P/V = 1.5W / 3.3V = 450 mA para el encapsulado DPAK , y de 
  • I= P/V = 0.78W/3.3V = 222 mA para el encapsulado SOT223.

No deberíamos pasar de (según encapsulado) 450-220 mA de consumo estable para no sobrecalentarlo.

Si estimamos que la placa, por sí sola, consume alrededor de 50mA, tenemos aproximadamente 400mA-170mA disponibles para alimentar nuestro proyecto.

Si necesitamos suministrar más potencia entonces tendremos que:
  • añadimos un disipador sobre el regulador,
  • disminuimos la tensión de alimentación tanto como sea posible (con la condición de que sea mayor que 5V),
  • reducir el consumo de las salidas,
  • disminuir la frecuencia del oscilador para trabajar a menor tensión en la placa, etc. (más adelante veremos algunas formas de hacerlo cuando estemos depurando nuestro proyecto)



Realmente las placas de Arduino usan una superficie de cobre sobre la que disipar calor un poco más grande. Si desmontamos con cariño el regulador veremos no solo la huella de estaño que deja sino la placa de cobre que hay debajo de ella debajo de la capa azul


Y que resulta muy evidente en las placas Leonardo



Además, el propio fabricante ha implementado su propio sistema de protección y el regulador que monta la placa Arduino tiene un sensor interno de protección que se activa cuando  la temperatura de unión ha llegado a los 170ºC. Aunque hay que decir que no está diseñado como sustituto de ningún sistema robusto de disipación de calor. Y por las fotos que se puede ver en internet, se ve que más de una vez, la corriente es tan alta que el sistema de protección no consigue parar lo inevitable, y finalmente el regulador se funde.



Por lo que aconsejamos que no asumamos riesgos innecesarios y no sobrepasemos los límites de corrientes especificados por el propio fabricante.