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
acquisition time berechnet und eingehalten? Was hast du für Taktfrequenz und AD-Conversion Clock eingestellt?
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.
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
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
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."
@Werner Das könnte auch ein Problem sein, Vdd ist natürlich die digitale Vdd unn am Poti liegt die analoge Vdd an
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.
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?
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.
10k Poti ?? Ist wohl zu hoher Widerstand! Löte mal 10nF oder so zwischen den Mittelabgriff vom Poti und Masse.
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.
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?
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.
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
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 ?
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.
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.
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.
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
> Wenns nicht gerade eine Batterie ist.
Was für einen Test des Spannungsversorgungseinflusses
durchaus laborüblich ist.
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?
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.