Forum: Mikrocontroller und Digitale Elektronik ADC Messung mit PIC ungenau


von Eee E. (snake4)


Lesenswert?

Hallo,

ich versuche mit einem PIC eine AD Messung durchzuführen. Im Prinzip 
funktioniert es auch.

Ich habe einen PIC18LF26J13 mit einem Spannungsteiler-Poti. 3,3V. Vref 
sind vdd und vss. 12-Bit Messung (4096).

Eigentlich funktioniert die Messung auch recht gut. Im Bereich 0 bis 
1000. Ist die Messung auch wirklich 12bit. Schwankt also maximal 
zwischen 2 Werten.

Im Bereich 1000 bis 3000 schwank es schon zwischen 3 Werten.
Im Bereich 3000 bis 4096 schwank es sogar zwischen 5 Werten.

Das scheint mir irgendwie ein komisches Ergebnis. Am Code sollte es ja 
nicht liegen?

Sonst wüsste ich nicht was ich noch als Anhaltspunkte geben könnte?
Ein Kondensator sitzt direkt am PIC.

Hat irgendjemand eine Idee wieso das passieren könnte?

MfG

von Martin S. (drunkenmunky)


Lesenswert?

acquisition time berechnet und eingehalten?

Was hast du für Taktfrequenz und AD-Conversion Clock eingestellt?

von MaWin (Gast)


Lesenswert?

Vref = Vdd taugt nicht für 12 bit,
da musst du schon eine stabile Vref von aussen vorlegen und in SLEEP 
messen,
und da du weder den Widerstandswert des Potis noch die Leitungsführung 
nennst, kann man eh keinen Grund finden.

von Chris D. (m8nix)


Lesenswert?

Hi Snake,

>Eigentlich funktioniert die Messung auch recht gut. Im Bereich 0 bis
> 1000. Ist die Messung auch wirklich 12bit. Schwankt also maximal
> zwischen 2 Werten.

Eine Messwertschwankung hat nichts mit der AD-Wandlerauflösung zu tun.

Potis sind grundsätzlich nicht gut um einen rauscharmen Spannungsteiler 
aufzubauen.. Poste doch mal deine Referenzspannungserzeugung... ich 
glaube dort liegt der Hund begraben... Wie sieht denn deine 
Leiterbahnführung zwischen analoger und ´digitaler Masse aus ? Die 
sollte grundsätzlich nur an einem Punkt, so nah wie möglich an den 
Spannungsquellen zusammengefasst werden.

Gruss
Chris

von Werner (Gast)


Lesenswert?

MaWin schrieb:
> Vref = Vdd taugt nicht für 12 bit,
> da musst du schon eine stabile Vref von aussen vorlegen

Da das ganze eine ratiometrische Messung ist, müssen dann allerding 
sowohl ADC als auch Poti daraus versorgt werden, sonst vergleicht man 
Äpfel mit Birnen

von Eee E. (snake4)


Lesenswert?

Aquisition Time:

Berechnet habe ich die nicht, in der Formel kommen viele Sachen vor, wo 
ich nicht so richtig weis was ich da einsetzen soll.
Ich habe mal alle durchprobiert es gibt ja nur ein paar. Die längste hat 
die besten Ergebnisse gebracht. Länger geht halt nicht?
Man kann auch nur eine Clock Source wählen wenn man im Sleep 
konvertiert?


Vref:

Der PIC ist wärend der Messung im Sleep. Deshalb dachte ich Vdd wäre 
dann ok? Ist das trotzdem noch nicht gut genug? Aber Vss reicht?


Platine:

Die Leiter sind alle auf einer Platine, ziemlich klein und kurz.
Analoge und digitale Spannungen habe ich auch getrennt und nur an einem 
Punkt verbunden, mit vielen Kondensatoren nebendran.
Die Spannung kommt von einem LM1086 3,3V Spannungsregler. Mit 
Kondensatoren.


Poti:

Der Poti hat leider 10k Ohm. Das PIC datasheet meint allerdings:
"The maximum recommended impedance for analog sources is 2.5k for 10-bit 
conversions and 1k for 12-bit conversions."

von Eee E. (snake4)


Lesenswert?

@Werner

Das könnte auch ein Problem sein, Vdd ist natürlich die digitale Vdd unn 
am Poti liegt die analoge Vdd an

von MaWin (Gast)


Lesenswert?

10k ist ok, SLEEP ist ok, Vdd=Vref ist natürlich schlecht,
aber trotz Vdd=Vref lässt sich mit SLEEP und 10k besseres
erreichen als du erreicht hast. Also liegt es am Aufbau,
du solltest auch mal die Spannungsversorgung oszillographieren
während der A/D-Wandlung, eventuell schlechte Spannungsregelung.

von Eee E. (snake4)


Lesenswert?

Ich habe leider kein Oszilloskop, sonst hätte ich das schon mal 
drangehalten.

Ich werde noch versuchen die Vref+ von Vdd zu trennen. Vielleicht 
hilfts.

Bringt es irgendwas in die Messleitung einen Kondensator zu bauen?

von Chris D. (m8nix)


Lesenswert?

VRef von VDD zu trennen ??? Ich dachte das hast du schon ->

> Die Leiter sind alle auf einer Platine, ziemlich klein und kurz.
> Analoge und digitale Spannungen habe ich auch getrennt und nur an einem
> Punkt verbunden, mit vielen Kondensatoren nebendran.

Manche Layouts haben auch einen 100 Ohm Widerstand von digitaler zur 
analogen Spannung mit anschliessendem 10 µF Kondensator zur 
Stabilisierung.

von Bernd R. (Firma: Promaxx.net) (bigwumpus)


Lesenswert?

10k Poti ??
Ist wohl zu hoher Widerstand!
Löte mal 10nF oder so zwischen den Mittelabgriff vom Poti und Masse.

von Erich (Gast)


Lesenswert?

Aus anderen Projekten mit Pic (bzw. generell) habe ich die Erfahrung, 
daß es auch auf die Spannungsversorgung ankommt.

Die Spannungsversorgung darf nicht aus einem Schaltnetzteil sein.
Letztlich kriegt man die Spikes von dort nicht vollkommen weg.

Insbesondere bekommt man auch keine ordentlichen A/D Werte, solange die 
Versorgung aus der ICD-3 Box heraus erfolgt!
Das macht bei meinem Pic bereits die 10-Bit A/D Werte kaputt.

Der allgemeine Hinweis auf evtl. Probleme bei Vref = Vdd kam ja schon.

von Eee E. (snake4)


Lesenswert?

Ich habe jetzt ein paar sachen getestet:

Vref+ ist nun die Analoge Vdd. Vref- ist weiterhin die normale Vss. Hat 
ungefähr garnichts gebracht. Weder nach oben noch nach unten.

100 Ohm zwischen Analog und Digital Vdd. Danach 10uF
Das hat mich zu 26 verschiedenen Werten gebracht. Also doch sehr 
deutlich schlechter?

15nF an den Potiausgang. Hat auch garnichts verändert.


Beim Debuggen mit einem Pickit sind die Werte auch kein bisschen 
brauchbar. Schwankungen von +-10. Wenn man Vdd nicht mit dem Pickit 
verbindet ist es etwas besser.
Die Spannungsversorgung scheint also doch sehr viel auszumachen.

Spannung mit ohne Schaltnetzteil ist heuzutage ehr schwer? Wenns nicht 
gerade eine Batterie ist.

Die Messwerte haben aber ein recht auffälliges Muster, wenn auch nicht 
zeitlich konstant.
Der Messwert schwankt immer nur um +-1, ab und an bricht er dann ein, 
auf -3. Selten mal auf +2.

Kann ich die Stromversorgung irgendwie stabilisieren?

von Eee E. (snake4)


Lesenswert?

Ich habe gerade noch die Spannungsversorgung durch ein Labornetzteil 
ersetzt. Hier sind die Schwankungen deutlich kleiner. Meist garkeine.

Für Spannungsspitzen gibt es ja diese Suppressordioden. Gibt es die auch 
für einen so kleinen Bereich wie 3,3V?
Würde eine Zener Diode helfen?

Mehr Kondensator hilft aufjedenfall nicht. Ich habe die 
Spannungsversorgung mit einem 50cm Kabel vom PIC getrennt und an beiden 
enden 50uF. 100uF machen keinen Unterschied.

von Anja (Gast)


Lesenswert?

Eee E. schrieb:
> Ich habe gerade noch die Spannungsversorgung durch ein Labornetzteil
> ersetzt.

Oben schreibst Du noch:
> Die Spannung kommt von einem LM1086 3,3V Spannungsregler.

