Conectar múltiples señales a ADC

0

Estoy diseñando un circuito de acondicionamiento de señal que lee datos de 20 sensores y los envía al ADC de un microcontrolador. Mi problema es que realmente no entiendo cómo conectar estas señales al microcontrolador debido al número limitado de pines disponibles (8 pines porque el microcontrolador viene con un MUX analógico de 8 canales).

Actualmente, mi idea es agrupar los sensores en 5 grupos, cada uno con 5,4,4,4,3 sensores respectivamente. Luego, utilice conectar cada grupo de sensores a un pin del ADC de 8 canales. No estoy seguro de si esta idea es factible ni soy consciente del hardware disponible para hacerlo. Por favor consejo!

A continuación se incluye información básica del microcontrolador para su referencia:

  1. 12 bits
  2. Frecuencia de muestreo: 200 ksamples / s
  3. Velocidad del reloj: 24MHz
  4. Tiempo de conversión: 50 ciclos de reloj
pregunta Christopher

2 respuestas

0

Agregando a la respuesta de 12Lappie:

Por ejemplo, puede usar 3x 74HC4051 (si los voltajes que desea mux son compatibles). Entonces, cada MUX tiene una salida analógica. Conecte las entradas de selección MUX juntas, luego al micro.

Por lo tanto, tiene 3 líneas, que controlan todos los MUXes simultáneamente (es decir, si el valor en estas líneas es 001, se selecciona la primera entrada de cada MUX).

El decodificador se puede omitir. Simplemente dirija las 3 salidas MUX a 3 entradas analógicas en su micro, y use esto para seleccionar qué salida MUX desea adquirir. Esto utiliza 6 pines en total.

Ahora ... el filtrado.

Si todo lo que quiere hacer es amplificar, puede compartir el amplificador entre las entradas, colocándolo entre el MUX y el micro, siempre que todas las entradas necesiten la misma cantidad de amplificación. Con este esquema de 3 MUX a 3 entradas analógicas, puede usar 3 amplificadores con diferentes ganancias, si lo desea. O puede usar un solo amplificador, pero luego necesita volver a poner el decodificador, como lo explica 12Lappie.

Ahora ... el filtrado anti-alias es otro asunto.

Recuerde, si realiza una muestra en (digamos) 1 ksps POR ENTRADA, entonces cada entrada debe tener un filtro de antialias con un corte decente a 0,5 ksps ... y no puede reutilizarlo, por supuesto. Si coloca el filtro después del mux y selecciona cada entrada por turno, entonces la salida del filtro será un lío mezclado de todas las entradas combinadas.

Entonces, necesitas un filtro por entrada. No negociable.

Si sus sensores tienen una impedancia muy alta (como, no puede controlar la capacitancia parásita de su MUX y ADC), entonces necesitará los controles ópticos de todos modos.

De lo contrario, para mantener los costos bajos, la solución más simple es usar un filtro RC de 1er orden, sobreexplotarse como loco, y aplicar el filtrado en el dominio digital, donde crear una instancia de 20 filtros no necesita 20 veces más partes, solo bucle y algunos crujidos numéricos. Los filtros IIR simples (es decir, biquads) requieren poca potencia de procesamiento siempre que su micro tenga una instrucción MUL decente.

Ahora, el factor decisivo será la frecuencia de muestreo del ADC, la frecuencia de muestreo que necesita adquirir después del muestreo descendente, y la frecuencia más alta que puede tener la señal analógica que se debe prever. Por favor, proporcione esta información.

Ahora ... si sus 20 sensores están midiendo cosas como la temperatura ... entonces, ¿por qué diablos no está utilizando los termómetros digitales DS18B20?

    
respondido por el peufeu
1

Hay varias opciones diferentes que podrías usar para solucionar este problema. Agrupar los sensores en 5 grupos diferentes no es una solución viable a menos que tenga multiplexores conectados a cada grupo antes de ir al microcontrolador.

Una opción es conectar un canal MUX 8 a 3 a 8 sensores y 3 pines del microcontrolador. De esta manera, podrá comunicarse con 16 sensores utilizando 6 pines. Esto no es ideal ya que desea comunicarse con 20 sensores y 8 pines. Pensándolo bien, se me ocurrió una solución utilizando 3 MUX y 1 decodificador. De esta manera, puede asignar una dirección de sensor y controlar qué MUX desea que los datos utilicen el decodificador. Esto podría funcionar pero estoy seguro de que podría usar varias formas diferentes:

simular este circuito : esquema creado usando href="https://www.circuitlab.com/"> CircuitLab

Con el esquema que se muestra arriba, puede conectar 24 sensores en los pines "D" de los MUX y solo necesita 7 pines de su microcontrolador para obtener la señal. Los pines de salida (Y y / Y) se conectarán a su ADC en su microcontrolador con la frecuencia de muestreo correcta y así sucesivamente. Nada cambiaría allí. Pero lo que estarías leyendo dependería de en qué configures tu decodificador.

Otra forma en que podría lograrlo es utilizar un bus I2C y asignar una dirección a cada sensor en su matriz. Esto sería un poco más complicado en cuanto a comunicación / programación pero sería muy eficiente.

    
respondido por el 12Lappie

Lea otras preguntas en las etiquetas