Forum: Mikrocontroller und Digitale Elektronik Magnetfeldmaximum


von Joerg B. (j_b)


Lesenswert?

Gesucht wird der exakte Moment des Passierens eines Magneten in einigen 
Zentimetern Entfernung (je größer der Abstand, desto besser). Auch nach 
längerem Lesen im Forum und im Web bin ich noch nicht ganz sicher, wie 
ich das am besten lösen soll ... analog oder digital. Leider kommt der 
Strom aus einem Akku, so daß ich nicht gern schnelle AD-Wandler und DSPs 
beschäftigen möchte.

Ursprünglich wollte ich so einen modernen e-Compass chip, z.B. von ST 
nehmen und über SPI an einen STM32F4 anschließen. Der kann beim 
Überschreiten einer Grenze einen Interrupt auslösen ... aber ich brauche 
eine zeitliche Auflösung von +/- 0,5ms ... und zwar des Maximalwertes 
des Magnetfelds, wobei die Größe vorher nicht so genau bekannt ist. Ich 
habe bisher keinen Chip gefunden, der die Meßwerte im FIFO speichert, 
bevor sie per SPI gelesen werden (die Beschleunigungswerte haben 
seltsamerweise häufig einen FIFO) ... und leider steht in keinem 
Datenblatt, wie hoch die Magnetwerte intern abgetastet werden, also mit 
welcher Frequenz.

Analog betrachtet ... z.B. mit linearem Hall-Sensor ... mit 3 OpAms 
Peak-Wert erfassen und mit aktuellem Wert vergleichen --> fallende 
Flanke ... hier im Forum vor 1/2 Jahr kurz bzgl. einer Laserdiode 
diskutiert ... Ich fürchte nur, in der Praxis würde das erstmal verdammt 
schwingen, bis man raus hat, wie man das stabil und gefiltert bekommt.

Vermutlich könnte ich dauernd den ADC mit 2..4 kHz laufen lassen und 
über die Kurve approximieren ...

Hat jemand eine Idee ?

Und wie wird das hier im Forum gehandhabt, wenn ein Thema sowohl ins 
Digital- als auch ins Analogforum passen würde ? Ich kann das doch nicht 
gleich 2x posten ?!

Danke fürs Lesen :-) !!

von Christoph db1uq K. (christoph_kessler)


Lesenswert?

Eine analoge Wendepunkt-Erfassung wäre noch zu überlegen. Es gab mal 
Akku-Lade-ICs die irgendwie einen Wendepunkt als Abschaltkriterium 
benutzten, das muss also auch über längere Zeiträume analog machbar 
sein.

von Joerg B. (j_b)


Lesenswert?

Danke Christoph!

So eine schnelle Antwort hatte ich ja nicht erwartet ... noch dazu kurz 
vorm zubett gehen ;-) ...

Wenn dazu jemand ne Schaltung hätte ... Das Dumme in meinem Fall ist, 
daß der Magnet sowohl langsam als auch schnell vorbei kommen kann ... im 
Idealfall würde man gern das Maximum auch noch finden, wenn das Ding 5 
Sekunden braucht, um vorbei zu gehen ... Was "schnell" heißt ? Irx ... 
rechne gerade aus, daß es ggf. nur 300µs sind ...

von locke (Gast)


Lesenswert?

Hallo Jörg,

als Analogvariante wäre eine Differenzierstufe mit nachgeschaltetem 
Schmitt-Trigger wahrscheinlich die bessere Wahl. Da bekommst du beim 
Maximum einen Nulldurchgang am Ausgang der Differenzierstufe, die du mit 
einem Trigger (mit OPV) detektieren kannst.

locke

von Joerg B. (j_b)


Lesenswert?

