ArduMower Brushless Drive

Oder man sollte die Variable in der Funktion, die die Linear und Angularwerte über BL/WLAN Steuerung überschreibt mal plotten.

Damit hätte man allerdings den ESP Code ausgeschlossen, oder man fängt am Boardcode an. Wie auch immer, man kann von oben oder unten
anfangen zu suchen. Man fängt an der Eingabe oder Ausgabe Seite an. Ich schätze das ist egal :D
 
Tasächlich hatte ich mich auch gerade ran gemacht den code der Dynamischen Mähsteuerung zu verbessern und habe mich versucht mit dem seriellen Plotter vertraut zu machen. Bisher habe ich das erreicht:

Die Plots unten zeigen: Wenn der Mähmotor aus ist (1), und dann mit Anlauf ohne Last dreht (2). setPwmMow ist hir durch 100 geteilt.
Ich habe den LP Filter der Stromaufnahmenmessung mit dem aktuellen Messwert und mit einem Medianfilter den ich eingebaut habe verglichen.
Der Median hat 15 Elemente. Dort kann man erkennen, das der LP Filter ungeignet ist, da träge und eine spontane Last garnicht durchlässt.
Da kann man auch noch mehr rauslesen bzgl. Regelkreis. Ich glaube das heisst Sprungantwort im Regelkreis. Eine essentielle Methode um einen Regelkreis zu parametrisieren. Man sieht ausserdem, das die Strommessung einen systematischen Offset hat und dadurch auch alle anderen Formeln beeinflusst.
Der Median wirkt, als ob die Messung schneller als die 20 Hz Output der Console hat, der Graph verpasst die Peaks des Rauschens oder die Formel in der Bib ist fehlerhaft??? Ich meine in (2), der größere Offset des Median bei "Aus" und dann der vom "Idle Last" Bereich.... Halt Stopp, jetz hab ichs... der Median wird garnicht gefüllt wenn Mähwerk nicht an ;) :D :D



Mow_off.jpgMow_On_Jump.jpg
 
Zuletzt bearbeitet:
Ich glaube das mit dem Stop and Go fahren ist mit der Firmware Version 1.0.254 aus dem Masterzweig gelöst. Dort hat Alexander das W-LAN blockiert, wenn der Ardumower per Bluetooth gesteuert wird. Ich konnte das Stop and Go nicht mehr feststellen außer man bewegt ihn mit W-LAN. Das ist lt. Alexander aber normal bzw. nicht änderbar. Vielleicht kann das noch jemand anderes bestätigen.
 
Ahja, ich steuere bzw. verbinde neuerdings nur noch per WLAN, weil ich mir einen Accesspoint auf die Scheune geschraubt habe.
Uploads sind dann auch schneller und man kann auch auf der anderen Seite des Hauses sein um nachzusehen was der treibt.
Aber das wäre dann eine Erklärung.
 
Heute das erste mal Test gemäht vom kompletten Grundstück und mir ist was seltsames mit dem Mow Motor aufgefallen.
Hab den wegen den Treiber Problemen aktuell nicht auf Volldampf laufen.

Code:
#define ENABLE_DYNAMIC_MOWMOTOR true // set true to activate, set false to deactivate
#define DYNAMIC_MOWMOTOR_ALGORITHM 2 // 1 - linear; 2 - root-Function; 3 - square-Function
#define MIN_MOW_RPM 160   // minimum value of mow RPM
#define MAX_MOW_RPM 180   // maximum value is 255

Wenn der Mäher stehen bleibt weil z.B. Invalid GPS besteht und dann wieder anfährt.
Dann dreht der Mower extrem langsam, so langsam dass er quasi immer sofort hängen bleibt.
Das Ganze macht der Roboter dann aber ohne dass ihn das stört, er fährt also normal die Punkte ab mit einer kaum drehenden Scheibe.
Gehe ich dann aber in die App und mache den Mähmotor kurz aus und wieder an, dreht er direkt wieder mit normaler Geschwindigkeit an.

Jemand schon mal sowas erlebt?
Kommt das eventuell durch die dynamic Funktion dass hier ein Bug drin ist?

Ist reproduzierbar und passiert scheinbar jedes mal.
 
Wollte es gerade selbst mal gegen testen und hab das mal deaktiviert und mich gewagt die RPM auf 220 zu stellen in der motor.cpp.
Hat man auch direkt an der Leistungsaufnahme gesehen dass es mehr war und Geräusche auch etwas lauter.

