Métodos de conmutación de resistencia

Tengo una aplicación en la que necesito medir la caída de voltaje en una resistencia que varía entre 10 ohmios y 50 kohmios. Como tengo esto configurado como un divisor de voltaje, y un AtoD lee el resultado, pensé que la mejor manera de ser preciso es cambiar diferentes resistencias, dependiendo de la resistencia de la variable:

esquemático

simular este circuito : esquema creado con CircuitLab

Algo como lo anterior. Esto debe ser controlado por un microcontrolador, y mi pensamiento inicial fue usar un multiplexor para cambiar las diferentes resistencias. Esto parecía una buena idea al principio, sin embargo, al mirar las hojas de datos de estos componentes, la resistencia ON era un problema. Para los rangos más altos, fue insignificante, pero si la resistencia 100R estaba activada, la resistencia del MUX era lo suficientemente significativa como para afectar el resultado.

Este es un diseño de presupuesto controlado, por lo que todos los MUX/decodificadores de muy baja resistencia, etc. están fuera del presupuesto (no tengo el control de esto). Mi siguiente pensamiento fue tal vez usar MOSFETS para cambiar las resistencias, ya que pueden ser extremadamente bajas con una resistencia encendida; sin embargo, esto requiere más pines de puerto en mi microcontrolador. 4 en lugar de 2. Esto me dejaría con solo 2 pines de E/S, lo que no deja mucho espacio para agregar cualquier otra cosa que pueda solicitarse en el futuro. Este método también significa más componentes, lo que aumenta ligeramente el costo de colocación.

¿Hay una mejor manera de hacer esto que me estoy perdiendo? ¿O son los MOSFET quizás la mejor manera de hacer esto?

Decodificador y mosfets
@Kartman Mencioné el presupuesto varias veces en la pregunta. Tiene que ser una solución barata. Sí, los componentes no cuestan mucho, pero cuando se fabrican cientos o miles, me piden que me ciña a un presupuesto ajustado. Agregar más componentes a la solución no funcionará
Si explica la aplicación un poco mejor que "medir la caída de voltaje a través de una resistencia", estoy seguro de que las personas pueden recomendar soluciones que son mucho más simples que la que se muestra.
@tobalt No creo que necesite más. Eso es esencialmente lo que está haciendo. Medir la caída de voltaje sobre algo que tiene una resistencia variable dependiendo de lo que esté midiendo. No importa si se trata de un termistor, FSR, lo que sea, todavía está midiendo la caída sobre un cambio en la resistencia.
@MCG, ¿entonces esencialmente está tratando de medir la resistencia desconocida? Porque todo lo demás lo pone su circuito (VCC, resistencias en serie, conmutación)
@tobalt claro, ponlo así si lo prefieres
@mcg 'barato' es relativo. define tu definición de barato para que podamos tener algo con lo que trabajar. Puede obtener mosfets duales en sot23, por lo que mitiga su costo de colocación.
@Kartman Es difícil definirlo exactamente, pero el presupuesto total está por debajo de las 30 libras esterlinas. Esto también incluye la carcasa, la placa de circuito impreso, la ubicación, los componentes, el tiempo de fabricación, etc., por lo que no puedo poner un número exacto para los componentes.
¿Qué precisión y frecuencia de muestreo necesita?
La precisión de @Damien es del 2 % como máximo, frecuencia de muestreo de 1 kHz
@MCG, ¿cuántos bits de resolución sin ruido tiene su ADC a esa frecuencia de muestreo?
Utilice 4 canales ADC. Deje caer el divisor de voltaje y, en su lugar, conecte cada resistencia como "derivación" a tierra. Asegúrese de tener una fuente de corriente precisa. Active un canal a la vez.
@Lundin no tiene suficiente disponible lamentablemente

Respuestas (4)

Más rentabilidad (esto se siente como código de golf):

  • solo 1 línea de control
  • solo 1 transistor (N JFET o P MOSFET), 1 R y 1 C
  • número infinito de rangos de medición posibles
  • puede deshacerse del ADC, si no es necesario de otra manera (ver más abajo)
  • necesita calibración y podría depender de la temperatura, pero lo mismo ocurre con el método R conmutado en menor medida (por lo que depende del nivel de precisión deseado)
  • 1kS/s es ambicioso con una MCU (necesita un reloj de control rápido)

ingrese la descripción de la imagen aquí

Como funciona:

Al controlar el ciclo de trabajo del control, varía el voltaje de la compuerta de CC y, por lo tanto, ajusta la resistencia del FET de manera continua. También puede usar la retroalimentación para llevar AtoD a un voltaje definido (por ejemplo, VCC/2) y luego su ciclo de trabajo le da el valor de R1 (a través de una conversión que debe establecer una vez).

En el futuro, incluso podría limpiar el ADC (ahorrar costos) y realizar la retroalimentación con un comparador, para que su MCU pueda leer el ciclo de trabajo directamente.

