Forum: Analoge Elektronik und Schaltungstechnik Offset von Fluxgate


von Stephan W. (wus)


Lesenswert?

Liebes Forum!
Schon öfters fand ich hier Rat zu offenen Fragen sowie Inspirationen für 
meine "Alltagsprobleme". Geschrieben habe ich noch nie, da ich immer 
etwas Passendes gefunden habe.
Für eine Anwendung verwende ich einen MAG670 von Bartington 
http://www.bartington.com/mag670-compact-single-axis-magnetic-field-sensor
Dieser gibt mir als Signal eine Spannung (+- 10V) aus, welche direkt dem 
gemessenen Magnetfeld entspricht. Hierbei gilt: DC-Offset entspricht dem 
Erdmagnetfeld oder statischen Magnetfeld, überlagertes entspricht der 
Störung im Magnetfeld (z.B. bewegte Eisenmasse oder 50 Hz Sinus des Netz 
nahe des Sensors). Gerne messen möchte ich nun die erwähnten Störungen 
ohne das Erdmagnetfeld.
Wenn man jedoch an ein Stück Eisen welches nahe am Sensor langsam bewegt 
wird denkt, wird klar, dass ich trotzdem „DC“ benötige. Setze ich direkt 
einen Hochpassfilter ein (Ähnlich zu Audio-Technik) verliere ich zu viel 
Information zu sehr langsamen Schwankungen. Da sich das statische Feld 
je nach Ort an dem mein Sensor liegt ändert, fällt ein Widerstandsteiler 
bei der Sensorentkopplung (einfacher Impedanzwandler) auch ins Wasser. 
Weiter versucht habe ich es mit einem Integrator, dessen Ausgang ich vom 
Eingangssignal abziehe, dies hat leider auch nicht wirklich geklappt.
Grundgedanke hinter diesem Offset-Spiel: Ich messe ein Signal mit 
Erdmagnetfeld und Überlagerung. Das Erdmagnetfeld entspricht einer 
Spannung von -7V dazu kommt die Überlagerung von etwa +-50mV. Mein 
A/D-Wandler (Darf ich nicht wechseln) bietet mir nun als mögliche 
Spannungsbereiche +- 10V, +-5V und +- 2.5V. Damit ich mein Signal nun 
überhaupt digitalisieren kann muss ich den +-10V Bereich benutzen. Um 
eine genauere Messung zu erhalten, wäre es jedoch wünschenswert, wenn 
ich die +7V wegkriege und mit dem restlichen Signal in dem +-2.5V 
Bereich messen könnte.
Hat irgendjemand einen Schaltungsvorschlag oder einen Tipp zu diesem 
Problem?

: Verschoben durch User
von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

Stephan W. schrieb:
> einen Tipp zu diesem Problem?
Nimm einen Operationsverstärker und bastle daraus einen Subtrahierer, 
der dir die 7V Offset abzieht...

: Bearbeitet durch Moderator
von Achim S. (Gast)


Lesenswert?

Stephan W. schrieb:
> Damit ich mein Signal nun
> überhaupt digitalisieren kann muss ich den +-10V Bereich benutzen. Um
> eine genauere Messung zu erhalten, wäre es jedoch wünschenswert, wenn
> ich die +7V wegkriege und mit dem restlichen Signal in dem +-2.5V
> Bereich messen könnte.

Na ja, das sind zwei Bit mehr Auflösung. Und ob die Genauigkeit dabei 
wirklich größer wird muss man erst mal schauen, da dein 
Offset-Subtrahierer ja auch Fehler hat. Welchen ADC musst du denn 
benutzen?

Wo willst du denn die Grenze ziehen: was ist eine "sehr langsame 
Feldänderung", die du noch sehen willst. Und ab welcher Frequenz ist es 
ein "variabler DC-Offset", den du unterdrücken willst? Prinzipiell 
sollten deine beiden bisherigen Ansätze schon funktionieren 
(Hochpassfilter, Integrator in der Rückkopplung). Vielleicht hast du sie 
nur falsch dimensioniert?

Lothar M. schrieb:
> Nimm einen Operationsverstärker und bastle daraus einen Subtrahierer,
> der dir die 7V Offset abzieht...

da der Offset nicht fix ist kannst du die "7V" ja über ein Poti 
einstellbar machen: zu Beginn einer Messung nullst du dann das Signal 
manuell.

von Stephan W. (wus)


Angehängte Dateien:

Lesenswert?

Achim S. schrieb:
> Stephan W. schrieb:
>> Damit ich mein Signal nun
>> überhaupt digitalisieren kann muss ich den +-10V Bereich benutzen. Um
>> eine genauere Messung zu erhalten, wäre es jedoch wünschenswert, wenn
>> ich die +7V wegkriege und mit dem restlichen Signal in dem +-2.5V
>> Bereich messen könnte.
>
> Na ja, das sind zwei Bit mehr Auflösung. Und ob die Genauigkeit dabei
> wirklich größer wird muss man erst mal schauen, da dein
> Offset-Subtrahierer ja auch Fehler hat. Welchen ADC musst du denn
> benutzen?

