Forum: Mikrocontroller und Digitale Elektronik LCR-Meter mit Audio ADC/DAC


von Jens W. (jensw)


Angehängte Dateien:

Lesenswert?

Hallo zusammen,

ich beschäftige mich mit der Theorie zu einem LCR-Meter.
Als Basis dazu dient das LCR-Meter von Elektor aus 2013.
Die Berechnung, die dahinter steckt, habe ich in den Anhang gepackt.

Die Idee ist nun einen Audio ADC und DAC zu verwenden. Die sind günstig 
und bieten eine hohe Auflösung.

Das wird so auch verwendet bei kommerziellen Geräten:
https://www.eevblog.com/forum/testgear/hioki-3522-lcr-meter-teardown/

Bei den Formalen geht es nun um den Term in der Klammer (2*Pi()*i/N). 
Das ist ja der Winkel. Aber wie muss ich den ändern, wenn man nicht über 
eine Periode, sondern über mehrere sampelt?
Wenn zum Beispiel der ADC mit 96kHz sampelt und die Messfrequenz bei 
10kHz liegt, dann bekommt man nur noch sehr wenige Stützstellen pro 
Periode, außer man sampelt über mehrere. Man muss also zwangsweise über 
mehrere Perioden sampeln. Für die Summenbildung danach sollte das ja 
kein Problem sein, da die Reihenfolge egal ist. Wichtig ist nur, dass 
man zu den Messwerten immer den richtigen Winkel hat.
Ich vermute man muss was mit Modulo machen, aber ich komme noch nicht 
dahinter.

Vielleicht kann mir jemand einen Hinweis geben, wie ich hier weiter 
komme.
Danke euch!

Grüße, Jens

: Bearbeitet durch User
von W.S. (Gast)


Lesenswert?

Jens W. schrieb:
> Wichtig ist nur, dass
> man zu den Messwerten immer den richtigen Winkel hat.

Das ist leichter gesagt/geschrieben als gemacht. Bedenke mal, daß deine 
Samples zu recht unterschiedlichen Zeiten (aus Sicht der Periode) 
hereinkommen und du erstmal weder die tatsächliche Amplitude noch den 
tstächlichen Winkel zur anderen Größe (also U zu I oder umgekehrt) hast.

Natürlich könnte man (auch bloß theoretisch) einen Sinus-Wellenzug an 
die diversen Stützstellen dranfitten, aber das ist ein elender Aufwand, 
zumal man das dann für beide Signale (U und I) machen müßte.

Obendrein hat man bei der Ausgabe der Erreger-Spannung per Software+DAC 
immer mit Latenzzeiten zu tun und auch ein etwaiges Filter hinter dem 
DAC kann noch die Phase beeinflussen. Folglich ist es keine wirklich 
gute Idee, sich auf eine sonstige Zeitbasis als Referenz zu verlassen 
und die beiden Winkel erstmal relativ zu dieser zu bestimmen, um danach 
daraus den Winkel zwischen U und I zu errechnen.

Soviel zu den Winkeln.
Dein nächstes Problem wäre die Bestimmung der beiden Amplituden. Wenn du 
das aus den Samples direkt machen willst, dann müßtest du zum einen 
exakt wissen, wo das jeweilige Sample innerhalb der Periode steht und 
dann eine Regression machen - aber keine lineare! Und das ist wieder ein 
elender Aufwand, bei dem vieles schief gehen kann.

Ansonsten hatte ich dir ja bereits geschrieben, auf welche Weise ich 
diese Klippen zu umschiffen probieren würde - allerdings ist davon noch 
nichts ausprobiert.

W.S.

von Gerald K. (geku)


Lesenswert?

Für das LCR-Meter kann man die Dreivoltmetermethode anwenden:

https://m.youtube.com/watch?v=aKmj7qD728A

Es reicht den **Spitzenwert** der drei Spannungen zu messen. Dann kann 
man die Impdanz bzw Real und Imaginärwert des Messobjekts errechnen.

von Achim S. (Gast)


Lesenswert?

Jens W. schrieb:
> Wichtig ist nur, dass
> man zu den Messwerten immer den richtigen Winkel hat.
> Ich vermute man muss was mit Modulo machen, aber ich komme noch nicht
> dahinter.

Ob du den Sinus von phi oder den Sinus von phi+x*2*pi berechnest, macht 
keinen Unterschied (solange x eine ganze Zahl ist). Dasselbe gilt für 
den Cosinus. Wenn du also über x Perioden aufsummieren willst, dann 
musst du einfach nur i von 0 bis x*N-1 laufen lassen.

