STM32F0 ADC lee valores incorrectos

Estoy usando STM32F030F4P6 MCU para un proyecto. Esta MCU no tiene pin Vref+ y utiliza el pin VDDA para conversiones A/D, PLL, etc. Mientras creaba el prototipo del circuito que voy a usar en mi proyecto, acorté los pines VDDA y VDD junto con condensadores de 10uF y 100nF a tierra. Doy 3,3 V exactos a estos pines con una fuente de alimentación de CC.

El ADC leerá el voltaje con una amplitud máxima de 16,8 V. Por lo tanto, he usado un divisor de voltaje de 10k / 2k para llevar este voltaje al nivel lógico. Dado que leeré principalmente valores de CC, configuré el tiempo de muestreo al más alto posible, que es un ciclo de reloj de 239,5 adc: 17,1 microsegundos.

El problema es que los valores que leo son muy diferentes a los voltajes que mido con el multímetro. Por ejemplo, ADC lee ~2.8V cuando mido 2.87V.

Como sabe, estas MCU tienen Vref incorporado que puede leer a través de ADC_IN17. Cuando trato de usar esto para calibrar mi ADC, esta vez el voltaje medido es más bajo que el voltaje de lectura. Por ejemplo, el voltaje de lectura es de 2,8 V cuando mido 2,72 V.

La resolución de ADC es de 12 bits y la tabla de precisión de ADC se muestra a continuación.

ingrese la descripción de la imagen aquí

Los comentarios no son para una discusión extensa; esta conversación se ha movido a chat .

Respuestas (2)

Para calibrar con VREF interno, deberá publicar su código.

Para el caso sin calibración, en realidad podría ser la impedancia de entrada: el MCU ADC tiene una impedancia de entrada de alrededor de 50k, que podría ser demasiado baja en el caso de su divisor; intente amortiguar el voltaje medido y medirlo nuevamente.

Según los comentarios, el problema parece estar relacionado con la correlación entre el tiempo de conmutación del MOSFET y el tiempo de lectura del ADC.

Lo más probable es que el ruido de 100 mV sea un ruido periódico y las lecturas en fase con el ruido no pueden conducir a un valor promedio, es como promediar sen (t) en 2*pi*n + c puntos

Filtrar la entrada del ADC podría ayudar a reducir la correlación si la ruta del ruido no es inductiva.

Si el sobremuestreo a una tasa más alta que el tiempo de conmutación no es una opción, al menos podría ayudar mover el punto de muestreo lejos del área transitoria.