Problemas con la corriente de fuga de entrada en un microcontrolador

0

Estoy intentando construir un sistema en el que un microcontrolador recibe (a través de uno de sus pines de entrada) un 1 lógico si se presiona un interruptor y un 0 lógico si no lo está. Para ello, quiero implementar un circuito como el siguiente:

Entiendo que la resistencia de 10k es necesaria para evitar un cortocircuito entre 3.3V y tierra, lo que no he aclarado completamente es por qué debe ser de 10k.

Según la explicación que estoy leyendo, ese valor se elige directamente al microcontrolador IIL y IIH (Corriente de fuga de entrada, ¿verdad?) es de 0,2 micro amperios, y esto es lo que realmente no entiendo.

En el texto que estoy leyendo, se llama la corriente de entrada del pin de entrada del microcontrolador , y asumo que es algo así como una corriente residual que el microcontrolador está emitiendo (a través del pinta de entrada). ¿Tengo razón?

Si es así, ¿cómo es posible que exista esa corriente si el circuito está abierto? ¿Cómo puede un pin ENTRADA entregar corriente al exterior?

Finalmente, si mis suposiciones son más o menos correctas, eso significa que lo que necesito es lograr un voltaje entre 0 y 0,8 V (considerado lógico 0 por el microcontrolador según su hoja de datos).

Entonces, ya que V = I * R, si pongo una R de 10k, significa V = 2 microAmps * 10K ohms = 20 milivoltios, que está entre 0 y 0.8, así que obtendré una lógica 0. ¿Es correcto?

Si es así, por lo que tengo entendido, podríamos lograr el mismo objetivo con muchos resistores diferentes, siempre que generen un voltaje entre el pin de entrada y el resistor que está entre 0 y 0.8, ¿no?

    
pregunta Dan

1 respuesta

2
  

¿cómo es posible que exista esa corriente si el circuito está abierto? ¿Cómo puede un pin ENTRADA entregar corriente al exterior?

Los pines MCU modernos son muy complejos. Son configurables por firmware y contienen todas y cada una de las opciones para las que está diseñado un GPIO, para poder cambiar la configuración. A continuación se muestra un diagrama de bloques simplificado para el pin GPIO de Paspberry Pi:

Comosepuedever,elpintieneunaconexiónconelbúferdeSALIDA(quesedeshabilitalógicamentesielpinestáconfiguradocomoentrada),luegohayunaresistenciadepull-up/pull-downconuninterruptor,hayprotecciónESDcondiodosdesujeción,yhayunbúferdeentrada.Además,puedehaberotrasfuncionesopcionalescomoentradasanalógicasADCosalidasDAC.

TodosestoselementosestánhechosdetransistoresCMOSenconfiguracionescomplicadas,ycadatransistortienealgunafuga.Puedeserpequeño,perounaceldaGPIOmodernapuedecontenerCIENTOSdetransistores,yelpinexternopuedetenerunadocenadeellosconectadospermanentemente.Lacombinacióndefugasnoespredecibledebidoalavariacióndelafabricación,ylosdiseñadorestrabajanarduamenteparalimitarlafugatotal.Estafugacombinadapuedetenerunadirecciónpositivaonegativa(tiraligeramentehaciaarribaohaciaabajo),yseespecificaen hojas de datos del fabricante ( ejemplo) , generalmente del orden de + -1uA. Es por eso que necesita tener un tirón externo (hacia abajo o hacia arriba) que sea lo suficientemente fuerte como para superar la fuga inherente y tener niveles lógicos bien definidos.

EJEMPLO: ¿Qué valor de resistencia se necesita para dominar 1uA (I = 10 ^ -6 A) de la corriente de fuga hasta el nivel lógico "0"? Suponiendo que la lógica "segura" "0" sea 0.5 V, V = I * R, por lo tanto, R = 500k es teóricamente suficiente para hacer que cualquier pin con fugas a la lógica "0" sobre todas las "esquinas" del proceso de fabricación. Para estar en un lado muy seguro, 100K sería muy bueno. Por un lado práctico, hay que recordar que algunos flujos de soldadura solubles en agua "no limpios" pueden superar 100K si el pin está cerca de Vcc, por lo que sería mejor usar los 10K mencionados, y / o limpiar (y Hornear) los tableros a fondo en producción.

    
respondido por el Ale..chenski

Lea otras preguntas en las etiquetas