Forum: Mikrocontroller und Digitale Elektronik STM32F4 Discovery ADC Probleme auf anderem Board


von Sebastian T. (sebastian_tsch)


Lesenswert?

Hi,

Ich habe hier zwei verschiedene Sorten vom Discovery Board STM32F4, eine 
ältere(STM32F407VGT6) und eine neuere Version (STM32F407VGT6U). Bei der 
neueren Version (Auf zwei Boards getestet) stimmen die gemessenen ADC 
werte einer Spannung nicht, sondern weichen um die 15% vom richtigen 
Wert ab, während auf dem alten Board alles super funktioniert. Hat 
Jemand schon mal so etwas ähnliches erlebt? Z.B für 782mV als ADC 
Eingang bekomme ich vom ADC den Wert 1121, was bei 3.3V Referenzspannung 
und 12-bit Auflösung eigentlich dem Wert 903mV entspricht.

Edit Vdd ist irgendwas bei 2.95V, doch auch wenn ich diesen Wert als 
Referenzspannung verwende, bin ich immer noch um die 0.1-1V daneben, da 
der Offset anscheinend nicht Konstant ist.

Grüsse

von pegel (Gast)


Lesenswert?

Den internen Vref Korrekturwert hast Du aber eingerechnet oder?

von Sebastian T. (sebastian_tsch)


Lesenswert?

Die Diode ist ja das Problem und diese ist noch Temperaturabhängig. 
Einfach die 2.95V zu nehmen reicht also nicht, oder? Was für eine 
Korrekturformel gibt es da? Da ich sowieso bei diesem Board nie eine 
Batterie anhängen werde, frage ich mich, ob ich nicht einfach die Diode 
D3 
(http://www.st.com/content/ccc/resource/technical/document/user_manual/70/fe/4a/3f/e7/e1/4f/7d/DM00039084.pdf/files/DM00039084.pdf/jcr:content/translations/en.DM00039084.pdf, 
Seite 32) überbrücken kann um direkt die 3.3V als Vref zu erzeugen?

Grüssse

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


Lesenswert?

Sebastian T. schrieb:
> b ich nicht einfach die Diode
> D3
> 
(http://www.st.com/content/ccc/resource/technical/document/user_manual/70/fe/4a/3f/e7/e1/4f/7d/DM00039084.pdf/files/DM00039084.pdf/jcr:content/translations/en.DM00039084.pdf,
> Seite 32) überbrücken kann um direkt die 3.3V als Vref zu erzeugen?

Bei dem DiscoF429 (das mit dem Display) habe ich das gemacht, weil die 
Beriebsspannung vor der Diode gut aussah und nach der Diode mies. 
Ausserdem wurde die Diode recht warm.
Hat hier nur Vorteile gehabt, Display wurde heller und der ADC Wandler 
sauberer (ich verwende das Dings als portables Oszilloskop).
Check nochmal, ob alle Komponenten auf dem Board auch die vollen 3,3V 
vertragen und dann mach das.

von Sebastian T. (sebastian_tsch)


Lesenswert?

Ok, danke, bei der alten Version gibt es diese Diode noch gar nicht, ich 
denke die ist nur da, damit man das Board auch über 3.3V extern 
versorgen kann.

Grüsse

von pegel (Gast)


Lesenswert?

Sebastian T. schrieb:
> Was für eine Korrekturformel gibt es da?

http://blog.koepi.info/2015/05/stm32-adc-some-weird-behaviours.html

Suche nach VREFINT_CAL

von Sebastian T. (sebastian_tsch)


Lesenswert?

Ich habe die Diode mal überbrückt, doch das Resultat ändert sich nicht 
wirklich. Bei der alten Version gab es keine Probleme, was da mit der 
neuen Version los ist, ist mir ein Rätsel. Ich habe nun also an VDD 
direkt 3.3V als Referenzspannung und der ADC misst bei 3.3V auch 
4093-4095, sowie bei 0V den Wert 0-3. Doch irgendwie linearisiert mir es 
die Werte zwischendurch nicht: Wenn ich z.B 10V Eingang über einen 1:10 
Spannungsteiler Messe, bekomme ich den Wert 1186,  bei 5V den Wert 676, 
was mir keine lineare Beziehung ergibt. Kennt das Problem Jemand?

von pegel (Gast)


Lesenswert?

Wenn die Messung nicht linear ist, ändert auch der Korrekturwert das 
nicht.
Eventuell gibt es ein Problem mit dem ADC Eingangswiderstand und dem 
Spannungsteiler.

von Sebastian T. (sebastian_tsch)


Lesenswert?

Ja da stimme ich zu. Es tritt aber bei beiden neuen Boards auf, während 
das alte Board alles sauber misst mit dem gleichen Code. Bei sehr 
kleinen Werten für den ADC oder bei mehr als einem Channel für den ADC 
tritt das Problem auf.

von aSma>> (Gast)


Lesenswert?

Servus,
kennst du den Spruch: "Wer mißt, mißt Mist!"

Es gibt mehrere Möglichkeiten:
-Fehlerhafter Code
-ADC Channel defekt
-Nicht ins Errata geschaut
-oder alle drei zusammen.

von Sebastian T. (sebastian_tsch)


Lesenswert?

Ok habe es hinbekommen, es war nur ein Problem der Sampling-Zeit, diese 
ist nun ADC_SampleTime_112Cycles statt ADC_SampleTime_15Cycles. 
Erstaunlich das dies bei der älteren Version besser funktioniert hat.

von aSma>> (Gast)


Lesenswert?

In production data steht drin wie groß die sampling time in Abhängigkeit 
vom gemessenen Widerstand sein soll, damit die Genauigkeit des ADC 
gewährleistet werden kann.

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.