Azurit 1.0a11 dev

Wie hieß nochmal der Parameter für das stopen beim einfahren in die Ladestation?
Die Azurit 1.0a11 dev macht bei mir einen echt guten Eindruck viel besser als die 1.0a10 bis auf das stoppen beim einfahren in die Ladestation.
Bei mir kann die Ladestation durchfahren werden und mit der 11er dev stoppt der mower leider zu spät, so das die Kontakte nicht mehr berührt werden.
Ich würde den Parameter gerne runtersetzen.
 
Hallo!

Meine Code-Basis ist Azurit-1.0a10 und das habe ich erheblich geändert. Bezüglich Deiner Frage sollte es noch passen:

* In "Robot::loop()" wird "readSensors()" ausgeführt.
* "readSensors()" holt "chgvolt"
* Zurück in "Robot::loop()" wird in "switch (stateCurr)" bei "case STATE_PERI_TRACK:" geprüft, ob Ladespannung anliegt.

-> Da ist kein Timer oder delay.

Zu prüfen: Hast Du "batMonitor" aktiviert?

Beste Grüße, Rolf
 
Hi Olli,
der Code von der neuen Azuritversion ist meiner Meinung nach ganz schön individuell angepasst um nicht zu sagen verbastelt. Ich hatte dazu schon in einem anderen Thread geschrieben. Wenn Du in der robot.cpp das unten rot markierte in 100 änderst, bleibt der Mower auch in der Ladestation stehen (entspricht dann 0,1 Sekunden Nachlauf).
Ich würde Dir aber trotzdem sehr zu AzuritBer raten, weil da der Rasenmäher wesentlich geschmeidiger und runder läuft.

SefanH said:
Ich habe oft das Problem dass das Laden des Mowers nicht klappt. Das Relais zieht nicht an! Das liegt wohl daran dass die Spannung an der Batterie zu schnell steigt und daher das Relais nicht den Befehl zum anziehen bekommt, da ja scheinbar alle Werte im Grünen sind...

In der robot.cpp müsste folgendes geändert werden: ca. Zeile 630

// low-pass filter
double accel = 0.05;
//double accel = 1.0;
if (abs(batVoltage-batvolt)>8) batVoltage = batvolt; else batVoltage = (1.0-accel) * batVoltage + accel * batvolt;


Also accel von 0.1 auf 0.05 und if (abs(batVoltage-batvolt)> von 5 auf 8 setzen.
Somit soll die Batteriespannung langsamer ansteigen, ist akkurat und das Relais zieht auch an!


Dazu sollte noch folgendes geändert werden:

ca. Zeile 610

if (millis() >= nextTimeBattery){
// read battery
nextTimeBattery = millis() + 500;

Also von 100 auf 500.


ca. Zeile 1315

if (stateNew == STATE_STATION){
nextTimeBattery = millis(); //read immediatly the battery
setMotorPWM(0,0,false);
setActuator(ACT_CHGRELAY, 0);
setDefaults();
statsMowTimeTotalStart = false; // stop stats mowTime counter
loadSaveRobotStats(false);

Das ist der Vorschlag von Thorsten_AC

Ich hoffe das hilft einigen weiter!
Gruß Stefan

Mein Mower läuft jetzt mit dem letzten Azuritbranch fast problemlos. In dem Code sind nur noch einige Hürden eingebaut, die meiner Meinung nicht funktionieren können. Wenn man wie von mir rot markiert in der Zeile 610 von 100 auf 500 erhöht, schaltet sich der Mower erst eine halbe Sekunde nachdem er die Ladestation gefunden hat ab. So eine lange Ladestation hat keiner und zudem kommt er dann bei mir nicht ohne Fehlermeldung wieder nach dem laden heraus.
Hier läuft 200 bei mir problemlos.
Bei mir musste ich auch noch in der Zeile 135 der mower.cpp den Wert für
MaxSpeedperiPwm auf 150 anpassen, weil er sonst mit 200 viel zu schnell am Perimeterdraht in die Ladestation fährt
Also
MaxSpeedperiPwm = 150; // speed max in PWM while perimeter tracking
 
@charlie0815

Die von Dir angegeben Zeilen und werte incl. der 500 sind alle so in meiner 11er dev der robot.cpp schon drin
Die AzuritBer werde ich mir auch gerne mal anschauen gibt es Anfänger Fehler zu beachten ???
 
@NormanB

Ich habe mir auchmal den Robot::loop angeschaut!
Bei mir sind da zusätzlich noch weitere checks drin wie zB:

case STATE_PERI_TRACK:
// track perimeter
// checkCurrent(); (byOlli old:enable)
// checkBumpersPerimeter(); (byOlli old:enable)
// checkSonar();
if (batMonitor){
if (chgVoltage > 5.0){
setNextState(STATE_STATION, 0);
}
}
break;

Ich habe di auskommentiert, doch leider ohne erfolg.

Die 11er DEV ist doch schon etwas geändert zur 10er Beta
Es sind auch die readDHT22 und jedemenge checks…

Ich denke das verändert die Laufzeit und dadurch das durchfahren.
Ich habe das jetzt erstmal mit einem Stopper gelöst aber das gelbe vom Ei ist das nicht !

Ich denke ich werde mal alle checks… in dem loop die ich nicht verwende auskommentieren.

Oder hättest Du da noch einen anderen Ansatz für mich ?

Da ich kein Programmierer bin und ich das ganze nur im vergleich zur 10er Beta durchschau fällt es mir schwer da die Ursache zu finden-
In der Regel nur mit Trial and Error!
 
OK, habe mir jetzt erst noch ein Adafruit Grand Central bestellt.
Dann hätte ich den DUE zum Teste der AzuritBer über, passend dazu hätte ich ja noch das alte 1.3 Board, erstmal zum Spielen!
Bei fragen werde ich dich aber löchern !! OK ?
 
Oben