Jump to content

Inkonstante Datenrate bei Accelerometer


Recommended Posts

Geschrieben

Hallo zusammen,

ich möchte gerne mit folgendem Aufbau Vibrationen/Schwingungen messen mit einer hohen Genauigkeit. Hierzu möchte ich mit einer Frequenz bis 1000Hz also einem Speicherinterval von 1ms loggen.

Aufbau zu Testzwecken:

Tower:

Red Brick 1.0

Master Brick 2.1

 

Bricklets:

Accelerometer 1.1

 

Ich habe alles am Pc via Usb angeschlossen und lasse es über Brick Viewer 2.3.16 laufen (Alle Komponenten Up to date). Dort unter Data Logger zeichne ich Testweise auf. Parametriert habe ich das Accelerometer unter Devices mit (siehe Anhang):

Acceleration: 1 Milliseconds

Options:

Datarate: 1600Hz

Full Scale: 8g

Filter Bandwidth 800Hz

 

Wenn ich den Aufbau Testweise laufen lasse werden die Daten wie im Anhang mit einem inkonstanten delta t aufgezeichnet. Also die Datenrate ist nicht konstant. Woran kann das liegen? Ich habe schon unterschiedliche Brickletkabel probiert um das auszuschliessen. Außerdem habe ich unterschiedliche Parameter probiert was auch keine konstanteren Ergebnisse geliefert hat.

 

Ich freue mich über jede Idee und Anregung um das Problem zu lösen.

config1.json

logger_data_1544433502.xlsx

Geschrieben

Die hohen Sprünge im 2 Sekunden-Takt liegen am verwendeten RED Brick Image. Dort gab es einen Kernel-Prozess der alle 2 Sekunden viel CPU-Zeit geklaut hat. Im neuesten Image (1.13) ist das gefixt.

 

Könntest du zum testen einfach einmal den Master Brick direkt per USB am PC anschließen? Wie verhält es sich dann mit dem delta-t?

Geschrieben

Vielen Dank für die Hilfe,

 

ich aktualisiere das Image des RED Brick gleich und melde mich dann nochmal. In der Zwischenzeit habe ich ein paar Testläufe mit dem Master Brick gemacht. Die Parameter sind bis auf die Acceleration immer gleich geblieben:

Data Rate: 1600Hz

Full Scale: 8g

Filter Bandwodth: 800Hz

 

Ergebnisübersicht siehe Anhang. Falls mehr Details nötig sind kann ich die gerne Nachreichen. Leider gibt es auch in dieser Konfiguration immernoch Sprünge.

Vergleich_unterschiedlicher_Tastraten_nur_Master_+_Acc.pdf

Geschrieben

Also prinzipiell schafft das Bricklet die vollen 1000 Nachrichten pro Sekunde, gerade mit folgendem Python-Skript getestet:

 

#!/usr/bin/env python
# -*- coding: utf-8 -*-

import time

HOST = "localhost"
PORT = 4223
UID = "3cnLyG" # Change to the UID of your Accelerometer Bricklet

from tinkerforge.ip_connection import IPConnection
from tinkerforge.bricklet_accelerometer import BrickletAccelerometer

count = 0

def cb_acceleration(x, y, z):
    global count
    count += 1

if __name__ == "__main__":
    ipcon = IPConnection()
    a = BrickletAccelerometer(UID, ipcon)
    ipcon.connect(HOST, PORT)
    a.set_configuration(a.DATA_RATE_1600HZ, a.FULL_SCALE_8G, a.FILTER_BANDWIDTH_800HZ)
    a.register_callback(a.CALLBACK_ACCELERATION, cb_acceleration)
    a.set_acceleration_callback_period(1)

    while True:
        time.sleep(1)
        print('{0} messages per second'.format(count))
        count = 0

    raw_input("Press key to exit\n") # Use input() in Python 3
    ipcon.disconnect()

 

Ausgabe:

olaf@pc2:~/build20/python$ python example_callback.py

1002 messages per second

1001 messages per second

1001 messages per second

1000 messages per second

1001 messages per second

1001 messages per second

1001 messages per second

1001 messages per second

1001 messages per second

1001 messages per second

1001 messages per second

1001 messages per second

1001 messages per second

1000 messages per second

1002 messages per second

1001 messages per second

1001 messages per second

1001 messages per second

1001 messages per second

1001 messages per second

1000 messages per second

1001 messages per second

1000 messages per second

1001 messages per second

1001 messages per second

 

