Ladestation und Timer geht nicht

hurtz2k

New member
Moin,

mein Selbstbau (umgebauter Aldi/Yardforce) macht mittlerweile seinen Dienst echt brav. Jetzt habe ich eigentlich nur noch ein Problem und das liegt Softwareseitig. Wenn der Mäher in die Ladestation einfährt und der Timer aktiv ist, dann fährt er sofort wieder raus und will weiter arbeiten, da seine Spannung aber nicht reicht dreht er nur ne Runde am Kabel und das Spiel beginnt von Vorne. Es ist so, dass der Mäher einen Impuls von etwa 31V bekommt beim einfahren in die Station (was bei der Nennspannung von 29,6V okay ist). Tatsächlich bekommt er die auch auf der Akku-Spannung angezeigt, das Problem glaube ich ist bekannt. Ich habe mir einen kleinen Work-Around geschrieben mit einer Variable "chargeneed", welche bei unter 24V auf true gesetzt wird und wenn er in die Ladestation fährt diese so lange drin bleibt bis über 0,3A Ladespannung anliegt, denn dann fällt die Ladeleistung auf das Akkuniveau. Das Laderelais schaltet also brav auf 1 und das Teil lädt. Soweit also alles gut, solange kein Timer mit im Spiel ist. Wenn ich jetzt den Timer mit dazu nehme, dann funktioniert der Work-Around nicht mehr und ich finde einfach nicht warum. Ich habe nun das ganze auch noch umgeschrieben, dass er nicht mehr nach den Stromstärken schaut wann er "fertig" ist (zu Beginn des Ladens liegen unter 0,1A an, die erst langsam steigen), sondern nach der Ladespannung, aber auch das ist noch nicht die Lösung. Hier mal mein Laien-Code:
case STATE_STATION_CHARGING:
// waiting until charging completed
if (batMonitor){
if(chgCurrent > 0.30)
{
chargeneed = false;
}
if ((batFull <= batVoltage) && (millis()-stateStartTime>20000))
{
if(chargeneed == false)
{
setNextState(STATE_STATION,0);
}
}
else if (millis()-stateStartTime > chargingTimeout) {
Console.println(F("Battery chargingTimeout"));
addErrorCounter(ERR_BATTERY);
setNextState(STATE_ERROR, 0);
}
}
readDHT22();
break;
Kennt jemand das Problem und hat eine Andere Lösung oder erkennt das Problem?
Gruß
Chris
 
Here how it's work into AZURITBER

Code change the nextTimeTimer each time you send the mower to station.
By this way mower don't restart by timer for the next 3 hours for example.

Code:
nextTimeTimer = millis() + 3600000;

To reset this when testing for example:
into pfod you can restart the timer each time user click of OFF
Code:
if (pfodCmd == "ro") {
    // cmd: off
    robot->nextTimeTimer = millis() + 10000; //reset this if the mower is in station from the home command and want to start again.
    robot->setNextState(STATE_OFF, 0);
    sendCommandMenu(true);
 
Oben