Danke locke ... hättest Du ggf. einen Link auf eine solche 
Differenzierstufe ? Ich hatte sowas gesucht, aber über 90° Phasenwinkel 
bin ich nicht hinaus gekommen :-) ... Stelle im Moment verzweifelt fest, 
daß ich viel zu lange nix wirklich analoges mehr gebaut habe ;-) ... 
Früher hätte man das mit ner Pentode, nem Selengleichrichter und paar 
Kondensatoren gebaut ;-) ;-) ...

von locke (Gast)


Angehängte Dateien:

Lesenswert?

Hallo Jörg,

ich habe etwas theoretisch ähnliches mit einer Reflexkoppler aufgebaut. 
Im Anhang ist die Gesamtschaltung. Den Verstärker nach der 
Differenzierstufe brauchst du wahrscheinlich auch noch, den 50Hz-Filter 
vorm Trigger und die Torschaltung hinterm Trigger sicherlich nicht.
Die Dimensionierung solltest du aber noch etwas anpassen.

Locke

von Joerg B. (j_b)


Lesenswert?

Danke Dir !

Da muß ich zwar noch etwas länger draufgucken, aber es scheint mir doch 
sehr frequenzabhängig zu sein. Die RC-Glieder ... ob da das 
Differenzieren auch noch funktioniert, wenn der Magnet ganz langsam bzw. 
ganz schnell vorbei geht ? Das war bisher bei den anderen Schaltungen, 
die ich mir ansah immer der Knackpunkt ... OK, muß über das Ding mal 
bischen nachdenken. Ist aber auch recht "groß" :-) ...

von Michael K. (Gast)


Lesenswert?

Joerg B. schrieb:
> Vermutlich könnte ich dauernd den ADC mit 2..4 kHz laufen lassen und
> über die Kurve approximieren ...
Bei 300us = 3,3Khz musst Du schon häufiger abfragen um das Maximum zu 
finden.
http://de.wikipedia.org/wiki/Nyquist-Shannon-Abtasttheorem

Wenn der Zeitpunkt, die Geschwindigkeit und die Signalhöhe nicht bekannt 
sind, wird eine analoge Lösung echt schwer.
Eine sparsame kleine MCU sollte die beste Wahl sein.

Bei langsamer Umdrehung kannst Du die auch länger schlafen schicken und 
ausserdem kennst Du den ungefähren Zeitpunkt wann der Magnet wieder 
vorbeikommt und mußt solange nicht messen.
Das Rad dreht ja nicht von 0 auf max in 2 Umdrehungen.

von Christoph db1uq K. (christoph_kessler)


Lesenswert?

Es gibt eine Reihe Magnetfeldsensoren mit integrierter 
Schwellenwertberechnung von Allegro die ATS 6xx - Reihe:

http://www.allegromicro.com/en/Products/Magnetic-Speed-Sensor-ICs/

etwas klobiger als einfache Hallsensoren wie KSY14, teilweise mit 
integriertem Permanentmagnet, sodass das vorbeilaufende Zahnrad ("gear 
tooth") nicht selbst magnetisiert sein muß.

von Georg (Gast)


Lesenswert?

Joerg B. schrieb:
> Vermutlich könnte ich dauernd den ADC mit 2..4 kHz laufen lassen und
> über die Kurve approximieren ...

Damit kannst du aber einen sich langsam bewegenden Magneten unmöglich 
mit einer zeitlichen Genauigkeit von 5 ms detektieren - nachträglich 
schon, aber nicht in Echtzeit, d.h. nicht innerhalb 5 ms nach dem 
Durchgang. Ganz egal welche Technologie du verwendest.

Georg

von Joerg B. (j_b)


Lesenswert?

Danke Euch allen ! Sehr interessant hier :-) ...

@Michael ... ja, die 300µs hatten mich selbst geschockt, aber damit war 
die Zeit gemeint, die ein Magnet mit 8mm Durchmesser sich einem 
ebensogroßen Sensor gegenüber befände. Der Sensor würde das Magnetfeld 
aber auch kommen und gehen sehen. Ich glaube, es könnte mit den 
genannten Taktfrequenzen gerade noch gehen.