Code:
void Motor::begin() {
  pwmMax = 220;

  #ifdef MAX_MOW_RPM
    if (MAX_MOW_RPM <= 255) {
      pwmMaxMow = MAX_MOW_RPM;
    }
    else pwmMaxMow = 255;
  #else
    pwmMaxMow = 255;
  #endif

Tja ob das Problem besteht kann ich nicht sagen, nach 5min mähen ist der Mähmotor ausgefallen und lässt sich nicht mehr wiederbeleben.
Serial Monitor zeigt keine Fehler an, die wurden aber ja glaube auch deaktiviert mit dem letzten Update.

Muss Morgen mal den Roboter aufschrauben und mal Spannung am Hal Port messen, aber ich ahne da schon böses.

Also 4h mähen mit dynamich 160-180 gar kein Problem.
5min mähen bei 220 = Verdacht Treiber hinüber.

Und ja hab Motorkabel nicht gekürzt, den Chip dazwischen und 0,5mm² als Stromleitung an allen 3 Treibern.
 
Ich habe anderen Code. Der Code vom dynamic mow speed ist nicht zu gebrauchen und unsinn.

Ich habe einen einfachen 2 Punkt regler mit hysterese eingebaut. Eigentlich 3 Punkt, da es noch eine Stufe bei overload gibt.

I'm Prinzip war der Code davor auch ein 2punkt regler, aber viel zu kompliziert und umständlich umgesetzt. Wenn dann noch overload eingesetzt hat, ging garnichts mehr. Ausserdem ist es völliger Unsinn in die PWM function einzugreifen.
Detect a curve ist völliger Quatsch. Es ist ja keine Blackbox und wenn ein angular Wert vorgegeben wird bedeutet dass das eine Kurve oder Drehung gemacht wird. Also warum PWM Werte vergleichen???
 
Zuletzt bearbeitet:
Also warum PWM Werte vergleichen???

Das kann ich dir nicht sagen, ich bin hier ja nur dummer Nutzer. 😁
Hoffnung war mit geringerer Leistung den Treiber nicht zu zerlegen und das hat ja auch funktioniert.

4h auf 160-180 mähen lief ohne Probleme.
Nach 5min auf 220 sieht der Treiber so aus... RIP... hab auch 0V auf HAL. :rolleyes:

Wie gesagt:
- Motor Kabel nicht gekürzt
- 0,5mm² Stromkabel verwendet
- Schutzchip drin

Gibt es schon Updates zu den neuen Treibern... das hier sehe ich als nicht nutzbare Lösung an, selbst wenn die Verfügbar wären würde es mir den doch vermutlich wieder innerhalb weniger Minuten durch hauen.

Der Treiber ist übrigens mitten im Betrieb ausgefallen als der Mähmotor mit vollen Touren lief, also das Thema mit ungewollter Spannung durch den ausdrehenden Motor hallte ich für nahezu ausgeschlossen in meinem Fall.
 

Anhänge

  • 20220523_103024.jpg
    20220523_103024.jpg
    3,6 MB · Aufrufe: 21
  • 20220523_103955.jpg
    20220523_103955.jpg
    1,7 MB · Aufrufe: 21
Hallo eRacoon,

schau mal hier im New Thread, letzter Eintrag. Einfach Email an info@marotronics.de mit der Auftragsnummer die du für deinen Ardumower erhalten hattest und kurz dazu schreiben wegen dem defekten Motortreiber.

Grüße
W1976
 
Das kann ich dir nicht sagen, ich bin hier ja nur dummer Nutzer. 😁
Hoffnung war mit geringerer Leistung den Treiber nicht zu zerlegen und das hat ja auch funktioniert.

4h auf 160-180 mähen lief ohne Probleme.
Nach 5min auf 220 sieht der Treiber so aus... RIP... hab auch 0V auf HAL. :rolleyes:

Wie gesagt:
- Motor Kabel nicht gekürzt
- 0,5mm² Stromkabel verwendet
- Schutzchip drin

Gibt es schon Updates zu den neuen Treibern... das hier sehe ich als nicht nutzbare Lösung an, selbst wenn die Verfügbar wären würde es mir den doch vermutlich wieder innerhalb weniger Minuten durch hauen.

Der Treiber ist übrigens mitten im Betrieb ausgefallen als der Mähmotor mit vollen Touren lief, also das Thema mit ungewollter Spannung durch den ausdrehenden Motor hallte ich für nahezu ausgeschlossen in meinem Fall.
Hattest du das gemacht?
Sorry ich wollte dich nicht beleidigen oder so.

Naja, der Vergleich der PWM der Antriebe um eine Kurve zu detektieren hat ja nix mit der PWM Ansteuerung zum Mähmotor zu tun gehabt.
Das mowmotor pwm kann man nutzen, aber nicht die speed Geschichte ^^
 
@Mr. Tree ich habe das heute mal ausprobiert, sehr viel konnte ich nicht feststellen.
Was genau passiert mit deinem Code?
Muss dyn.Mov bzw. dyn.Speed abgeschaltet werden und ersetzt dein Code dyn.Mov und dyn.Speed?
 
Nein. Der Code den ich gepostet habe, setzt lediglich die Stanley Parameter als lineare Interpolation zw. Min und max speed. Mehr nicht. Dyn move und mow hat nichts damit zu tun.

Bzgl. Adaptiver Last Regelung wollte ich doch erst code posten... Später.
Vllt wurde ich da falsch verstanden, Stanley hat mit der aktuellen dynamic Motor function wenig zu tun...
 
Zuletzt bearbeitet:
Hallo Leute,
die neuen Treiber von Markus sind angekommen. Er hat mich gebeten zur Sicherheit im Forum zu fragen ob für die neuen Treiber spezielle Anpassungen in der Konfiguration zu machen sind.
Vielen Danke für eure Info
 
Du must in der Config.h den richtigen Treiber auswählen und zwar hier:

1653398222257.png

Vermutlich geht es um den Mähmotortreiber bei dir und vermutlich hast du einen A4931 jetzt bekommen, oder? Wenn ja dann Zeile 147 sofern das bei dir gleich ist. und die Fahrmotoren werden noch der DRV8308 Treiber sein, Zeile 149.
 
Du must in der Config.h den richtigen Treiber auswählen und zwar hier:

Von welcher sunray version ist das?
Die letzte Live Version v1.0.230 hat die Settings ja noch nicht.

Kann man die neue schon einsetzen wenn man Treiber mixt oder lieber mit der "stable" Version weiter fahren?

Edit:
Ahja da ist ja jetzt auch die Möglichkeit drin sich Custom Treiber zu bauen, sehr schön!
Wäre schön über so Updates hier auch mal was zu erfahren.
Ist ja gefühlt das aktivste Thema hier. 😁

Code:
  // your custom brushed/brushless driver (ACT-8015A, JYQD_V7.3E3, etc.)
  CUSTOM.driverName = "CUSTOM";    // just a name for your driver
  CUSTOM.forwardPwmInvert = false; // invert PWM signal for forward? (false or true)
  CUSTOM.forwardDirLevel = LOW;    // logic level for forward (LOW or HIGH)
  CUSTOM.reversePwmInvert = false; // invert PWM signal for reverse? (false or true)
  CUSTOM.reverseDirLevel = HIGH;   // logic level for reverse (LOW or HIGH)
  CUSTOM.usePwmRamp = false;       // use a ramp to get to PWM value? 
  CUSTOM.faultActive = LOW;        // fault active level (LOW or HIGH)
  CUSTOM.resetFaultByToggleEnable = false; // reset a fault by toggling enable?
  CUSTOM.enableActive = LOW;       // enable active level (LOW or HIGH)
  CUSTOM.disableAtPwmZeroSpeed=false;  // disable driver at PWM zero speed? (brake function)
  CUSTOM.keepPwmZeroSpeed = true;  // keep PWM zero value (disregard minPwmSpeed at zero speed)?
  CUSTOM.minPwmSpeed = 0;          // minimum PWM speed your driver can operate
  CUSTOM.pwmFreq = PWM_FREQ_3900;  // choose between PWM_FREQ_3900 and PWM_FREQ_29300 here 
  CUSTOM.adcVoltToAmpOfs = 0;      // ADC voltage to amps (offset)
  CUSTOM.adcVoltToAmpScale = 1.00; // ADC voltage to amps (scale)
  CUSTOM.adcVoltToAmpPow = 1.0;    // ADC voltage to amps (power of number)
}

Hat hier jemand die passenden Settings parat für den JYQD_V7.3E3 als Mow Motor only.
Oder sind die das so schon?

Das war doch glaube High bei denen oder?
CUSTOM.enableActive = LOW;

Würde den übergangsweise gerne verwenden.
 
Zuletzt bearbeitet:
Oben