Sunray modding Spielwiese

Kann ich leider noch nicht geben, da kurz vor Urlaub und Zeitmangel. Werde es anschließend auf jeden Fall einspielen und testen, dauert aber noch...(aktuell die harte Tour alles stromlos, aber Deine Lösung wäre eleganter und besser).
 
Kann leider bestätigen das es NICHT funktioniert. Heute beide Antriebe regungslos. Ich mache noch einen Versuch die Treiber im Dock zu deaktivieren.
 
Schade... vielleicht klappt's beim nächsten Versuch.

Übrigens - ich hatte neuerdings Startprobleme selbst nach nur wenigen Minuten im Dock. Nicht oft, aber es passiert auch (wenn auch mit geringer Wahrscheinlichkeit) dann...
 
Hmmm, ich habe gerade herausgefunden das der Treiber Code garkeinen wert zwischen -2 bis 2 außer null zulässt...

// DRV8308 (https://www.ti.com/lit/ds/symlink/drv8308.pdf) - PwmFreqMax=30 khz
DRV8308.driverName = "DRV8308";
DRV8308.forwardPwmInvert = false;
DRV8308.forwardDirLevel = LOW;
DRV8308.reversePwmInvert = false;
DRV8308.reverseDirLevel = HIGH;
DRV8308.usePwmRamp = false;
DRV8308.faultActive = LOW;
DRV8308.resetFaultByToggleEnable = true;
DRV8308.enableActive = LOW;
DRV8308.disableAtPwmZeroSpeed=false;
DRV8308.keepPwmZeroSpeed = false; // never go to zero PWM (driver requires a periodic signal)
DRV8308.minPwmSpeed = 2;
DRV8308.maxPwmSpeed = 255;
DRV8308.pwmFreq = PWM_FREQ_29300;
DRV8308.adcVoltToAmpOfs = -1.65; // brushless-adapter: 0A=1.65V, resolution 132mV/A
DRV8308.adcVoltToAmpScale = 7.57;
DRV8308.adcVoltToAmpPow = 1.0;
 
Ich habe mich mal etwas tiefer mit dem Treiber beschäftig. Der code funktioniert jetzt, aber den brauch es evtl. auch garnicht mehr.

Mir ist aufgefallen, dass der pwm wert aus dem speedcontroller nie Null wird. Wer sich das ausgedacht hat..... keine Ahnung. Es ist mir wirklich ein Rätsel.
Vielleicht muss das so, kann ich mir aber technisch nicht vorstellen.

Ich denke jetzt jedenfalls: Der Treiber bekommt in der Dockingstation ein Stunden/Tagelanges PWM signal von 2 ... , da so konfiguriert. Da drehen die Räder noch nicht. Der Chip wird warm evtl. und geht in eine Art protect und schaltet Hall ab ?

Ich bin jetzt jedenfalls mit entsprechenden Änderungen am testen und werde berichten....
 
Ich meine mich zu erinnern, dass in dem unendlich langem BL Thread der Grund für PWM mit ungleich 0 beschrieben war, aber wo genau… keine Ahnung

Der JYQD Treiber hatte schon von Anfang an damit ein Problem, so dass es geändert werden musste
 
Ich glaube, der BL Treiber aus dem Set brauchte immer wieder mal einen Impuls. Sozusagen ein Alive-Impuls, um Leitungsbruch zu diagnostizieren.
Für andere Treiber sollte man es aber rausschmeißen können, bzw. für einige muss man es sogar.
 
Ich habe es jedenfalls geändert und mir ist bisher nichts negatives aufgefallen. Ich teste jetzt ein paar Tage ohne reboot, aber im Dock alle minute für ein paar iterationen einen pwm Wert von 1... mal sehen..
 
Kleines Update. Es gab doch einen negativen Effekt. Die Treiber haben schneller und reproduzierbar im Dock "geklemmt". Ich hab die Strategie nochmal geändert und probiere alle 10 sek einen pwm Wert von 8 zu setzen, das ist ein Wert der bei meinen Motoren gerade so keine sichtliche Bewegung auslöst. Treiber im Driver wieder auf min 2, also keine null.
Bisher funktioniert es!
 
