Mostrando entradas con la etiqueta Duemilanove. Mostrar todas las entradas
Mostrando entradas con la etiqueta Duemilanove. Mostrar todas las entradas

jueves, 21 de octubre de 2010

Freetronics.TwentyTen

La empresa australiana Freetronics sacó al mercado una alternativa al Arduino Duemilanove, el TwentyTen.
Nos es una réplica exacta, añaden algunas nuevas características y algunas mejoras con respecto a su original, por ejemplo:
  • sustituye el conector USB tipo B por uno mini USB para evitar posibles cortocircuitos con los shields,
  • hace la señal de recepción del puerto serie más inmune con respecto a las interferencias electromagnéticas. Parece ser que el Arduino Duemilanove podían verse afectado por el ruido EMC, lo que era especialmente crítico durante la grabación del micro,
  • se añade un área de prototipaje,
  • ...
Los creadores de Freetronics no son unos desconocidos, son los autores de un famoso libro sobre Arduino, "Practical Arduino".
Hasta pronto.

miércoles, 20 de octubre de 2010

Arduino Tutorial. Hardware. Alimentación por USB.

A diferencia de la alimentación por el conector externo, que hemos tratado en anteriores posts, la alimentación por el puerto USB no está regulada dentro del Arduino. La tensión de 5V que alimenta la electrónica interna, viene directamente del conector USB.

En el esquemático vemos representada la alimentación de 5V que viene del conector USB (X4) con la net USBVCC:

Arduino Duemilanove detecta si alimentamos la placa desde el conector USB de forma automática, no hace falta configurarlo a través de un jumper. Voy a explicar cómo se consigue esto en Arduino Duemilanove.
Esa tensión de USBVCC se lleva al drenador de un transistor MOSFET tipo P, cuya base está controlada por el siguiente circuito:

El transistor MOSFET (NDT2955) conducirá, dejando pasar la corriente de alimentación del conector USB a la alimentación del circuito (+5V), si la base del transistor (GATE_CMD) está a masa (GND o 0V). ¿Cuándo ocurre eso?.

Vemos que IC5A es un circuito comparador. Está comparando la mitad de la tensión de alimentación proveniente del conector de alimentación externa (VIN) con 3.3V. Si la tensión en el terminal positivo del operacional es mayor que la del negativo, tendremos a la salida del comparador la tensión positiva de alimentación del operacional (aunque no lo indique el esquemático, esta tensión es de +5V), en caso contrario, tendremos GND.

Si no hay alimentación externa VIN, la tensión CMP será GND (gracias al pulldown R11), y por tanto a la salida de IC5A tendremos GND. El circuito conIC5B es un (prescindible) seguidor de tensión, a su salida tenemos la misma tensión que a la salida de IC5A, por tanto la tensión GATE_CMD será también GND. De esta forma el transistor MOSFET conducirá y se alimentará la placa a través del USB.

Si existe alimentación externa VIN mayor que 7V, a través del conector de alimentación, tendremos una tensión superior a 3.3V en CMP, tendremos tensión positiva en la salida de IC5A y por tanto tendremos también tensión positiva en la base del transistor NDT2955. Eso significa que el transistor estará abierto, y +5V vendrá de la salida del regulador lineal IC4, tal como comentamos en anteriores posts.

Es importante remarcar un punto que nos quedó pendiente de matizar en posts anteriores y que en este se ha explicado de una forma, quizás, demasiado implícita. La tensión mínima externa (no USB) es de 7V, porque para detectar la fuente de alimentación (USB o externa) se compara VIN/2 con 3.3V. Por tanto, para que se detecte que efectivamente se está alimentando Arduino desde una fuente externa, ésta tiene que ser superior a 7V.

La especificación de los puertos USB marcan que tienen que dar 5V, con una limitación de corriente de 500mA. Es decir, la salida del USB del ordenador, si cumple la especificación, ha de estar protegida contra sobrecorrientes de 500mA. En el Arduino se añade una sobreprotección, utilizando un polyfuse resetable adicional de 500mA sobre esa tensión. Así que la máxima corriente que podemos conseguir del USB de forma estable será, en todo caso, de 500mA.
Hay una característica que hay que considerar acerca de los polyfuses reseteables, son lentos. El tiempo que tardan en abrir el circuito está relacionado con la corriente que circula. Si la sobrecorriente es ligeramente superior al límite, en nuestro caso 500mA, puede tardar hasta un segundo en abrirse. Esto puede ser un problema en algunos casos, porque puede dañarse la electrónica antes de ser protegida por el polyfuse.
Hasta pronto.

domingo, 17 de octubre de 2010

Arduino Tutorial. Hardware. Alimentación externa. Limitaciones 3.3V.

En el anterior post hablamos de la fuente interna de 5V del Arduino Duemilanove. En este post describiremos el origen y la limitación de la fuente de 3.3V.

Los 3.3V que se llevan al conector de alimentación POWER para los shield, provienen de un regulador lineal LDO (Low Drop Out regulador), incluido dentro del integrado conversor serie a USB, el FT232RL de la empresa FTDI.

La corriente máxima, según el datasheet del fabricante, para estos 3.3V es de 50mA.

Hasta pronto.

sábado, 16 de octubre de 2010

Arduino Tutorial. Hardware. Alimentación externa. Limitaciones 5V.