Wenn ich das bei mir auf dem PC mit dem Logger im Brick Viewer versuche, kommt dieser mit dem Loggen nicht hinterher und die Daten fangen an sich aufzustauen. Vielleicht passiert das auch bei dir? Der Logger ist leider nicht wirklich darauf ausgelegt riesige Datenmengen zu loggen.

Geschrieben

Aha, danke für's testen.

 

Das ist aber jetzt schlecht für mein Vorhaben. Gibt es evtl. eine andere Möglichkeit in der Größenordnung um 1000Hz zu loggen?

 

Wie man meinem vorherigen Post entnehmen kann ist ja nicht einmal bei 20Hz ein 100%iges Ergebnis möglich.

Geschrieben

Hattest du denn vor ein eigenes Programm zu schreiben oder nur den Logger zu nutzen? Mein Beispiel oben wäre ja bereits ein guter Einstieg. Es erhebt die Daten bereits mit den vollen 1000Hz, es fehlt nur das schreiben in eine Datei.

Geschrieben

Das Programm ist bereits geschrieben. Aber es besteht das gleiche Problem wie am Brickviewer. Die geloggten Daten werden inkonstant abgespeichert. Ich benutze dafür zusätzlich zum Master Brick und Accelerometer Bricklet noch ein RED Brick, ein Stepdown Power Supply, ein OLED 128,64 Bricklet, ein GPS Bricklet und einen Rotary Encoder Bricklet. Per USB Stick am RED Brick werden die Daten geloggt. So wie du schreibst verstehe ich das Problem Hardwareseitig? Liegt das vielleicht am USB?

Geschrieben

Es gibt hier denke ich kein Hardwareseitiges Problem.

 

Als ersten Schritt sollten wir erstmal in deinem Programm die vollen 1000Hz erreichen. Wenn du nur Master Brick + Accelerometer Bricklet anschließt und in deinem Programm einfach nur die Daten loggst (oder sogar nur zählst erstmal), dann solltest du auf jeden Fall auf 1000Hz kommen. Wenn das funktioniert müssen wir von da aus schauen wie wir den Rest der Hardware einbinden.

 

Dabei ist wichtig: 1000 Nachrichten pro Sekunde sind die maximale Anzahl an Nachrichten die über einen USB-Anschluss laufen können bei uns im System. Wenn du z.B. einen Getter verwendest wird eine Anfrage zum Bricklet geschickt und eine Antwort wieder zurück. Das sind dann bereits zwei Nachrichten. D.h. Callbacks sind in deiner Anwendung definitiv notwendig (die erzeugen nur eine Nachricht, da es die Anfrage nicht gibt).

 

Wenn du mehrere Bricklets verwendest teilen sich diese die Anzahl der Nachrichten. Wenn du also die 1000 Nachrichten/Sekunde von dem Accelerometer Bricklet benötigst, wirst du einen Stapel benötigen der nur aus Master + Accelerometer besteht und einen weiteren für die restlichen Module. Alternativ wenn die Aufzeichnung "schubweise" stattfinden soll kann man es auch so bauen das die anderen Bricklets nicht angesprochen werden während die Aufzeichnung läuft.

 

Wie soll dein Aufbau später aussehen? Standalone irgendwo in einer kleinen Box oder ist er immer am PC angeschlossen?

Geschrieben

Grob kannst du bei jedem Getter mit 2ms und bei jedem Setter mit 1ms Laufzeit rechnen. Du hast in deiner Schleife 4 getter und 8 Setter. Das entspricht also 16ms pro Schleifendurchgang, ich würde in dem Programm also in etwa mit einem Durchsatz von maximal 1000/16 = 62 Beschleunigungsdaten pro Sekunde rechnen.

 

Ich würde versuchen das so umzustellen das du deine Aufzeichnung der Daten per Callback machst (z.B. für 500ms), diese speicherst und danach darstellst. Nach dem darstellen wieder die nächste Aufzeichnung starten etc.

Geschrieben

Hallo zusammen,

 

wir haben jetzt mal noch weiter rumprobiert und kommen leider auf keinen grünen Zweig. Ich hänge das Skript, mit dem wir versucht haben, es so minimalistisch wie möglich zu halten, mal an. Es wird komplett auf USB verzichtet und direkt auf dem RED Brick geschrieben. Das Ergebnis hänge ich ebenfalls an. Es zeigt sich jedoch, dass wir nur knapp 400 Nachrichten pro Sekunde schreiben können und diese auch sehr inkonstant (Die Zeilen sind jeweils kommentiert mit "#").

 

