Hallo
Ich habe eine Frage zu dem ADC Input Model, wie dieses abläuft.
Also ich gehe wie folgt :(alles aus dem Bild rausgelesen!)
1) über den ANx kommt meine zu messende Spannung rein. Kommt mehr als
der erlaubte Referenzwert rein, fliesst dieses über den Dioden zu VDD
wieder raus. quasi überspannungsschutz.
2) Die zu messende Spannung geht bei geschlossenem Sampling Switch und
geöffnetem Discharge Switch in den Kondensator CHold. Da das ganze ja
sukzessive Approximation ist, wird der Wert im CHold mit einem anderen
Wert verglichen, aber welchem? Denn der Kondensator CHold wurde doch
jetzt mit unserem Eingangswert "aufgeladen".
Ich weiss nur, dass durch den Discharge Switch das gleichgewicht
hergestellt wird, wie bei einer Wage.
Oder wird der CHold mit der Referenzspannung aufgeladen, und mit der
Eingangsspannung in CPin verglichen?
Gruss,
StudentMax
Die Details darüber, was hier wie mit dem Eingangswert verglichen wird,
ist in dieser Teilschaltung nicht zu erkennen. Das ist eben nur ein
Input-Modell wie die Beschriftung auch sagt.
Lass mich raten, der µC ist ein PIC?
studentMax schrieb:> 1) über den ANx kommt meine zu messende Spannung rein. Kommt mehr als> der erlaubte Referenzwert rein, fliesst dieses über den Dioden zu VDD> wieder raus. quasi überspannungsschutz.
Ja, die Dioden sind aber nicht an die Referenz, sondern an Vdd und Vss
angeschlossen, die standard CMOS Eingangsschaltung.
> 2) Die zu messende Spannung geht bei geschlossenem Sampling Switch und> geöffnetem Discharge Switch in den Kondensator CHold.
Ja
> Da das ganze ja sukzessive Approximation ist, wird der Wert im CHold> mit einem anderen Wert verglichen, aber welchem?
Schau die mal an wie ein SAR ADC funktioniert:
https://en.wikipedia.org/wiki/Successive_approximation_ADC
Die Referenzspannung für den DAC ist die die du in einem ADCON regiter
eingestellt hast.
> Oder wird der CHold mit der Referenzspannung aufgeladen, und mit der> Eingangsspannung in CPin verglichen?
CHold wird mit der Eingangsspannung geladen.
https://de.wikipedia.org/wiki/Sample-and-Hold-Schaltung
Max H. schrieb:> Lass mich raten, der µC ist ein PIC?
Richtig geraten, ein PIC18!
> studentMax schrieb:>> 1) über den ANx kommt meine zu messende Spannung rein. Kommt mehr als>> der erlaubte Referenzwert rein, fliesst dieses über den Dioden zu VDD>> wieder raus. quasi überspannungsschutz.> Ja, die Dioden sind aber nicht an die Referenz, sondern an Vdd und Vss> angeschlossen, die standard CMOS Eingangsschaltung.>> 2) Die zu messende Spannung geht bei geschlossenem Sampling Switch und>> geöffnetem Discharge Switch in den Kondensator CHold.> Ja>> Da das ganze ja sukzessive Approximation ist, wird der Wert im CHold>> mit einem anderen Wert verglichen, aber welchem?> Schau die mal an wie ein SAR ADC funktioniert:> https://en.wikipedia.org/wiki/Successive_approximation_ADC> Die Referenzspannung für den DAC ist die die du in einem ADCON regiter> eingestellt hast.
Achso, das mit der Referenzspannung sieht man auf meinem Bildchen gar
nicht..
Naja bisschen komisch schon, denn im ADCON Register wird ja nicht die
ReferenzSpannung selbst eingestellt, sondern eher die Quelle der
ReferenzSpannung.(extern, intern)
1) Also CHold wird mit eingangsspannung aufgeladen.
Die Zeit in der der Kondensator CHold aufgeladen wird, ist die
Aquisition Time.
2) Jetzt wird der "Inhalt"des CHold mit dem Referenzwert verglichen, ist
Inhalt zu gross, wird der Disscharge Switch betätigt und die Wage wird
bisschen entlastet, und das immer so weiter. Daraus entsteht dann die
Bitkombination.
Ist das so richtig ?
LG
studentMax schrieb:> Achso, das mit der Referenzspannung sieht man auf meinem Bildchen gar> nicht..
Weil das nur das Input-Modell ist, und nicht der gesamte ADC.
> Naja bisschen komisch schon, denn im ADCON Register wird ja nicht die> ReferenzSpannung selbst eingestellt, sondern eher die Quelle der> ReferenzSpannung.(extern, intern)
Das habe ich auch gemeint, nur vllt. etwas undeutich ausgedrückt.
> 1) Also CHold wird mit eingangsspannung aufgeladen.> Die Zeit in der der Kondensator CHold aufgeladen wird, ist die> Aquisition Time.
Genau
> 2) Jetzt wird der "Inhalt"des CHold mit dem Referenzwert verglichen, ist> Inhalt zu gross, wird der Disscharge Switch betätigt und die Wage wird> bisschen entlastet, und das immer so weiter. Daraus entsteht dann die> Bitkombination.
Das wäre dann eher ein ADC nach dem Zählverfahren und würde
wahrscheinlich nicht gut funktionieren. Lies besser den oben verlinkten
Artikel...
P.S. Vergiss einmal das ANALOG INPUT MODEL, das zeig genau gar nicht von
der AD-Wandlung, nur die Sample-and-Hold-Stufe.
Ok hab mir jetzt das Kapitel Algorithm nochmal genauer durchgelesen.
ALSO:
CHold behält sein Wert, jedoch wird die Referenzspannung nur bei der
ersten Messung genommen. Die vergleichsstelle(alte Referenz) nimmt ab
bis Sie die gleiche Spannung hat wie der CHold.
Right?
studentMax schrieb:> Die vergleichsstelle(alte Referenz) nimmt ab> bis Sie die gleiche Spannung hat wie der CHold.
Sie muss nicht abnehmen, sie kann auch steigen. Der ADC tastet sich bit
für bit an das Ergebnis ran. Als erstes würd überprüft ob das MSB 0 oder
1 (Vin > Vref/2 oder <Vref/2), dann das nächste bis runter bis zum LSB.
Max H. schrieb:> studentMax schrieb:>> Die vergleichsstelle(alte Referenz) nimmt ab>> bis Sie die gleiche Spannung hat wie der CHold.> Sie muss nicht abnehmen, sie kann auch steigen. Der ADC tastet sich bit> für bit an das Ergebnis ran. Als erstes würd überprüft ob das MSB 0 oder> 1 (Vin > Vref/2 oder <Vref/2), dann das nächste bis runter bis zum LSB.
Das ist pure Spekulation. Auf diesem Bild ist nicht zu erkennen welche
ADC Topologie zum Einsatz kommt. Ob SAR, Flash, ... kann man nicht
sagen. Das was an auf dem Bild sieht haben alle ADC Topologien
gemeinsam.
Peter D schrieb:> Das ist pure Spekulation.
Kennst du einen PIC18 mit was anderem als einem successive approximation
ADC? Und das vom sukzessive Approximation wurde auch im Anfangspost
erwähnt.
studentMax schrieb:> 2) Die zu messende Spannung geht bei geschlossenem Sampling Switch und> geöffnetem Discharge Switch in den Kondensator CHold. Da das ganze ja> sukzessive Approximation ist, wird der Wert im CHold mit einem anderen> Wert verglichen
Nein.
> Ich weiss nur, dass durch den Discharge Switch das gleichgewicht> hergestellt wird, wie bei einer Wage.
Nein.
> Oder wird der CHold mit der Referenzspannung aufgeladen, und mit der> Eingangsspannung in CPin verglichen?
Nein.
Während der "Sample" Phase der AD-Wandlung wird der Kondensator C_hold
von seiner bisherigen Spannung (deren Wert unbekannt [1] ist) auf einen
Wert nahe der Eingangsspannung VA auf- bzw. umgeladen. In Abhängigkeit
von der Zeitkonstante des RC-Glieds aus C_hold und (R_s + R_ic + R_ss)
wird sich dabei eine Abweichung ergeben. Man muß nun die Länge der
Sample-Phase passend zu dieser Zeitkonstante und der tolerierbaren
Abweichung wählen. Meist ist die Länge der Sample-Phase als Vielfaches
der Periodendauer des ADC-Taktes vorgegeben, so daß die einzige Variable
der ADC-Takt ist.
[1] i.d.R. ist das die Eingangsspannung bei der vorhergehenden Messung.
Genau das ist die Stelle, wo die genaue Funktionswese des ADC ins
Spiel kommt. Es kann auch genauso gut sein, daß im Laufe der Wandlung
die Sample-Kapazität zwingend entladen wird, z.B. durch den
eingezeichneten Discharge-Schalter. Details wird das Datenblatt
enthalten.
Im Zweifelsfall sollte man einfach davon ausgehen, daß C_hold am anderen
Ende des Meßbereichs ist. Dann braucht man nur noch ein bisschen
elementare Mathematik und das Wissen um die e-Funktion, um Sample-Zeit
und RC-Zeitkonstante in Relation zu setzen. Oder die Faustformel: "0.1%
Abweichung entspricht 7 \tau"
Hallo,
Noch eine Frage:
Nachdem ich das GO Bit setze, startet meine eingestellte Acquisition
time in der der Kondensator aufgeladen wird.
ABER, laut Datenblatt : "When the GO bit is set, the A/D module
CONTINUES to sample the input for the selected acquisition time, then
automatically begins a conversion".
Das heisst also, dass sobald ich mein Channel auswähle und bevor ich das
Go bit setze, der Kondensator aufgeladen wird, und somit ist meine
acquisition time meine minimalste Zeit damit überhaupt saft in den
Kondensator rein kommt.
Scheint mir persönlich so richtig zu sein, ist es das auch? :P
Gruss!
studentMax schrieb:> Das heisst also, dass sobald ich mein Channel auswähle und bevor ich das> Go bit setze, der Kondensator aufgeladen wird, und somit ist meine> acquisition time meine minimalste Zeit damit überhaupt saft in den> Kondensator rein kommt.
Ja, der Ausgewählte Channel ist, außer währende der Wandlung, dauerhaft
mit dem sample Kondensator verbunden. Die acquisition Time ist dazu da,
dass der Kondensator auch eine Zeit lang geladen wird wenn ich z.B.
1
ADCON0.CHS = AN10
2
ADCON0.GO = 1
schreibe.
Der sample Kondensator wird nach der AD-Wandlung entladen, die
eingestellte acquisition Time garantiert dann auch, dass der Kondensator
Zeit hat um sich zu laden, wenn du z.B. im ADC-Interrupt sofort eine
neue Messung startest.
Aha okay, ist verständlich- danke!
Und beim Discharge wird der Kondensator ganz normal während 2 TAD
entladen.
Im Datenblatt steht:
" The array is discharged after every sample. This feature helps to
optimize the unity gain amplifier, as the circuit always needs to charge
the capacitor array, rather than charge/discharge based on previous
measure values".
Entweder kann ich kein Englisch, oder das widerspricht sich.
Kondensator wird doch entladen bevor ein neuer Sample gemacht wird, wo
ist denn da die optimisation von der unity gain amplifier?
lG
studentMax schrieb:> " The array is discharged after every sample. This feature helps to> optimize the unity gain amplifier, as the circuit always needs to charge> the capacitor array, rather than charge/discharge based on previous> measure values".>> Entweder kann ich kein Englisch, oder das widerspricht sich.
Der Kondensator wird nach dem Sample auf 0V entladen. 0V ist kleiner
gleich jeder Spannung die man mit dem ADC messen kann, also muss der
unity gain Amplifier den Kondensator bei jeder Eingangsspannung nur
laden. Das hilft anscheinen beim Optimieren des unity gain Amplifiers.
Hi
Sieh dir mal die AppNotes von Microchip zum ADC an. Dort findest du auch
etwas zum
>capacitor array,
Es gibt nämlich noch mehr als das nur das Dateblatt.
MfG Spess
Achso okay, das leuchtet mir ein. Sonst müsste er den Kondensator bei
nem neuen Sample erst entladen-das ist dann wohl mit unity gain
gemeint..
Zur der Bestimmung der Acquisition time, gibts nur diese Formel(Anhang)
Oder auch ne andere Methode wie man die bestimmt?
studentMax schrieb:> Zur der Bestimmung der Acquisition time, gibts nur diese Formel(Anhang)> Oder auch ne andere Methode wie man die bestimmt?
Was passt dir daran nicht, über die Kondensator-Ladeformel ist mMn der
einzig logische Ansatz.
Hm joa stimmt auch wieder. Dachte da würde was einfacheres geben, als
mit der Temeperatur zu arbeiten.
Ne andere Frage, im Datenblatt steht: "The GO bit should not be set in
the same instruction that turns on the ADC."
Wieso?
zwischen dem Einschalten und dem Setzen des GO bits gehe ich ja net noch
Kaffee trinken.....Desswegen hab ich ja meine Acquisition Time damit der
Kondensator da wenigstens seinen Saft bekommt.
lG
studentMax schrieb:> "The GO bit should not be set in> the same instruction that turns on the ADC."> Wieso?
Damit der ADC Zeit zum Einschalten hat. Erst durch das Setzen des ADON
bits wird der ADC überhaupt mit Strom versorgt.
> zwischen dem Einschalten und dem Setzen des GO bits gehe ich ja net noch> Kaffee trinken....
Wird auch nicht verlangt, nur nicht in gleichen Befehl, im Datenblatt
wird
Hey, hab noch eine Frage:
Ist es normal, dass wenn ich mein Eingangspin auf masse lege, dass mein
Lower Register, also ADRESL eine 1 ausspuckt? ADRESH zeigt ne 0 an. Lege
ich ihn auf seine maximale Referenzspannung dann zeigt er mir 255 an,
genau wie ADRESH.
Sonst:
ADCON2bits.ADCS=0b110;
ADCON1bits.PVCFG=0b00; // internal + Reference
ADCON1bits.NVCFG=0b00; // internal - Reference
ADCON0bits.CHS=0b00000; // AN0 channel
ADCON2bits.ADFM=0b1; // Right Justified
ADCON2bits.ACQT=0b101; // 10us
ADCON0bits.ADON=0b1; // ADC ON
ADCON0bits.GO=1;
while(ADCON0bits.GO==1); //warten bis Messung fertig ist.
Ja und wenn ich mir dann den Inhalt von ADRESL anzeige, steht da ne 1
wenn das ganze auf GND angeschlossen ist.
Ist das normal?
SOnst habe ich keine Probleme mit meinen Messungen
Gruss