Midiendo pequeñas variaciones de voltaje con Arduino ADC manejando los rápidos cambios en el control algo

2

Espero poder obtener algún consejo, tengo un sensor de posición láser industrial de SICK que genera entre 0 y 10 voltios. Usé un divisor de voltaje para reducirlo a un rango de 0 a 5 voltios, y lo introduje en una entrada analógica de un Arduino.

El sensor es muy preciso, pero se mueve alrededor de 0.1 (décima de voltio por pulgada), y el punto de ajuste de mi sistema de control necesita mantener una lectura del sensor de 2.03 voltios (cien por ciento).

Cerré el bucle del sistema y mantiene el objeto en la posición, pero varía de 1,99 V a 2,09 voltios, que en realidad es un par de pulgadas en cada dirección.

Descubrí que el Arduino en realidad puede leer el voltaje correcto del sensor, pero con un voltímetro de laboratorio, el arduino estará apagado en el dígito de las cien veces a veces, pero necesito que esto sea preciso ...

¿Alguna sugerencia? ¿Puede el 10bit ADC incluso medir el voltaje con precisión? También pensé en utilizar un filtro de promedio exponencial móvil para obtener 10 muestras y leer el voltaje promedio, ya que cambia tan rápido ...

Por cierto, estoy usando el sensor de posición para medir la altura de una pelota de ping pong en un tubo, por lo que la pelota se tambalea un poco, incluso con PID, por lo que las lecturas del sensor cambiarán como: 2.01 2.03 2.04 2.05

con bastante rapidez ..

Cualquier ayuda es muy apreciada !!!!!

    
pregunta zacharoni16

2 respuestas

3

Un ADC de 10 bits a 5 V tiene una resolución de 5 mV. Su sensor tiene una sensibilidad de 100 mV por pulgada, que usted reduce con su divisor de resistencia a 50 mV por pulgada. Eso significa 10 cuentas ADC por pulgada. Esto no es mucho, especialmente cuando piensa que siempre tendrá algo de ruido en sus lecturas.

Si solo te interesa un rango pequeño, como el 1.99V..2.09V, resta el 1.99V de la entrada con un amplificador de diferencia y amplifica 50 veces para obtener un rango de 0V a 5V.

Si R1 = R2 y R3 = R4 entonces

  

\ $ V_ {OUT} = \ dfrac {R3} {R1} \ times (V_2 - V_1) \ $

Todavía usaría un filtro de paso bajo en el software para filtrar el ruido.

    
respondido por el stevenvh
1

Si no necesita medir todo el rango del sensor, escale en consecuencia. es decir, si solo desea regular el sistema a un rango limitado, aumente la ganancia del sensor utilizando un riel de 5 V para amasar el amplificador operacional y la referencia de 2,5 V. Digamos que solo está interesado en 1.9 a 2.1 y desea que la escala total sea de 0 a 5 V, luego use un desplazamiento de 2 V y en lugar de / 2 desea x 5 / 0.2 = 25. Esto reducirá el error en su sistema de control debido al ruido y al desplazamiento del ADC.

De forma alternativa, su ADC de 10 bits tiene una resolución de 1 en 1024, por lo que advierte sobre todas las notas y especificaciones de la aplicación para la regulación y el filtrado de V +, fallas a tierra con conexión a tierra digital y analógica, protección de EMI, entonces debe obtener la precisión y Repetibilidad en la especificación. (sea lo que sea) Pruebe su sistema con una onda triangular y si puede enviar el ADC a un DAC para ver la salida. Luego compare la entrada analógica y la salida analógica para determinar la linealidad y los errores de código faltantes debido al ruido en Vref / Gnd.

Cualquiera de estos enfoques debería funcionar, pero el primero facilita el control. Si es necesario, use otro amplificador operacional para escalar el 2.5V o cualquier referencia interna precisa. para cualquier compensación que desee que obtenga el sistema con una ganancia de 25x. de 0 a 5V ..

Por supuesto, su ruido podría estar en su sensor, pero nunca especificó que estuvo dentro del alcance.

    
respondido por el Tony EE rocketscientist

Lea otras preguntas en las etiquetas