mikrocontroller.net

Forum: Analoge Elektronik und Schaltungstechnik Integrierender AD-Wandler ( single slope )


Autor: HP Man (hp2016)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: Helmut S. (helmuts)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.)

: Bearbeitet durch User
Autor: HP Man (hp2016)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Also heißt es ich muss einen Schalter einbauen, der zwischen dem 
Integrierer und dem Wandler in einer bestimmten Zeit T schaltet?

Autor: Helmut S. (helmuts)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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)

: Bearbeitet durch User
Autor: Axel Schwenke (a-za-z0-9)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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/c...

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.

Autor: Helmut S. (helmuts)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>> 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.

: Bearbeitet durch User
Autor: Dieter Werner (dds5)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.

Autor: Axel Schwenke (a-za-z0-9)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.

Autor: Axel Schwenke (a-za-z0-9)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.

: Bearbeitet durch User
Autor: HP Man (hp2016)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: HP Man (hp2016)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
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.

Autor: Helmut S. (helmuts)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.

: Bearbeitet durch User
Autor: HP Man (hp2016)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
und wie könnte ich das realisieren?

Autor: Helmut S. (helmuts)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Einfach den Reset des Zählers und den Takt des Ausgangsregisters mit 
eigener Pulsquelle ansteuern.

Autor: HP Man (hp2016)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das habe ich doch bereits gemacht, verwende den Reset(Pulsgenerator) 
fürs resetten beim Zähler und Ausgangsregister

Autor: Helmut S. (helmuts)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.

Autor: HP Man (hp2016)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.

: Bearbeitet durch User
Autor: Helmut S. (helmuts)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.

Autor: HP Man (hp2016)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: Helmut S. (helmuts)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.

Autor: Helmut S. (helmuts)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
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.

: Bearbeitet durch User
Autor: HP Man (hp2016)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
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.

Autor: Helmut S. (helmuts)
Datum:

Bewertung
1 lesenswert
nicht lesenswert
Mir fällt auf dass dein Zähler überläuft. Q7 wird 1 und dann wieder 0. 
Das ist ganz schlecht. Nimm eine niedrigere Taktfrequenz, z. B. die 
Hälfte.

Autor: HP Man (hp2016)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
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.

Autor: Helmut S. (helmuts)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Es ist falsch den Zähler gleich am Ende des Zählvorgangs zurück zu 
setzen. Zuvor muss der Zählerstand in das Ausgangsregister geladen 
werden.

Autor: HP Man (hp2016)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
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??

Autor: HP Man (hp2016)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Vielen Dank für eure Hilfe, habe es nun hinbekommen.

Autor: Helmut S. (helmuts)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hier mal zwei Dual-Slope Versionen für LTspice.

Autor: HP Man (hp2016)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
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.

Autor: Helmut S. (helmuts)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> 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.

: Bearbeitet durch User
Autor: Axel Schwenke (a-za-z0-9)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.

Autor: HP Man (hp2016)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.

Autor: Axel Schwenke (a-za-z0-9)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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...

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.