ArduMower Brushless Drive

Frage doch noch einmal bei Markus nach, mittlerweile sollten doch genug Motoren und Driverplatinen da sein.
 
Diese ganzen Späße mit den PullUps und Kondensatoren müssen bei Adapter - Bordversion 1.1 doch nicht mehr gemacht werden oder?
Edit: selbst die Antwort gefunden: nein, bei Version 1.1 des Adapterbords muss nichts mehr gemacht werden
 
Zuletzt bearbeitet:
Hello @avarnas ;

the best way is to measure the PWM Ticks with an Oscilloscope at Pin 4 at the flat cable connector (see pic. above). If you do not have, have a look into the motor datasheet if they say something about the HAL resolution. If you don’t have this, you can try it out with the AT+E command on sunray to find the exact HAL resolution.
@BerndS, I will try, but it would be valuable to understand how it works in the code/hardware as well.

The gearbox is 1:100 and the motor 8 poles. FGSEL is 01 = Use XOR of all three Hall sensors. I thought therefore that the PWM output from the DRV8308 for one turn of the axis would be:

100 * 3 * 8 = 2400

in the config.h all lines use /2. If I use 2400/2 with my motors, the speed seems to be the twice of what it should be. Using 1194/2 seems to work, but how should it be calculated? Why /2?

The second question, is really, how does PWM = 255 in motor.cpp convert to output PWM frequency on the BL Adapter in pinman.cpp. There are a lot of static variables in pinman.cpp which I have not been able to follow.

Anton
 
The devider 2 is the odo devider on the PCB1.x. The PWM signal is generated by the CPU output pin, not the adapter.
 
Hallo,
Ich benutze die JYQD BLDC Motortreiber. Diese benötigen keinen "Heartbeat" bzw. geben diese die PWM der "Null-Lage" an die Motoren weiter. Oder: Die Motoren drehen sich mit diesen Treibern wenn der Mower im stillstand sein soll.

Dazu ist im Code eine Änderung nötig:

