treaki Geschrieben May 17, 2012 at 10:47 Geschrieben May 17, 2012 at 10:47 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ß Zitieren
borg Geschrieben May 17, 2012 at 11:32 Geschrieben May 17, 2012 at 11:32 Das ist leider technisch nicht möglich, über USB gehen maximal die besagten 1000 Pakete pro Sekunde. Zitieren
treaki Geschrieben May 17, 2012 at 12:20 Autor Geschrieben May 17, 2012 at 12:20 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ß Zitieren
Holy Geschrieben May 17, 2012 at 12:41 Geschrieben May 17, 2012 at 12:41 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?! Zitieren
ThomasKl Geschrieben May 17, 2012 at 13:02 Geschrieben May 17, 2012 at 13:02 die maximale Abtastrate erhält man wenn man den Callback benutzt Zitieren
borg Geschrieben May 17, 2012 at 13:16 Geschrieben May 17, 2012 at 13:16 @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. Zitieren
treaki Geschrieben May 17, 2012 at 14:22 Autor Geschrieben May 17, 2012 at 14:22 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ß Zitieren
borg Geschrieben May 17, 2012 at 14:41 Geschrieben May 17, 2012 at 14:41 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. Zitieren
ThomasKl Geschrieben May 17, 2012 at 14:49 Geschrieben May 17, 2012 at 14:49 Wie wäre es mit einem gleitenden Mittelwert? oder gibt es dafür nicht genügend Zwischenspeicher. Zitieren
borg Geschrieben May 17, 2012 at 15:00 Geschrieben May 17, 2012 at 15:00 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! Zitieren
ThomasKl Geschrieben May 17, 2012 at 16:12 Geschrieben May 17, 2012 at 16:12 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? Zitieren
treaki Geschrieben May 17, 2012 at 16:40 Autor Geschrieben May 17, 2012 at 16:40 danke euch. ich freu mich dann auf das update am wochenende:) und danke euch anderen auch:) PS: ich habe sicher usb 2 Zitieren
borg Geschrieben May 20, 2012 at 16:27 Geschrieben May 20, 2012 at 16:27 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. Zitieren
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.