PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : myasuro



frank1210
15.02.2010, 07:54
OK, ich hab endlich geschafft die neue Lib zu installieren. Jetzt möchte ich natürlich auch myasuro benutzen. Wie binde ich den ein, und wie ändere ich die werte damit sie auch verarbeitet werden??
Gruß Frank

frank1210
16.02.2010, 08:22
Das mit dem einbinden hat auch schon geklappt. Jedenfalls ändert der Asuro sein Verhalten wenn ich in myasuro die werte ändere. Aber nicht so wie es soll. Wie setzen sich folgende Werte zusammen:

* Werte für 12 Segmente Encoder */
/*! Faktor zur Berechnung von Ticks um aus den in mm angegebenen Parameter
umzurechnen.\n
Der Originalwert ist \b 19363L und ist von der Anzahl der schwarz/weiss
Teilstuecke auf den Odometriescheiben abhaengig.\n
Der Originalwert wurde durch stochri ermittelt.
*/
#define MY_GO_ENC_COUNT_VALUE 19363L /*!< GO Funktion, Divisor fuer Entfernung */
/*! Faktor zur Berechnung von Ticks um aus den in Grad angegebenen Parameter
umzurechnen.\n
Der Originalwert ist \b 177L und ist von der Anzahl der schwarz/weiss
Teilstuecke auf den Odometriescheiben abhaengig.\n
Der Originalwert wurde durch stochri ermittelt.
*/
#define MY_TURN_ENC_COUNT_VALUE 177L /*!< Turn Funktion, Mutiplikator fuer Winkel */
?
Ich hab die encoderscheiben ja auf dem Motoritzel montiert, und daher eine Übersetzungsstufe mehr.
Gruß Frank

m.a.r.v.i.n
16.02.2010, 10:28
Erst mal grundsätzlich. Bei jeder Änderung der myasuro.h muß immer auch die AsuroLib neu übersetzt werden, bevor man sein Programm ebenfalls neu übersetzt.

Die Werte für deinen speziellen Fall müssten grob genommen folgende sein: MY_GO_ENC_COUNT_VALUE muss durch 5 geteilt werden und
MY_TURN_ENC_COUNT_VALUE mal 5 genommen werden.

Allerdings solltest du zuerst feststellen (d.h. messen), ob du überhaupt ein brauchbares Signal von den Encodern bekommst.

frank1210
16.02.2010, 11:44
Hi Danke erstmal für die schnelle Antwort.
Brauchbare Signale kommen-denke das sie brauchbar sind- denn ich kann die Funktionen mit den Encoderscheiben ja benutzen, blos die Werte stimmen halt nicht.
Mit dem übersetzen verstehe ich so, das bei jeder Änderung in "myasuro"ein "make-lib-bat" durchzuführen ist, und danach erst neue Programme schreiben.
Gruß Frank

m.a.r.v.i.n
16.02.2010, 12:45
Ja, so ist es. Make-lib.bat aufrufen, danach dein eigenes Programm übersetzen,. Auf dem Foto sehe ich, dass du die 8er Scheiben verwendest. Dafür stimmen die o.g. Werte leider nicht (die stimmen nur für die 12er Scheiben).
Für MY_GO_ENC_COUNT_VALUE müßte der Wert um die 29750 liegen (/5 für deine Applikation).
Formel: Radumfang / (Ticks pro Rad Umdrehung) * 10000
Der MY_TURN_ENC_COUNT_VALUE Wert müsste so um 111 (*5 für deine Applikation) liegen.
Formel: (Ticks pro Rad Umdrehung) / 360° * 1000

Radumfang ist ca. 119 mm,
Ticks pro Radumdrehung ist 60 (12er Scheibe) bzw. 40 (für 8er Scheibe). Das gilt für das mittlere Zahnrad als Encoderrad.
Getriebeuntersetzung ist 25 (50/10 = 5 je Zahnrad)

Ich hoffe ich habe mich jetzt nicht allzu sehr verechnet. Bitte nachprüfen!

frank1210
16.02.2010, 13:45
Hi, m.a.r.v.i.n.
Fast geklappt mit den Einstellungen. Die Entfernung haut hin.
Ich hab aber nen Radumfang(38,5mmxpi) von 121 mm also 121/200x10000=6050.hab ich eingetragen und er fährt die gewünschte Strecke.
Winkel habe ich 555 eingetragen, aber bei 90Grad macht er denke mal 100 Grad.
Muß ich probieren, oder kann man woanders noch korrigieren??
Gruß und vielen Dank
Frank

m.a.r.v.i.n
16.02.2010, 22:22
Was mir noch einfällt ist, dass der Default Wert für MY_TURN_ENC_COUNT_VALUE 177 beträgt, und nicht 167 wie nach obiger Formel. Wie der Wert zustandekommt, ist mir ein Rätsel. Vielleicht liegt es ja daran.

Valen
16.02.2010, 23:38
...
Für MY_GO_ENC_COUNT_VALUE müßte der Wert um die 29750 liegen (/5 für deine Applikation).
Formel: Radumfang / (Ticks pro Rad Umdrehung) * 10000
Ok, nun macht meinen wert mir auch sinn. Es ist also die strecke im milimetern gleich an 10.000 ticks forwärts oder ruckwärts gefahren. Das zu messen braucht man ein wirklich grossen zimmer. 20 meter mess gerät (bis auf millimeter) habe ich auch nicht. :-s


Der MY_TURN_ENC_COUNT_VALUE Wert müsste so um 111 (*5 für deine Applikation) liegen.
Formel: (Ticks pro Rad Umdrehung) / 360° * 1000Das ist etwas unklarrer. Ich mache daraus 'milli-ticks pro grad rad-umdrehung'. Wieviel grad dein asuro dadurch um seiner achse dreht ist aber abhängich von den Rad-basis (die abstand zwisschen den beiden rad-grund kontakt flachen). Und auch den radumfang oder durchmesser.

m.a.r.v.i.n
17.02.2010, 10:25
Hallo Valen,

vielen Dank für deine Antwort, jetzt wird mir auch klar wo mein Denkfehler liegt. Stimmt natürlich, für die Drehung muß auch der Achsabstand berücksichtigt werden und nicht nur der Radumfang. Die Formel (Ticks pro Rad Umdrehung) / 360° * 1000 ist einfach falsch.

Der verwendeten Faktoren von 10000 bzw. 1000 ist nur eine Hilfskrücke um ohne Kommazahlen auszukommen und Floating Point Berechnungen zu vermeiden.

Valen
17.02.2010, 16:25
Der verwendeten Faktoren von 10000 bzw. 1000 ist nur eine Hilfskrücke um ohne Kommazahlen auszukommen und Floating Point Berechnungen zu vermeiden.

Ja, das habe ich schon geähnt. Bei meiner Asuro ist die abstand zwischen den rädern auch ungefehr 100mm. Vielleicht sitzt das irgendwie in das 1000 zahl mit einer weitere faktor. Ik habe mich auch noch nicht wirklich mit diesen Go(Turn) funktionen bekummert.