-
sekundenkleber löst sich recht leicht mit heisswasser was mit etwas spüli versetzt ist. vorsichtig sein, batterien raus, und dann mit nem wattestäbchen probieren. hat bei mir gut geholfen.
aceton wird wahrscheinlich den lack der platine wegätzen und die leiterbahnen angreifen. würd ich nicht unbedingt probieren.
-
Ich hab den Sekunderkleber auf Unterseite des Motors angebracht und den so auf die Platine gedrückt. Ob da heißes Wasser drankommen kann?
Hab jedenfalls das Glück die Motoren richtig positioniert zu haben.
-
hmm.. das dürfte schwer werden. allerdings ist die chance bei klebstofflösern und aceton ungefähr genauso groß.
-
Ich bin zwar zur zeit noch mit dem " Asuro wieder voll funktionstüchtig machen " beschäftigt
aber mir ist ein problem eingefallen das mich beschäftigt ...
ich habe bei meiner erweiterungsplatine einen piezo lautsprecherchen
und das produziert dank oberwellen sogar rechteckig fast ein schöneres signal als sinusförmig ..
und dieser piezo ist an meine porterweiterung angeschlossen ..
-> wenn ich ein gleichmässiges signal möchte muss ich regelmäßig den i2c bus verwenden ..
aber ich verwende im hauptprogramm auch i2c ...
setze ich im timer interrupt nur ein flag und wechsle im hauptprogramm dann den pegel habe ich vermutlich immer unterschiedliche zeiten ...
nunja da mein asuro zur zeit ziemlich demontiert ist
-- batteriekabel sind mir abgerissen und die löte ich erst wieder an wenn ich die motoren "gefixt" habe
werde ich es dann einfach mal mit der hauptprogramm variante probieren
--> schalte ich die interrupts vor und nach jeder i2c kommunikation ein/aus rufe ich vermutlich mehr teufel als ich damit banne ?
habe ich vl irgendeine möglichkeit übersehen ?
( bin am überlegen ob ich die INT0 Leitung nicht mit dem piezo verbinde aber da es eine smd platine ist wäre das vermutlich ziemlich auffälliges gemurkse )
aber dann wären dafür die softwareprobs schnee von gestern...
-
hmm dann probiere doch die leitung mit dem piezo zu verbinden. es muss in erster linie funktionieren, und nicht unbedingt schön aussehen ;)
-
ok der asuro ist wieder einsatzbereit ^^
jep das werd ich wohl machen .. aber der kommt ganz nach hinten in der liste ... ist verdammt leise :(
ab jetzt ist mein hauptproblem die genauigkeit...
( mein asuro dreht sich z.B um die eigene achse und ermittelt den größten lichteinfall und dann dreht er sich auf diese position ) ...
und irgendiwie macht er das immer nochnicht exakt ( 360° sind != 360° aber auch nich immer der selbe wert anders oO ? )
dazu gibts sicher schon einige threads oder ?
ich werd herumsuchen aber wenn jemand einen besonders hilfreichen thread oder sonstiges weis .. her damit ^^
-
ja such mal.. die beste möglichkeit ist mehrfach zu messen und den mittelwert zu bilden. lass ihn 10mal drehen und dann drehen, so wirds genauer. je öfter du misst, desto geringer der fehler
-
ok ich hab zu dem thema einiges gefunden .. eigentlich zuviel *g*
jetzt kenn ich mich zwar besser aber unterm strich wieder garnicht aus
... mein asuro wird vermutlich immer nur eher kurze strecken fahren und blöderweise habe ich ähnlich wie sternthaler einen etwas lahmeren motor
und deshalb fährt mein asuro mit go und turn eher weniger zufriedenstellend weg...
leider habe ich den überblick verloren .. mit welchem prinzip kann ich dass jetzt am einfachsten unterbinden ?
naja werd mich morgen nochmal durch die codebeispiele lesen dass geht heute nichtmehr so gut...
-
also ich habe zwar von reglern bis jetzt so gut wie garnichts gehört aber
mein plan sieht momentan so aus :
einen PI regler programmieren der mir am ende die motor pwm werte für eine schöne geradeausfahrt liefert
und dann einen PID regler proggen der mit diesen werten startet ?
EDIT : jaja ... irgendein wort aufgeschnappt und damit rumgeworfen .. *g*
als erstest mache ich einen I regler um die standard einstellung meiner motoren zu finden für 100 und 200 speed ( die geschwindigkeiten werden per taster einstellbar sein )
und dann programmiere ich einen P regler oder so ...
mal sehen was die nächsten 100 odometriethreads seiten so erzählen ^^
-
Code:
diff = encoder[LEFT] - encoder[RIGHT];
if (diff > 0) { //Left faster than right
if ((l_speed > speed) || (r_speed > 244)) l_speed -= 1;
else r_speed += 1;
}
if (diff < 0) { //Right faster than left
if ((r_speed > speed) || (l_speed > 244)) r_speed -= 1;
else l_speed += 1;
}
Msleep(1);
MotorSpeed(l_speed,r_speed);
}
das bewirkt bei meinem asuro dass er zuerst halbwegs gleichmäßig
dann einen bogen bis mehrere kreise
dann auf einem rad stehenbleibt
dann plötzlich wieder ganz schnell mit beiden wegfährt und das ganze widerholt
???
warum wird bei der go() funktion EncoderSet(0,0) verwendet ?