Opciones de amplificador adaptativo simple para interfaces de sensores

Relacionado : ADC de alta resolución para sensores ruidosos en condiciones variables


Estoy construyendo una interfaz utilizando sensores resistivos basados ​​en textiles que pueden tener diferentes rangos de resistencia según las condiciones ambientales. Para hacer un mejor uso de mis convertidores A/D, me gustaría explorar el uso de un amplificador adaptativo que ayudará a compensar el rendimiento poco confiable de los sensores.

¿Cuáles son mis opciones aquí? ¿O puedes señalarme algunas referencias sobre el tema?

Se me ocurren dos esquemas generales que serían útiles:

  1. Calibración automática al encontrar valores mínimos y máximos en una ventana de análisis dada (~30s-2min)
  2. Calibración explícita usando una interfaz de alternar para entrenar
  3. ... ¿Hay esquemas alternativos en los que no estoy pensando?

Algunas restricciones

  • Debería ser una solución de un chip (pequeña) si es posible (como chips de detección capacitiva)
  • Debe ser fácil de configurar y usar (no soy ingeniero y no me pagan)
  • Probablemente habrá un microcontrolador cerca

Aún mejor sería un chip que lo haga todo con puente de Wheatstone/divisor de voltaje, filtro de paso bajo y amplificador.

Más sobre mi configuración particular

  • Los convertidores A/D serán los convertidores integrados en un chip Atmel (podría ser ATtiny85 o ATmega32u4) o los convertidores integrados en una radio XBee serie 2. Nunca antes había usado chips A/D dedicados; no estoy seguro de si habría algún beneficio al hacerlo.
  • El sensor será una pieza de lycra conductora dopada con polímeros de Eeonyx. La resistencia cambia en aproximadamente 1 orden de magnitud con un estiramiento del 30%.
  • Todo se montará en la mano de un artista, por lo que debe ser pequeño y físicamente robusto. Hay una buena posibilidad de que sea inalámbrico.
  • La precisión es importante. La interfaz se utilizará para variar continuamente los efectos de audio en tiempo real, es decir, no es un interruptor.
¿Puede proporcionar más detalles sobre su configuración actual? es decir: tipo de ADC utilizados, qué sensor táctil, qué controlador táctil.
¿Qué tan grande es la variación que espera obtener de los cambios ambientales?
¿Qué tipo de resolución de bits necesita? Lo pregunto porque creo que sería más sencillo aumentar la especificación de sus ADC en 4 bits (x16) y hacer la adaptación en el software. Eso debería ser suficiente para capturar una variación de un solo orden de magnitud. Por supuesto, si ya necesita 16 o 20 bits de resolución, será muy costoso.
@ anthony137 esa es una idea interesante. He estado pensando en términos de convertidores de 10 bits, ya que eso es lo que los microcontroladores suelen incorporar, pero echaré un vistazo a los convertidores de alta resolución.
@jpc Tendré que probar. Me gustaría tener un sistema que pueda adaptarse a una amplia gama de condiciones desconocidas, pero puedo obtener algunas cifras aproximadas.
¿Cuál de las respuestas es la más útil, @msutherl? Me inclino por el de @Jaroslav .
@tyblu ninguno de ellos realmente funciona para mí, ya que ambos no han sido probados y el de Jaroslav es demasiado complicado y tiene demasiados componentes.
@tyblu En lo que a mí respecta, Kortuk puede reembolsarle la recompensa.

Respuestas (3)

Aquí está la idea básica:

sensor

V1 es la salida PWM filtrada y R2 es su sensor. U1 es un convertidor de voltaje a corriente, siendo la corriente a través de la carga R1 I = V1/R2. Esto significa que el voltaje a través de R1 depende de ambas entradas. U2 y U3 es un amplificador de instrumentación con ganancia 10, que amplifica el voltaje a través de R1.

Con R1 = 100 ohmios y V1 = 0..5V, el circuito funciona para R2 = 50..5000, por ejemplo, en dos órdenes de magnitud, que por lo que dices debería ser suficiente.

Lo que hace es sacarlo y compararlo con el voltaje de referencia (4V sería apropiado aquí para el rango dinámico máximo) y usar una aproximación sucesiva en V1 para acercarse lo más posible al voltaje de referencia. A partir de V1 y la caída de voltaje conocida en R1 (por ejemplo, voltaje de referencia), ahora puede calcular el valor de R2, su sensor. Por supuesto, esto le dará un resultado solo dentro de la resolución de PWM, pero puede usar un segundo amplificador de instrumentación para amplificar el error (diferencia entre el voltaje de salida y el de referencia) para que esté dentro del rango del ADC de su microcontrolador y esto le dará bits adicionales de resolucion

