Forum: Mikrocontroller und Digitale Elektronik STM32 schwankende ADC Werte..PULL Widerstände steuern


von Thomas (Gast)


Lesenswert?

Hallo,
ich habe derzeit nur

// GPIO_Digital_Input(@GPIOA_BASE, _GPIO_PINMASK_0);
  GPIO_Analog_Input(@GPIOA_BASE, _GPIO_PINMASK_0);

Muss ich die PULL UP/DOWN Widerstädne auch noch ansteuern, oder sollte 
die per Default disabled sein?

von Matthias S. (Firma: matzetronics) (mschoeldgen)


Lesenswert?

Ich schalte sie vorsichtshalber auf NOPULL, das sollte aber nicht 
relevant sein, sobald du auf die Alternate Function umschaltest.
Schwankende ADC Werte sind entweder ein Zeichen für eine zu hochohmige 
Quelle oder unsauberer Versorgung/AREF.
Wenn dein Chip keinen eigenen AREF Eingang hat, bleibt dir nur die 
saubere Abblockung des MC und das Studium der STM32 Errata.
Ist ein bekanntes Problem bei den internen ADC.

von Norbert (Gast)


Lesenswert?

Thomas schrieb:
> Hallo,
> ich habe derzeit nur
>
> // GPIO_Digital_Input(@GPIOA_BASE, _GPIO_PINMASK_0);
>   GPIO_Analog_Input(@GPIOA_BASE, _GPIO_PINMASK_0);
>
> Muss ich die PULL UP/DOWN Widerstädne auch noch ansteuern, oder sollte
> die per Default disabled sein?

Falls du mit einem Discovery Board testest, vergiss es.
Ich hatte das vor geraumer Zeit mal etwas intensiver untersucht und das 
Ergebnis war erschreckend: von den eingekauften 12 Bits waren im 
Durchschnitt 9-10 stabil. Ohne Moving-Average Filter sahen die Meßwerte 
aus als wenn man einen Zitteral streichelt.

von Marcus H. (Firma: www.harerod.de) (lungfish) Benutzerseite


Lesenswert?

Norbert schrieb:

> Ergebnis war erschreckend: von den eingekauften 12 Bits waren im
> Durchschnitt 9-10 stabil. Ohne Moving-Average Filter sahen die Meßwerte
> aus als wenn man einen Zitteral streichelt.
Da bist Du leider genau da, was man beim F4 erwarten darf.
Es gibt dann noch Tipps vom Hersteller, wie man das verbessern kann.

Hintergrund: auf dem Chip ist Logik, die gelegentlich pulsweise viel 
Strom zieht und damit den Messwert verbiegt. Da hilft auch die äußere 
Beschaltung und das Layout nicht viel bis garnichts.

Der Hersteller empfiehlt, die Messwerte auf Ausreißer zu untersuchen und 
diese wegzuwerfen. Das ist kein Problem, falls man DC misst.
Das eine MegaSample/s gibt es aber ohne Nachbearbeitung nur mit 8..9bit.
Siehe AN4073.

Unter diesem Problem leiden viele Mixed-Signal-Chips.
Beim AVR wird z.B. empfohlen die CPU während der Wandlung in den Sleep 
zu schicken - und das schon bei 10bit und ein paar KiloSamples/s.

Mein Lieblingsbeispiel - weil ich damals ein Dutzend Siliziumrevisionen 
mitgemacht und einige Einträge im Errata Sheet mit verursacht habe - ist 
der TMS320F2812. Da haben wir im 12bit Wandler bis zu 200 LSB Offset 
gesehen. 200/4096 :) War zum Glück kein Beinbruch, weil wir beim Sonar 
eine KKF mit einer mittelwertfreien Funktion gemacht haben.

Fazit: bei vielen Mikrocontrollern muss für schnelle,präzise Messungen 
ein externer ADC rangeschraubt werden. Beim STM32F4 dank DMA, SPI, FSMC 
etc. kein Problem, kostet "nur".

von Martina (Gast)


Lesenswert?

von wieviel Schwankungen reden wir denn hier ?!?!
Mit dem ATMEGA UND XMEGA hatte ich hier nie nennenswerte Probleme...
Ich setze den STM32F205 ein.
Mit den größeren F4 hatte ich keine Probleme..daher hoffte ich bisslang 
das es mein Fehler ist,.
Beim Atmega lag ich bei 1-2 Digit, was ich super finde

von Martina (Gast)


Lesenswert?

Ist das Problem mit Porta0 aDc beim STM32F205 auch existent? Ich finde 
im errata nichts genau dazu..nur ADC allgemein.
Das errata vom XMega war leer!!

von Uwe Bonnes (Gast)


Lesenswert?

Marcus H. schrieb:
> Norbert schrieb:
>
>> Ergebnis war erschreckend: von den eingekauften 12 Bits waren im
>> Durchschnitt 9-10 stabil. Ohne Moving-Average Filter sahen die Meßwerte
>> aus als wenn man einen Zitteral streichelt.
> Da bist Du leider genau da, was man beim F4 erwarten darf.
> Es gibt dann noch Tipps vom Hersteller, wie man das verbessern kann.

