2 votos

niveles de entrada digital basados en otro circuito (¿usando un interruptor de transistor?)

Me gustaría controlar algún código de microcontrolador¹ basado en el estado de un pulsador en un circuito externo de 3,3V a través de una entrada digital.

El circuito externo tiene un poco menos de 3,3VDC pasando por un interruptor de botón SPST, normalmente abierto. No tengo acceso al resto del circuito (está sellado herméticamente de forma bastante completa, y me gustaría evitar destruir el dispositivo), pero puedo empalmar en la línea del interruptor, ya sea en paralelo a través del interruptor o en serie con el interruptor.

ACTUALIZACIÓN: mediciones de tensión del interruptor:

  • a través del interruptor abierto: 3,15V (±0,01V)
  • tierra común para abrir el interruptor, lado +: 3,25V (±0,01V)
  • tierra común a interruptor abierto, lado -: -0,01V (parece que varía entre -7mV y -11mV dependiendo de lo que haga el microcontrolador)
  • tierra común a cualquier lado del interruptor cerrado: 3,25V (±0,01V)

El interruptor no se puede conectar en serie directamente a una entrada digital, ya que parece haber demasiada resistencia en el microcontrolador para que el interruptor complete el circuito externo. Sin embargo, una resistencia de 330 en serie con el interruptor parece no interferir con el funcionamiento del circuito externo. También debo señalar que el circuito externo y mi circuito en la mayoría de las configuraciones compartir un terreno común .

Tengo he conseguido que el código responda como quiero con el interruptor conectado en paralelo a una entrada analógica (con una resistencia en serie). Sin embargo, me gustaría aprovechar las interrupciones (en lugar de hacer un bucle para leer la entrada analógica), por lo que me gustaría utilizar una entrada digital en su lugar.

Mi enfoque inicial para cambiar el nivel de la entrada digital basado en el interruptor del circuito externo ha sido a través de un interruptor de transistor . He intentado tanto un interruptor basado en NPN como en PNP, pero no he conseguido acertar con los valores de las resistencias ni siquiera para encender y apagar completamente un LED con el circuito externo (los últimos intentos han sido en serie con el interruptor, pero también he probado en paralelo).

Si un interruptor de transistores es realmente un buen enfoque, me gustaría que me orientaran sobre cómo hacerlo bien. ¿Es mejor un interruptor NPN o PNP (supongo que el NPN va a ser más problemático, dado que ya comparten una tierra común)? ¿Cómo debo calcular los valores de las resistencias para obtener la salida correcta para los niveles 0/1 adecuados en una entrada digital del microcontrolador, y también permitir que el circuito externo responda correctamente cuando el interruptor está cerrado? ¿Debo utilizar el lado negativo o positivo del interruptor del circuito externo para controlar el interruptor del transistor?

¹ Actualmente estoy trabajando con una placa ATmega328P, pero planeo cambiar a una placa ATmega32U4 a medida que continúe el desarrollo con el fin de utilizar algunas de las características adicionales disponibles con esa placa.

1voto

AitorTheRed Puntos 241

En primer lugar, vamos a hacer algunas suposiciones sobre el esquema interno que es desconocido para usted. Hay un interruptor, dado. Y has medido algunos voltajes, con el interruptor cerrado y abierto. Estos me sugieren algo como esto:

schematic

simular este circuito - Esquema creado con CircuitLab

En otras palabras, parece que hay una resistencia pull-down y que uno de los lados del interruptor está ligado a un \$+3.25\:\text{V}\$ fuente de tensión. La razón por la que sugerí \$33\:\text{k}\Omega\$ para el pull-down interno es por sus medidas. (Que puede no ser perfectamente exacto, pero probablemente suficiente.) Usted midió el voltaje a través del interruptor, cuando está abierto, como \$3.15\:\text{V}\$ . Así que, asumiendo que su voltímetro presenta \$1\:\text{M}\Omega\$ impedancia (una suposición común, a falta de mejor información) esto sólo significa resolver \$3.25\cdot\frac{x}{x+1\:\text{M}\Omega}=3.15\:\text{V}\$ . Y me sale \$x\approx 31.7\:\text{k}\Omega\$ . El tirón de orejas puede ser \$10\:\text{k}\$ Sin embargo. No sé mucho sobre su medidor. Pero la idea básica sigue siendo la misma. Parece que hay una resistencia pull-down en el lado bajo con el pulsador conectado en el lado alto. El punto medio es probablemente utilizado internamente (mostrado por la flecha) para cualquier propósito - que puede ser simplemente para alimentar el circuito interno.