Grundsätzlich müsstest du dann auch noch anstelle des Normierungsfaktors 
1/N einen Normierungsfaktor 1/(x*N) wählen. Allerdings spielt bei der 
Anwendung beim LCR-Meter ein Normierungsfaktor keine Rolle, solange es 
nur der identische Normierungsfaktor für die Strommessung wie für die 
Spannungsmessung ist. Bei der komplexen Berechnung von Z = U / I kürzt 
sich dieser Normierungsfaktor heraus.

W.S. schrieb:
> Obendrein hat man bei der Ausgabe der Erreger-Spannung per Software+DAC
> immer mit Latenzzeiten zu tun und auch ein etwaiges Filter hinter dem
> DAC kann noch die Phase beeinflussen. Folglich ist es keine wirklich
> gute Idee, sich auf eine sonstige Zeitbasis als Referenz zu verlassen
> und die beiden Winkel erstmal relativ zu dieser zu bestimmen, um danach
> daraus den Winkel zwischen U und I zu errechnen.

Offenbar beziehst du dich in deinem Beitrag auf einen anderen Thread des 
TO, den ich nicht kenne. Aber was die Anwendung beim LCR-Meter angeht: 
klar werden bei der Ausgabe der anregenden Sinusfunktion Latenzen und 
Phasenverschiebungen gegenüber der "internen" Zeitbasis auftreten. 
Deswegen wäre es tatsächlich problematisch, wenn man mit der internen 
Zeitbasis die jeweilige Phasenlage von U oder die Phasenlage von I 
bestimmen wollte.

Aber wenn man sich nur die Phasenlage von Z=U/I interessiert, kürzen 
sich identische Phasenverschiebungen von beiden gegenüber der internen 
Zeitbasis heraus. Man kann also mit einer beliebigen Definition der 
Phasenlage 0 arbeiten (auch mit der "internen Zeitbasis"), die 
Phasenlage des berechneten Z wird dadurch nicht verfälscht. 
Vorausgesetzt, dass sowohl die Momentanwerte von u(t) als auch die 
Momentanwerte von i(t) im identischen Zeitraster abgetastet werden/auf 
die identische interne Zeitbasis bezogen werden.

von Rezy (Gast)


Lesenswert?

Moin,

grundsätzlich wird in deinem Beispiel eben nur ein Koeffizient der DFT 
berechnet. Durch den Trick, dass die d_i eine Periode abbilden soll, 
klappt das so wie dort beschrieben.

Die (normierte) DFT ist allgemein

Für den Realteil gilt bspw. also

Wenn man annimmt, dass genau eine Periode über N Werte gesampled wird, 
erhält man für k = 1 den Fourierkoeffizienten der Schwingung. Das hast 
du aber nicht, also musst du dir anders behelfen.

Mit der Messfrequenz 10 kHz und fs = 96 kHz, kannst du 48 Messwerte 
aufnehmen. Damit hast du exakt 5 Perioden des Messsignals abgetastet. 
Gilt also N = 48 und setzt du k = 5, berechnest du den richtigen 
Fourierkoeffizienten. Also bspw.
wobei x(n) den 48 Messwerten entspricht.

Du musst also sicherstellen, dass die Stützstellen deiner DFT deine 
Frequenz genau treffen und eben diesen Koeffizienten bestimmen.

von Jens W. (jensw)


Angehängte Dateien:

Lesenswert?

Hallo Achim,

ich hatte noch ein bisschen weiter gemacht, bevor es hier weiter ging. 
Es hat mir einfach keine Ruhe gelassen.
Ich bin zu der gleichen Erkenntnis gekommen wie du.

Ich habe mit dem Oszi ein paar Werte aufgenommen und das mal gemessen.
Ich habe euch den Messaufbau und den Kurvenverlauf angehängt. Die 
Ergebnisse, die ich für die Berechnungen genommen habe, sind die vom 
Oszilloskop. Da sah das genau so aus. Nur die Amplituden waren ein 
bisschen höher. Den Phasenwinkel habe ich mir vom Oszi ausgeben lassen.

Aus all den Werten habe ich eine Excel Tapete gebaut, die die 
Berechnungen durchführt.
Und mit den Hinweisen, die du gegeben hast, funktioniert das erstaunlich 
gut.

Zur Excel-Tapete:
Auf der linken Seite werden die Werte vom Oszi eingetragen.
Daraus erzeuge ich mir auf der zweiten Seite die Sinusverläufe von 
Spannung und Strom, so wie sie im Speicher liegen würden, wenn es ein 
echtes Messgerät wäre. Und aus den Werten berechne ich dann Z und alle 
weiteren Werte.