@Christoph ... Tja, man sucht und sucht, aber diese Chips waren mir 
nicht unter gekommen. Muß nun erstmal die Specs lesen und sehen, ob alle 
Fragen beantwortet sind. In jedem Fall SEHR interessant

@Georg ... Da habe ich mich schlecht ausgedrückt: Es ist nicht wichtig, 
daß die Messung in Echtzeit erfolgt. Es reicht, wenn der präzise Moment 
der Überschreitung im Nachhinein errechnet werden kann.

Aber es sind +/- 0.5ms (!!), nicht "nur" 5ms.

: Bearbeitet durch User
von Axel S. (a-za-z0-9)


Lesenswert?

Hallgenerator (analog), Verstärker, Differenzierglied (im einfachsten 
Fall ein RC-Hochpaß), Nulldurchgangsdetektor. Und dann ab an einen 
Input-Capture Eingang.

Das Differenzierglied muß natürlich auf die Wiederholrate und die 
Geschwindigkeit des Magneten abgestimmt werden.


XL

von Joerg B. (j_b)


Lesenswert?

@Axel ... tja, da liegt aber der Hase im Pfeffer ... wie stimmt man 
etwas auf einen so weiten Frequenzbereich ab ... 300µs bis 5s 
Passierzeit des Magneten ?

Die bisherige Vision für eine Analoglösung geht i.e. so:

- 1. OpAmp als Peak-Detektor (ggf. 2 OpAmps dafür, aber wohl nicht 
nötig)

- 2. OpAmp als Präzisionsgleichrichter an Stelle der Diode im 
Peak-Detektor
  (um Spannungsoffset zu vermeiden)

- 3. OpAmp als Differenzverstärker zwischen Peak- und Ist-Spannung

Das Ganze mit einer gewissen Glättung gegen kleine Spikes, wobei wieder 
das Problem auftritt, daß der schnelle Magnetdurchgang erfaßt werden, 
kurze Spikes bei langsamem Durchgang aber ignoriert werden müssen. D.h. 
der Filter muß die Spike-ENERGIE berücksichtigen, nicht nur die 
Flankensteilheit ... Ich glaube, man "kann" das zum Laufen bringen, wenn 
man endlos Zeit, oder viel Erfahrung mit OpAmps hat ... aber ich würd's 
mir gern ersparen.

von Georg (Gast)


Lesenswert?

Joerg B. schrieb:
> Es reicht, wenn der präzise Moment
> der Überschreitung im Nachhinein errechnet werden kann.

Dann sehe ich nur einen Controller als sinnvolle Lösung: Messwerte 
erfassen und die Hüllkurve berechnen, um genauestmöglich das Maximum zu 
finden. Das Problem ist wohl, dass es bei langsamer Bewegung anders 
nicht funktionieren wird, dass aber bei schneller Bewegung die Hardware 
nicht ausreichend leistungsfähig ist.

Allerdings brauchst du bei 300 µs Transitzeit und gewünschten 500 µs 
Genauigkeit auch keine Hüllkurve mehr, sondern du musst überhaupt nur 
einmal den Magneten detektieren. Vielleicht kombiniert man das und 
verwendet die Hüllkurve nur solange das noch geht, bzw. schaltet auch 
die Hüllkurvenauswertung drehzahlabhängig auf geringere Auflösung ( bis 
herunter auf 3 Werte low high low).

Georg

von Joerg B. (j_b)


Lesenswert?

@Georg ... tja, darauf läuft es wohl hinaus, wenn die Allegro-Chips 
nicht gehen, welche Christoph vorgeschlagen hat. Habe halt nur das 
Problem auch noch Strom sparen zu wollen ... und ich weiß halt leider 
nicht so genau, wann das nächste Ereignis eintreten wird. Denke im 
Moment darüber nach, 2 Sensoren zu nehmen, die räumlich hintereinander 
sitzen, wobei der erste die schnelle Auswertung des zweiten auslöst. 
Aber das Gehäuse ist klein und ich weiß nicht, ob die Zeit reicht, den 
AD-Wandler zu starten.

