Lectura extraña de NAU7802 ADC

2

Estoy usando un NAU7802 ADC que tiene un amplificador incorporado . Estoy tratando de usarlo para leer un medidor de tensión pero sigue dándome lecturas extrañas.

Finalmente, recurrí a unir las dos entradas diferenciales para que leyera 0, sin embargo, estas son las lecturas que recibo (a 80 Hz, ganancia = 128):

Comopuedever,lamayoríadelasveceslalecturaescorrecta,perocada0,4segundosomástieneunaexplosióndetonterías.

Estoybastantesegurodequemicódigoescorrecto(nopuedopublicarlo,losiento).TengaencuentaqueestoysondeandoeldispositivoparaDRDY(datoslistos)enlugardeinterrumpirlo.Esonodeberíahacerunadiferencia,peronoséquéestácausandoesto.

¿Alguientienealgunasugerencia?Heagregadocondensadoresencasitodosloslugaresquepuedoypongotodoenunacajademetal,asíquenocreoqueseaEMI.

Meestoyvolviendoloco.

Actualización,sevuelvemásextraño

AsíquecambiéunpocomicódigoparaqueuselainterrupciónDRDY,comoesta(nopudehacerqueI2CfuncionedentrodelISRporalgunarazón,deahíelbooleano):

//Insetup()attachInterrupt(1,adcIsr,RISING);}volatilebooldataReady=false;voidadcIsr(){dataReady=true;}loop(){if(dataReady){Serial.println(adc.readADC());dataReady=false;}}

Yahoramesaleestegráfico.¡Lamagnituddelostriángulosesindependientedelaganancia!

En serio, no tengo idea de lo que está pasando ahora. Parece una especie de problema de tiempo, pero la hoja de datos dice que cada vez que lees la salida del ADC, se engancha y te da la última.

    
pregunta Timmmm

2 respuestas

1

Aha, finalmente encontré la respuesta en este código !

La hoja de datos menciona un par de "choppers": el chopper ADC y el chopper PGA, pero en realidad no dice lo que son y al menos en el caso del chopper ADC solo hay un valor que no está reservado (off ). Resulta que el valor no reservado no es el predeterminado! Si apagas el helicóptero ADC, se deshace de la onda triangular extraña. Sigue habiendo una pequeña onda sinusoidal de amplitud, pero si apaga el chopper PGA, también se activará. Aquí está el código relevante ( writeReg es la implementación obvia).

writeReg(OTP_B1, 0x30);
writeReg(PGA, PGA_OUTPUT_BUFFER_ENABLE | PGA_PGACHPDIS);

Hoja de datos estúpida.

    
respondido por el Timmmm
0

Sin más información, es difícil diagnosticar un problema específico, pero hay algunas cosas que puedes intentar:

  • Si tiene un osciloscopio, podría medir directamente la señal de entrada al ADC para determinar si el ruido está en su circuito (y, por lo tanto, el ADC funciona correctamente) o interno al ADC.
  • ¿Su diseño funciona con un suministro externo a la caja? Si es así, podría estar acoplando ruido a su sistema a través del sistema de fuente de alimentación.
  • Hay un circuito de referencia en la página 26 de la hoja de datos que proporcionó. ¿Qué tan cerca está su circuito de eso, especialmente con respecto a la colocación de los condensadores?
  • 128 es una gran cantidad de ganancia que se debe usar; si lo sueltas, ¿cómo cambia el nivel de la señal?

  • Dijiste que atabas las entradas de diferencias; ¿Los ataste a un punto de circuito específico? Sin eso, es posible que tenga problemas de rechazo de modo común.

El ruido es un problema realmente difícil de resolver; a menos que puedas aislar su fuente, estás un poco atascado. Busque cualquier señal que se ejecute a aproximadamente 1 o 2 Hz, o incluso señales de frecuencias más altas que estallan a esa velocidad, o que podrían ser rectificadas. Finalmente, suponiendo que las etiquetas del eje y son los valores enteros de 24 bits que está obteniendo de su ADC, parece que su nivel de ruido todavía está en ~ -55dBFS; No sé cuáles son sus niveles de señal, pero ¿ha intentado usar un amplificador operacional agradable y silencioso en su señal de entrada, en lugar del PGA interno? Dependiendo de la fuente de ruido, eso podría hacer tu vida más fácil.

EDITAR: Nueva idea: no dices si has calibrado el ADC. La hoja de datos incluye un capítulo bastante importante sobre los procedimientos de calibración, que valdría la pena analizar para aclarar algunos posibles errores internos. Moraleja de la historia: en caso de duda, vuelva a leer la hoja de datos.

    
respondido por el mixedsignals

Lea otras preguntas en las etiquetas