Messen der Frequenz des Beschleunigungsmessers mit einem Oszilloskop

Ich habe einen digitalen Beschleunigungsmesser VTI CMA3000-D01 und steuere ihn über SPI von einem CC2540-Chip von Texas Instruments mit der eingebetteten 8051-MCU.

Im Datenblatt für den CMA3000 wird erwähnt, dass im 2g-Modus die Ausgangsabtastrate 400 Hz oder 100 Hz beträgt (je nachdem, wie der Beschleunigungsmesser konfiguriert ist). Es gibt auch einen "Bewegungserkennungsmodus", der mit einer Abtastrate von 10 Hz arbeitet.

Ich möchte die Konfiguration des Beschleunigungsmessers entweder auf den 400-Hz-Modus oder den 100-Hz-Modus ändern und die Frequenz auf einem Oszilloskop messen, um zu überprüfen, ob ich tatsächlich eine solche Änderung vorgenommen habe. Dies dient hauptsächlich dazu, besser zu verstehen, wie man nützliche Messungen mit einem Oszilloskop durchführt, und um SPI besser zu verstehen.

Ich habe kürzlich ein Rigol DS1052E-Oszilloskop gekauft, daher würde ich gerne wissen, wie ich es an meinen Beschleunigungsmesser anschließen kann, um die Ausgangsfrequenz zu messen, und welche Einstellungen ich am Oszilloskop verwenden muss, um eine solche Messung durchzuführen, und ob dies der Fall ist überhaupt möglich.

Ich habe versucht, die Sonde (mit 10-facher Dämpfung) am Oszilloskop an die SCK-Leitung des Beschleunigungsmessers und die Masseleitung von der Sonde an die Masse der Leiterplatte anzuschließen und dann die Taste "Auto" am Oszilloskop zu drücken, aber es gibt mir eine Wellenform mit einer Frequenz und Spannung, die herumspringt:

Geben Sie hier die Bildbeschreibung ein Geben Sie hier die Bildbeschreibung ein

Ich hatte erwartet, eine Rechteckwelle mit einer Frequenz von 100 Hz zu sehen (auf die der Beschleunigungsmesser derzeit in meiner Software eingestellt ist), aber ich habe eine Sinuswelle bekommen. Nun, die obigen Bilder mögen tatsächlich korrekt sein, aber ich weiß nicht genug, um festzustellen, ob sie es sind, weshalb ich gehofft hatte, jemand, der sich mit SPI und Oszilloskopen auskennt, könnte mir eine Richtung geben oder mir sagen, was Ich muss lesen, um dieses Zeug besser zu verstehen.

Es wäre auch toll zu wissen, wie man die Ausgabe vom MISO-Port auf dem Beschleunigungsmesser liest, um zu sehen, welche Daten an die MCU zurückgesendet werden. Ich bin mir nicht sicher, ob dies nur mit einem Bereich möglich ist oder ob ich einen Logikanalysator benötigen würde, um diese Daten anzuzeigen. Vielen Dank im Voraus.

Der „AUTO“-Knopf schlägt wieder zu!
Sie sind bei 10 ns/div und 100 ns/div und hoffen, 100 Hz zu sehen? Für den Anfang kratzen Sie die Auto-Taste und richten Sie Ihr Oszilloskop so ein, wie Sie es haben möchten. 5mV bei 10ns/div sind so ziemlich nur Rauschen.

Antworten (2)

Das Problem ist, dass Sie einen digitalen MEMS-Beschleunigungsmesser verwenden und was Sie lesen, ist der SCK-Pin (Serial Clock) der seriellen Schnittstelle. Um zu funktionieren, muss dieser Sensor mit einem Mikrocontroller verbunden werden, der ihn auf die Abtastfrequenz, den Bereich usw. einstellt.

Man muss also nicht mit einer Rechteckwelle mit 100Hz Frequenz rechnen, sondern mit einem schnellen (je nach Bus-Bitrate) Spike, entsprechend einer Übertragung. Wenn Sie die Spitze erweitern, sollten Sie, wenn das Oszilloskop schnell genug ist, die Rechteckwelle der Uhr innerhalb der Spitze sehen.

Wenn Sie die SPI-Schnittstelle nicht richtig einstellen, generiert der uC außerdem keine Uhr (der Sensor arbeitet im Slave-Modus) und Sie werden keinen Wert lesen.

Wenn Sie ein 100-Hz-Signal sehen möchten, können Sie den Int-Pin prüfen, der jedes Mal, wenn eine Messung verfügbar ist, einen Interrupt an den Mikrocontroller sendet. Wenn Sie dann den Interrupt vom Mikrocontroller richtig handhaben, sehen Sie alle 10 ms (100 Hz) den Impuls, der der Übertragung entspricht.

Stellen Sie jedoch sicher, dass Sie keine Bewegungserkennung verwenden. in diesem Fall wird der Interrupt nur dann erzeugt, wenn eine Beschleunigung gemessen wird.

Um die Daten am SPI-Port auszulesen, ist es am einfachsten, die Kommunikation mit dem Sensor zu konfigurieren; Andernfalls werden überhaupt keine Daten gesendet. Überprüfen Sie dann, ob der Mikrocontroller die Interrupts erhält und ob er die Daten liest, die der Sensor gibt; Sie können einen Timer verwenden, um Werten einen Zeitstempel hinzuzufügen und die Häufigkeit zu überprüfen, mit der sie auftreten.