Necesita dos amplificadores operacionales (U1 y comparador) y dos amplificadores de instrumentación. Use los reales en lugar de hacerlos con amplificadores operacionales, porque las imprecisiones de las resistencias y los amplificadores operacionales introducirán errores.

Si dos órdenes de magnitud no fueran suficientes, puede reemplazar R1 con un potenciómetro digital para obtener otro grado de libertad. Nunca he trabajado con uno, por lo que no sé qué tan precisos son y si esa solución necesitaría alguna calibración o no.

Además, debo mencionar que fue jpc quien tuvo la idea.

ACTUALIZAR:

Ok, tengo que estar de acuerdo con OP en que esta no es realmente la respuesta a su pregunta (aunque resuelve el problema técnicamente). Me dejé llevar por el "amplificador adaptativo" del título como excusa para hacer algo de diseño analógico. Olvídese de todo lo escrito anteriormente, a menos que quiera aprender algo (un poco) sobre opamps. Aquí hay, espero, una mejor respuesta y una solución mucho más simple:

Use un divisor resistivo alimentado por un regulador de voltaje (para separarlo del ruido de otros circuitos), con la resistencia superior configurada en aproximadamente la resistencia máxima que pueden tener sus sensores (Rmax), y con la resistencia inferior como sensor.

Establezca el voltaje de referencia para su ADC a la mitad de la salida del regulador de voltaje.

Luego, muestrea el voltaje en el sensor con su ADC. De esta manera, solo necesita un canal de un solo extremo por sensor. Hice la recomendación de ADC en la otra publicación.

Sin embargo, si usa ADC de 10 bits que está integrado en los microcontroladores que mencionó, no obtendrá mucho rango dinámico. Mejorar el rango usando circuitos analógicos, como el que publiqué originalmente, agregaría demasiadas partes adicionales, por lo que recomendaría simplemente usar un ADC de 24 bits, como el ADS1256 que recomendé en la otra publicación, porque le dará bajo nivel de ruido y alto rango dinámico, en un solo chip (más la referencia, que es diminuta, y el regulador de voltaje, que también puede ser diminuto; también puede intentar dejar el regulador fuera y alimentar el divisor resistivo directamente desde la referencia). esto le robará 1 bit de resolución, pero hay muchos de todos modos). Tendrá que hacer algunos cálculos numéricos ("Calibración automática al encontrar valores mínimos y máximos en una ventana de análisis dada" - es una buena idea),

Espero que esto sea un poco más útil.

ACTUALIZACIÓN 2:

Este es el último: he estado revisando microcontroladores MSP430 de TI y he encontrado que algunos de ellos tienen ADC sigma-delta de 16 bits con referencia interna. A saber , MSP430F2003 y MSP430F20013 . Esa sería su solución de un chip si está dispuesto a renunciar a Atmels. Muy baja potencia también. Y tienen microcontroladores en cola con 24 ADC, pero aún no están en producción. También hay microcontroladores PSoC de Cypress, que tienen ADC sigma-delta de 20 bits ( series PSoC 3 y PSoC 5 ), también con referencia. Estos serían aún mejores.

