Salida de sensor analógico de escala (0,4 V a 2,7 V) a dinámica completa de ADC (Vref 3,3 V)

Tengo una pregunta sobre la escala de la señal de salida del sensor analógico.

El objetivo es conectar un sensor de distancia Sharp GP2Y0A02YK0F a una Raspberry Pi 3 B. El sensor se puede ejecutar fuera del riel de 5V de Raspi. El diferencial de voltaje de salida se especifica como:

ingrese la descripción de la imagen aquí

Y se da este ejemplo para una medición de distancia:

ingrese la descripción de la imagen aquí

En consecuencia, espero que mi salida del sensor sean voltajes de CC entre ~0.4V y ~2.75V. Cada valor se mantiene durante al menos la duración de una medición y mientras la distancia medida no cambie al máximo.

Como ADC, planeo usar un MCP3204 (12 bits, 4 canales, SPI), con el riel de 3.3V del Raspi como Vref y como fuente de alimentación de un solo lado.

Para hacer uso de la dinámica completa del ADC, me gustaría escalar la salida del sensor y eliminar el desplazamiento antes de introducirlo en el ADC.

Para el escalado en sí, creo que un circuito de amplificador operacional no inversor debería ser suficiente. Al dejar un poco de headroom yo optaría por Va=3.2/2.75=1.16.

Lo que no sé cómo abordar es el desplazamiento de 0.4V. Si mi señal fuera CA, buscaría un paso alto simple antes del amplificador operacional, pero dado que la señal posiblemente sea CC durante períodos de tiempo más largos, no estoy seguro de qué hacer.

Respuestas (2)

Su rango de señal es, como porcentaje del rango del ADC, 71.2%. En LSbs equivalentes, eso es 2917 LSB. Eso es equivalente a un ADC hipotético que tiene una resolución de 11,5 bits.

Así que mi primera observación es por qué molestarse: -

Dado que cualquier ADC tiene un rango real en el que nunca se puede confiar que sea exactamente de 0 voltios a Vref, realmente no veo mucha ventaja en lo que propone.

Pero, digamos que usó un amplificador operacional que modificó su señal al rango que cree que desea, ¿en qué errores se incurre al hacerlo? ¿Va a utilizar resistencias del 0,1 % (precisión de 10 bits) o quizás resistencias del 0,01 % (un poco más de 13 bits de precisión)? ¿Estás dispuesto a pagar por esa precisión?

Cada resistencia incurrirá en un error y se puede suponer que esos errores se acumulan. Además, existe el error del amplificador operacional y su incapacidad para obtener entre 10 mV y 50 mV del rango de suministro significa que nunca podrá obtener los 12 bits completos que desea.

Entonces, ¿se queda con un sistema de 11,5 bits o diseña un amplificador operacional (con un costo significativo para las resistencias) que podría proporcionarle 11,8 bits?

¿O eliges un ADC de 14 bits y te olvidas de esta tontería de un nivel y un cambio de ganancia?

Gracias por señalar esto. No era consciente de la poca precisión que ganaría con el cambio de nivel y ganancia.
Buen punto. También agrega una redundancia útil para encontrar errores como objetos en un rango de 0 a 15 cm donde el gráfico está invertido. Combinado con una información de velocidad máxima del objetivo, puede distinguir entre un objeto en movimiento lejano y cercano.
Y solo tiene este nivel de precisión si el ruido del sensor es lo suficientemente bajo. Probablemente no lo sea. Pero también puedes promediar para ganar más bits...
Además, teniendo en cuenta que el color y el tamaño del objeto cambiarán drásticamente la salida del sensor, a menos que esté en un entorno ridículamente controlado, no vale la pena el esfuerzo.

Andy tuvo una buena respuesta con respecto a la posible pérdida de precisión con respecto a la adición de un circuito de compensación y escalado. Pero también hay varios otros factores que debe considerar:

  1. Habrá variaciones de un sensor a otro sobre qué voltaje analógico corresponde a qué distancia. El gráfico de rango de voltaje de la señal de la hoja de datos muestra las características típicas para 25C a 5V. Pero unidad a unidad variará tanto en rango como en compensación, por lo que es bueno dejar el rango de entrada A/D adicional en el lado bajo y alto para permitir esta variación.
  2. Este sensor no será tan preciso como para presentar lecturas repetibles en la resolución de rango completo, incluso si pudiera escalar y compensar con cero error. Distribuir el rango especificado del sensor de 150-20 cm en todo el rango A/D de 4096 recuentos produce un valor de 0,03 cm si el sensor era lineal. El hecho de que el sensor no sea lineal empeora las cosas en algunos puntos y la repetibilidad será mucho peor, por lo que no hay razón para intentar un ajuste de escala completa.
  3. La reflectividad de la superficie jugará un papel muy importante en lo que el sensor retroalimenta en cuanto a su voltaje analógico para cualquier conjunto de condiciones. Por esta razón, no es útil pensar en un sensor como este como un dispositivo de medición absoluto y, como tal, las lecturas A/D que obtenga no deben usarse de esa manera.

Probablemente haya estrategias mucho mejores para usar un sensor como este en un modo de medición relativo en el que detecte cambios dinámicos y no se preocupe realmente por la precisión absoluta. Tome decisiones sobre cómo cambian las lecturas del sensor de una muestra a otra en comparación con las lecturas en algún momento del pasado en el que intentó calibrar un conjunto de puntos de referencia absolutos. También hay técnicas en las que puede ejecutar el tiempo "calibrar" o "anular" las lecturas A/D en función de alguna condición o posición de inicio. Ambos realmente exigen que se asegure de tener un margen del convertidor A/D tanto por encima como por debajo del rango de voltaje de entrada normal esperado. el margen del veinte o treinta por ciento no estaría muy lejos de la base.