Ahora, antes de seguir adelante, es posible que no haya una resistencia pull-down en absoluto. Puede ser que sea la resistencia presentada por el circuito que la flecha señala, cuando la resistencia en serie de su voltímetro se inserta entre la fuente de alimentación y el circuito. Y si hay una resistencia pull-down, entonces esta en paralelo con el circuito, presenta algo del orden de lo que estoy mostrando arriba. Sólo quiero asegurarme de que no asumas que estoy en lo cierto. Esto es sólo un "modelo" que estoy utilizando para la ilustración con respecto a sus mediciones.

El hecho de que un \$330\:\Omega\$ se puede añadir una resistencia en serie con SW sólo significa que el circuito señalado por la flecha probablemente no dibuje más de \$1\:\text{mA}\$ . Se puede jugar con muchos valores diferentes. Pero no creo que sea necesario.

Lo principal es esto:

schematic

simular este circuito

El signo de interrogación gigante se rellenará ahora por ti:

schematic

simular este circuito

Eso debería usar casi cualquier par NPN de la caja de chatarra. NO es necesario que estén emparejados para \$\beta\$ o \$I_\text{SAT}\$ o mucho más y debería funcionar bien en un amplio rango de temperatura ambiente, también.

El peor caso de fuga del pin de E/S (configurado como entrada) para el ATmega32U4 es \$1\:\mu\text{A}\$ . Así que el \$39\:\text{k}\Omega\$ resistencias que he utilizado no deberían verse afectadas por más de \$40\:\text{mV}\$ debido a las fugas de los pines de E/S. Y no veo ningún problema con eso.

El circuito funcionará igualmente bien en \$3.3\:\text{V}\$ y \$5.0\:\text{V}\$ rieles de alimentación del lado del ATmega. El pin de E/S a el MCU de este circuito simplemente utilizará el voltaje de riel dado, por lo que los niveles de voltaje de E/S coincidirán con los requisitos para el pin de E/S del MCU.

El circuito también tiene una histéresis considerable. Sobre la temperatura y los BJTs desajustados, debe ser al menos una banda que es \$200\:\text{mV}\$ amplia pero probablemente más que eso por un buen margen.

Hay un filtro RC de la fuente de alimentación del ATmega ( \$C_1\$ y \$R_7\$ ) para evitar que el ruido del ATmega entre en el circuito. También hay un condensador añadido ( \$C_2\$ ) del lado del interruptor para ayudar a moderar el ruido de ese lado, también.

Hay mucha histéresis en el circuito y, por tanto, mucho margen para ajustar los valores de las resistencias (con el coste de un margen algo menor frente a las variaciones de las piezas), así que no te preocupes mucho por encontrar los valores exactos.


La idea básica del circuito no es compleja. Si sólo se mira \$Q_1\$ , \$Q_2\$ y \$R_3\$ - \$R_6\$ , puedes ver que el circuito parece "equilibrado".

Pero fíjese que si \$Q_1\$ se supone que es en entonces \$Q_1\$ 's collector pulls down on \$R_4\$ causando \$Q_2\$ para ser fuera de . Con \$Q_2\$ fuera de su colector está "abierto" y por lo tanto \$R_3\$ y \$R_5\$ son libres de suministrar corriente de base a \$Q_1\$ para que, de hecho, esté **encendida*. En otras palabras, es una suposición estable.

Pero fíjese también que lo contrario también es cierto, si usted asumió que \$Q_2\$ es en . Entonces eso también sería una suposición estable para un razonamiento similar.

Cuando tienes un circuito así, no sabes qué camino tomará.

