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?