STM32F205/7 und STM32F405/7 sind da sehr problematisch. 
F401/F411/F42x/F43x/F446 sind da deutlich besser, wenn man den Hinweisen 
der App-Not folgte. Auf einem F401 laeuft gerade eine Messung von einem 
510 Ohm Widerstand in Serie mit 1000 Ohm. Der 510 Ohm Widerstand 
simuliert einen PT1000 und entsprechend ausgewertet(*) ergibt es 
folgendes:
      2  -123.120
      7  -123.119
     11  -123.118
     49  -123.117
     70  -123.116
    164  -123.115
    383  -123.114
    455  -123.113
    832  -123.112
   1121  -123.111
   1289  -123.110
   1034  -123.109
   1307  -123.108
   1084  -123.107
    856  -123.106
    468  -123.105
    433  -123.104
    217  -123.103
    129  -123.102
     80  -123.101
     38  -123.100
     15  -123.099
      4  -123.098
      2  -123.097
      1  -123.096

So sehr sieht das nicht nach Zitterall aus...

Auswertung: Die Reihenschaltung wird fuer 200 us an VDDA gelegt, dann 
werden 8 Messungen der Spannung am Messwiderstand gemacht und die 
Spannung an der Serienschaltung dann wieder abgeschaltet. Das ganze wird 
32 mal pro Sekunde gemacht und aufsummiert und dann zuerst nach Rx und 
dann nach TX ausgewertet.

von Matthias S. (Firma: matzetronics) (mschoeldgen)


Lesenswert?

Uwe Bonnes schrieb:
> Auf einem F401 laeuft gerade eine Messung von einem
> 510 Ohm Widerstand in Serie mit 1000 Ohm.

Das ist aber auch schön niederohmig und reduziert zumindest die 
Einflüsse der internen digitalen Störungen auf den S&H Teil.
Um mal ein bisschen mit Audio rumzuspielen, habe ich ein paar Opamp 
Ausgänge eines Mischpultes über 100 Ohm auf 2 Kanäle des F407 geschickt 
und auch das klingt gar nicht so schlecht, allerdings 'sirrt' der MC 
doch hörbar auf den ADC durch. Als Ausgabe den CS43L22 des DiscoF407 
Boards und auch einen TDA1543 auf I2S2. Ich nehme nun den CS5331 für 
Audio Input.

Nicht umsonst empfiehlt STM ja ein Averaging - sie sind sich der 
Problematik der Mixed Signal Chips durchaus bewusst. Viele Bits und 
störarm geht nur mit externen ADC.

von Thomas (Gast)


Lesenswert?

Es geht mir jetzt nicht um 1-3 Digits..ich habe hier ca 30-60 die 
schaukeln..daher eher so allgemein gefragt..ob der STM32F205 an PortA0 
hier auch von dem problem betroffen ist.

von Thomas (Gast)


Lesenswert?

achja..ich benutze die internen 16MHz

von Marcus H. (Firma: www.harerod.de) (lungfish) Benutzerseite


Lesenswert?

Hallo Thomas,
danke für die Mitteilung, dass Du einen F2 (welchen?) verwendest.
Ich habe bisher keinen F2/F3 verwendet.
Aber die bereits erwähnte AN4073 bezieht sich auf F2/F4. Mal 
reingeschaut?

Der interne RC-Oszillator hat üblicherweise einen größeren 
Frequenzfehler und Jitter als Quarz-Oszillatoren. Wenn das für Dich kein 
Problem ist, ist das für den ADC wohl auch kein zusätzliches Problem. 
Siehe F2-Datenblatt.

Grüße,
 marcus

von Martin (Gast)


Lesenswert?

Auf dem F4 Discovery brauchst kannst du die ADC messung eh vergessen, 
die Spannung für VDDA und VRef wird aus einem 3.3V Spannungsregler mit 
nachgeschalteter Diode versorgt, hat also zwischen 2.9V und 3.0V, da 
muss es die Schwankungen geben

von Thomas (Gast)


Lesenswert?

selbst wenn ich den Eigang aug GND Lege zeigt er 0-23 an

von Thomas (Gast)


Lesenswert?

habe kein Discovery, eine eifnache selbstentwiceklte Platine...
Warum schwang es bei VCC?!?
Wenn VCC gleichzeitig REF ist ist doch die DIFF 0?!

von Norbert (Gast)


Lesenswert?

Martina schrieb:
> von wieviel Schwankungen reden wir denn hier ?!?!
> Mit dem ATMEGA UND XMEGA hatte ich hier nie nennenswerte Probleme...
> Ich setze den STM32F205 ein.
> Mit den größeren F4 hatte ich keine Probleme..daher hoffte ich bisslang
> das es mein Fehler ist,.
> Beim Atmega lag ich bei 1-2 Digit, was ich super finde

Hier noch der Link auf meine Versuchsreihe in 2013:
Beitrag "STM32 ADC Verhalten eigentümlich"

von Thomas (Gast)


Lesenswert?

Habe gerade nochmal ein anderes Projekt rausgekramt..hier habe ich einen 
STM32F205V verbaut...
Hier wackelt nicht ein einziges Digit?!?
auch intern 16MHz ext REf an VCC angeklemt..kann also nicht am STM32F2 
allgemein liegen :-(

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.