1234567890
Moin zusammen,
mein Asuro funktioniert super, nur fährt er leider nicht geradeaus.
Ich hab versucht selbst Regelungssoftware zu schreiben, die auch funktionierte. Leider nur ab und zu.
Asuro beginnt mit im Kreis fahren, bricht ab und zu aus und fährt dann wieder links herum im Kreis.
Zur überprüfung habe ich die Funktion Go der erweiterten Lib verwendet, wo er allerdings leider auch nur im Kreis fährt.
Der Odometriesensor Rechts funktioniert super (lasse eine LED bei übergang zu Weiß aufleuchten).
Der auf der Linken Seite funktioniert nur ab und zu...
Fremdlicht kann eigentlich nicht die Ursache sein, auch in völliger Dunkelheit fährt er nur im Kreis...
Habt ihr eine Idee?
Viele Grüße
Bob
EDIT:
Auch beim Beispielprogramm "Rechteck" fährt Asuro nur Kreise...
Geändert von -Bob- (26.10.2012 um 17:34 Uhr)
1234567890
Geändert von i_make_it (01.02.2015 um 19:59 Uhr)
Dank für die Antwort
Beide Motoren laufen einwandfrei.
Kalte Lötstellen bzw. kaputte Leiterbahnen können wigentlich nicht in Frage kommen, da ich permanent Messwerte von dem IR Sensor erhalte. Die Schwanken allerdings extrem stark, sodass man nicht zwischen SChwarz und Weiß unterscheiden kann...
Vielleicht hilft dieser Trick (klick hier)? Das war bei vielen Kollegen die Ursache für schlechte Odometrieergebnisse.
Ciao sagt der JoeamBerg
Unglaublich, aber wahr - nachdem ich eine kleine Unterlegscheibe eingebracht habe, fährt er geradeaus.
Vielen, vielen, vielen Dank![]()
Ok, das Problem ist offensichtlich gelöst. Aber bei die neue Lib sollte im Prinzip auch die Schwell-werten in die Datei myasuro.h angepasst werden.:
MY_ODO_LIGHT_VALUE_L
MY_ODO_DARK_VALUE_L
MY_ODO_LIGHT_VALUE_R
MY_ODO_DARK_VALUE_R
Und danach auch die Lib neu Compilieren. Nicht nur dein eigene Programm. Es könnte sein das es einige Schwarz/Weiß übergangen ich bemerkt hat.
Habe ich bereits angepasst, danke
Ich bräuchte evtl noch Hilfe bei folgendem Wert:
MY_GO_ENC_COUNT_VALUE
Momentan ist der Wert 29750L
Wie muss ich den für eine 8-Segmente Encoderscheibe anpassen?
nach welcher Formel wird der Wert berechnet?
Diese Wert ist die Strecke einer Tick Multipliziert mit 10000. Das Rad macht in einer Rundgang ein Weg von ungefähr 120mm. (Durchmesser * Pi) Mit ein Übertragung von 4,8 [EDIT: könnte auch 5 sein, muss mal nach zahlen] zwischen das letzte Zahnrad, und die kleine von die Encoderscheibe, kommt man auf 25 mm pro Encoderscheibe Rundgang. Dann durch 8 Teilen und das sollte in die Nähe von 3.125 mm/ Tick sein. Die Wert Sollte dann 312500 werden.
Aber man wurde es genauer bekommen wenn Asuro eine Strecke von 1 oder den Kompleten 10 Meter fahrt, und die Tick Anzahl aus den Globale Variabele Encoder zuruck sendet an dich.
Aber mit diesen Program können alle diesen Persönliche Werten bewertet werden:
https://www.roboternetz.de/community...asuro-h-selber
Danke ich probier das mit dem Testprogramm mal aus
ich stehe gerade vor dem Problem, dass Asuro sich nach einigen malen Turn aufhängt:
Das Problem kommt immer nur vor, wenn eine andere Variable g_iRow der wert 7 annimmt. g_iRow wird auch benutzt um ein Array als Index anzusprechen.Code:int g_iTurnVal = 90; ... void MoveOn(void) { if(g_iFieldCounter % 7 == 0) { Turn(g_iTurnVal, 100); Go(FIELDSIZE, 100); g_iFieldCounter++; AnalyseField(); SerWrite("Turning: ", 9); PrintInt(g_iTurnVal); Turn(g_iTurnVal, 100); //HIER hängt er sich auf und dreht sich ununterbrochen SerWrite("Got It", 6); g_iTurnVal *= (-1); } Go(FIELDSIZE, 100); g_iFieldCounter++; }
g_iRow hat jedoch überhaupt nichts mit Turn(g_iTurnval, 100) zu tun, oder liege ich da falsch?
können Zugriffsverletzungen an anderen Stellen im Program dazu führen, dass Asuro bei Turn() "durchdreht"?
Ich bin ratlos
Habt ihr eine Idee?
Tiny ASURO Library: Thread und sf.net Seite
Lesezeichen