Motorabschaltung nach mehrfacher Strombegrenzung

Hallo Alexander,
Ist es evtl möglich in die Software eine Abschaltung des Mähmotors nach mehrfacher direkt aufeinander folgenden erreichen des max Stroms einzubauen?
Ich hatte heute leider einen Zwischenfall wo so eine Notabschaltung sehr sinnvoll gewesen wäre. Beim Mähbetrieb hatte ich leider vergessen das Fußballtor meiner Kinder von der Wiese zu stellen. Und es kommt wie es kommen muss, ich hatte den Mäher nicht in den Augen und er hat sich im Netz verfangen. Dort steckte er wohl schon eine Weile fest bis ich ihn fand. Kar die Strombegrenzung hatte zwar den Motor abgeschaltet der dann aber natürlich direkt wieder versucht zu starten was aber durch, in meinem Fall des Netz, nicht möglich ist und so geht es dann immer weiter bis der Motor abraucht oder im besten Fall die Batterie leer ist. Ich hatte bereits bei einem Auffahren auf einen Hubbel im Garten einen Motor verloren.
Vorstellen könnte ich mir das so, nach z.B. 5 mal erreichen des max. Mähmotorstrom in einer bestimmten Zeit schaltet sich der Mäher einfach aus. Ein Sahnehäubchen wäre dann noch wenn der Lautsprecher nervös piept und auf sich aufmerksam macht.
Ist sowas einfach zu realisieren oder sollte ich einfach besser aufpassen?
Gruß
Stephan
 
Es kommt in die neueste Version hinein (welche leider derzeit experimentell ist, da neuer Schleifensender etc.) - für ältere Versionen hier die Schritte zur Änderung:

Die Idee ist eine neue Variable "motorMowSenseErrorCounter" einzuführen, welche jedes mal bei Motorüberstrom hochzählt und erst nach einem Timeout bei normalen Vorwärtsfahren (Default 1 min) wieder auf Null gesetzt wird. Steigt der Wert zu hoch (hier 3), geht der Mäher in den Zustand "ERRROR":


Code:
Zeile 1113: in Funktion "checkCurrent()" einfügen: 

// check motor current
void checkCurrent(){
  if (motorMowSense >= motorMowCurrentMax){
    setActuator(ACT_MOTOR_MOW, 0);
    motorMowSenseCounter++;    
    // ================================= neu =================================    
    motorMowSenseErrorCounter++;
    if (motorMowSenseErrorCounter > 3) {
      setNextState(STATE_ERROR, 0);
      return;
    }
    // =======================================================================    
    if (rollDir == RIGHT) reverseOrBidir(LEFT); // toggle roll dir
      else reverseOrBidir(RIGHT);        
  }


Zeile 1388 einfügen: Fehlerzähler auf Null setzen nach Timeout: 

case STATE_FORWARD:
...
if (stateTime > motorForwTimeMax){ 
  // timeout
  // ================================ neu ====================================
  motorMowSenseErrorCounter = 0; 
  // =========================================================================      


Zeile 138: neue Variable einfügen/ergänzen:
int motorMowSenseErrorCounter = 0;  // motor current error counter
 
Hallo Alexander:
vielleicht als Anregung, bei mir ist dieser Fall so umgesetzt:
Bei Erkennung Messer blockiert wird sofort abgeschalten, 50cm zurück gefahren, dort das Messer neu gestartet. Wenn Messerstart ok (innerhalb 10s über ersten Schwellwert = Messer dreht sich, 1min bis Nenndrehzahl) zurück zur Ausgangsposition. Wenn Messer wieder blockiert Roboter ganz abschalten. Wenn Drehzahl weiter ok, Fahrprogramm fortsetzen.
Wenn erster Messerstart nicht ok, wird ein kleines Stück nach vor gefahren, und wieder Messerstart versucht. Wenn ok, weiter im Programm, wenn nicht ok, Roboter abschalten.

Überlegung dahinter ist diese: Wenn der Roboter wirklich einen festen Gegenstand erwischt, im schlimmsten Fall einen Fuß, sollte sofort abgeschalten werden, was die Messer in dieser Zeit anrichten können ist schon schlimm genug. Im Fall eines dicken Astes der nach einem Sturm in der Wiese liegt wird wenigstens die Mechanik nicht komplett zerstört.
Wenn es nur eine Stelle mit hohem dichten Gras war, braucht er halt ein paar Anläufe bis er das erledigt, aber wenigstens mäht er dann mit ordentlicher Drehzahl. Bei reiner Stromüberwachung könnte es sein dass nur mit zB 500U/min gemäht wird, was nichts bringt.

Im Fall oben wäre bei meinem folgendes passiert: Im Netz hätte der Motor sofort abgeschalten, dann versucht 50cm zurück zu fahren. Das Messer wäre sicher immer noch im Netz festgehangen. Dann wäre der nächste Startversuch gekommen, nicht erfolgreich, alles abgeschalten. In Summe wäre der Motor keine 11s blockiert gewesen.

Die Strommessung kann man bei Messerstart schwer verwenden, da kann es im dichtem Gras schon auf ein paar Sekunden Volllast nahe Blockieren kommen, bevor eine Drehzahl erreicht wird mit der man mähen kann. (Ja, ich lasse meinen Roboter auch auf viel zu hohes Gras los...)

LG Werner
 
Hi Alexander und Werner,
was spräche denn grundsätzlich gegen einen generellen Messersanftanlauf? Das gefällt nicht zuletzt nur dem Akku ...

Gruß
Peter
 
Danke Sven,

ich hatte Werner´s letzten Absatz nicht richtig interpretiert: "Die Strommessung kann man bei Messerstart schwer verwenden, da kann es im dichtem Gras schon auf ein paar Sekunden Volllast nahe Blockieren kommen, bevor eine Drehzahl erreicht wird mit der man mähen kann."

Wer (zu Ende) lesen kann, ist klar im Vorteil!

Gruß

Peter
 
Hallo Alexander,

ich möchte auch gern mal Werners Ansatz aufgreifen.

Auch ich bin ein "Hochgrasmäher" ;) , da das der Ambrogio mit seinem festen Messer und dem, wie ich finde, kräftigen Mähmotor gut weg steckt.
Es kommt aber auch vor, dass es zu hoch wird und er dann versucht das Messer wieder zum anlaufen zu bringen. Da vergeht dann schon mal einige Zeit mit solchen "pulsenden" Versuchen bis endlich das Gras im Messerbereich so kurz ist, dass das Messer voll anlaufen kann und sich der Mäher wieder bewegt.

Von daher wäre der Ansatz, bei Blockieren des Messers dieses abzuschalten (was er ja schon macht) und den Mäher ein Stück zurück zu fahren, um dann wieder das Messer zu starten, sicher sehr hilfreich und würde auch Akku und Mähmotor schonen.

Evtl. kannst du ja mal darüber nachdenken B)

Gruß
Stefan
 
Oben