¿Cuánta corriente se usa con una entrada GPIO de μC y una resistencia pullup?

Estoy tratando de entender un poco mejor los presupuestos de energía y tengo una pregunta con respecto a las dominadas. Tengo una entrada a un microcontrolador que debe tener una lógica alta en todo momento. El micro se duerme de vez en cuando, por lo que el pull-up interno no es una opción. Parece que sí (wow, eso es grande).

esquemático

simular este circuito : esquema creado con CircuitLab

Estoy tratando con un sistema de bajo consumo que funciona con baterías (2 baterías AA), por lo que cada pequeño ahorro de energía cuenta. Mi pregunta es cómo averiguar cuánta corriente consume esto. Si solo miro V = IR, estamos hablando de 30 μA, que en realidad es mucho para esta aplicación.

Lo que realmente no entiendo es cómo tener en cuenta el microcontrolador. Supongo que hay algo que debo tener en cuenta de la hoja de datos, pero no sé qué elementos son relevantes.

La resistencia de 100k es de un diseño de referencia, pero ¿hay algo que me impida colocar una resistencia mucho más grande para reducir el consumo de corriente?

Estas son probablemente preguntas básicas, pero soy un tipo de software fuera de su elemento aquí, así que tengan paciencia conmigo.

Fuga

Según algunos comentarios, parece que la corriente de fuga es la especificación del microcontrolador en la que debería estar interesado. A continuación se muestra lo que encontré en la hoja de datos. ¿Es 3 nA el número mágico?

ingrese la descripción de la imagen aquí

Hilo relacionado. Sin embargo, no es un duplicado.
¿Por qué el pull-up interno no es una opción porque el uC ocasionalmente entra en modo de suspensión ? En los uC sé que la configuración pull-up es estática, independiente de cualquier reloj.
@Wouter - Interesante. Asumí que cuando entra en un estado de apagado profundo, no puede confiar en los pullups/pulldowns internos. Lo exploraré más a fondo.
Usted menciona una hoja de datos pero no proporciona más información. ¿La pregunta está relacionada con un modelo/familia de mcu específico?
En los niveles de potencia que insinúa, simplemente no puede tener resistencias pullup que funcionen en contra del estado normal de las señales. Tendrá que descubrir cómo adaptar el diseño para que los pullups solo funcionen contra estados temporales breves , y use otra cosa para las cosas que pueden estar en cualquier estado durante un tiempo significativo.
@alexan_e - Solo porque no sabía qué buscar. Actualizaré...
@Tim, la única diferencia entre su pullup externo y el interno, incluso en los modos de suspensión, es que los pullups internos suelen ser ~ 47kΩ, eso es todo. Y es posible que desee agregar qué MCU está utilizando. Supongo que es un Atmel debido a la captura de pantalla.
@Passerby Me parece NXP.

Respuestas (5)

Necesita la corriente de fuga de entrada. Esta pregunta tiene una buena discusión de lo que realmente está sucediendo. Básicamente, los transistores de entrada presentan una resistencia efectiva de megaohmios a gigaohmios y la corriente que fluye será extremadamente pequeña. Esa discusión también dice que generalmente puede aumentarlo a 1Mohm.

Pero como el pullup externo debe tener una resistencia mucho menor que la resistencia de entrada (presumiblemente a tierra), tiene poco sentido aumentar el pullup externo. Solo aumentará la sensibilidad a las perturbaciones (pero tal vez el nivel de entrada nunca se lea).
De acuerdo con @WoutervanOoijen. De hecho, suponiendo que el pin del microcontrolador sea siempre una entrada, hacer que el pull-up sea de cero ohmios a 3,3 V no cambiaría significativamente el consumo de energía. La resistencia de 100K lo protege en caso de que accidentalmente baje el pin.
@ pjc50 - Información de fuga agregada

Los pullups internos son de 20 a 50 kΩ. Las características típicas se miden con pines como entradas y pullups internos habilitados. Los modos de suspensión afectan el estado lógico del pin de entrada y el consumo de corriente. Pueden y se utilizan en los modos de suspensión. La única diferencia es el valor. Su 100kΩ es más grande y tiene un mejor valor fijo/conocido.

Secciones relevantes. Todos estos se extraen de la hoja de datos de MCU de la serie ATTinyx5, pero son típicos de la mayoría de ATTiny y ATMegas

ingrese la descripción de la imagen aquí ingrese la descripción de la imagen aquí ingrese la descripción de la imagen aquí

Hay una compensación en los valores de resistencias altas. Que a su vez las entradas sean más susceptibles al ruido.

Esta respuesta podría necesitar alguna explicación básica.

Tu calculo de 10 m A asume que la entrada del microcontrolador está a tierra y que el voltaje de suministro total está en la resistencia. Pero la resistencia elevará el pin de entrada y prácticamente no habrá voltaje en la resistencia pullup (la mayor parte del tiempo). Por lo tanto, la corriente a través de la resistencia sería cero para un pin de entrada CMOS ideal, después de unos microsegundos de tiempo de carga.

El parámetro clave es la corriente de fuga de entrada, como ha visto en la hoja de datos. Si está tirando del pin hacia arriba, lo importante es la corriente de fuga de alto nivel, y el valor típico de este parámetro es 3nA. No usaría ese valor si realmente le importa el consumo de energía, trataría de encontrar un valor en el peor de los casos en la hoja de datos o usaría la cifra de 20nA (en el peor de los casos si la entrada se eleva a 5V).

De hecho, si la resistencia pullup está en un pin que siempre es una entrada, entonces el valor de la resistencia pullup es poco importante. Podrías usar 10k Ω en su lugar y sentirse mejor acerca de la inmunidad al ruido.

He pasado por este problema y he descubierto que lo mejor es usar el pullup interno. Debe considerar que si coloca la resistencia externa, consumirá 30 uA cada vez que fuerce la salida a nivel bajo. En el futuro, es posible que deba mantenerlo bajo durante más tiempo, y es posible que haya olvidado esa resistencia que absorberá su preciado poder.

Dije que he pasado por esto: también tenía un dispositivo de muy baja potencia para trabajar, y cada corriente se midió en el rango uA-nA para reducir la demanda de energía al mínimo. Cuando usa la resistencia pull-up interna, puede olvidar que está ahí. Si mal no recuerdo, cuando fuerza un nivel lógico en la salida, debe deshabilitar el pull-up.

Buen punto sobre el consumo de corriente cuando se configura como una salida. Esta línea en realidad se convierte en una salida después de que el micro se inicia y actúa como una línea de dirección para la RAM externa. No es una gran preocupación ya que lo más importante es la corriente de sueño, pero aún así es bueno tenerlo en cuenta.