Und jetzt stellt sich heraus daß ein Schaltregler im Spiel ist.
Und da wunderst Du dich daß es nicht funktioniert?

Suppressordioden sind auch keine Lösung.
Eventuell helfen dicke Drosseln + darauf abgestimmte 
Filterkondensatoren.

Ein Problem hierbei ist daß Low-Drop-Regler wie der LM1086 nur wenig 
Störunterdrückung haben und selbst gerne gestört werden. (Nachklingeln)
Ich hoffe du hast zusätzlich zu den Elkos auch noch 100nF an Ein-und 
Ausgang des LM1086. Ferner brauchst Du an allen Pins des Prozessors 
(VREF, VDDA, VDD + Signaleingang) ebenfalls 10-100nF.

Gruß Anja

von Ulrich (Gast)


Lesenswert?

Es kommt auch noch ein bisschen darauf an wo die Spannung für den LM1083 
her kommt. Wenn das ein Schaltnetzteil ist, braucht man davor einen 
Filter mit Drossel und Kondensatoren. Als low drop Regler kommt es da 
schon auf die Art der Kondensatoren am Spannungsregler an - da gibt es 
ggf. auch ein zu viel oder zu niederohmig. Der LM1083 ist nur für den 
PIC auch reichlich überdimensioniert. Hängt da noch eine große weitere 
Digitalschaltung mit dran ?

von Eee E. (snake4)


Lesenswert?

Erst kommt ein Schaltnetzteil/Labornetzteil, danach dann der LM1086.

Kondensatoren hab ich überall dran.


Edit: Es werden auch noch einige Leds mit dem LM1086 betrieben.

von PICmaster (Gast)


Lesenswert?

Jaja, Mutmaßungen ;)

Dieses Phänomen hatte ich vor einigen Wochen mit nem 18F27J13.

Schon mal mit nem Scope die Signale am ANx Pin angeschaut?
Oder - lies doch einfach das Errata...


Kann man aber auch in SW, auf Kosten verlängerter TAD-Zyklen
in den Griff bekommen.

von Eee E. (snake4)


Lesenswert?

Das Errata meint:

"At the beginning of sample acquisition, one or
more small, pull-up pulses (approximately 25 ns
long) may output to the currently selected ANx
analog channel. These pulses can lead to a positive
offset error when the analog signal voltage
is near VSS and the external analog signal driver
is unable to dissipate the added pull-up voltage
before the A/D conversion occurs."

Das ist aber ungefähr genau das Gegenteil, wie das was mir passiert. Bei 
mir ist es ja ehr ein negativer offset, near Vdd.

Das längste TAD habe ich eigentlich schon ausgewählt.

von Anja (Gast)


Lesenswert?

Eee E. schrieb:
> Es werden auch noch einige Leds mit dem LM1086 betrieben.

Aber doch hoffentlich nicht (mittels PWM) während der ADC-Messung.

Eee E. schrieb:
> Das ist aber ungefähr genau das Gegenteil, wie das was mir passiert. Bei
> mir ist es ja ehr ein negativer offset, near Vdd.

Für mich ist der Fall bereits geklärt: Die instabile Versorgung ist 
schuld.
Eingangssignal und Referenzeingang werden bei keinem SAR-A/D-Wandler 
exakt zum gleichen Zeitpunkt abgetastet.

Die Frage ist nur wie Eee das in den Griff kriegt das Poti, die 
Analog-Versorgung und die VRef mit einer sauberen Spannung zu versorgen.

Gruß Anja

von MaWin (Gast)


Lesenswert?

> Wenns nicht gerade eine Batterie ist.

Was für einen Test des Spannungsversorgungseinflusses
durchaus laborüblich ist.

von Eee E. (snake4)


Lesenswert?

Danke für eure ganzen Antworten.

Also haben wir jetzt geklärt, dass es an der Spannungsversorgung liegt.

Und wie ich das verstehe, gibt es nicht gerade einen einfachen Weg, 
diese zu stabilisieren?

von Rigi Taler (Gast)


Lesenswert?

wozu gibt es SW ?

von iaoffline (Gast)


Lesenswert?

Eee E. schrieb:
> Und wie ich das verstehe, gibt es nicht gerade einen einfachen Weg,
> diese zu stabilisieren?

Spannungsregler gibt es wie Sand am Meer. Stichwort für eine Forensuche 
hier evtl. LDO (Low DropOut).

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.