Ich verwende einen 16 Bit A/D-Wandler. Ausgerechnet ergibt sich ein 
Unterschied von +-10V Arbeitsbereich kleinste Messgrösse 30,5 nT zu 
+-2.5 Messbereich 7.6 nT.

> Wo willst du denn die Grenze ziehen: was ist eine "sehr langsame
> Feldänderung", die du noch sehen willst. Und ab welcher Frequenz ist es
> ein "variabler DC-Offset", den du unterdrücken willst? Prinzipiell
> sollten deine beiden bisherigen Ansätze schon funktionieren
> (Hochpassfilter, Integrator in der Rückkopplung). Vielleicht hast du sie
> nur falsch dimensioniert?

Dasselbe habe ich mir auch schon überlegt. Leider führten meine 
Überlegungen immer wieder irgendwo ins Blaue. Da zum Teil in der nähe 
von Strassenbahnen "DC-Störungen" auftreten, welche ich aufnehmen sollte 
habe ich einen Vergleich gemacht. Ohne Filterung messe ich 9003 nTpp 
(Siehe hochgeladenes PNG, gemessen nahe eines Trolleybusses), mit einem 
0.1 Hz Hochpass komme ich noch auf 5228 nTpp.

Entsprechend dessen habe ich gehofft, dass irgendjemand meint "Hei, da 
gab es doch mal ein ...."

> Lothar M. schrieb:
>> Nimm einen Operationsverstärker und bastle daraus einen Subtrahierer,
>> der dir die 7V Offset abzieht...
>
> da der Offset nicht fix ist kannst du die "7V" ja über ein Poti
> einstellbar machen: zu Beginn einer Messung nullst du dann das Signal
> manuell.

Dies habe ich mir im ersten Moment auch gedacht. Sobald jedoch etwas 
geschieht (Metall nahe an Sensor gebracht) müsste man entsprechend 
nachregulieren. Die Einstellung sollte jedoch ohne Einwirkungen durch 
eine Person stattfinden.

von Achim S. (Gast)


Lesenswert?

Stephan W. schrieb:
> Ausgerechnet ergibt sich ein
> Unterschied von +-10V Arbeitsbereich kleinste Messgrösse 30,5 nT zu
> +-2.5 Messbereich 7.6 nT.

genau: die Auflösung steigt um 2 Bit (Faktor 4). Ich habe oben nur 
nachgefragt weil du meintest, dass du genauer messen willst - das ist 
was anderes als die hier beschriebene Erhöhung der Auflösung.

Stephan W. schrieb:
> Ohne Filterung messe ich 9003 nTpp
> (Siehe hochgeladenes PNG, gemessen nahe eines Trolleybusses), mit einem
> 0.1 Hz Hochpass komme ich noch auf 5228 nTpp.

Ein 0,1Hz Hochpass, der bei 50Hz fast einen Faktor 2 dämpft? Dann stimmt 
wohl was mit dem Hochpass nicht. Aber ohne HP zu sehen kann man wohl 
schwer beurteilen, was falsch ist. Gleiches gilt für deinen Integrator 
in der Rückkopplung.

Stephan W. schrieb:
> Sobald jedoch etwas
> geschieht (Metall nahe an Sensor gebracht) müsste man entsprechend
> nachregulieren.

Und welches Kriterium hast du, um "es geschieht etwas, das ich nicht 
messen möchte" (jemand legt ein Stück Metall neben den Sensor) von "ich 
habe eine große, langsame Signaländerung, dich ich messen möchte" (ein 
Stück Metall wird vorbeibewegt) zu unterscheiden?

Wenn es dir einfach reicht, beim Überschreiten des Messbereichs deines 
ADC wieder zu Nullen, dann könntest du z.B. den Integrator in der 
Rückkopplung belassen, der mit einer ewig lahmen Zeitkonstante das 
Signal auf Null regelt. Und sobald du an den Rand des Messbereichs 
kommst (jemand legt Metall neben den Sensor) steuerst du für eine 
sinnvolle Zeit (z.B. 1s) ein Relais an, mit dem die Zeitkonstante des 
Integrators um ~2 Größenordnungen schneller gemacht wird, so dass du 
nicht ewig warten musst bis die Messung wieder passt. Das kannst du z.B. 
machen, indem du den Integratorwiderstand mit einem kleineren 
Widerstandswert brückst.

von Achim S. (Gast)


Lesenswert?

