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 :-) !!
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.
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 ...
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
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 ;-) ;-) ...
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
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ß" :-) ...
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.
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ß.
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
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
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
@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.
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
@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 ...
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
Danke MaWin ! Wieder was zum drüber nachdenken :-). Dieses Forum ist viel besser als die meisten :-) !!
@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 :-) ...
@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 !
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.
@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 :-) ...
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 ...
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.