Probleme bei der Verwendung des Beschleunigungsmessers als Bewegungsschalter

Ich verwende einen Beschleunigungsmesser ADXL206 und einen Mikrocontroller PIC16F917, um die relative lineare Bewegung eines Geräts zu bestimmen, das gemäß dieser Bewegung funktioniert.

Ich kann Daten vom Beschleunigungsmesser lesen:

  • Es gibt eine Ausgabe von 2,5 @ no Motion
  • Es gibt eine Leistung von 2,5 + 0,312 Volt pro 1 g Recht
  • Es ergibt eine Leistung von 2,5 + 0,312 Volt pro 1 g Left

Ich habe ein Gerät mit 2 LEDs zur Bewegungsrichtungsbestimmung. Es sollte so funktionieren:

  • Programmstart: LEDs aus
  • Rechtslauf: rote LED an und bleibt so. Blaue LED aus. auch wenn das Gerät die Bewegung stoppt
  • Linksbewegung: blaue LED AN und bleibt an. Rote LED aus. auch wenn das Gerät die Bewegung stoppt

Die wirklichen Ergebnisse, die ich erhalte, sind, wenn sich das Gerät bewegt, blinkt die LED nur während der Bewegung, dann sind sie ausgeschaltet, wenn keine Bewegung stattfindet.

Ich kann die Richtung vom Beschleunigungsmesser nicht erhalten und in einem stabilen Zustand bleiben.

Liegt das Problem beim Auslesen der Werte vom Beschleunigungsmesser oder im Algorithmus?

Unzureichende Information. Sie müssen das Problem richtig beschreiben.
Ich muss den Beschleunigungssensor als Bewegungserkennungs- und Richtungserkennungsschalter verwenden. Dann habe ich einen stabilen Zustand meines Geräts. Zum Beispiel: Bewegung von der Stabilität nach rechts lässt die rote LED aufleuchten und bleibt AN, und Bewegung von der Stabilität nach links schaltet eine blaue LED ein und die ROTE LED aus
Wo ist dein Quellcode?
Bitte geben Sie Quellcode und Schaltpläne an.
Die aktuelle Beschreibung des gewünschten Verhaltens des Geräts sollte trivial zu implementieren sein: Hören Sie einfach auf, vom Beschleunigungsmesser abzulesen, sobald eine der beiden LEDs eingeschaltet wurde. Ich vermute jedoch, dass Sie das nicht wirklich wollen, sondern dass Sie dann Bewegungen in die entgegengesetzte Richtung erkennen möchten. Aus diesem Grund liefert Anindos Antwort Gründe, warum dies mit einem Beschleunigungsmesser nicht trivial ist.

Antworten (2)

Das Gerät, das den Beschleunigungsmesser enthält, erfährt x Gzu Beginn der Bewegung vorübergehend eine Kraft (von ) entgegen der Beschleunigungsrichtung. Dann wird es erleben 0 Gees, wie die Beschleunigung stoppt, dh sobald die Zielgeschwindigkeit erreicht ist.

Wenn das Gerät aus konstanter Geschwindigkeit zum Stillstand gebracht wird, erfährt es in ähnlicher Weise eine momentane Kraft, die der Verzögerung entgegenwirkt, und dann wieder eine Kraft von Null, sobald es zum Stillstand kommt.

Das berichtet Ihr Experiment - die LEDs blinken, wenn Sie die Beschleunigung erfahren, einmal in jede Richtung. Mit anderen Worten, das Verhalten ist wie vorgesehen.

Um eine Anzeige aufrechtzuerhalten, solange die Bewegung andauert, ist ein Beschleunigungsmesser nicht das ideale Gerät. Es ist kein Bewegungsmelder , sondern ein Beschleunigungsmelder , wie der Name schon sagt.

Während einige einfache Software-Tricks ( Integrieren der Beschleunigung über die Zeit ) verwendet werden könnten, um zu verfolgen, wann Beschleunigung in die eine oder andere Richtung gefühlt wird, würde ein solcher Mechanismus versagen, wenn die Verzögerungs- (oder Beschleunigungs-) Kraft im Vergleich zu der Empfindlichkeit und dem Gefühl sehr gering ist Signalrauschen, etwa wenn man das Gerät sehr langsam beschleunigt, aber schnell zum Stillstand bringt oder umgekehrt .

