Forum: Mikrocontroller und Digitale Elektronik Streuung der ADC-Werte beim STM32


von Thomas W. (mikrobe)


Angehängte Dateien:

Lesenswert?

Hallo,

ich habe versucht mit einem Beispielprogramm die Genauigkeit  bzw. die 
Stabilität der ADCs beim  STM32 zu testen. Dabei habe ich mich an der 
Application Note 2668 von ST orientiert und probehalber 5000 Werte einer 
Gleichspannung hintereinander aufgenommen. Dabei sollte sich eigentlich 
eine Gauss-Verteilung ergeben (siehe Bild1).

Bei mir sieht die Verteilung jedoch ganz anders aus (Bild2). Die 
gesampelten Werte schwanken über einen viel größeren Bereich (63 Digits) 
und die Häufigkeiten sind auch ganz anders verteilt.

Es handelt sich um einen STM32F103VET. Die Spannungsversorgung (analoger 
und digitaler Teil) wird über einen AMS1117-3.3 realisiert. Zum Test 
habe ich mittels eines Spannungsteilers (2x2K zwischen VDDA und GND) 
eine Spannung an PC0 angelegt und diese mit ADC1 bzw. ADC3 ausgewertet. 
Der häufigste Wert 2047 ist ja korrekt, aber die Verteilung sieht mir 
nach einem systematischen Fehler aus.

Softwaremäßig habe ich schon verschiedenes ausprobiert (verschiedene 
ADCs an verschiedenen Eingängen, Sampleraten, verschiedene System- und 
Bustakte).  Die ADCs werden natürlich nach dem einschalten kalibriert.

Kann es evtl. an einer zu stark schwankenden Referenzspannung liegen 
(AMS1117 evtl. ungeeignet)?

Hat eventuell jemand schon mal ähnlich Untersuchungen angestellt und 
kann seine Ergebnisse hier posten?

Gruß

Thomas

von Markus M. (Firma: EleLa - www.elela.de) (mmvisual)


Lesenswert?

Kannst Du noch einen Kondensator zwischen den zweiten 2K2 und GND legen?

von Thomas W. (mikrobe)


Angehängte Dateien:

Lesenswert?

Hallo,

wenn ich das richtig verstehe soll dieser Kondensator eine eventuell 
vorhandene Restwelligkeit in der zu messenden Spannung glätten. Daran 
hatte ich prinzipiell auch schon gedacht, aber ich hatte das Problem 
eher bei der Referenzspannung vermutet.

Da ich in Sachen Hardware Neuling bin muss ich mir erstmal einen 
passenden Kondensator zum testen besorgen. Was für einen Kondensator 
sollte ich ggf. verwenden, wenn ich nur Spannungen messen möchte die 
sich recht langsam ändern (z.B. Temperatursensor)?.

Ich habe mal auf die schnelle eine Batterie an den ADC angeschlossen. 
Die sollte ja eine recht konstante Spannung liefern. Das Ergebnis sieht 
mehr nach raten statt messen aus (siehe Anhang).


Gruß

Thomas

von Thomas W. (mikrobe)


Angehängte Dateien:

Lesenswert?

Hallo,


ich habe heute mal versucht einen Kondensator (33µF) zwischen GND und 
den ADC Eingang zu schalten. Leider ergibt sich dadurch auch keine 
Verbesserung.

mfg

Thomas

von Markus M. (Firma: EleLa - www.elela.de) (mmvisual)


Lesenswert?

Noch eine Idee:

Betreibe doch mal den STM32 mit 2 AA Batterieen, das sind dann 3V und 
ist auch "glatt", dazu noch 470uF um die Spitzen ab zu decken.

von Flo (Gast)


Lesenswert?

Hoi!

Wie sieht denn dein Aufbau aus? Ist das ein fertiges Eval-Board oder 
hast du das selbst gebaut? Sind alle Versorgungsleitungen des yC 
entsprechend entkoppelt?
Was war das für ein Kondensator den du dazwischen gehängt hast? Bei der 
Größe nehme ich mal an ein Elko?
Ein Schaltplan und ggf. Layout wäre hilfreich!

von Branko G. (branko)


Lesenswert?

>Kann es evtl. an einer zu stark schwankenden Referenzspannung liegen
>(AMS1117 evtl. ungeeignet)?