Cuando se alimenta Arduino a través del conector de alimentación externa (no USB), y queremos conectarle una placa encima (comúnmente llamada Shield) para controlarla a través del Arduino, hay que tener en cuenta las limitaciones en corriente del regulador lineal de 5V.
Las tensiones internas de alimentación se llevan a la placa superior a través del conector POWER:
Como expliqué en el anterior post, la tensión de 5V viene del regulador lineal MC33269D-5.0 de ON Semiconductor.
Recordad que los reguladores lineales, disipan la potencia consumida en la regulación en forma de calor. Para comprobar hasta qué corriente podemos suministrar al shield a través de los 5V, tenemos que consultar el datasheet del regulador, y comprobar la potencia máxima que puede disipar.
La potencia que disipa el regulador es la diferencia de tensión que hay entre su entrada y su salida (llamada tensión de dropout), por la corriente a la salida. En el caso de Arduino Duemilanove, hay un diodo de protección de polaridad en el conector cuya caída de tensión también hay que considerar (estimo que es de 0,7V), así que la diferencia de tensión de dropout es:
Vregulador_in = VPOWERIN-Vdiodo

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, ... Considero, como aproximación, que es de 50mA.

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

Pdisipada_regulador = dVregulador * Iout

Considerando que alimentamos a 12V (VPOWERIN), la potencia disipada será:

Pdisipada = (12 - 0,7 - 5) * 0,05 = 315 mW
El regulador MC33269D-5.0 que viene montado por defecto en el Arduino Duemilanove tiene el encapsulado DPAK. Esto tiene su importancia, porque 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 encontramos la gráfica que relaciona la resistencia térmica, con la máxima potencia que se puede disipar y el cobre del PCB que sirve de disipador de calor:
En el Arduino, el cobre que hay bajo el regulador es la mínima área posible, señalada en la figura como Minimum Size Pad. Esto significa que la máxima potencia que puede disipar el regulador a 50ºC es de 1.5W, con una resistencia térmica de unos 68ºC/W.
Es decir, que la máxima corriente que podríamos tener con 6.3V de dropout, para no dañar el regulador, sería de 1.5W / 6.3V = 238mA.
No deberíamos pasar de 200 mA de consumo estable para no sobrecalentarlo.
Si estimamos que la placa, por sí sola, consume alrededor de 50mA, tenemos aproximadamente 150mA disponibles para:
  • alimentar el shield,
  • alimentar las salidas del microcontrolador que van al shield.
Si necesitamos suministrar más de 150mA al shield:
  • añadimos un disipador sobre el regulador (nunca sobreestimar el efecto del heatsink),
  • disminuimos la tensión de alimentación por debajo de 12V,
  • reducimos el consumo de las salidas,...

En el datasheet se dice que el regulador tiene un circuito de limitación térmica interna que deshabilita la salida a 170ºC, pero que nunca esta protección puede ser considerada como un disipador (o heatsink). No se tiene que considerar como variable en nuestro diseño.

En resumen, antes de decidirnos a alimentar el shield a través del Arduino, tenemos que saber qué consumo le estaremos exigiendo. Si es superior a 150mA en los 5V, tenemos que plantearnos la opción de utilizar otra fuente auxiliar para alimentar el shield (baterias, otra conexión de alimentación externa (ojo con las masas),...) o reducir el consumo.

También hay que considerar que en todo momento he hablado de consumo estable. El regulador es capaz de disipar más potencia de la especificada si sólo tiene picos de corriente puntuales.

En el caso de alimentación por el puerto de USB la situación es diferente, hay que tener otras consideraciones que trataremos en otros futuros post.

Hasta pronto.

miércoles, 13 de octubre de 2010

Arduino tutorial. Hardware. Alimentación externa.

En los siguientes post voy a tratar el hardware del Arduino Duemilanove.
El primer punto a tratar es la etapa de alimentación del Arduino. Puede ser alimentado por dos fuentes:
  • Conector USB
  • Conector de alimentación externa (no USB).
La alimentación por fuente de alimentación externa (no USB) tiene un margen de 7V a 12V. El límite mínimo 7V viene fijado por la forma en que Arduino detecta si la placa se alimenta a través de la alimentación externa, o a través del USB. La tensión máxima, 12 V, viene fijada por la máxima potencia que puede disipar el regulador lineal MC33269D-5.0 (IC4) que proporciona los 5V cuando la placa se alimenta a través de alimentación externa (no USB).

La tensión máxima de entrada teórica es de 20V, viene especificada en el datasheet del regulador lineal, y la tensión mínima teórica es 6V, viene del dropout del regulador, que es 1V. Es decir, la tensión de caída entre la entrada y la salida del regulador es de 1V, por tanto, para tener 5V a la salida, en la entrada tiene que haber, al menos, 6V.

La siguiente figura es el la parte del esquemático del Arduino Duemilanove que describe la alimentación por el conector:

Vemos que la net de alimentación es VIN, y la tensión de alimentación interna del circuito es +5V. En la siguiente foto se señala la parte de la placa que corresponde con el circuito:


Entre los dos terminales señalados en la imagen debemos 5V incluso si alimentamos a través del USB.

En el siguiente post describiré la limitaciones en corriente de las fuentes internas de 5V y de 3.3V, y se describirá con más detalle las razones por las que el margen de tensión de alimentación va de 7V a 12V.

Hasta pronto.