Zwei Sensoren hintereinander könnten auch super zum Filtern verwendet 
werden - gleichzeitige Spikes fliegen raus, da die Signale versetzt 
erwartet werden ... hmmm ...

von MaWin (Gast)


Lesenswert?

Joerg B. schrieb:
> Analog betrachtet ... z.B. mit linearem Hall-Sensor

So macht man das:
1
+5V   +5V    +5V
2
 |     |  +---(---+--1k----+--100k--+
3
 |    10k |   |   |        |        |
4
 |     +--(--|+\  | TS914  +--|+\   |
5
 |     |  |  |  >-+--|+\      |  >--+-- schaltet ein wenn Magnetfeld
6
 |    10k +--|-/     |  >--+--|-/       Maximum überschreitet
7
A1381--(--10nF----+--|-/   |   |
8
 |     |          |        |  GND
9
GND   GND         +--10k---+
Allerdings wirst du gewisse Beuteilanpassen machenn müssen:
Ein Maximum ist auch erreicht, wenn gar nichts los ist, weil
das Signal ja immer etwas schwankt. Der 1k Widerstand bildet
die Wahrnehmungsschwelle. Und es wird eventuell kein gleichmässiger
Anstieg des Signals sein, sondern es wackelt und gibt kleine
Spitzen, die natürlich (k)ein Maximum sind. Dagagen hilft der
10k Widerstand. Und zu langsame Änderungen willst du auch nicht
wahrnehmen, dagegen hilft der 10nF Kondensator.
Beim Einschalten gibt es ggf. auch erst einen Impuls.

: Bearbeitet durch User
von Joerg B. (j_b)


Lesenswert?

Danke MaWin ! Wieder was zum drüber nachdenken :-). Dieses Forum ist 
viel besser als die meisten :-) !!

von Joerg B. (j_b)


Lesenswert?

@MaWin: Habe das gerade mal in Falstad eingegeben ... Das Ergebnis ist 
gemischt ... unter bestimmten Bedingungen macht es tatsächlich, was es 
soll, aber wenn man dann die Frequenz ändert, bekommt man innerhalb der 
Bereiche, die eigentlich High sein sollten ein hochfrequentes Schwingen. 
Aber wie Du schon erklärt hast, gibt es ja diverse Stellschrauben und 
bis ich da alles mal ausprobiert habe, kann es noch bischen dauern ;-) 
... Vielleicht muß ich auch besser einen ausgewachsenen Simulator 
nehmen, aber das Ding war mir gerade zur Hand :-) ...

von Joerg B. (j_b)


Lesenswert?

@Christoph: Habe mir nun die Allegro-Chips angesehen ... zumindest 
einige davon. Sie SIND interessant, aber allzugroße Hoffnung habe ich 
nicht, denn zum einen schreiben die über Magnetfeldstärken, die um 
Faktor 10..100 stärker sind, als was ich so erwarte (wobei ich nicht 
ganz schlau daraus werde, denn die ICs mit eingebautem Magneten 
verwenden ja eigentlich ein nicht(dauer)magnetisches "Target") ... zum 
anderen arbeiten sie entsprechend mit einem Luftspalt von wenigen 
Millimetern (<=3mm) und ich brauche eher Richtung 10cm ... Abgesehen 
davon kann man die Empfindlichkeit nicht vorgeben, sondern die Dinger 
kalibrieren sich selbst (sind ja auf sich ständig wiederholende Zähne 
ausgelegt) ... wohingegen bei meiner Anwendung die Reproduzierbarkeit 
des Ereignisses nur darin besteht, daß es von Zeit zu Zeit zu einem 
Ausschlag kommt ... mit unterschiedlicher Stärke und Dauer ...