(noch WIP)

Sie könnten möglicherweise einen Widerstand von etwa 1 Ohm in die GND-Leitung Ihres Netzteils stecken und die Spannung darüber mit dem Oszilloskop messen. Da diese Spannung proportional zum Strom ist, den der Beschleunigungssensor benötigt, finden Sie die Frequenz wahrscheinlich in seinem Stromverbrauch.
Clever! Aber das Prüfen von Stiften ist einfacher, und das Messen des Verbrauchs erfordert einen Widerstand in Reihe mit der Versorgung, und auf einer Leiterplatte ist das schwer zu tun ...

Danke für die Antwort, Clabacchio, ich habe einige Ihrer Vorschläge ausprobiert und es geschafft, heute einige aussagekräftigere Messungen zu erhalten. Es stellt sich heraus, dass die Beispielanwendung, die ich zum Testen des SCK-Pins verwendet habe, nur dann ein Signal ausgibt, wenn sie mit einem anderen Gerät "verbunden" ist (dies ist eine Bluetooth Low Energy-Anwendung). Nachdem ich mich mit einem anderen Gerät gekoppelt hatte, begann der SCK-Pin am Beschleunigungsmesser, mir die erwarteten Messungen zu liefern.

Wie Sie erklärt haben, waren es nicht 100 Hz, sondern die Baudrate, auf die die SPI-Schnittstelle des Mikrocontrollers eingestellt war. Um dies zu überprüfen, habe ich die Baudrate auf 230.400 bps geändert und dann eine Messung mit meinem Oszilloskop durchgeführt. Hier ist ein Screenshot des Ergebnisses:

Geben Sie hier die Bildbeschreibung ein

Wie Sie sehen können, beträgt die Frequenz 230,4 kHz, genau das, was ich erwartet hatte.

Ich habe auch versucht, den INT-Pin zu prüfen, und habe die folgende Welle erhalten:

Geben Sie hier die Bildbeschreibung ein

Diese Welle sprang immer wieder herum, blieb aber meistens zwischen 19 und 20 Hz. Ich bin mir nicht sicher, was ich davon halten soll, da der Beschleunigungsmesser von meinem Code aus so konfiguriert wurde, dass er im 100-Hz-Modus arbeitet, also weiß ich nicht, warum ich 20 Hz bekomme.

Hier sind auch 2 Aufnahmen vom MISO-Port, die eine Frequenz von 20 Hz bei 100 ms und 480,8 kHz bei 1,0 us zeigten:

Geben Sie hier die Bildbeschreibung ein Geben Sie hier die Bildbeschreibung ein

Ich bin neugierig, warum die Frequenz nur durch Ändern der Zeitskala von 20 Hz auf 480,8 kHz gesprungen ist. Ich dachte, die Frequenz könnte etwas genauer werden, wenn ich die Granularität der Zeitskala erhöhe, aber ich habe keine drastische Änderung von 20 Hz auf 480 kHz erwartet. Ich denke, eine dieser Messungen muss falsch sein, aber ich bin mir nicht sicher, warum. Es ist wahrscheinlich der 20-Hz-Wert, da die 480 kHz der bps-Rate ähneln, die ich für diese bestimmte Messung verwendet habe (sie war im Mikrocontroller auf 480.500 bps eingestellt).

Wie auch immer, wie gesagt, ich habe es geschafft, eine sehr genaue Messung durchzuführen, also bin ich mit den Ergebnissen zufrieden, aber ich wäre sehr daran interessiert, irgendwelche Ratschläge zu hören, die Sie bezüglich meiner INT- oder MISO-Messwerte haben könnten.

Nochmals vielen Dank für Ihre Hilfe, es wird sehr geschätzt!

Es ist nicht falsch: Wenn Sie eine größere Zeitskala verwenden, misst das Oszilloskop nur die Spitzen, die einer Übertragung entsprechen, da es so eingestellt ist, dass es alle N Millisekunden abtastet (abhängig von der verwendeten Oversampling-Rate); Wenn Sie die 1us/div-Skala verwenden, tastet sie schneller ab und kann alle Kanten erkennen. Denken Sie daran, dass die angezeigte Frequenz nur durch das gemessen wird, was Sie auf dem Bildschirm sehen, es ist keine absolute Wahrheit.
Danke für die Antwort, sie bestätigt, was ich zu vermuten begann, nachdem ich meine letzte Nachricht gepostet hatte. Ich habe mich geirrt, als ich ursprünglich dachte, dass die Frequenzmessung die "absolute Wahrheit" ist, wie Sie es ausdrücken, aber jetzt ist mir klar, dass sie sich ändert, je nachdem, was auf dem Bildschirm angezeigt wird.
Ja :) Ich hatte einen Laborkurs an der Universität, der sich auf Oszilloskope konzentrierte, und der Professor war in zwei Punkten wirklich stark: 1- Verwenden Sie NIEMALS die automatische Skalierung und 2- Lesen Sie das Signal, mehr als die Zahlen