Zur Phasenlage:
Da habt ihr sicher Recht. Da muss man aufpassen, wenn man das echt 
aufbaut, aber im Moment bin ich ja mit der bloßen Theorie beschäftigt. 
Da muss es erstmal funktionieren, bevor man an den Aufbau geht.


Grüße, Jens

von Alois (Gast)


Lesenswert?

Rezy schrieb:
> Mit der Messfrequenz 10 kHz und fs = 96 kHz, kannst du 48 Messwerte
> aufnehmen. Damit hast du exakt 5 Perioden des Messsignals abgetastet.
> Gilt also N = 48 und setzt du k = 5, berechnest du den richtigen
> Fourierkoeffizienten.
>
> Du musst also sicherstellen, dass die Stützstellen deiner DFT deine
> Frequenz genau treffen und eben diesen Koeffizienten bestimmen.

Agree.

Was aber passiert, wenn man die Frequenz nicht genau trifft, d.h. über 
nicht komplette Perioden sampelt (z.B. wegen Störsignalen)? Ja, auch 
dafür gibt es Lösungen (windowing, stacking, ...). Aber welche 
Messfehler sind damit zu erwarten?

Bevor ich "komplexe" Messverfahren in Betracht ziehen würde, hätte ich 
erst mal sämtliche schwachen Ecken abgeklopft, Beispiele von 
problematischen Fällen modelliert - und diese mit 'modernen' Werkzeugen 
(octave?) abgeklopft.

Ob ich aber unbedingt auf eine Elektor aus 2013 aufsetzen würde - also 
ich weiss nicht. Üblicherweise setzt man besser auf Messverfahren 
bekannter Geräte auf, recherchiert in Firmenschriften, klappert mal die 
bestehenden Patente ab.

Dies o.g. Quelle (eevblog) ist jedenfalls schon mal kein schlechter 
Ansatz. Auch wurden dort andere Geräte schon genannt.

just my 2ct

von Achim S. (Gast)


Lesenswert?

Alois schrieb:
> Was aber passiert, wenn man die Frequenz nicht genau trifft, d.h. über
> nicht komplette Perioden sampelt (z.B. wegen Störsignalen)? Ja, auch
> dafür gibt es Lösungen (windowing, stacking, ...). Aber welche
> Messfehler sind damit zu erwarten?

Nehmen wir das Beispiel von Rezy: eine Messfrequenz von 10kHz und ein 
Sampling über 5 Perioden. Das brächte einen neuen Messwert alle 0,5 ms - 
etwas, das für eine Anzeige eines LCR-Meters völlig unnötig schnell wäre 
(und damit auch unnötig ungenau). Ein normales Multimeter zeigt auch 
nicht alle 0,5ms einen neuen Wert an sondern mittelt wesentlich länger 
(um genauere Ergebnisse zu erhalten).

Mein eigenes LCR-Meter hat als Mindest Integrationsdauer eine Zeit von 
200 ms. Die genaue Integrationsdauer wird dann so angepasst, dass sie im 
Rahmen der Abtastrate möglichst genau bei einem ganzzahligen Vielfachen 
der Messperiode liegt.

Wenn die Mindest Integrationsdauer 200ms beträgt hat man 2000 
vollständige Schwingungen der 10kHz Messfrequenz abgedeckt und trifft 
dann ggf. mit dem allerletzten Sample nicht mehr die exakte 
Periodendauer. Das ergibt noch einen "Randeffekt", aber 2000 Perioden 
sind vollständig abgedeckt und nur die letzte Periode des Messignals ist 
zu maximal (10k/96k)=10% daneben - da hält sich der Fehleranteil in 
Grenzen.

Eine ausreichend lange Integrationsdauer bzw. Wartezeit bis zur 
Erfassung eines neuen Messwerts kann auch deswegen sinnvoll und 
notwendig sein, weil einige Messobjekte (mit hoher Güte) z.B. nach einem 
Wechsel der Messfrequenz erst mal ein ausreichend lange Einschwingzeit 
benötigen, ehe wirklich die stationären Sinuskurven für Strom und 
Spannung vorliegen.

von Jens W. (jensw)


Lesenswert?

Hallo Alois,

deine Bedenke über Elektor sind sicher richtig. Da hat die Qualität 
stetig abgenommen und heute braucht man die Zeitung (zumindest ich) 
nicht mehr.
Am deutlichsten sieht man das, wenn man die Neuauflage des LCR-Meters 
von 2019 mit der Version von 2013 vergleicht.
Heute sind keine Grundlagen mehr erklärt. Der Artikel aus 2019 liest 
sich eher wie eine Hymne auf sich selbst. Das ist nicht mein Ding.