Ahora, he añadido \$R_1\$ (que tiene otro propósito del que hablaré más adelante) y \$C_2\$ a un lado. Esto significa que al encenderlo, \$Q_2\$ está prácticamente garantizado que sea fuera de y así el circuito saldrá desde el encendido con \$Q_1\$ en y \$Q_2\$ fuera de . Como la salida se toma de \$Q_1\$ y ya que \$Q_1\$ se enciende como en La salida al pin de E/S debería ser "LOW" y leerse como un "0". Este es el caso sin nada más que perturbe el circuito.

Luego añadí \$R_2\$ para hacer un puente entre este circuito y el interruptor de su otro circuito. Cuando el otro circuito se enciende (su interruptor está encendido), entonces habrá alrededor de un \$2500\:\frac{\text{V}}{\text{s}}\$ aumento de la tensión en el condensador \$C_2\$ ya que la corriente se filtra a través de \$R_2\$ . Así que no pasa mucho tiempo hasta que \$Q_2\$ La base de la máquina se eleva lo suficiente como para empezar a encenderla. La corriente que pasa por \$R_2\$ comenzará cerca de \$33\:\mu\text{A}\$ pero como alguna corriente alimenta la base de \$Q_2\$ y drena a través de \$R_1\$ , caerá tal vez tan bajo como \$25\:\mu\text{A}\$ . La mitad que se hundirá a través de \$R_1\$ , pero queda lo suficiente para activar \$Q_2\$ . Y como \$Q_2\$ se activa, su colector se hundirá \$Q_1\$ 's base supply via \$R_5\$ . Ya que, como máximo, \$R_5\$ sólo puede suministrar alrededor de \$120\:\mu\text{A}\$ y ya que incluso totalmente saturado y un \$\beta\approx 10\$ la base de \$Q_2\$ necesita \$\le 12\:\mu\text{A}\$ . Y eso se suministra fácilmente. No sólo eso, tan pronto como \$Q_1\$ se tira fuera de por este proceso, \$R_6\$ y \$R_4\$ empezar a suministrar corriente de base adicional en \$Q_2\$ para encajarlo en el en estado. Y ahí se queda... mientras el circuito externo siga suministrando algo de corriente añadida.

Una vez que el dispositivo externo está apagado, \$R_2\$ ya no suministra ninguna corriente. Puede que incluso retire algo. Pero eso depende de tu dispositivo externo. Supongamos que no hay corriente a través de \$R_2\$ . Cuando eso ocurre, y aquí está el otro propósito de \$R_1\$ , \$R_1\$ comenzará a drenar \$C_2\$ y se hundirá la corriente suficiente para tirar de \$Q_2\$ fuera de . Así que este es el otro propósito de \$R_2\$ . Es necesario para permitir que el circuito vuelva a su estado por defecto.

Trabajar su valor es importante. Si el valor es demasiado pequeño, se mantendrá \$Q_2\$ fuera de sin importar lo que ocurra con el circuito externo. Si el valor es demasiado grande, no puede absorber suficiente corriente para que el circuito funcione correctamente y se reinicie. Así que el valor de \$R_2\$ es importante -- su valor determina la posición de centrado de la histéresis -- y como hay que preocuparse de las variaciones de las piezas del transistor y de los detalles de la temperatura ambiente, no querrás jugar demasiado con su valor.

Sin embargo, se puede reducir la histéresis aumentando los valores de \$R_3\$ y \$R_4\$ . Una histéresis más estrecha proporcionará menos rechazo al ruido, pero permite un mayor margen de cambio con \$R_2\$ También.

Con el circuito anterior, funciona a temperaturas inferiores a la temperatura ambiente y hasta \$55^\circ\text{C}\$ y sobre variaciones parciales de \$\beta\$ de 100 a 300 y una variación de factor 5 en las corrientes de saturación de los BJT, se simula el siguiente gráfico de histéresis

enter image description here

(En la simulación, \$R_7\$ tiene el papel de \$R_2\$ en el esquema mostrado arriba).

Esta tabla sugiere que es bastante seguro utilizar piezas de la caja de chatarra. Y si usted aumentó \$R_3\$ y \$R_4\$ a \$560\:\text{k}\Omega\$ la parte inferior de la banda de histéresis pasa de estar centrada en \$6\:\mu\text{A}\$ a estar centrado en \$9\:\mu\text{A}\$ . Mucha histéresis, todavía.

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X