Hast du am AMS1117-Ausgang auch ein 22µF Tantal, wie in 
Datenblatt(Seite4) steht?

von Thomas W. (mikrobe)


Lesenswert?

Danke für den Tip. Da muss ich mal sehen wie ich das hinbekomme.

Es handelt sich nämlich um eine fertige Platine, bei der die 
Spannungsversorgung normalerweise über einen USB-Anschluss erfolgt.

Die 5V vom USB sind aber auch nochmal mit einem Pin einer Siftleiste 
verbunden. Evtl kann ich da "rückwärts" einspeisen. Das werde ich mir 
morgen nochmal genauer anschauen.


Danke

Thomas

von Thomas W. (mikrobe)


Angehängte Dateien:

Lesenswert?

Hallo,

da war ich wohl etwas langsam...

Also, es handelt sich um fertiges Board. Einige IO-Pins sind dabei auf 
eine 40. pol Stiftleiste herausgeführt. Dort habe ich mit einem Stecker 
und einem kurzen Kabel nur den Spannungsteiler mit dem 33µF Elko 
angeschlossen. Der Aufbau ist sicher ganz und gar nicht professionell, 
aber ich dachte für simple Messung einer Gleichspannung sollte es 
reichen. Die Verteilung der Werte wie oben gezeigt sieht auch nicht wie 
zufällige Einstreuungen aus, d.h. sie verändert sich nicht von Messung 
zu Messung.

Alle VDD-Pins sind mit 100nF versehen. Die Beschaltung des AMS1117 habe 
ich mal mit angefügt.

mfg

Thomas

von Thomas W. (mikrobe)


Angehängte Dateien:

Lesenswert?

Hallo,


ich habe heute das Board mit Batterien betrieben. Ich konnte keinen 
Unterschied zwischen Batterieversorgung und USB-Versorgung feststellen. 
Ich habe allerdings die 5V-Schiene mit Batterien versorgt, VDD wurde 
also weiterhín vom AMS1117 erzeugt. Kann ich auch auf der Ausgangsseite 
des AMS1117 externe 3V anlegen ohne das der IC Schaden nimmt?

Um ein Problem mit meiner Spannungsteilerschaltung auszuschließen habe 
ich diesmal die interne Referenzspannung gemessen. Ich habe einen 
häufigsten Wert von 1487 erhalten, was bei 3.36V Referenzspannung ca. 
1.22V entspricht. Das liegt innerhalb der vorgebenen Limits. Die 
Verteilung sieht aber nicht besser aus als bei den obigen Beispielen.

Im Anhang diesmal der gesamte Schaltplan. Die grundsätzliche Frage ist 
ja, ob es sich überhaupt um ein Hardware-Problem handelt, oder ob ich 
doch zum x-ten Mal die Software abgrasen muss.

mfg

Thomas

von Branko G. (branko)


Angehängte Dateien:

Lesenswert?

Also,Entkoppelung-Kondensator(C12) für AVCC, ist mit nur 10nF 
unverschämt niedrig dimensioniert.
Olimex-Platine hat z.B. an diese Stelle 10µF Tantal und 100n Kerko.
Dort ist auch LM1117-Ausgang ausreichend enktoppelt mit 47µF-Tantal und 
2µ2 Kerko.
Ich tippe dass Problem in nicht ausreichendem Entkoppelung liegt.

mfg
Branko

von Thomas W. (mikrobe)


Lesenswert?

Ich habe gerade nochmal in das Datenblatt des AMS1117 geschaut, das bei 
der Platine mit dabei war. Dort wird auf der Eingangs- und Ausgangsseite 
jeweils 1x 10µF vorgeschlagen so wie es auch umgesetzt wurde. In der 
Praxis wird das wohl eher anders gehandhabt.

Bei AVCC schlägt ST im Datenblatt 10nF+1µF vor. Auf meinem Board wurden 
leider nur die 10nF verbaut.

Würde es evtl etwas bringen C12 bzw. C6/C7 zu tauschen? Allerdings traue 
ich mir das mit meinen eher begrenzten Lötfähigkeiten nicht so recht zu. 
Deshalb sollte es ja eine fertige Platine sein bei der ich mich auf die 
Software konzentrieren kann.

mfg

Thomas

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.