Stephan W. schrieb:
> Ohne Filterung messe ich 9003 nTpp
> (Siehe hochgeladenes PNG, gemessen nahe eines Trolleybusses), mit einem
> 0.1 Hz Hochpass komme ich noch auf 5228 nTpp.

Noch ein Nachtrag: der Hochpass kann natürlich auch in Ordnung sein, und 
das Feld war bei beiden Messungen neben dem Trolleybus unterschiedlich. 
Der Stromfluss in der Oberleitung und das damit verbundene Feld hängt 
stark davon ab, wie viel "Gas" der Trolleybusfahrer gerade gibt.

von Alexxx (Gast)


Lesenswert?

Wieder mal typisch - "ich habe einen Hammer, den muss ich benutzen, wie 
schraubt man damit Feingewinde..."

Es gibt heute so kleine rel. billige serielle ADCs mit 16-24Bit.
Auch welche mit +/-10V Eingangsbereich.
Da kannst du das Signal einfach digitalisieren, so wie es ist.
Und du hast trotzdem Auflösung im Überfluss.
Wenn du so heikel filtern / abnullen willst geht das eh nur vernünftig 
im Digitalen!
Mit Mikrocontroller kannst du auch gleich eine (digitale) 
Auto-Zero-Funktion u.v.m dazu programmieren.

Aber "warum einfach, wenn's auch anders geht" - pfff.

von Stephan W. (wus)


Lesenswert?

Ich muss einen Industrierechner mit Simulink-Realtime-Target nutzen. 
Entsprechend dessen habe ich strikte Vorgaben zum Thema Hardware und 
auch Software. Ich habe keine zusätzlichen Toolboxen zu MATLAB ausser 
denjenigen, um das SRT zu programmieren.

Den Abgleich auf der Software-Ebene habe ich bereits mehrfach versucht 
(Wie meine Vorgänger auf diesem Projekt), jedoch ist meist das Anpassen 
während des Betriebs Problematisch. Momentan wird jeweils beim Starten 
der Kiste ein Abgleich durchgeführt, dies mit einem Integrator und der 
entsprechenden Division durch die Anzahl Werte.

Bei einem Integrator läuft jeweils die Gefahr bei flascher 
Dimensionierung (System schneller laufen lassen, zu langes Aufsummieren 
usw.) einen Memory-Error zu generieren.
Die Möglichkeiten mit einer einfachen langsamen FIR-Struktur sind 
begrenzt. Diese muss erstens am Anfang gut gefüllt werden, je nachdem 
wie der Offset danach Wechselt kann es weiter zu Sprüngen kommen.

Habe mir beides bereits überlegt, Hardware- und Software-Lösung. War am 
Ende auf dem Punkt "Lieber ich mache es Analog und nutze den 
Software-Teil für die eigentlichen Probleme". Ich lasse mich gerne eines 
besseren Belehren.

von Lurchi (Gast)


Lesenswert?

Die Lösung mit Anfangs messen des Offsets ist an sich schon richtig. 
Gegen einen Überlauf beim Aufsummieren der Werte kann man sich auch was 
einfallen lassen, das ist nicht so schwierig. Es gibt auch einfachere 
Filter als klassische FIR - da sollte es dann mit der Rechenzeit und dem 
Speicher keine Probleme geben.

Bei einer analogen Lösung ist die Hochfahrphase noch deutlich 
problematischer als bei einer Software Lösung. Da muss man dann i.A. 
viele Zeitkonstanten warten bis der Wert steht.

von Christoph db1uq K. (christoph_kessler)


Lesenswert?

Die Philips/NXP-Applikationen zum KMZ51 beschreiben eine 
Offsetkompensation:
https://www.mikrocontroller.net/articles/Magnetfeldsensor#Anisotrope_Magnetoresistive_Sensoren_-_AMR-Sensoren
speziell der erste Link (Kompass).

von Wolfgang (Gast)


Lesenswert?

Stephan W. schrieb:
> Dasselbe habe ich mir auch schon überlegt. Leider führten meine
> Überlegungen immer wieder irgendwo ins Blaue. Da zum Teil in der nähe
> von Strassenbahnen "DC-Störungen" auftreten, welche ich aufnehmen sollte
> habe ich einen Vergleich gemacht.

Warum willst du überhaupt bei der Messung ein Filter verwenden. Es 
reicht doch, mit einem umschaltbaren, draufaddierten 
DC-Kompensationssignal dafür zu sorgen, dass das Summensignal 
(Sensor+Kompensation) immer im Bereich -2.5 .. 2.5V liegt. Das 
Offset-Signal kann mit einem passend gesteuerten DAC erzeugen, der dann 
allerdings um die Verstärkung genauer als dein Messwandler sein muss. 
Bei der Auswertung kann man das Signal dann wieder in seiner vollen 
Dynamik zusammenbauen und in Ruhe off-line durch passende Filter 
schicken.

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.