Estoy haciendo un circuito de báscula de pesaje digital y actualmente tengo dificultades para entender los filtros que se usan comúnmente para reducir el ruido en este tipo de circuitos. Mi celda de carga es un puente completo con una capacidad máxima de 200 kg y una salida nominal de 2 mV / V. Con un voltaje de excitación de 5 V, solo estoy amplificando la mitad de la señal (0-5 mV) usando un amplificador AD620. Luego utilicé AD822 como amplificador de diferencia para restar un desplazamiento de 2.47V y luego amplificarlo nuevamente 4.9 para tener un giro de salida de aproximadamente 200mV a 4.8V.
Mis preguntas son:
1) ¿Es el voltaje de altura que he provisto para el ADC lo suficientemente grande o realmente pequeño? Porque leí que es una regla común proporcionar un margen para su ADC, pero no sé exactamente cuánto pagué con 200 mV. Estoy usando el ADC incorporado de arduino (resolución de 10 bits)
2) Como puede ver, estoy usando la forma básica de construir un amplificador de diferencia y un amplificador de no inversión con mi AD822. ¿Hay una manera más efectiva de hacer esto? ¿O hay algo que deba agregar para que mi salida sea más estable y precisa? Debido a que en el amplificador diferencial, en realidad tengo una salida bastante estable pero con respecto a mi amplificador no inversor, tiene algunas inexactitudes, por ejemplo. En lugar de tener una salida cercana a 196mV a 40mV de entrada (ganancia de 40mV * de 4.9 = 196mV), tengo una salida de algo así como 230mV. Y también está variando inesperadamente con la carga sin movimiento.
3) Lo siento, pero básicamente no sé algo sobre el filtro de ruido. ¿Cuáles son sus recomendaciones para mi circuito en el filtrado de ruido? Creo que debo tener que poner algo entre mi celda de carga y AD620 in-amp, y entre mi amplificador no inversor y ADC, pero no sé qué son exactamente ahora.
¡Todo tipo de ayuda es muy apreciada!
Para su información, se utilizaron tapas de desacoplamiento en cada IC, pero no se indicaron en el esquema a continuación. (0.1micro paralelo a 0.33micro)
Y si esto podría ayudar, este es mi código para probar mis valores, en realidad es el código de muestra proporcionado para suavizar los valores analógicos.
total= total - readings[index];
readings[index] = analogRead(inputPin);
total= total + readings[index];
index = index + 1;
if (index >= numReadings)
index = 0;
average = total / numReadings;
Serial.println(average);
delay(500);