Jump to content

Abtastrate vom DistanceIR Bricklet erhöhen


treaki
 Share

Recommended Posts

Hi,

 

Ich habe mir gerade ein Distance IR Bricklet zur Machbarkeitsanalyse eines Projektes bestellt. Leider stellt sich heraus dass ich es (mit der C High API) nicht öfter als eine ms abfragen kann. Lässt sich das irgendwie (software-/firmwareseitig) erhöhen?? ich würde mindestens 10 Millisekunden (10kHZ) Abfragerate brauchen.

 

gruß

Link to comment
Share on other sites

10 kHZ währen aber 100 packete pro sekunde was meiner Ansicht nach inerhalb der max 1000 packete pro Sekunde liegt. ich habe bekomme allerdings nur 20 Werte pro Sekunde was also noch weit unter dem Maximum von USB liegt.

 

gruß

Link to comment
Share on other sites

10kHz wären 10000 Pakete je Sekunde und nicht nur 100. Wenn du schreibst unter einer Millisekunde geht nix wäre das entsprechend schon 1000 Pakete je Sekunde. Die 20 Werte pro Sekunde dann im letzten Post entsprechen dann 50 Hz. Leider etwas verwirrend was du jetzt eigentlich erreichst und was dein Ziel ist?!

Link to comment
Share on other sites

@treaki

 

Vielleicht haben wir aneinander vorbei geredet. Über USB geht ein Paket pro ms (da können wir nichts dran ändern). Wenn du jetzt immer Getter aufrufst (z.B. get_distance), dann geht pro Aufruf eine Nachricht hin und eine Nachricht zurück. Macht also maximal 500 Aufrufe pro Sekunde (oder 500hz = 2ms pro Nachricht).

 

Wie ThomasKI schon sagt, mit Callbacks gibt es keine Nachricht in beide Richtungen, daher sind damit die vollen 1000 Nachrichten pro Sekunde möglich (oder 1000hz = 1khz = 1ms pro Nachricht).

 

Du schreibst jetzt von 10khz = 10000hz = 100us pro Nachricht, das ist nicht möglich.

 

Wenn du eigentlich meintest alle 10ms eine Nachricht (100hz) ist das natürlich Problemlos möglich! Da kannst du dann auch nebenbei noch 3 weitere Bricklets mit der gleichen Abtastrate benutzen, sogar ohne Callbacks.

Link to comment
Share on other sites

hi,

 

alles klar, da hab ich wohl etwas bei der umrechnung falsch gemacht... nach eurer auffassung würde ich dann also 500 abfragen pro sekunde hinbekommen was ich allerdings auch mache (habs auch per callback versucht) bekomme ich trotstem nur maximal 20 werte pro Sekunde also, danke holy, 50 Hz. ich würde allerdings gerne alle 5 ms einen wert kriegen. das mag mit den IO4 bricklet möglich sein aber mit dem distanceIR bekomme ich es nicht hin.

 

wie hoch ist die maximale abtastfrequenz vom DistanceIR und wenn sie kleiner als 50Hz ist wie kann ich sie nutzen. wenn sie tatsächlich bei 20 abfragen pro sekunde/alle 20 ms liegt. (wie ich hier erreiche) zurück zu meiner ursprünglichen frage: lässt sich da firmware/software noch was machen??

 

gruß

Link to comment
Share on other sites

Ah, ich sehe was das Problem ist. Ich rechne bei dem Distance IR Bricklet mit Durchschnittswerten über 50 Messungen. dadurch wird der Callback nur alle 20ms aufgerufen, weil sich nur alle 20ms der Wert ändert.

 

Die Sharp IR Sensoren haben ein starkes rauschen, deswegen die lange Durchschnittsbildung. Ich könnte allerdings ohne Probleme API hinzufügen um die Länge über die der Durchschnitt berechnet wird zu setzen.

 

Ich baue das am Wochenende mal ein, ich meld mich dann hier nochmal wenn die neue Version hochgeladen ist.

Link to comment
Share on other sites

In der Tat, warum bin ich da noch nicht selber drauf gekommen?

 

Ich hab insgesamt 250 Byte pro Bricklet Plugin zur Verfügung, ich denke das Distance IR benutzt momentan sowas wie 150, da sollte also etwas machbar sein.

 

Danke für den Tipp!

Link to comment
Share on other sites

In der Tat, warum bin ich da noch nicht selber drauf gekommen?

Vielleicht weil es deutlich aufwendiger zu verwalten ist. Mit welcher Samplerate wird das Bricklet den ausgelesen? auch mit 1kHz oder schneller. Der ADC schafft da doch bestimmt mehr.

 

Die Geschwindigkeit von Treaki könnte doch auch von einem langsamen USB-Port kommen oder? USB 1.1 ist etwa 40mal langsamer als USB 2.0, wenn bei USB 2.0 also 1000 Hz möglich sind wären es bei USB 1.1 nur  25 Hz.

oder sehe ich da was falsch?

 

Link to comment
Share on other sites

Neue Distance IR Firmware ist online: http://download.tinkerforge.com/firmwares/bricklets/distance_ir/

 

Ich habs nur ganz kurz getestet, war aber sehr zufrieden mit dem Ergebnis.

 

Beachte: Es ist weiterhin so das nur dann ein Callback kommt wenn sich der Wert seit dem letzten Callback verändert hat. Es ist jetzt aber so das er 1x pro ms kommt wenn sich der (gleitende Mittel-)Wert auch wirklich in der letzten ms verändert hat.

Link to comment
Share on other sites

Join the conversation

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

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share

×
×
  • Create New...