@Jaroslav No estoy seguro de entender. En un convertidor de voltaje a corriente, V1 generalmente proviene del sensor; en este caso, dado que R2 es el sensor, ¿cuál es el efecto de U1? ¿Para qué sirven U3 y U2? ¿Son los amplificadores de instrumentación? ¿Qué son antes? Finalmente, dice algo sobre medir la caída de voltaje en R1. ¿Cómo mido esta gota y por qué la necesito? Finalmente, ¿qué tipo de esquema de calibración tienes en mente (ver las dos opciones que presento en la publicación)? ¡Gracias!
@Jaroslav Ah, creo que has respondido a la publicación equivocada. Ver aquí: electronics.stackexchange.com/questions/11978/…
Gracias por el reconocimiento, pero para ser honesto, estaba imaginando algo más simple. :) Creo que realmente no estás usando mucho el ADC aquí.
@jpc de hecho, 3 amplificadores operacionales ocuparán dos mucho espacio de todos modos (8 canales, montados en la muñeca)
@jpc Su solución realmente no aumenta el rango dinámico. Simule o mida para averiguar por qué. Además, tiene una no linealidad durante los primeros 0,6 V debido al diodo emisor de base.
@msutherl Admito que es complicado, pero a menudo eso es lo que se necesita. Usted pidió un amplificador adaptativo, se lo proporcioné :) Para un dispositivo montado en la muñeca de 8 canales, use ADS1298, que integra todo en un chip, incluida la referencia de bajo ruido, y tiene un bajo consumo de energía. Me voy para el fin de semana, pero si todavía quieres explicarte con más detalle cómo funciona mi diseño, puedo responderte el domingo.
@Jaroslav: Tiene razón en que la no linealidad matará la multiplicación y limitará la ganancia de rango dinámico a 2x o como máximo 4x (por lo tanto, 2 bits como máximo). ¿Qué piensa acerca de agregar un amplificador operacional para linealizar la fuente actual?
@msutherl He actualizado la respuesta con lo que es, espero, una mejor solución a su problema.
@jpc Sí, con una fuente de corriente lineal regulada por PWM funcionaría y sería simple. Sin embargo, el ruido PWM necesitará un buen filtrado, de lo contrario, se convertirá en un ruido dominante. El suministro de V también. Más problemático puede ser que el rango se base en una retroalimentación lenta, lo que significa que el convertidor perderá valores cuando se salgan del rango. Con ADC de 24 bits, puede usar el mecanismo de avance para ajustar su rango, por lo que al final es una mejor solución (a menos que no le importe este inconveniente), y también más fácil para las personas que no tienen cinturón negro en analógico. Fu.
@Jaroslav Creo que en esta aplicación la retroalimentación no necesita ser muy rápida. Pero también estoy de acuerdo en que un ADC de 24 bits es una mejor solución para este problema, especialmente porque el OP no tiene restricciones de costos y quiere un tamaño pequeño y baja complejidad. Gracias por toda su ayuda y sugerencias (se nota que soy más digital que analógico).

Si los cambios en la resistencia del sensor son grandes (> 50%), entonces podría usar un circuito divisor de voltaje en lugar del puente de Wheatstone (más complicado). Luego puede mejorar fácilmente el rango dinámico variando el voltaje de suministro.

El voltaje de suministro ajustable se puede hacer fácilmente desde el PWM en su microcontrolador junto con un filtro RC y una fuente de corriente controlada por voltaje.

Aquí hay un esquema aproximado de mi idea:

Esquemático(de Electrónica socrática de Tony R. Kuphaldt )

Luego, conecta el voltaje PWM filtrado a la entrada no inversora (+) del amplificador operacional.

Para una multiplexación rápida, puede hacer dos fuentes de corriente de este tipo. Si conecta todos los sensores pares a uno y todos los impares al otro, puede cambiar el voltaje en el siguiente sensor mientras su ADC aún está muestreando.

Debe usar una referencia de voltaje de precisión para el ADC. También puede ganar 1 o 2 bits utilizando un filtro de promedio móvil en su software.

PD. Me gustaría agradecer a Jaroslav Cmunt por sus grandes mejoras en esta respuesta.

¿Has leído este sitio?

Hay muchos ejemplos de dispositivos electrónicos portátiles, incluidos algunos con telas Eeonyx. El sitio tiene ejemplos de circuitos de detección (ardunio y xbee).

No necesita muchos componentes para construir un puente de Wheatstone y es probable que lo mejor sea con 1 circuito de detección multiplexado a los 8 sensores, aún puede obtener 100 muestras por segundo o más con bastante facilidad en cada entrada. Use una PCB de tela (nuevamente consulte el sitio anterior) para crear el puente. O simplemente conecte los cables del sensor al guante y coloque todos los componentes electrónicos de detección en un paquete montado en el cinturón. La mayoría de los 'sensores' de tela que he visto tienen una resistencia relativamente alta, los 0,1 ohmios que puede obtener del cable entre la unidad del cinturón y los guantes no importan.

Coloque un sensor de temperatura en cada guante y use el resultado para hacer una corrección en el software si es necesario para adaptarse a los cambios ambientales. Tal vez calibrar los guantes antes de cada uso, puede no ser necesario dependiendo de la inteligencia del intérprete.

Supongo que el módulo Xbee transmite a una computadora, crea la función de calibración en la computadora, de hecho, realiza todo el procesamiento que puedas, como la corrección de temperatura, en la computadora.

Puntos de bonificación si solo usa una red neuronal para convertir la entrada del sensor en una acción. Esto facilitará el entrenamiento y se adaptará a los movimientos de las manos de diferentes personas.