Aber was das Messverfahren angeht, stimme ich nicht mit dir überein. 
Klar gibt es Verfahren, die deutlich einfacher sind. Beträge und Phase 
messen und ein bisschen Rechnen, dann ist man fertig.
Aber der Unterschied ist, dass man dazu deutlich mehr Aufwand auf der 
Leiterplatte treiben muss. Man braucht sehr genaue Gleichrichter und 
Phasendetektoren. Sonst wird das nichts. Und wenn da ein bisschen 
Rauschen drauf ist, wird das ebenfalls ungenau.

Den Vorteil, den ich in dem Verfahren sehe ist, dass man wenig 
Schaltungsaufwand hat. Ein zweikanaliger, hochauflösender ADC reicht 
aus. Der Rest ist Mathematik. Für mich hat das was.
Und nachdem man da nicht viel Hardware braucht, kann man sowas auch auf 
einem Evalboard implementieren für einen Versuch.

Grüße, Jens

von W.S. (Gast)


Lesenswert?

Jens W. schrieb:
> Aber was das Messverfahren angeht, stimme ich nicht mit dir überein.

Frei nach Friedrich II: Bei mir kann jeder nach seiner Facon seelich 
werden, solange wie er seine Steuern pünktlich zahlt...

Also, was der Achim da eingeworfen hat, ist berechtigt: Ein RLC-Meter 
für den menschlichen Gebrauch braucht bloß alle 200..500 ms eine neue 
Zahl auf dem Display zu bringen.

Da hat man bei 10 kHz Meßfrequenz 2000 bis 5000 Perioden Zeit. Das legt 
nahe, daß man über diese Zeit mittelt, wobei eben auch das Nicht-Treffen 
der exakten Perioden sich nur noch marginal auswirkt. Und dazu braucht 
man keine zusätzliche Analogtechnik, sondern eben nur eine passende 
Anzahl von Rechenoperationen im µC.

W.S.

von Jens W. (jensw)


Lesenswert?

Hallo,

so dachte ich eben auch.

Ich werde es mal ausprobieren und dann berichten.
Danke an alle!

Grüße, Jens

von Jobst M. (jobstens-de)


Lesenswert?

Jens W. schrieb:
> Ein zweikanaliger, hochauflösender ADC reicht
> aus.

Er sollte auch genau sein. Und das sind Audio ADCs nicht. Die sind 
rauscharm und bieten all das, was man für Audio benötigt. Aber eben 
nicht für Messtechnik zu gebrauchen.
Schau Dir mal den ADS131A02 an.

Gruß
Jobst

von Jens W. (jensw)


Lesenswert?

Hallo Jobst,

was man braucht ist vor allem ein ADC mit wenig Linearitätsfehler.
Das sollten die Audio ADCs können.

Dass die nicht genau sind, das stimmt, aber dafür linear.
Der Gain Error und der DC Error sind nicht so toll. Da man aber den ADC 
sowieso kalibrieren muss, lässt sich das heraus rechnen.

Ein ähnliches Problem hatte ich schon einmal bei einem analog Frontend 
Chip von Analog Device für Smart Meter Anwendungen. Da hatte ich mich 
auch gewundert, dass der ADC bei kurzgeschlossenen Eingängen komische 
Werte ausgegeben hatte. Da hat sich dann heraus gestellt, dass das der 
DC Offset war.
Im Datenblatt gingen die dann davon aus, dass eine 
Zweipunkte-Kalibrierung durchgeführt wird. Danach waren die Ergebnisse 
beeindruckend!
(So erhoffe ich mir das auch von den Audio ADCs).

Aber ein bisschen vorsichtig bin ich auf jeden Fall noch.
Wie gesagt, es kommt mir ja auf einen Versuch an. Das ist ja gerade das 
was ich heraus finden will.

von Jens W. (jensw)


Lesenswert?

Was ich schon heraus gefunden habe ist, dass der absolute Winkel (also 
wann die Werte gesampelt werden) keine große Rolle spielt, bei diesem 
Verfahren.

Es spielt keine Rolle an welcher Stelle man während einer Periode 
anfängt. Da brauche ich keinen weiteren Komparator für den 
Nulldurchgang.

Was aber absolut wichtig ist:
Der Phasenbezug zwischen den beiden Messsignalen (Strom und Spannung) 
muss unbedingt konstant sein! Ein Winkeloffset lässt sich heraus 
rechnen. Aber der darf über Frequenz nicht variieren, sonst wird es 
schwierig.

Ebenso ein DC Offset auf dem Eingangssignal spielt keine Rolle.
Das rechnet sich automatisch durch die DFT heraus.

Grüße, Jens

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
Noch kein Account? Hier anmelden.