Gibt es noch Ideen wie wir die Rate erhöhen können?

record.py

test_acc3.txt

Geschrieben

Bei mir auf dem PC läuft dein Programm gut:

 

# 1004 messages per second15446972611976 0.015 -0.025 0.982

15446972611986 -0.007 -0.022 1.003

15446972612000 0.024 -0.014 1.001

15446972612006 0.011 -0.019 0.977

15446972612016 0.015 -0.017 0.988

15446972612025 0.001 -0.023 1.001

15446972612035 -0.001 -0.03 0.974

15446972612045 -0.017 -0.018 1.003

15446972612055 -0.001 -0.008 0.992

15446972612066 0.017 -0.018 0.965

15446972612091 0.012 -0.036 0.976

15446972612092 -0.004 -0.031 0.975

15446972612095 0.027 -0.015 0.987

15446972612105 0.006 -0.033 0.974

15446972612115 -0.003 -0.029 0.986

15446972612125 0.002 -0.025 0.977

15446972612136 -0.001 -0.022 0.986

15446972612145 -0.015 -0.019 0.996

15446972612155 0.015 -0.008 0.962

15446972612166 0.0 -0.02 1.011

15446972612176 0.009 -0.023 0.986

15446972612186 0.024 -0.028 0.988

15446972612196 0.021 -0.019 0.986

15446972612205 -0.003 -0.035 0.97

15446972612216 -0.006 -0.011 0.965

15446972612226 0.009 -0.032 0.974

15446972612236 -0.006 -0.034 0.98

15446972612247 0.009 -0.023 0.985

15446972612256 -0.001 -0.03 1.008

15446972612266 0.034 -0.026 1.006

15446972612275 0.001 -0.026 0.994

15446972612286 0.013 -0.041 0.971

15446972612295 0.002 -0.036 0.983

15446972612306 0.0 -0.015 0.992

15446972612316 0.0 -0.035 0.989

15446972612326 0.006 -0.036 0.986

15446972612336 -0.004 -0.018 0.994

15446972612351 0.002 -0.032 0.983

15446972612356 -0.006 -0.017 1.004

15446972612366 -0.007 -0.018 0.988

15446972612376 0.0 -0.023 0.977

15446972612387 0.003 -0.028 0.979

15446972612396 0.002 -0.013 1.011

15446972612406 0.007 -0.022 0.992

15446972612416 0.002 -0.035 0.983

15446972612426 -0.01 -0.023 0.998

15446972612436 0.0 -0.027 1.011

15446972612446 -0.007 -0.021 0.984

15446972612456 0.014 -0.031 0.996

15446972612466 0.013 -0.022 0.98

15446972612476 -0.001 -0.04 0.984

15446972612486 -0.01 -0.016 0.988

15446972612496 0.0 -0.036 0.985

15446972612506 0.021 -0.018 0.987

15446972612516 -0.014 -0.029 0.981

15446972612526 -0.004 -0.019 0.984

15446972612536 0.009 -0.018 1.001

15446972612546 -0.007 -0.024 0.995

15446972612555 0.006 -0.024 0.986

15446972612566 -0.001 -0.015 0.999

15446972612576 0.007 -0.019 1.007

15446972612586 0.004 -0.031 0.984

15446972612596 -0.002 -0.026 0.96

15446972612606 0.0 -0.019 0.972

15446972612617 0.023 -0.032 1.0

15446972612626 0.019 -0.031 0.973

15446972612636 0.006 -0.027 0.979

15446972612647 -0.002 -0.029 1.001

15446972612657 0.013 -0.023 0.987

15446972612669 -0.001 -0.032 0.983

15446972612677 -0.008 -0.023 0.992

15446972612688 0.018 -0.026 1.017

15446972612697 0.008 -0.023 0.988

15446972612709 0.018 -0.015 0.976

15446972612718 0.002 -0.023 0.977

15446972612727 -0.019 -0.041 0.97

15446972612737 0.011 -0.017 0.99

15446972612748 0.006 -0.029 0.998

15446972612759 0.009 -0.025 0.966

15446972612768 0.016 -0.034 1.005

15446972612778 0.009 -0.036 0.985

15446972612788 0.017 -0.038 1.006

15446972612798 0.002 -0.029 0.978

15446972612808 -0.007 -0.03 0.979

15446972612822 -0.015 -0.025 0.991

15446972612831 0.0 -0.013 0.99

15446972612837 0.002 -0.018 0.967

15446972612847 0.012 -0.025 0.999

