¿Cómo puedo minimizar la variación en la caída de voltaje en los transistores, o eliminar los transistores de este diseño?

0

Tengo un circuito bastante simple que estoy usando con un arduino para medir la impedancia en un circuito de muy baja resistencia. El usuario conecta un dispositivo en A y B y el arduino puede calcular la resistencia en el dispositivo del usuario al medir el voltaje en A. Sin resistencia en el dispositivo del usuario significa que leo 0 V, resistencia infinita significa que veo aproximadamente 1 voltio. El dispositivo de usuario más común registrará alrededor de 1 Ohm. (Por el bien de cualquiera que esté familiarizado con arduino, uso la referencia de voltaje interno para que 1V lea cerca del máximo para analogRead.)

+5V
 |
 z
 z 220 Ohm Resistor (.1% tolerance)
 z
 |
 A----------------------------------------\
 |                                        |
 z                                        |
 z 47 Ohm Resistor (.1% tolerance)        |
 z                                        |
 |                                        |
 |                                        |
GND---------------------------------------B

El problema es que el circuito tiene que medir varios dispositivos de usuario al mismo tiempo. No puedo replicar este fragmento de circuito 3 veces porque los cambios en cualquiera de los dispositivos del usuario afectarán los valores leídos en los otros pines de entrada de arduino.

Mi solución a esto fue poner un transistor entre 5 V y la primera resistencia y compensar la caída de voltaje en el transistor eligiendo una resistencia más pequeña. Esto hace que el circuito se vea así:

+5V
 |    (Worst ASCII art transistor ever)
 \
  \|   1K Ohm
   |-----NNN---- (To Arduino Pin to select this channel.)
  /|
 /
 v
 |
 |
 z
 z 150 Ohm Resistor (.1% tolerance)
 z
 |
 A----------------------------------------\
 |                                        |
 z                                        |
 z 47 Ohm Resistor (.1% tolerance)        |
 z                                        |
 |                                        |
 |                                        |
GND---------------------------------------B

Este circuito se replica una vez para cada entrada del usuario. Esto funciona, pero mis valores de entrada son impredecibles porque la caída de voltaje en los transistores no es consistente. (Una medición de 27 en un canal puede ser igual a un dispositivo de usuario de 2 ohmios, mientras que el mismo dispositivo en un canal diferente puede indicar 47. Un 10% de jitter que podría tolerar. Más del 60% deja el proyecto inutilizable.)

No creo que pueda obtener transistores que se encuentren en el vecindario con una tolerancia del 0,1% sin pagar una fortuna (suponiendo que pueda obtenerlos en absoluto).

Debido a que los cálculos se están realizando en el arduino, no puedo tomar fácilmente 3 mediciones (utilizando el diseño sin transistores) y resolver el sistema simultáneo de ecuaciones lo suficientemente rápido. (Estoy viendo de 500 a 1000 mediciones de los tres canales cada segundo).

¿Hay alguna manera de salvar el proyecto?

    
pregunta user30997

4 respuestas

4

No, no creo que estés viendo esto correctamente. Si su 5V es estable, entonces no hay nada malo con su método utilizando resistencias fijas y no transistores. El problema es que cada entrada de ADC en su MCU tiene un voltaje de error diferente. Verifique el potencial de error de compensación de CC en la hoja de datos. Este es un ejemplo típico de maxim que cubre el error de compensación en ADC y DAC: -

Alrededor de 0V, el error podría ser +/- 50mV. En un sistema perfecto, una resistencia de 1 ohmio alimentada desde 5 V a través de una resistencia de 150 ohmios produce un voltaje de 33 mV: tiene un valor digital de 27 y, asumiendo que su ADC es de 10 bits, entonces 27 representa 132 mV. ¿Cómo racionaliza esto? ? Perdóneme si no es un ADC de 10 bits, pero si fuera de 12 bits, 27 representa 32.9mV (posiblemente por casualidad) pero 47 representa 57mV. Suponiendo que todos sean resistores de 1 ohmio y coincidan con precisión (o si usó el mismo resistor en un canal diferente), debe concluir que está presenciando un error de compensación de ADC en acción.

    
respondido por el Andy aka
3

No muestra qué tipo de transistor (NPN o PNP) está usando, pero la caída implícita de 1.75 V me hace pensar que es un seguidor de emisores NPN.

Quieres un interruptor saturado de lado alto. Puede usar un MOSFET de nivel lógico de canal P o un transistor PNP como un 2N4403 / MMBT4403 con una resistencia de base de 1K. La corriente de base de 3 mA o aproximadamente le dará un voltaje de saturación de aproximadamente 85 mV que debe ser consistente en aproximadamente el 20%, por lo que es una variación de aproximadamente +/- 0.3% en la corriente. Con un MOSFET, puede llegar fácilmente al 0,1% al elegir un MOSFET de canal p de nivel lógico con un Rds (encendido) de menos de 200 m \ $ \ Omega \ $ de temperatura.

En ambos casos, bajo = 'ENCENDIDO', por lo que deberá revertir la lógica.

    
respondido por el Spehro Pefhany
1

Use un FET de canal P con un RDSon que sea muy pequeño en comparación con sus valores de resistencia. Si esto no es para producción, incluso podría usar un dispositivo con unos pocos mOhms de resistencia.

    
respondido por el John D
0

reemplace el punto 'v' con una resistencia y luego con un zener a tierra que haga una nueva referencia de tensión (inferior a 5v): perderá un poco menos de 2v en el transistor de conmutación, así que elige una resistencia que deje una tensión solo a bit por encima de 3V (por lo que el Zener se activa) quizás algo en / alrededor de 30ohms o así (toque un poco, depende del transistor que elija)

    
respondido por el Taniwha

Lea otras preguntas en las etiquetas