STM32F0 ADC liest falsche Werte

Ich verwende STM32F030F4P6 MCU für ein Projekt. Diese MCU hat keinen Vref+-Pin und verwendet den VDDA-Pin für A/D-Wandlungen, PLL usw. Beim Prototyping der Schaltung, die ich für mein Projekt verwenden werde, habe ich die VDDA- und VDD-Pins zusammen mit 10uF- und 100nF-Kondensatoren gegen Masse kurzgeschlossen. Ich gebe diesen Pins mit einer Gleichstromversorgung genau 3,3 V.

Der ADC liest eine Spannung mit einer maximalen Amplitude von 16,8 V. Daher habe ich einen 10k / 2k-Spannungsteiler verwendet, um diese Spannung auf Logikpegel zu bringen. Da ich hauptsächlich DC-Werte lesen werde, habe ich die Abtastzeit auf den höchstmöglichen Wert eingestellt, nämlich 239,5 Adc-Taktzyklus - 17,1 Mikrosekunden.

Das Problem ist, dass die Werte, die ich lese, sich stark von den Spannungen unterscheiden, die ich mit dem Multimeter messe. Zum Beispiel liest ADC ~ 2,8 V, wenn ich 2,87 V messe.

Wie Sie wissen, haben diese MCUs Vref eingebaut, die Sie über ADC_IN17 lesen können. Wenn ich versuche, damit meinen ADC zu kalibrieren, ist die gemessene Spannung diesmal niedriger als die Lesespannung. Zum Beispiel beträgt die Lesespannung 2,8 V, wenn ich 2,72 V messe.

Die ADC-Auflösung beträgt 12 Bit und die ADC-Genauigkeitstabelle ist unten dargestellt.

Geben Sie hier die Bildbeschreibung ein

Kommentare sind nicht für längere Diskussionen gedacht; Diese Konversation wurde in den Chat verschoben .

Antworten (2)

Für die Kalibrierung mit internem VREF müssten Sie Ihren Code posten.

Für den Fall ohne Kalibrierung könnte es tatsächlich die Eingangsimpedanz sein - der MCU-ADC hat eine Eingangsimpedanz von etwa 50 k, was im Fall Ihres Teilers möglicherweise zu niedrig ist - versuchen Sie, die gemessene Spannung zu puffern und erneut zu messen.

Aus den Kommentaren geht hervor, dass das Problem mit der Korrelation zwischen der MOSFET-Schaltzeit und der ADC-Lesezeit zusammenhängt.

Das 100-mV-Rauschen ist höchstwahrscheinlich ein periodisches Rauschen, und Messwerte in Phase mit dem Rauschen können nicht zu einem Durchschnittswert führen, es ist wie die Mittelung von sin (t) an 2 * pi * n + c-Punkten

Das Filtern des ADC-Eingangs kann helfen, die Korrelation zu reduzieren, wenn der Rauschpfad nicht induktiv ist.

Wenn Oversampling auf eine höhere Rate als die Umschaltzeit keine Option ist, könnte zumindest das Verschieben des Abtastpunkts weit vom Übergangsbereich helfen.