NUCLEO-G474R, STM32G474. STM32CubeIde, Optimierung ADC-Genauigkeit

OP #6203272
Lesenswert?

Für meinen aktuellen Testaufbau nutze ich ein NUCLEO-G474R und die 
Codegenerierungsmöglichkeiten der STM32CubeIde.

Ich lese mittels ADC1 und ADC2 mit 8kHz zwei Analogwerte ein, deren 
dürftige Genauigkeit mich etwas überrascht hat - bei einem Projekt vor 
zwei/drei Jahren mit einem STM32F405 (allerdings mit "bare metal" 
Programmierung) sind mir derartige Abweichungen nicht aufgefallen.
1
    Multimeter  ADC  read hex  read dec  calculated
2
    -----------------------------------------------
3
      1,206V   ADC1   0x0580     1408       1,12V
4
      1,516V   ADC2   0x06F9     1784       1,42V
5
      1,792V   ADC2   0x07F8     2040       1,62V
Durch Heruntersetzen der Default-ADC-Clock auf ein Achtel konnte ich die 
Genauigkeit zwar noch ein gutes Stück verbessern, eine weitere Senkung 
der ADC-Clock verbessert die Werte aber nicht mehr.
1
    Multimeter  ADC  read hex  read dec  calculated
2
    -----------------------------------------------
3
      1,206V   ADC1   0x05AF     1455       1,16V
4
      1,516V   ADC2   0x0721     1825       1,45V
5
      1,792V   ADC2   0x0883     2179       1,73V
Die Analogeingänge sind direkt mit einem OP-Ausgang (LM2904) verbunden,
so dass ich hinsichtlich Quellimpedanz wohl keine zusätzlichen 
Ungenauigkeiten zu erwarten habe.

Mache ich noch was Grundsätzliches falsch?
Hat jemnd noch Hinweise, was man u.U. verbessern könnte?
Hat schon jemand die unzähligen Angaben zur Genauigkeit im Datenblatt in 
einen einzigen Prozentwert umgerechnet?
Angehängte Dateien:
Beitrag #6203416 wurde von einem Moderator gelöscht.
OP #6203427
Lesenswert?

Nein, da lt. Datenblatt eine Vergrößerung der so wie so vorhandenen 
parasitären Kapazität die ADC-Genauigkeit verschlechtern würde - 
außerdem sollte, wenn in der Ecke ein Problem vorhanden ist, eine 
weitere Verringerung der ADC-Clock-Frequenz etwas bringen - tut es aber 
definitiv nicht.
Angehängte Dateien:
OP #6203469
Lesenswert?

> Kalibrierung durchgeführt?
> offest/gain compensation?

nein - sowas habe ich bis dato nur gemacht, um aus dem ADC das letzte
herauszukitzeln.

Wäre das erste mal seit dem 30 Jahre alten C167, wenn sowas notwendig 
wäre,
um überhaupt passable Werte zu erhalten (und das bei einem "brandneuen" 
Baustein)!?
OP #6203773
Lesenswert?

> Auch ohne es zu verstehen: leg mal 1 - 10 nF direkt an den ADC-Eingang.

Ich habe das mal beim ADC2 Signal getestet und keine Verbesserung 
feststellen können, auch wenn ich es mit der 1/64 ADC-Clock teste - im 
Gegenteil, die eingelesenen Werte enthalten nun immer wieder Werte, wie 
ich sie mit der 1/1 ADC Clock erhalten habe.
Gast #6203831
Lesenswert?

Stell deine ADC sample time mal auf mehr als 2.5 Zyklen...

Das SH hat vermutlich nicht genug Zeit um sauber geladen zu werden. Bei 
den 8KHz die du willst kannst du das vermutlich auf den Maximalwert 
stellen.

Um deine Frage zu beantworten ja du machst grundsätzlich etwas falsch, 
du hast dich offensichtlich nicht mit der Funktionsweise des ADCs 
auseinander gesetzt.
Gast #6203841
Lesenswert?

Uli N. schrieb:
>> Kalibrierung durchgeführt?
> nein

Dann würde das mal zuerst versuchen. Kapitel 20.4.8 vom Referenzhandbuch 
sagt dazu

"Calibration is preliminary to any ADC operation. It removes the offset 
error which may vary from chip to chip due to process or bandgap 
variation."
OP #6204009
Lesenswert?

Nach Einbau der Kalibrierung erhalte ich gute Werte!
1
    Multimeter  ADC  read hex  read dec  calculated
2
    -----------------------------------------------
3
      1,206V   ADC1   0x05E5     1509       1,20V
4
      1,516V   ADC2   0x0765     1893       1,51V
5
      1,792V   ADC2   0x08C3     2243       1,79V

Nicht so recht einleuchten mag mir, warum der Code Generator der Klicki 
Bunti das nicht in die ADC_Init() einbaut, wenn ohne doch nichts geht 
bzw. wenigstens ein Häckchen dafür vorhanden ist, mit dem man das 
erzwingen kann.

Thx für die Hinweise.
Beitrag #6204060 wurde von einem Moderator gelöscht.
Beitrag #6204202 wurde von einem Moderator gelöscht.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren