Hallo alle zusammen,
ich bin grad dabei einen AD-Wandler ( integrierenden ) zu entwerfen. Ich
muss es mit dem Single Slope Verfahren realisieren.
Aber leider habe ich am Ausgang nur eine DC Spannung, obwohl an dem
Wandler eine Steighung anliegt.
Als clock habe ich eine Frequenz von ca. 50kHz.
habe vieles ausprobiert, komme aber nicht zu einer Lösung, hoffe das ich
hier eine Lösung finden kann.
Danke schonmal für die hilfe
Deine Wandlerschaltung ist nicht vollständig. Da fehlt ein Schalter am
Eingang damit z. B. 0,1s integriert wird. Danach muss eine Rampe starten
die mittels Komparatoren(2) die integrierte Eingangsspannun mit der
Rampenspannung vergleicht. Der Ausgang der Komparatoren wird UND
verknüpft und dient als Gate-Signal für den Zähler. (Fenster Komparator:
Komparator 1 vergleicht mit 0V, Komparator 2 vergleicht mit der
integrierten Eingangsspannung.)
Der Schalter muss vor dem Integrator sein. Der bewirkt, dass das Signal
z. B. 100mms integriert wird. Kurz davor muss der Integrator natürlich
auf 0V gesetzt werden. (C kurzschließen)
Helmut S. schrieb:> Deine Wandlerschaltung ist nicht vollständig. Da fehlt ein Schalter am> Eingang damit z. B. 0,1s integriert wird.
Nein. Du hast den Einflanken-ADC noch weniger begriffen als der TE.
Die Grundidee ist, einen Integrator dafür zu verwenden, eine lineare
Rampe zu erzeugen. Diese Rampe wird dann durch einen Komparator mit dem
Eingangssignal verglichen. Am Ausgang des Komparators bekommt man einen
Impuls, dessen Länge direkt proportional zur Eingangsspannung ist. Die
Länge des Impulses kann man wiederum digitalisieren, indem man einen
Zähler für die Dauer des Impulses eine geeignete (konstante) Frequenz
zählen läßt.
Was der Schaltung des TE fehlt, ist die Ablaufsteuerung, die einen neuen
Meßvorgang startet, wenn der Komparator umgeschaltet hat. Im einfachsten
Fall kann man die Schaltung so auslegen, daß mit dem Kippen des
Komparators der Zählerstand abgespeichert und der Integrator
zurückgesetzt wird. Der ADC startet sich dann am Ende einer Messung
selber wieder neu.
Prinzip hier:
http://www.allaboutcircuits.com/textbook/digital/chpt-13/slope-integrating-adc/
Allerdings würde man zwischen den Ausgang des Komparators und den
Entlade-FET // Latch // Zähler-Reset noch ein Monoflop schalten wollen.
Nur so kann man sicherstellen, daß der Integrator-C wirklich entladen
ist und daß es kein race zwischen Zähler-Reset und Latch gibt.
Praktisch baut man sowas natürlich nicht, weil es zu viele Nachteile
hat. Aber das Prinzip ist leidlich einfach zu verstehen.
>> Helmut S. schrieb:>> Deine Wandlerschaltung ist nicht vollständig. Da fehlt ein Schalter am>> Eingang damit z. B. 0,1s integriert wird.>Nein. Du hast den Einflanken-ADC noch weniger begriffen als der TE.>>Die Grundidee ist, einen Integrator dafür zu verwenden, eine....
Ich ging und gehe immer noch davon aus, dass der Fragesteller als Zusatz
einen Integrator haben will um überlagerte Störungen(Netzbrumm) zu
filtern. Dass man zusätzlich einen Rampengenrator benötigt ist ja
selbstverständlich.
Allerdings muss man zugeben, dass man bei dem Aufwand besser gleich das
Dual-Slope Verfahren nimmt. Dort macht ein Integrator schon filtern und
umsetzen.
Unter einem in der Überschrift genannten integrierenden AD-Wandler
versteht man üblicherweise ein Konzept, bei dem das Messsignal
integriert wird.
Ein single slope Wandler enthält zwar einen Integrator, der integriert
jedoch die Referenz und macht nur einen Augenblickswert Vergleich mit
dem Messsignal.
Dieter W. schrieb:> Unter einem in der Überschrift genannten *integrierenden AD-Wandler*> versteht man üblicherweise ein Konzept, bei dem das Messsignal> integriert wird.
Klar. Wie bereits gesagt: der TE hat den Einflanken-ADC nicht
verstanden. Sonst würde er ihn nicht als integrierenden ADC betiteln.
Andererseits geht es ihm offenkundig nur um die Simulation, also das
Verstehen der Funktionsweise. Über die Nachteile/Probleme dieses
Wandlerprinzips müssen wir uns also nicht auslassen. Das steht
(hoffentlich) alles in seinem Buch drin.
Die Namen "Eingang" und "Vin" sind natürlich super gewählt.
Es geht beides:
1. an "Eingang" das Signal und an "Vin" die Referenz.
Dann wird das Signal integriert.
2. an "Eingang" die Referenz und an "Vin" das Signal
Dann wird die Referenz integriert, was nicht sonderlich schlau ist, da
die eh schon stabil sein wird.
Peter D. schrieb:> Die Namen "Eingang" und "Vin" sind natürlich super gewählt.
Jep.
> Es geht beides:> 1. an "Eingang" das Signal und an "Vin" die Referenz.> Dann wird das Signal integriert.
Was nicht sonderlich sinnvoll ist. Denn dann wäre die Länge des Impulses
am Komparator-Ausgang proportional zum Kehrwert der Eingangsspannung.
Bei 0V Eingangsspannung würde die Messung nie fertig werden.
> 2. an "Eingang" die Referenz und an "Vin" das Signal> Dann wird die Referenz integriert, was nicht sonderlich schlau ist, da> die eh schon stabil sein wird.
Daß die Referenzspannung stabil ist und trotzdem integriert wird, ist
kein Widerspruch. Ich sage es gerne nochmal: der Einflanken-ADC ist
kein integrierender Wandler. Der Integrator ist hier nur ein Detail
der Realisierung. Die lineare Rampe könnte man genauso gut durch die
Aufladung eines Kondensators mit einem Konstantstrom erzeugen.
Vielen Dank für die Infos, bin grad dabei es nach und nach zu testen.
Lediglich kommt jetzt in Simetrix ein Fehler beim ausführen: "Timestep
to small"
was könnte ich das googeln, damit ich das Problem lösen kann. Timestep
to small kamen nicht so viele sinnvolle Beiträge.
lege die aktuelle Schaltung nochmal bei.
vielen Dank im voraus
So, ich hab jetzt ein lauffähige Simulation erstellt.
Jedoch funktioniert die Wandlung nicht. Ich hab am Ausgang nicht meine
Eingangsspannung.
Wo könnte der Fehler sein? Würde mich auf jede Antwort freuen.
Man kann nicht den Zähler mit RESET zurücksetzen und genau in dem Moment
das Ausgangsregister takten. Zuerst muss die aktive Taktflanke am
Register-Clk kommen und danach erst der Reset für den Zähler.
HP M. schrieb:> Das habe ich doch bereits gemacht, verwende den Reset(Pulsgenerator)> fürs resetten beim Zähler und Ausgangsregister
Genau das ist doch der Fehler.
Zuerst einen Puls zum Laden des Ausgangsregisters erzeugen.
Erst danach darf ein späterer Puls den Zähler zurücksetzen.
Achso, jetzt macht es Klick.
Und wie sollten die Pulse definiert sein?
Habe für den Reset des Zählers, die Zeit genommen, wo der Komparator auf
Low ist. Diese Zeit ist der High Pegel an meinem Pulse. Also theoretisch
invertierten Komparator Ausgang.
In SPICE kannst du doch einfach eine neue Pulsquelle dazumachen. Da muss
nicht eine Quelle alles erledigen. Auch in einer real aufgebauten
Schaltung muss man dafür ein paar Teile extra einwerfen.
Ne, dass habe ich verstanden, dass beide separat geschaltet müssen. Doch
wie ist das Verhältnis zu den Pulsquellen? Parameter mäßig, was müsste
ich da annehmen?
Aber Helmut, du hast mir schon ziemlich weit geholfen. Danke dir dafür
Pulse(0 4 delay 10n 10n ton tperiode)
Einfach passende Zahlen einsetzen damit der gewünschte Puls herauskommt.
Für Trise und Tfall habe ich schon mal 10n hingeschrieben.
Hier mal ein allgemeines Beispiel für den integrierenden Single Slope
A/D Wandler mit LTspice. Den zip-file am besten in einem neuen
Verzeichnis auspacken.
Ich habe das jetzt so gemacht, wie es mir beschrieben wurde, jedoch
zählt der Wandler nicht richtig. habe am Ausgang die dreieckspannug mit
einer Spitze von 250v.
Das zählen tut er nur in der Integrationsphase, aber warum passt der
Wert dann nicht?
Der takt für den Register hat selbe Frequenz wie bei Zähler. Wenn ich
den Takt einen Delay gebe, dass er erst nach dem Reset aktiv wird, zählt
es nicht garnicht.
Habe jetzt 25k genommen für den Takt, dabei ist lediglich am Ausgang die
Spannung auf 150V runtergesunken. Aber trotzdem ist dies nicht
proportional zum Eingang. Habe nämlich am Eingang 5V.
So habe jetzt einen Delay von 10u am Reset Eingang des Zählers
eingebaut, sodass das Reseten erst nachdem die Zahl am Zähler an dem
register übergeben wurde, resetet wird.
Aber trotzdem komme ich auf ca. 220V. Könnte das stimmen??
Danke Helmut erstmal.
Bei meiner Version funktioniert das Switchen zwischen den beiden
Spannungen nicht so richtig. Nachdem ich die 0V ( bei mir 6V) erreicht
habe, sollte die Integration von Referenzspannung aufgehört und zur
Eingangsspannung gewechselt werden. Das tut es bei mir nicht, weil die
Steuerspannungen von den Schalter es nicht zu lassen.
Wenn ich versuche, den Ausgang vom Komparator als Steuerspannung für den
Schalter zu nehmen, funktioniert es auch nicht, weil ich dann
undefinierte Zustände habe, wo beide Steuerspannungen auf High oder Low
sind.
Wie könnte ich das Problem umgehen, dass er ab der gewünschten
Referenzspannung am Komparator zur anderen Quelle wechselt?
Lade noch meine Schaltung und Ausgänge hoch. Dabei ist OUT1 meine
Komparatorspannungen und die anderen 2 meine Steuerspannungen.
> Nachdem ich die 0V ( bei mir 6V) erreicht
habe, sollte die Integration von Referenzspannung aufgehört und zur
Eingangsspannung gewechselt werden.
Dual-Slope funktioniert anders
1. Kondensator entladen. Dabei sind die Schalter für die
Eingangsspannung und die Entladespannung aus.
2. Eingangsspannung für z. B. 100ms integrieren.
3. Danach mit der Entladespannung integrieren bis der Kondensator wieder
entladen ist. Diese Zeitspanne ist die Messzeit des Zählers.
Bei Dual-Supply ist die Entladespannung die Referenzspannung. Bei Single
Supply ist die Entladespannung 0V.
HP M. schrieb:
Falls du es nicht gemerkt hast: du bist im falschen Thread. Du hast zwar
einen zweiten Thread für den Zwei-Flanken-ADC aufgemacht, postest jetzt
aber wieder im ersten Thread für den Ein-Flanken-ADC.
> Bei meiner Version funktioniert das Switchen zwischen den beiden> Spannungen nicht so richtig.
Kein Wunder. Beim Zwei-Flanken-ADC ist zwar die Integrationszeit für die
Eingangsspannung konstant (und kann folglich durch eine Pulsquelle
vorgegeben werden). Die Integrationszeit für die Referenzspannung
hingegen ist nicht konstant. Das ist ja gerade die abgeleitete Größe.
> Wenn ich versuche, den Ausgang vom Komparator als Steuerspannung für den> Schalter zu nehmen, funktioniert es auch nicht, weil ich dann> undefinierte Zustände habe, wo beide Steuerspannungen auf High oder Low> sind.
Dann mach es richtig.
Bis jetzt hast du immer nur den trivialen Teil deiner ADC simuliert
(Integratoren, Schalter). Der wesentlich spannendere Teil ist aber die
Erzeugung der Steuerspannungen. Der Ein-Flanken-ADC kann noch mit einem
statischen Timing betrieben werden. Beim Zwei-Flanken-ADC geht das
nicht. Da ist das Timing abhängig von der Eingangsspannung.
Du wirst also in den sauren Apfel beißen müssen, die Steuerlogik
ebenfalls zu simulieren.
Das es bei den Einflanken ADC mit einem statischen Timing funktioniert
und bei dem Zwei Flanken ADC nicht, ist nachvollziehbar. Bei dem Dual
Slope ist die integrationszeit der Referenzsspannung abhängig von der
Referenz am Komparator.
Genau da hänge ich seit mehreren Tagen. Habe bereits versucht diese
Logik mit Gattern u.a. Flipflops zu realisieren, es haut aber nicht hin.
Ich komme immer an die undefinierten Zustände, wo ich dann keine
Integration am Ausgang während dieser Zeit habe.
HP M. schrieb:> Das es bei den Einflanken ADC mit einem statischen Timing funktioniert> und bei dem Zwei Flanken ADC nicht, ist nachvollziehbar. Bei dem Dual> Slope ist die integrationszeit der Referenzsspannung abhängig von der> Referenz am Komparator.
Meine Rede.
> Genau da hänge ich seit mehreren Tagen. Habe bereits versucht diese> Logik mit Gattern u.a. Flipflops zu realisieren, es haut aber nicht hin.> Ich komme immer an die undefinierten Zustände, wo ich dann keine> Integration am Ausgang während dieser Zeit habe.
Ich weiß ja nicht, woran genau es hängt. Aber für das generelle Timing
könntest du ja mal in ein einschlägiges Datenblatt schauen. ICL7106 wäre
ein Klassiker aus der Gattung Zweiflanken-ADC.
Wenn es um die Implementierung der Steuerlogik geht: am einfachsten ist
es wohl, ein synchrones Zeitregime vorzusehen. Also eine Taktquelle,
einen hinreichend langen Zähler und dann die entsprechenden Zeitbereiche
(vulgo: Zählerstände) ausdecodieren.
Mal so als Beispiel:
Zählerstand 0..999 - Zähler nullen, Integrator nullen
1000 .. 1999 - Integration der Eingangsspannung
2000 .. max. 2999 - Integration der Referenzspannung
3000 - Übernahme des Zählerstandes in das Latch und Sprung nach 0
Die Phase von 2000 bis 2999 läuft dein Zähler zwar durch, der Schalter
für die Integration der Referenzspannung bleibt aber nicht die ganze
Zeit geschlossen, sondern wird bei 2000 eingeschaltet und beim Umkippen
des Komparators wieder aus. Hier brauchst du offensichtlich ein
Flipflop.
Kann man natürlich nach Belieben variieren. Eventuell nimmt man andere
Zählerstände die sich leichter ausdecodieren lassen. Oder man macht die
Zero-Phase kürzer. Oder man nimmt hier oder da ein Monoflop dazu.
Aber erst, wenn du diesen Teil mal in der Simulation zusammengeklickt
hast und er funktioniert; erst dann kannst du behaupten daß du den ADC
wirklich verstanden hast. Denn für die Funktionsweise von Integrator,
Analogschalter und Komparator braucht man ja wohl keine Simulation...