Geschwindigkeit bei Asuro
Hallo,
ich wollte mal fragen wie man beim Asuro die Geschwindigkeit bestimmen kann. Denn dafür müßten ja zwei Dinge gleichzeitig ablaufen. Der Prozessor müßte durch zählen des Schwingers die Zeit bestimmen und gleichzeitig durch überprüfen der Helligkeitswechsel die Helligkeitswechsel zählen. Dann könnte man den Rest ja einfach Hochrechnen. Aber wie schaffe ich, daß er das parrallel macht???
Oder habe ich einen Denkfehler?
MFG
Christian
Liste der Anhänge anzeigen (Anzahl: 1)
Hier ist der Beispielcode zur Geschwindigkeitsbestimmung. Mit der Weja-Lib sind es wirklich nur ein paar Zeilen. Der relevante Code ist als Auszug hier:
Code:
unsigned long endtime=Gettime()+1000;
while(1){
if (Gettime()>endtime){
v=encoder[0]*3; // berechnet Geschwindigkeit in mm/s
//SerWrite("v = ",4); PrintInt(v); SerWrite("mm/s\n\r",6);
endtime=Gettime()+1000; //setzt neue Sekunde auf
Encoder_Set(0,0); //Encoder auf 0 setzen
}
}
Das gesamte Programm incl. Weja-Lib ist in dem angehängten zip-File.
Erklärung:
Gettime() ist eine Funktion in asuro.c, die einen Taktzähler in ms zurückgibt.
encoder[0] ist die Variable in der die Helligkeitsunterschiede mittels einer Interruptroutine hochgezählt werden.
Mit der Zeile
v=encoder[0]*3;
wird die Geschwindigkeit in mm/s berechnet, weil bei mir ein Helligkeitsunterschied 3mm entspricht.
Wenn du das angehängte Beispielprogramm compilierst, dann musst du auch die dazugehörigen Dateien asuro.c und asuro.h aus dem zip-File verwenden, sonst läuft es nicht.
Gruss Waste
Liste der Anhänge anzeigen (Anzahl: 1)
Liebe Mitleser,
lasst Euch nicht beirren, mit dem Radencoder vom Asuro kann sehr wohl die Geschwindigkeit gemessen werden und das je nach eingebauter Reflexscheibe alle 2mm bzw. 3mm. Zum Beweis ist ein Diagramm angehängt, es zeigt die vom Asuro selbst gemessene Beschleunigung aus dem Stand. Da fällt nichts auf 0 zurück, wie von pebisoft behauptet.
Waste
Erklärungsversuch Software versus Fahrradcomputer
Hallo pebisoft, und alle anderen,
hier vielleicht mal eine Erklärung für die Unterschiede der Messmethode aus dem tollen Beispielprogramm (genau sowas wollte ich auch schon mal schreiben, danke für's Muster) und der Methode im küchenbrettroboter (Fahrradcomputer)
Der Fahradcomputer bekommt EIN Signal pro Radumdrehung. Über die vorher eingegebene Radgröße weiss der Fahrradcomputer jetzt, dass nach diesem Signal eine bestimmte Strecke, wir nennen sie mal m, zurückgelegt wurde. Nun hat der Fahradcomputer eine Eingebaute Uhr, die er mit jedem Signal ausliest und sofort wieder auf 0 zurücksetzt. (P.S.: Dies wird auch nicht angezeigt.) Die ausgelesene Zeit wollen wir mal s nennen.
In dem sehr schönen Beispielprogramm (nochmals Danke) wurde eine Uhr aufgezogen, die für eine Sekunden den Raddekoder mal so zählen ließ. Diese eine Sekunde wollen wir auch hier mal s nennen, da es sich ja um eine Zeit handelt. Nun wird nach dieser EINEN Sekunde der Zähler vom Raddecoder ausgelesen und sofort wieder auf 0 gesetzt. Da der Zähler ja einem Weg entspricht können wir den Wert auch m nennen.
Also in beiden Fällen haben wir s (Zeit) und m (Weg).
Formel für die Geschwindigkeit bleibt unabhängig von der Messmethode v=m/s (habe ich in der Schule gelernt. pebisoft, bist du einverstanden?)
Der einziege Unterschied ist also, dass das eine System eine feste Zeit kennt (Software) und das andere System kennt den Weg (Fahrradcomputer). Beide Systeme ermitteln also nur den fehlenden 2.ten Wert und berechnen nach der gleichen Formel ein Ergebnis. Das ist in beiden Fällen RISCHTIEG.
Aber in beiden Fällen hinken die Messsystheme tatsächlich ein gaaaanz klein wenig hinter her. Aber keine fällt auf 0 ab. Dazu ist noch nicht mal ein Condensator nötig.
Gruß vom Sternthaler (heute zum ersten mal hier mit eigenem Senf.)
P.S.: Mein Asuro fährt dank einiger Unterstützung aus diesem Forum schon geradeaus.