- 12V Akku mit 280 Ah bauen         
Seite 8 von 9 ErsteErste ... 6789 LetzteLetzte
Ergebnis 71 bis 80 von 85

Thema: Kurve fahren

  1. #71
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    08.12.2005
    Beiträge
    535
    Anzeige

    E-Bike
    Buona sera, mausi_mick,

    nur damit Du nicht meinst, Deine Arbeit würde nicht beachtet: Du machst das ganz ausgezeichnet - sehr systematisch und immer der Logik folgend.
    Grosse Anerkennung !!!

    Nur weiter so!

    mare_crisium

  2. #72
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    12.07.2006
    Ort
    Puchheim
    Alter
    77
    Beiträge
    455
    Buon giorno, mare_crisium,

    Dank für die Blumen,

    ich persönlich seh das etwas anders - bezüglich Systematik und Logik .

    Ich eiere eigentlich ziemlich herum. Seitdem ich die Messung der Ticks von dem ursprünglich 2. Rad auf das erste (Motorwelle/Ritzel) verlegt habe,
    stimmt die Strecken/Wegermittlung überhaupt nicht mehr:

    Legte ASURO ursprünglich etwa 1,94 mm / Tick zurueck (60 Impulse auf 116,2 mm (=1 Radumdrehung), sollte er jetzt eigentlich nur ca 0,581 mm/Tick zuruecklegen (200 Impulse pro Radumdrehung).

    Obwohl ich das im Programm berücksichtigt habe oder zu haben glaube, fährt ASURO aber z.Zt. ca 3-4 mal so weit . Irgendwie hab ich wohl im Programm noch was übersehen, da der 8-Bitwandler auch bei den schnelleren Light/Dark-Wechseln zu funktionieren scheint und somit ein Wechsel auf einen (schnelleren) 4-Bitwandler oder ein reines Zählen der Impulse (INT0) nicht notwendig zu sein scheint.


    Gruß

    mausi_mick

  3. #73
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    12.07.2006
    Ort
    Puchheim
    Alter
    77
    Beiträge
    455
    hi curver,
    ja , man muss wohl esrt mal jammern, bevor man sich um die Probleme
    kümmert. Hab mir das Programm nochmal angesehen:

    Abbruchbedingung für gefahrene Wegstrecke war fehlerhaft.
    Dann hab ich die Startgeschwindigkeit mal auf 255 gesetzt, um ASURO in den ersten ms mal etwas "auf Speed" zu bringen.
    Ausserdem am Stereckenende (letzte 10% bzw. 10cm) Speed auf 100 gesetzt, damit er nicht soviel weiter rollt. Das ist aber noch verbesserungswürdig (siehe PID-Regler von waste etc.)

    Gruß

    mausi_mick

  4. #74
    Erfahrener Benutzer Robotik Visionär Avatar von oberallgeier
    Registriert seit
    01.09.2007
    Ort
    Oberallgäu
    Beiträge
    8.693
    Grüß Dich, mausi_mick,

    Zitat Zitat von mausi_mick
    ... Startgeschwindigkeit mal auf 255 gesetzt, um ASURO in den ersten ms mal etwas "auf Speed" zu bringen ...
    In verschiedenen Postings wird über Probleme mit kleinsten Motoren, speziell mit total "ausgeweideten" Servos berichtet, deren Lebenserwartung sich mitunter im Minutenbereich bewegen würde. Das kann ich nicht bestätigen und ich glaube zu wissen warum: Ich hatte ziemlich früh die Sprungfunktion meines Dottie gemessen und daraus die Zeitkonstanten der beiden Motoren bestimmt. Als sehr simple Näherung hatte ich anschließend die Motoren entsprechend dieser ersten Anstiegszeit hochgefahren. Die dankten es mir mit einer mittlerweile viele Stunden währenden Lebensdauer.

    Nun ist mir klar, dass die Motoren des asuro wesentlich robuster sind. Beim asuro hatte ich festgestellt, dass die Motoren eine bestimmte Anfahrleistung benötigen - also einen bestimmten, minimalen PWM-Wert benötigen um sich zu bewegen. Wenn der überschritten ist, dann legen die los. Dieser Wert ist bei den Motoren meines asuro unterschiedlich. Anm.: auch Dottie hat an einem Motor eine Zeitkonstante von 12 ms und am anderen nur 8 ms. Dies nur als Anmerkung zur "Vollgas-Startphase".
    Ciao sagt der JoeamBerg

  5. #75
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    12.07.2006
    Ort
    Puchheim
    Alter
    77
    Beiträge
    455
    Hi curver,

    hab heute mal die Ticks gemessen bei verschiedenen Geschwindigkeiten.
    Vorher hab ich den Motor 150ms lang auf die gewünschte speed gebracht
    (müsste eigentlich reichen).
    Bei 2 s Messdauer gab's folgende Werte:

    im Leerlauf:

    speed 255 : links 2017 Ticks, rechts 2099 Ticks
    speed 200 : links 1450 Ticks, rechts 1527 Ticks
    speed 150 : links 1019 Ticks, rechts 1056 Ticks
    speed 110 : links 660 Ticks, rechts 628 Ticks

    und bei Fahrt auf Parkett:

    speed 255: links 1860 Ticks, rechts 1973 Ticks Strecke: 120cm (inclusive 150ms für Beschleunigung auf 255 ).

    1860 * 0,5808 = 1080 mm links
    1973 * 0,5809 = 1146 mm rechts

    Anmerkung: bei einer Radumdrehung (116,2 mm) und Untersetzung 25 : 1 und 8 Ticks pro Motorumdrehung legt ASURO pro Tick 116,2mm / 200 = 0,581mm zurueck.

    Das scheint zu passen.

    Gruss mausi_mick

  6. #76
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    12.07.2006
    Ort
    Puchheim
    Alter
    77
    Beiträge
    455
    hi curver,

    hab noch ein wenig getestet (Haus vom Nikolaus Aussenkontur abgefahren mit 500mm Basilänge). Dabei den gravierensten Fehler eliminiert: man sollte am Ende einer Fahrstrecke (bevor man z.B. die Messwerte auf den PC ausgibt) die Motorrichtung MotorDir( , ) auf BREAK,BREAK setzen !

    Jetzt klappt das relativ gut : er kommt bis auf 50mm-100mm an den Startpunkt heran.
    Der Aufruf erfolgt
    über
    unsigned char GoTurnCircle ( long distance, int speed_mms, int radius);

    mit distance in mm (> 0 , 0 nur erlaubt bei radius ^= 0 (Drehen auf Stelle))
    speed_mms in mm/s (+ vorwärts,-rückwärts, Absolutwert zwischen 5 min und 600 max),
    radius in mm (+=Rechtskurve, - = Linkskurve) für Kurve, 0 = geradeaus

    bei distance = 0 wird der Radius-Angabe als Winkel interpretiert:
    z.B.
    errc = GoTurnCircle ( 0,200,-90) Linksdrehung um 90° auf der Stelle mit Geschwindigkeit 200mm/s


    Gruß

    mausi_mick

  7. #77
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    12.07.2006
    Ort
    Puchheim
    Alter
    77
    Beiträge
    455
    hi curver,

    Ich habe , da es mit der Geschwindigkeit der 8-Bit AD-Wandler keine Probleme gab, durch vier zusätzliche Bohrungen an dem Encoderrad die Anzahl der Ticks pro mm Wegstrecke verdoppelt: 5 x 5 x 16 = 400 Ticks pro Radumdrehung (d.h. auf ca 116-120mm) , macht dann etwa 0,2975 mm / Tick (hab intern mit 0,3 gerechnet ).
    Erziele bei Geradeausfahrt eine Genauigkeit von ca +-/ 1cm bei 100cm Fahrweg.
    Die Winkelgenauigkeit (Drehung auf der Stelle) liegt bei etwa 1% (bei 90° gemessen) .
    Die Geschwindigkeit hab ich - gerade bei den "normalen Kurven" - etwas beiseite gelassen, ist auch bei meinen Anwendungen eher nebensächlich. Ich bremse ASURO auf den letzten 4cm in zwei Stufen etwas ab, um nicht aufgrund der Trägheit über das Ziel hinauszufahren( geht halt nur , wenn die Fahrstrecke > 4 cm ist.)
    Beim Drehen auf der Stelle und kleinen Winkeln (z.Zt 30°) spendiere ich ASURO noch eine Ehrenrunde von 360°. Den Wert 30° kann man wohl noch senken, aber unter 5 ° ist die Zusatzrunde zum Erzielen einer hohen Genauigkeit bestimmt sinnvoll.

    Gruss

    mausi_mick

  8. #78
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    12.07.2006
    Ort
    Puchheim
    Alter
    77
    Beiträge
    455
    hi curver,

    hab den Code noch etwas verbessert und beim Drehen auf der Stelle
    die Extrarunde erst bei Winkeln unter 20° spendiert.

    Der Absolutwert von speed wird nicht als Sollvorgabe verwendet, intern wird mit einer mittleren Geschwindigkeit von 170 gearbeitet.
    Wenn man unterschiedliche Geschwindigkeiten vorgeben will, muss man auch die Bremswege entsprechend anpassen, da sonst ASURO aufgrund seiner Trägheit z.B. bei höheren Geschwindigkeiten über sein Fahrziel hinausfährt.

    im Anhang noch ein Beispiel Code (GoTurn2)
    Angehängte Dateien Angehängte Dateien

  9. #79
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    12.07.2006
    Ort
    Puchheim
    Alter
    77
    Beiträge
    455
    hi curver,
    hab doch mal eine Geschwindigkeitsvorgabe zugelassen für Gescwindigkeiten
    von kleiner ca 250mm /s (entspricht bei mir etwa MotorSpeed(170,170)) für Geradeausfahrt und Drehen um Achse.

    Wegeinhaltung - auch bei kleinen Geschwindigkeits (50 mms/s ) (entspricht bei mir ca MotorSpeed(88,8 - sehr gut, wobei die Geschwindigkeit allerdings nur grob eingehalten wird:

    Im Anfahrbereich (für die ersten Ticks ) beschleunige ich ASURO mit MotorSpeed(170,170), daher ist dann aufgrund der Trägheit die Geschwindigkeit auf den ersten ca 5cm Fahrweg bei kleinen Geschwindigkeitsvorgaben zu hoch.

  10. #80
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    12.07.2006
    Ort
    Puchheim
    Alter
    77
    Beiträge
    455
    hi,

    noch ein Vergleich mit der Original-GoTurn()-Funktion:

    beim Abfahren einer vorgegebenen Strecke (Aussenkontur vom Haus vom Nikolaus mit 1000mm Basislänge) komme ich bei relativ niedriger Geschwindigkeit bei meiner Programmversion (GoTurn2()) etwa auf 100 mm an den Startpunkt heran, während bei der original GoTurn( ) Funktion der Abstand meist grösser als 300mm ist mit recht grosser Streuung.

    Da die Streuung bei meinem Programm sehr klein ist, könnte man
    durch Anpassung der Werte Tick / mm Fahrweg bzw. Tick / Grad
    zumindest bei kleinen Geschwindigkeiten die Genauigkeit noch erhöhen.

    Der verbleibende Rest kommt vermutlich durch Rutscheffekte und dynamische / träge Verhalten des Motors zustande.

    Als Anhang noch das Vergleichsprogramm


    Gruss

    mausi_mick

    PS: Ich habe in den H-Brücken die die BC3.. Transistoren durch ZETEX-Transistoren ersetzt, die deutlich niedrigere Collector-Emitter-Sättigungsspannungen haben und so ein sicheres Anfahren mit MotorSpeed(80,80) (bei vollem Akku ) ermöglichen.
    Angehängte Dateien Angehängte Dateien

Seite 8 von 9 ErsteErste ... 6789 LetzteLetzte

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

Labornetzteil AliExpress