Danke schön. Ich brauche, dass die Anzeige eingeschaltet ist, auch wenn das Gerät die Bewegung stoppt. Es soll den Bewegungsausbruch spüren. Nicht die Bewegung selbst.
@PhilFrost Ja, du hast Recht ... Habe es so bearbeitet, dass es jetzt Sinn macht. Danke. :-)
@Swiftmind Ich bin mir nicht sicher, ob ich Ihren Kommentar verstehe, er scheint sich zu widersprechen: Wenn Sie möchten, dass die LED auch dann eingeschaltet ist, wenn die Bewegung stoppt, schließen Sie einfach eine LED in Reihe mit einem Widerstand an, es ist keine andere Elektronik erforderlich. Wenn Sie den Bewegungsstoß spüren möchten (was in Ihrer Terminologie vermutlich Beschleunigung bedeutet), hört die Anzeige in dem Moment auf, in dem die Beschleunigung aufhört, dh es gibt keine Beschleunigung mehr (Geschwindigkeitsänderung), was Sie sagen.

Ein Beschleunigungsmesser misst keine Bewegung: Er misst Bewegungsänderungen . Oder genauer gesagt, es misst die Ableitung der Geschwindigkeit . Wenn sich Ihr Beschleunigungsmesser also in eine Richtung zu bewegen beginnt, können Sie das erkennen. Aber sobald Sie sich zum Beschleunigungsmesser bewegen und nicht mehr beschleunigen, könnte er genauso gut auf Ihrem Schreibtisch sitzen. Das einzige, was Sie messen werden, ist Lärm und die konstante Erdbeschleunigung.

Eine Analogie wäre folgende: Wenn Sie nichts sehen können und Wind- und Straßengeräusche nicht hören können und die Fenster hochgefahren sind, sodass Sie keinen Wind spüren können, wie würden Sie dann wissen, dass Sie sich in einem fahrenden oder geparkten Auto befinden Auto?

Anders ausgedrückt, stellen Sie sich einen Ball vor, der oben auf Ihrem Objekt balanciert. Der Beschleunigungsmesser misst, wie sich der Ball relativ zum Objekt bewegt, wenn das Objekt seine Geschwindigkeit ändert.

Sie können das, was Sie beschreiben, nicht mit einem praktischen Beschleunigungsmesser machen. Wenn sich Ihr Objekt nach links zu bewegen beginnt, registriert der Beschleunigungsmesser eine Kraft in eine Richtung. Wenn Ihr Objekt später aufhört sich zu bewegen, registriert der Beschleunigungsmesser eine Kraft in die andere Richtung. Das Problem ist folgendes: Diese Kraft in die andere Richtung ist nicht von der Kraft zu unterscheiden, die Sie messen würden, wenn sich Ihr Objekt nach rechts zu bewegen beginnt.

Sie messen die Geschwindigkeitsänderung . Die Geschwindigkeitsänderung ist in beiden Fällen gleich:

  • nach links bewegen -> nicht bewegen
  • bewegt sich nicht -> bewegt sich nach rechts

Sie können sie nicht mit einem Beschleunigungsmesser unterscheiden. Wenn Sie "Bewegung nach links" und "Bewegung nach rechts" messen möchten, ist dies die Geschwindigkeit, nicht die Beschleunigung. Sie benötigen ein Gerät, das die Geschwindigkeit misst. Theoretisch können Sie die Beschleunigung integrieren, um die Geschwindigkeit 1 zu erhalten , aber praktische Details wie Rauschen und Offset führen dazu, dass Ihre Berechnung der Geschwindigkeit vom tatsächlichen Wert abweicht.

1: Ein Beispiel für ein System, das dies tut, ist ein Trägheitsnavigationssystem . Diese Systeme verwenden eine sehr sorgfältige Technik und teure Systeme, um Drift zu reduzieren, aber nicht zu eliminieren.

Danke schön. Ich möchte nur den Beginn und die Richtung der Bewegung erkennen.
@Swiftmind vielleicht solltest du deine Frage bearbeiten, um klarer zu sein.