Ja, hat leider nicht funktioniert. Ich bin noch am testen, wenn's nix wird Versuche ich mal das periodische zurück und Vorfahren im Dock.
 
Ich wollte das Thema hier nochmal wiederbeleben
Ich habe immer noch die meisten Probleme, dass der Mower den Docking Punkt nicht erreicht.
GPS ist vorhanden, trotzdem fährt er die Dockingpunkte komplett wirr an mit teilweise 70cm Abweichung. Wenn er seine Mähpunkte anfährt, klappt alles 100 Prozentig.
Ich wollte in dieses Thema nicht wieder etliche Tage investieren, und den Mower einfach nach erfolgreichem Mähen, bzw. wenn der Akku min erreicht hat einfach auf einen fixen Punkt vor seine Garage fahren lassen, damit ich ihn von "hand" laden kann. (will ihn nicht durch den ganzen Garten tragen)

In Sunray (ich benutze die Version von @Mr. Tree ) ist die Dockingstation aktiviert (Retry touch ist deaktiviert), der Mower fährt dann artig vor seiner Garage auf den Punkt, allerdings immer wieder vor und zurück und versucht seine Ladepunkte zu erreichen. Nach ca. 5 erfolglosen Versuchen fährt er permanent rückwärts (sogar komplett aus seinem Perimeter).
Da scheint ja noch was falsch zu laufen...

Kennt jemand das Verhalten, bzw. gibt es eine neue Version, die ich mal testen könnte?
Bzw. kann ich am code selbst was ändern, sodass er an dem Dockingpunkt nicht auch die Spannung an den Ladekontakten erwartet? -Ich vermute mal, dass wird das Problem sein...
 
Ich habe keine Dockingstation, habe aber auch eine Dockingstrecke als Parkposition für den Mäher definiert. Da fährt er dann auch brav nach dem Mähvorgang hin und parkt dort.
Auf dem Mäher habe ich das "normale" Sunray mit ein paar eigenen kleineren Modifikationen. Zum Docken habe ich aber nichts geändert, habe es aber auch in der Sunray-SW komplett ausparametriert, so dass der Mäher dann auch keine Dockingstation am Ende erwartet.
 
Hmmm. Eigentlich ist in meiner Version ein drehen vom vorletzten zum letzten Punkt verboten... Erwischt er die Kontakte nicht nach einer eingestellten Zeit oder löst den bumper aus, setz er zum Punkt davor stumpf zurück und dann wieder an den GPS reboot Punkt. Dort dann GPS reboot und warten auf fix bis er es nochmal probiert
 
Hmmm. Eigentlich ist in meiner Version ein drehen vom vorletzten zum letzten Punkt verboten...
Das massive Drehen beim Erreichen von einem Targetpunkt liegt an folgender Zeile in der Linetracker.cpp
float targetDelta = pointsAngle(stateX, stateY, target.x(), target.y());
Ändert man diese wie folgt
float targetDelta = pointsAngle(lastTarget.x(), lastTarget.y(), target.x(), target.y());
dann ist der Spuk mit dem Drehen vorbei. Wenn ich das richtig bei dir gesehen habe, dann gibt es die Zeile umverändert auch in deiner Mod-Version.
 
Zuletzt bearbeitet:
Das massive Drehen beim Erreichen von einem Targetpunkt liegt an folgender Zeile in der Linetracker.cpp
float targetDelta = pointsAngle(stateX, stateY, target.x(), target.y());

Ändert man diese wie folgt
float targetDelta = lineAngle(lastTarget.x(), lastTarget.y(), target.x(), target.y());

dann ist der Spuk mit dem Drehen vorbei. Wenn ich das richtig bei dir gesehen habe, dann gibt es die Zeile umverändert auch in deiner Mod-Version.

wenn ich diese Änderung mache bekomme ich eine Fehlermeldung beim Compilieren.

Compilation error: 'lastTarget' was not declared in this scope; did you mean 'target'?
 
Oben