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.

No hay comentarios:

Publicar un comentario