15446972612857 0.001 -0.023 0.991

15446972612867 0.009 -0.027 0.964

15446972612879 0.004 -0.015 0.991

15446972612888 -0.006 -0.024 0.977

15446972612897 0.014 -0.025 0.972

15446972612908 0.005 -0.027 0.969

15446972612919 0.006 -0.018 0.997

15446972612927 -0.011 -0.025 0.98

15446972612937 -0.002 -0.012 0.975

15446972612947 0.019 -0.021 0.989

15446972612957 0.004 -0.023 0.999

15446972612967 0.017 -0.024 0.979

15446972612977 -0.003 -0.031 0.987

15446972612987 0.0 -0.029 0.955

15446972612996 0.006 -0.042 1.002

15446972613007 0.003 -0.021 0.993

15446972613018 0.009 -0.028 0.982

15446972613027 0.013 -0.037 0.987

15446972613037 -0.021 -0.037 1.007

15446972613048 0.001 -0.02 0.997

15446972613058 0.006 -0.039 0.97

15446972613071 0.01 -0.028 0.97

15446972613078 -0.009 -0.026 0.992

15446972613086 0.003 -0.015 0.982

15446972613102 0.0 -0.027 0.988

15446972613106 0.004 -0.032 0.99

15446972613117 -0.013 -0.026 0.998

15446972613127 0.004 -0.03 0.988

15446972613136 -0.004 -0.022 0.983

15446972613146 0.024 -0.023 0.97

15446972613156 0.014 -0.029 0.984

15446972613167 -0.008 -0.012 0.992

15446972613189 -0.007 -0.03 0.975

15446972613190 -0.009 -0.032 1.005

15446972613198 0.009 -0.025 1.01

15446972613208 0.012 -0.025 0.97

15446972613217 -0.001 -0.033 0.976

15446972613228 0.019 -0.015 1.011

15446972613237 0.011 -0.024 0.981

15446972613247 0.009 -0.022 1.006

15446972613257 0.013 -0.037 0.989

15446972613268 0.009 -0.024 0.986

15446972613278 -0.007 -0.024 0.985

15446972613287 -0.016 -0.03 0.991

15446972613296 0.02 -0.013 0.978

15446972613307 0.022 -0.017 1.03

15446972613325 0.004 -0.016 0.985

15446972613328 -0.015 -0.046 0.982

15446972613337 0.003 -0.021 0.998

15446972613347 -0.006 -0.031 0.99

15446972613356 0.006 -0.023 0.993

15446972613368 0.008 -0.029 0.973

15446972613378 -0.001 -0.013 0.997

15446972613387 0.016 -0.034 0.975

15446972613397 0.015 -0.016 0.989

15446972613419 -0.003 -0.03 0.972

15446972613419 0.013 -0.036 0.973

15446972613427 0.009 -0.029 0.981

15446972613438 -0.005 -0.022 0.984

15446972613448 -0.014 -0.022 0.976

15446972613457 0.015 -0.027 1.001

15446972613468 0.002 -0.031 1.005

15446972613478 0.002 -0.023 1.021

15446972613488 -0.01 -0.02 0.975

15446972613497 -0.006 -0.028 0.994

15446972613508 -0.002 -0.03 0.986

15446972613524 0.015 -0.026 1.011

15446972613528 0.018 -0.032 0.998

15446972613538 0.001 -0.026 0.988

15446972613548 -0.005 -0.032 0.973

15446972613557 0.0 -0.027 0.973

15446972613568 -0.002 -0.025 0.987

15446972613579 0.003 -0.022 0.987

15446972613588 0.011 -0.013 0.968

15446972613597 0.014 -0.019 0.999

15446972613608 -0.004 -0.024 0.996

15446972613620 -0.004 -0.033 0.97

15446972613627 0.0 -0.023 0.977

15446972613636 0.018 -0.027 0.961

15446972613646 -0.002 -0.032 0.972

15446972613656 0.0 -0.009 0.965

15446972613667 -0.011 -0.029 0.992

15446972613677 0.0 -0.029 0.995

15446972613688 0.002 -0.015 0.982

15446972613697 0.023 -0.023 0.984

15446972613713 -0.026 -0.029 0.981

15446972613716 -0.01 -0.026 1.006

15446972613728 -0.003 -0.023 0.964

15446972613737 0.0 -0.026 1.0

15446972613747 0.012 -0.028 0.983

15446972613757 0.012 -0.032 0.977

15446972613768 -0.006 -0.026 0.994

