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
:
Bearbeitet durch User
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.
:
Bearbeitet durch User
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.
Okay, denke das müsste jetzt klar sein. Das heisst jenachdem wird VRef mitgenommen oder halt weggelassen. Vielen dank für deine Tolle Hilfe!
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.
:
Bearbeitet durch User
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"
:
Bearbeitet durch User
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.
:
Bearbeitet durch User
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
1 | MOVLW B'00000001' ;AN0, ADC on |
2 | MOVWF ADCON0 ; |
3 | BSF ADCON0,GO ;Start conversion |
empfohlen.
:
Bearbeitet durch User
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
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.