El ADC tiene un búfer en la entrada, simplemente no era importante para la pregunta ponerlo aquí, ya que esa no es la parte del circuito en la que me estoy enfocando. Agregar otro componente como un MUX y los MOSFET no es una buena solución, ya que agrega un costo adicional al diseño, como se menciona en los comentarios.
Ok, eso me da una idea del nivel de sensibilidad al costo del que estás hablando;)
Con la edición, ¿de dónde vienen los rangos de medición infinitos? ¿Todavía estás cambiando un FET, que era uno de mis pensamientos anteriores? En cuanto a la calibración, esta se realizará, además de contar con compensación de temperatura para temperaturas ambiente entre -10°C a +50°C
Al controlar el ciclo de trabajo del control, varía el voltaje de la compuerta de CC y, por lo tanto, ajusta la resistencia del FET de manera continua. Puede usar la retroalimentación para llevar AtoD a VCC/2 y luego su ciclo de trabajo le da el valor de R1 (a través de una conversión que debe establecer una vez)
Code golf debería usarse más a menudo en otros campos de la ingeniería. No como un objetivo en sí mismo sino como un método para cuestionar la complejidad y el costo.
@winny Creo que el minimalismo es un maravilloso principio de diseño. Solo agregue más cuando lo exijan estrictamente los requisitos.
Ahh ya veo. Todavía muy temprano en la mañana! +1 por esto, pegaré este circuito en el próximo prototipo y veré cómo funciona. Si no surgen otras soluciones, aceptaré esto en un par de días. ¡Saludos por la respuesta!
¿No es más fácil mencionar PWM?
@winny absolutamente creo que es una gran idea. Por lo general, hago esto en el trabajo, ya que todo debe ser rentable, por lo que necesito llegar a la solución más mínima posible antes de agregar cosas solo si es necesario.
@MCG Recomiendo hacer algunas simulaciones de especias rápidas de antemano para tener una idea de qué transistor funcionará para esto, lo que depende de su VCC y de la precisión con la que puede variar el ciclo de trabajo. especialmente para MOSFET, la rodilla es bastante afilada. Para JFET obtienes una respuesta más gradual, pero su resistencia de gama baja no es tan baja.
@PaulGhobril Creo que PWM es demasiado especial. podría terminar haciendo Delta-Sigma de primer orden analógico en su lugar si limpia el ADC. Además, PWM le brinda una precisión bastante baja para un reloj de control dado.
Definitivamente haré simulaciones primero. Afortunadamente, cuando se trata de creación de prototipos, el presupuesto no es un gran problema, por lo que puedo diseñar un par de métodos diferentes y probar múltiples soluciones.

Si su microcontrolador tiene pines de E/S de tres estados, es posible que no necesite transistores para cambiar las resistencias. Simplemente use tres pines IO y cámbielos entre el modo alto (salida) y alta impedancia (entrada):

esquemático

simular este circuito : esquema creado con CircuitLab

Puede usar variantes de este circuito con las resistencias en paralelo o en el lado bajo, etc.

También mire si su microcontrolador tiene resistencias en serie configurables integradas en los pines en las que pueda confiar para prescindir de la resistencia de valor más bajo.

[EDITAR] Es posible que deba ajustar los valores de resistencia para mantenerse dentro de las capacidades actuales de su microcontrolador. Tal vez pueda obtener suficiente precisión con solo 2 pines y 3 resistencias de hasta 470 ohmios.

Desafortunadamente, este microcontrolador no tiene pines de tres estados, sin embargo, es una buena idea, así que todavía +1

Sus requisitos (2% de precisión a una frecuencia de muestreo de 1 kHz) son relativamente altos; debido a esto, creo que evitaría los 'trucos' que requieren sobremuestreo y me limitaría a usar MOSFETS para cambiar las resistencias.

Pero si desea reducir los costos, es posible que pueda salirse con la suya con menos de 4 resistencias, según la resolución efectiva sin ruido de su ADC a esta frecuencia de muestreo:

ingrese la descripción de la imagen aquí

Tenga en cuenta que esto solo está mirando una resolución del 2%, no necesariamente una precisión del 2%. Pero con un ADC de 16 bits, es posible que pueda salirse con la suya con una sola resistencia de 680 ohmios (sin necesidad de ningún cambio). Con un ADC de 12 bits, dos resistencias pueden ser suficientes. Con un ADC de 10 bits, probablemente necesite tres.

Tenga en cuenta que no necesita cambiar la resistencia de mayor calibre; simplemente puede cambiar una resistencia más baja en paralelo. Entonces, si usa 2 resistencias, solo necesita un MOSFET, etc.

Otra buena idea. +1 de nuevo! Estaré diseñando todo esto en el próximo prototipo para poder probar cada uno de ellos. ¿Qué programa usaste para hacer ese gráfico? ¿O fue un gráfico que encontraste en alguna parte?

Otra forma de muy bajo costo. Si bien el original puede deshacerse del ADC y ahorrar una gran cantidad de costos, es posible que no pueda alcanzar 1 kHz de ancho de banda si el reloj de control de la MCU es demasiado bajo.

Aquí hay otra solución que requiere el ADC, pero usa líneas de control cero y realiza una medición de resistencia logarítmica. Los costes de las piezas deberían estar muy por debajo de 50c. El voltaje de salida será proporcional al logaritmo de R durante algunas décadas. Como el requisito de precisión es modesto, la solución logarítmica de rango único debería estar bien.

ingrese la descripción de la imagen aquí

Si la corriente a través de D1 y R1 es demasiado grande para valores pequeños de R, entonces un sumidero de corriente de dos transistores se puede envolver alrededor de R1. Esto también hará que el circuito sea más estable a la temperatura y usará menos corriente con un costo adicional mínimo.

Las resistencias de configuración de ganancia R2 + R3 deben elegirse de acuerdo con el rango de diodo y VCC.

El diodo también puede estar "debajo" de R1, con la ganancia trabajando frente a GND en lugar de VCC. Esto tiene la ventaja de que la señal de salida estará referenciada a GND (en caso de que el ADC no esté usando VCC como referencia)