15446972613777 -0.017 -0.031 0.97

15446972613787 -0.006 -0.024 0.965

15446972613798 0.012 -0.026 0.988

15446972613807 0.006 -0.037 0.994

15446972613818 0.009 -0.021 0.977

15446972613828 -0.011 -0.019 1.014

15446972613838 0.005 -0.031 0.993

15446972613847 0.014 -0.019 0.972

15446972613857 0.021 -0.029 0.997

15446972613867 0.006 -0.022 0.993

15446972613877 -0.023 -0.017 0.95

15446972613887 0.0 -0.027 1.005

15446972613898 -0.009 -0.025 1.011

15446972613906 0.012 -0.025 0.973

15446972613916 -0.005 -0.023 0.977

15446972613926 0.013 -0.032 0.972

15446972613937 -0.014 -0.015 0.998

15446972613947 0.001 -0.026 0.999

15446972613958 0.012 -0.01 1.0

15446972613966 0.007 -0.019 0.971

15446972613977 0.008 -0.023 0.97

15446972613987 0.009 -0.019 0.99

15446972613996 0.009 -0.02 0.988

15446972614006 0.004 -0.015 0.982

15446972614017 -0.014 -0.038 1.001

15446972614027 0.01 -0.024 0.978

15446972614037 0.017 -0.017 0.988

15446972614047 -0.002 -0.03 0.982

15446972614093 0.007 -0.028 0.983

15446972614094 0.027 -0.017 0.98

15446972614094 0.001 -0.032 1.013

15446972614095 0.005 -0.027 0.987

15446972614115 0.008 -0.028 0.985

15446972614137 0.003 -0.033 0.957

15446972614138 -0.01 -0.04 0.978

15446972614139 0.017 -0.015 0.989

15446972614143 0.021 -0.028 1.006

15446972614163 0.004 -0.033 0.983

15446972614170 0.012 -0.022 0.983

15446972614171 0.007 -0.026 0.991

15446972614179 0.0 -0.017 0.997

15446972614185 -0.012 -0.021 0.956

15446972614196 0.018 -0.027 0.997

15446972614207 -0.009 -0.026 0.983

15446972614216 0.019 -0.046 0.989

15446972614246 0.0 -0.026 0.986

15446972614247 0.003 -0.019 1.022

15446972614247 0.0 -0.02 0.998

15446972614256 0.018 -0.034 0.981

15446972614266 0.011 -0.028 1.006

15446972614276 0.014 -0.027 1.003

15446972614286 0.008 -0.022 0.995

15446972614297 0.008 -0.008 1.002

15446972614306 -0.002 -0.02 0.982

15446972614316 0.001 -0.021 1.0

15446972614327 0.015 -0.024 0.999

15446972614337 0.008 -0.021 0.972

15446972614347 0.016 -0.033 0.982

15446972614356 0.005 -0.021 1.002

15446972614367 0.007 -0.029 0.977

15446972614377 0.013 -0.021 0.96

15446972614387 -0.004 -0.017 0.988

15446972614397 0.011 -0.015 1.009

15446972614406 0.005 -0.023 1.022

15446972614417 0.007 -0.022 0.976

15446972614427 0.0 -0.017 0.993

15446972614436 0.001 -0.013 1.009

15446972614448 0.0 -0.009 0.994

15446972614456 0.009 -0.03 0.987

15446972614466 0.005 -0.03 0.995

15446972614476 0.014 -0.02 0.99

15446972614486 0.02 -0.025 0.99

 

RED Brick probiere ich gleich aus.

Geschrieben

Wenn ich den RED Brick per USB anschließe und das über den PC laufen lasse komme ich auf ~900 Nachrichten, das könnte man eventuell noch etwas tweaken um auf die vollen 1000 zu kommen.

 

Wenn ich das ganze über einen WLAN-Stick über WLAN mache komm ich auf 600.

 

Wenn ich die record.py auf dem RED Brick ausführe (GPU, webserver, etc bereits alles ausgestellt) komme ich auf ~550 Nachrichten pro Sekunde. Leider vergleichsweise weit weg von den vollen 1000. Sieht also so aus als wäre der Flaschenhals auf dem RED Brick entweder das eigentliche schreiben auf die SD Karte oder die zusätzliche CPU-Last die dadurch erzeugt wird.

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Gast
Reply to this topic...

×   Du hast formatierten Text eingefügt.   Formatierung jetzt entfernen

  Only 75 emoji are allowed.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Clear editor

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

×
×
  • Neu erstellen...