Hmmm, wäre auch viel zu einfach gewesen ;-) ... Schade irgendwie (und 
die Hoffnung stribt zuletzt), denn vieles an den Signalverläufen und 
Verarbeitungsmodulen im Chip stimmt prinzipiell mit meiner Sache 
überein. Insofern auf jeden Fall ein guter Tip !

von Karl H. (kbuchegg)


Lesenswert?

Kannst du annehmen, dass die Geschwindigkeit am Sensor konstant ist?

Wenn es reicht, das Maximum naxchträglich zu detektieren, könnte man 
auch überlegen das Überschreiten bzw. Unterschreiten einer Schwelle zu 
detektieren. Das Maximum sollte dann ja eigentlich in der Mitte liegen.
Hätte auch den angenehmen Nebeneffekt, dass der Puls etwas breiter 
werden würde.

von Joerg B. (j_b)


Lesenswert?

@Karl Heinz: Ja, in der Theorie funktioniert die Theorie auch immer in 
der Praxis ;-) ... wobei leider die Hall-Sensoren (zumindest die mit 
linearem Ausgang) eine Art Hysterese bekommen, weil das Magnetfeld sie 
wohl nicht unverändert läßt. Mit anderen Worten die fallende Flanke 
kommt mit einem zeitlichen Offset, der davon abhängt, wie stark das Feld 
war und wie lange es anlag ... beides bekannte Werte, wenn man während 
des Durchgangs einen ADC laufen hat und man müßte eine Tabelle machen 
können, mit welcher man den tatsächlichen Durchgang errechnet ... nur 
muß man dazu eben den ADC laufen lassen ... führt wohl kein Weg dran 
vorbei.

Ich habe von Freescale den Xtrinsic FXOS8700CQ gefunden, der immerhin 
mit 800Hz abtastet. Das könnte vielleicht gerade reichen ... Schade, daß 
es solche Chips nicht mit FIFO gibt, der 1000 Werte speichert und 500 
davon nach dem Auslösen des Interrupts macht und dann aufhört ;-) :-) 
... träum. Naja, muß der STM32F4 halt arbeiten. Hoffentlich reicht der 
Saft einer 18650 einen Tag lang :-) ...

von Joerg B. (j_b)


Lesenswert?

Die Leute von Allegro waren sehr freundlich. Allerdings sind 
Hallsensoren offenbar deutlich weniger empfindlich als magnetoresistive 
Sensoren. Über 3..4cm hinaus kann man Hall wohl nicht verwenden. Schade 
eigentlich.

Meine Simulation mit der Schaltung von MaWin habe ich bisher auch noch 
nicht stabil bekommen. Wenn ich den Rückkopplungswiderstand erhöhe, 
verbessert sich die Stabilität, aber dann bekomme ich bei niedriger 
Frequenz keinen Impuls mehr am Ausgang. Ein größerer Eingangskondensator 
hat da teilweise geholfen, aber zum einen nicht ausreichend, zum anderen 
kam sofort wieder das ungewollte Schwingen. Ist ja auch irgendwie 
verständlich. Mit schnelleren Signalen (im Kilohertzbereich) 
funktioniert es eigentlich, wobei es eine Art Sättigungszustand zu geben 
scheint, wo es dann blockt, bis man die Simulation resettet. Kann aber 
sein, das das in der Realität nicht auftritt (so ausm Bauch raus).

Vielleicht sollte ich ernsthaft "Teile und Herrsche" in Erwägung ziehen, 
wie es Georg vorgeschlagen hat, also langsame Übergänge anders 
verarbeiten als schnelle ...

von Christoph db1uq K. (christoph_kessler)


Lesenswert?

Gigantomagnetische Sensoren hatte ich auch schon in der Hand, von denen 
hier: http://www.nve.com/index.php
deutscher Vertreter war soweit ich mich erinnere Hy-line, jetzt
http://www.is-line.de/sensor/hersteller/nve/

es gibt auch einen deutschen Hersteller:
http://www.sensitec.com/deutsch/produkte/produktfamilien/index.html

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.