1. config.h line 132 added ( #define MOTOR_DRIVER_BRUSHLESS_ARDUMOWER )
// ----- gear motors --------------------------------------------------
#define MOTOR_DRIVER_BRUSHLESS 1 // uncomment this for brushless motor drivers
//#define MOTOR_DRIVER_BRUSHLESS_ARDUMOWER 1 // uncomment this if you use the Ardumower OEM BLDC driver




2. AmRobotDriver.cpp line 134 added query if the OEM driver is used
void AmMotorDriver::setBrushless(int pinDir, int pinPWM, int speed) {
//DEBUGLN(speed);
if (speed < 0) {
digitalWrite(pinDir, HIGH);
#ifdef MOTOR_DRIVER_BRUSHLESS_ARDUMOWER
if (speed >= -2) speed = -2;
#endif
pinMan.analogWrite(pinPWM, ((byte)abs(speed)));
}
else {
digitalWrite(pinDir, LOW);
#ifdef MOTOR_DRIVER_BRUSHLESS_ARDUMOWER
if (speed <= 2) speed = 2; //RMR
#endif
pinMan.analogWrite(pinPWM, ((byte)abs(speed)));
}
}


Es ist auch möglich die Zeilen zu kommentieren oder sogar zu löschen, fand ich nur nicht politisch korrekt.

!! An der Stelle: besten Dank für die zahlreichen und guten Kommentare im code.

Gruß - Mark
 
Hallo,

ich habe das aktuelle StandardChassis mit PCB 1.4 und dem aktuellen Standard-BrushlessKit aus dem Shop. Ich habe also das Adapterboard in v1.1 und die Brushless-Treiber in v1.1.

Ich habe jetzt weder die Kondensatoren für den Odometrie-Fix noch Widerstände am Adapterboard verlötet. Ist das richtig? In der Anleitung zur PCB 1.4 steht zwar bedingungslos, dass die Kondensatoren hinzuzufügen wären. Aus dem Zusatzdokument für den Adapter lese ich aber heraus, dass dieses für diese neue Konstellation nicht mehr notwendig wäre.

Wie handhabt Ihr den Odometrieteiler des PCB 1.4 mit den Standard-BL-Motoren? Last Ihr hier alles im Auslieferzustand? Ich sehe hier zwar kein leitendes Material als Brücke. An der ersten ist jedoch ein kleiner aufgedruckter weißer Strich. Darunter wird vermutlich eine Leiterbahn liegen. Ist dieses die richtige Einstellung für den Standardaufbau mit den Standard-BL-Motoren?

Habe ich eine Möglichkeit, dieses vorher zu testen? Oder geht es erst komplett an der Haupt-PCB mit Controllerboard und das ganze fertig im Chassis ausgebaut? Man kann ja nicht einfach ein Labornetzteil anschließen und Spannung/Strom langsam aufdrehen.

Wie wuchtet Ihr die Mähscheibe aus? Die Anleitung ist halt für Brushed-DC-Motoren. Da schließt man ein Labornetzteil an und lässt den Motor kontrolliert laufen.

Danke und schönen Gruß
 
Ich habe den Ardumower Stück für Stück angeschlossen und mit einem einfachen Labornetzteil in Betrieb genommen. Am Schluss das Motor Adapterboard, Motortreiber und die Motoren.

Die Mähscheibe kannst du wenn alles zusammengebaut ist, bis auf die Mähmesser auswuchten. Wenn du Sunray mit Ardunino öffnest, kannst du dort oben Rechts die Datei Motor.ccp öffnen und dort den Wert: pwmMaxMow =250 reduzieren, dann bekommst du eine geringere Mähdrehzahl auf die Mähscheibe. Danach langsam den Wert erhöhen bis die Scheibe ausgewuchtet ist.
 
Mir geht es eigentlich genau andersrum darum, auch mal die Mähmotoren an den Treibern und ggf. Adapterboard zu testen bevor ich diese Großlasten am PCB mit aufgesetztem M4 in Betrieb nehme und gleich mehr durchraucht.

Aber Danke für den Tipp zum Auswuchten. Aber wie schaltest Du den Motor dann ein? Geht das für jeden einzelnen auch zum Testen, ohne dass es bereits mit montierten Rädern fertig aufgebaut im Chassis ist?

Ist es richtig, dass man keine Kondensatoren mehr für den Odometrie-Fix und keine Widerstände am Adapterboard verlötet und keine Änderung am Odometrieteilerfeld vornehmen muss?
 
Ohne das die Motoren ans Mainboard PCB1.4, Adapterboard und Treiberboard angeschlossen sind, kannst du die Brushless Motoren nicht testen. Weil die die Elektroniksteuerung brauchen. Mit Labornetzteil die Spannung einstellen und soviel Stromstärke, das die Spannung nicht zusammenbricht beim einschalten. Beim Inbetriebnehmen des Mainboards, musst du erst den Spannungswandler auf 9V einstellen. Die Jumper setzen, den M4 und ESP32 programmieren. Und danach kannst die Motoren anschließen und über den Arduino Serieller Monitor kann man dann den Ordometrie Antriebsmotorentest laufen lassen mit dem Befehel "AT+E", siehe hier: Ardumower Sunray – www.wiki.ardumower.de
Mämotor kannst du über die APP per angeschlossenem ESP32 aktivieren.
 
Mein Mähmotor will nicht mehr...Serieller Monitor zeigt folgendes an:


resetMotorFaultCounter 65
ERROR: motor recovery failed
Error: motor mow fault
resetMotorFaultCounter 66
ERROR: motor recovery failed
Error: motor mow fault
resetMotorFaultCounter 67
ERROR: motor recovery failed
Error: motor mow fault
resetMotorFaultCounter 68
ERROR: motor recovery failed
Error: motor mow fault
resetMotorFaultCounter 69
ERROR: motor recovery failed
Error: motor mow fault

resetMotorFaultCounter 70
ERROR: motor recovery failed
Error: motor mow fault
resetMotorFaultCounter 71
ERROR: motor recovery failed
Error: motor mow fault
resetMotorFaultCounter 72
ERROR: motor recovery failed
Error: motor mow fault
resetMotorFaultCounter 73
ERROR: motor recovery failed

Muss noch gestehen, das er leider sein Mähfeld verlassen hatte und große Kieslesteine gemäht hat. Wahrscheinlich kein Fix oder Invalid... Da lief der Mähmotor aber noch. Hat jemand eine Idee?
 
Zuletzt bearbeitet:
Hallo Willi,
hast Du die 3,5A Sicherung auf dem BL-Treiber für den Mähmotor kontrolliert. Ich bin der Meinung diese Meldung zu bekommen, wenn der Treiber steuerseitig angeschlossen ist, aber die 24V für den Motor fehlen.

Gruß Sven
 

Anhänge

  • 55140D6C-0482-4B99-85EE-045CF0A9F9BF.jpeg
    55140D6C-0482-4B99-85EE-045CF0A9F9BF.jpeg
    189,8 KB · Aufrufe: 16
Hi, als erstes mal die 3 coil Anschlüsse vom Motor mit dem Ohmmeter messen, die sollten <1Ohm Durchgang haben. Danach die + / - HAL Spannung messen, die muss 5V haben, bei eingeschalteter 24V Akkuspannung. Wenn du den schwarzen Motortreiber hast, muß der Motor anlaufen wenn das Flachkabel gezogen wird. Aber Achtung, nicht am anlaufenden Messer schneiden!
 
Widerstand unter dein 3 coils messe ich keinen, zu Minus, sind zwei bei 790Ohm und einer bei 788Ohm.
 
5V liegen keine an +/- HAL Spannung an. Am Eingang wo die Spannung vom Board kommt, kann ich 27,5V messen.
 
die coils U-V messen, V-W und U-W messen. Nicht gegen Masse. Wenn du schreibst "Widerstand unter dein 3 coils messe ich keinen", bedeutet das 0 Ohm oder unendlich? Gegen 0 Ohm wäre ok, Unendlich, dann wäre der Motor durchgebrannt, was ich mir eigentlich nicht vorstellen kann.
Die Sicherung war ja ok?!
 
Oben