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
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
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.
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.
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.
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.
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.
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.
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.
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).
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.