EinEinfach
Well-known member
Da es bereits einige User gibt, die positive Erfahrugnen mit dem oben genannte Treiber gemacht haben, wollte ich und @Algo hier unsere Erfahrungen für andere, die evtl. diesen Treiber einsetzten möchten, dokumentieren.
Den Treiber gibt es aktuell in der Bucht mit und ohne Hall-Sensor-Eingängen. Wir brauchen den Treiber mit den Hall-Eingängen (erkennbar an einem weißen JST Stecker):
Im Bild ist erkennbar eine V1, ich habe allerdings V2, wo da der Unterschied ist, kann ich nicht sagen.
Der Treiber wird wie im folgenden Bild an das BL-Adapter angeschlossen (Danke an @Algo):
Sollte der BL-Adapter V1.0 verwendet werden, dann müssen die Pull-Up-Widerstände, wie im Wiki beschrieben eingelötet werden:
https://wiki.ardumower.de/index.php?title=Brushless_Adapter
Die Kondensatoren für die Odometrie am PCB habe ich wieder zurückgenommen, da diese meinen ODO-Signal verschlechtert haben. Ohne Kondensatoren habe ich einen sauberen Rechtecksignal (kann aber auch ein Einzelfall sein, muss jeder für sich selbst prüfen)
5V: muss nicht angeschlossen werden
0-5V/PWM: Kann sowohl an der grünen Anschlussleiste (external Potentiometer) als auch am nicht bestückten Leiste (P-Pin) neben dem Hall-Signal Anschluss angeschlossen werden. User Algo hat keinen Unterschied zwischen den beiden Möglichkeiten feststellen können. Wenn P-Pin genommen wird, muss auf dem Treiber eine Brücke gesetzt werden (rechts vom großen ELKO).
GND: wird mit GND des BL-Adapters verbunden
DIRection V/R: wird mit dem Richtungswechsel Pin des BL-Adapters verbunden
PWR: Muss an Spannungsersorgung des Treibers angeschlossen werden (normalerweise 24V)
GND: Muss an Masse angeschlossen werden
MA, MB, MC: Muss mit der jeweiligen Phase des Motors verbunden werden
Hall-Ausgänge des Motors werden an der weißen JST Leiste angeschlossen (Achtung kein 2,5mm Raster Maß, kleiner)
S/ODOmetrie: Bei mir war da eine 3er Stiftleiste eingelötet, also habe ich Odometrie Eingang vom BL-Adapter einfach drangelötet.
Der Treiber besitzt noch einen Brake- und einen Stop-Eingang:
Der Stop-Eingang kann nicht als Enable-Pin vom BL-Adapter benutzt werden, da dieser die Aufgabe hat PWM Anschluss auf Masse zu ziehen. Das heißt wenn dort 5V anliegen, gehen diese direkt aufs PWM Signal rüber und der Motor gibt Vollgas. Somit bleibt der Enable Pin vom BL-Adapter unbelegt.
Der Brake-Eingang kann genutzt werden um den Freilauf der Motoren zu verhindern. Dieser Treiber, wie auch der JYQD, gehen in Motorfreilauf wenn PWM gleich 0% ist. Wie man mit dem Brake Eingang den Freilauf verhindert, habe ich hier beschrieben:
https://forum.ardumower.de/threads/...arum-bremst-der-mower-nicht.24823/#post-54808
Jetzt zu den Einstellungen im Sunray-Code:
Ich fahre aktuell mit diesen PID-Werten:
Als Stanley Werte nutze ich das (Mit den Slow Werten experementiere ich noch):
Generell sind diese Treiber deutlich besser als die JYQD(2017), da diese keinen Soft-Start oder Soft-Stop haben. Die Motoren reagieren sofort auf alle Änderungen. Die Treiber sollen auch mehr Leistung liefern, allerdings bis an die Grenzen würde ich die nichr ausreizen. Ich empfehle jedem, der die hohe Leistung nutzen will, den Kühlkörper, wie eigentlich bei jedem China-Teil, abzumontieren, reinigen, neue Wärmeleitpaste aufzutragen und den Kühlkörper wieder anbringen. Bei mir war z.B. ein hauchdüner Luftspalt zw. dem Kühlkörper und enem der MOS-FETs zu sehen.
So, ich glaube das war's im groben. Wenn mir noch was einfällt, ergänze ich das hier.
Gruß
Alexander
Update: Sollte der Brake Eingang zum Abremsen des Rovers genutzt werden, kann unter bestimmten Umständen passieren, dass der Treiber in den Fehlerzustand wechselt,
Lösungen:
1. Der Treiber lässt sich aus dem Code wiedebeleben. Hierzu müssen folgende Zeilene in AmRobotDriver.cpp ergänzt werden:
Zusätzlich muss in der config.h die Fehlererkennung über Odometrie für die Drive Motoren aktiv sein
2. Der Treiber lässt sich auch hardwareseitig aus dem Fehlerzustand wiederbeleben, siehe hierzu diesen Post:
100k Widerstand zwischen BRK und GND
Den Treiber gibt es aktuell in der Bucht mit und ohne Hall-Sensor-Eingängen. Wir brauchen den Treiber mit den Hall-Eingängen (erkennbar an einem weißen JST Stecker):
Im Bild ist erkennbar eine V1, ich habe allerdings V2, wo da der Unterschied ist, kann ich nicht sagen.
Der Treiber wird wie im folgenden Bild an das BL-Adapter angeschlossen (Danke an @Algo):
Sollte der BL-Adapter V1.0 verwendet werden, dann müssen die Pull-Up-Widerstände, wie im Wiki beschrieben eingelötet werden:
https://wiki.ardumower.de/index.php?title=Brushless_Adapter
Die Kondensatoren für die Odometrie am PCB habe ich wieder zurückgenommen, da diese meinen ODO-Signal verschlechtert haben. Ohne Kondensatoren habe ich einen sauberen Rechtecksignal (kann aber auch ein Einzelfall sein, muss jeder für sich selbst prüfen)
5V: muss nicht angeschlossen werden
0-5V/PWM: Kann sowohl an der grünen Anschlussleiste (external Potentiometer) als auch am nicht bestückten Leiste (P-Pin) neben dem Hall-Signal Anschluss angeschlossen werden. User Algo hat keinen Unterschied zwischen den beiden Möglichkeiten feststellen können. Wenn P-Pin genommen wird, muss auf dem Treiber eine Brücke gesetzt werden (rechts vom großen ELKO).
GND: wird mit GND des BL-Adapters verbunden
DIRection V/R: wird mit dem Richtungswechsel Pin des BL-Adapters verbunden
PWR: Muss an Spannungsersorgung des Treibers angeschlossen werden (normalerweise 24V)
GND: Muss an Masse angeschlossen werden
MA, MB, MC: Muss mit der jeweiligen Phase des Motors verbunden werden
Hall-Ausgänge des Motors werden an der weißen JST Leiste angeschlossen (Achtung kein 2,5mm Raster Maß, kleiner)
S/ODOmetrie: Bei mir war da eine 3er Stiftleiste eingelötet, also habe ich Odometrie Eingang vom BL-Adapter einfach drangelötet.
Der Treiber besitzt noch einen Brake- und einen Stop-Eingang:
Der Stop-Eingang kann nicht als Enable-Pin vom BL-Adapter benutzt werden, da dieser die Aufgabe hat PWM Anschluss auf Masse zu ziehen. Das heißt wenn dort 5V anliegen, gehen diese direkt aufs PWM Signal rüber und der Motor gibt Vollgas. Somit bleibt der Enable Pin vom BL-Adapter unbelegt.
Der Brake-Eingang kann genutzt werden um den Freilauf der Motoren zu verhindern. Dieser Treiber, wie auch der JYQD, gehen in Motorfreilauf wenn PWM gleich 0% ist. Wie man mit dem Brake Eingang den Freilauf verhindert, habe ich hier beschrieben:
https://forum.ardumower.de/threads/...arum-bremst-der-mower-nicht.24823/#post-54808
Jetzt zu den Einstellungen im Sunray-Code:
Code:
// ----- gear motors --------------------------------------------------
// for brushless motors, study the sections (drivers, adapter, protection etc.) in the Wiki (https://wiki.ardumower.de/index.php?title=DIY_Brushless_Driver_Board)
#define MOTOR_DRIVER_BRUSHLESS 1 // uncomment this for new brushless motor drivers
//#define MOTOR_DRIVER_BRUSHLESS_MOW_DRV8308 1 // uncomment for brushless DRV8308 driver and mowing motor
//#define MOTOR_DRIVER_BRUSHLESS_MOW_A4931 1 // uncomment for brushless A3931 driver and mowing motor
//#define MOTOR_DRIVER_BRUSHLESS_MOW_BLDC8015A 1 // uncomment for brushless BLDC8015A driver and mowing motor
#define MOTOR_DRIVER_BRUSHLESS_MOW_JYQD 1 // uncomment for brushless JYQD driver and mowing motor
//#define MOTOR_DRIVER_BRUSHLESS_GEARS_DRV8308 1 // uncomment for brushless DRV8308 driver and gear/traction motors
//#define MOTOR_DRIVER_BRUSHLESS_GEARS_A4931 1 // uncomment for brushless A4931 driver and gear/traction motors
//#define MOTOR_DRIVER_BRUSHLESS_GEARS_BLDC8015A 1 // uncomment for brushless BLDC8015A driver and gear/traction motors
#define MOTOR_DRIVER_BRUSHLESS_GEARS_JYQD 1 // uncomment for brushless JYQD driver and gears/traction motor
Ich fahre aktuell mit diesen PID-Werten:
Code:
// motor speed control (PID coefficients) - these values are tuned for Ardumower motors
// general information about PID controllers: https://wiki.ardumower.de/index.php?title=PID_control
#define MOTOR_PID_KP 1.5 //2.0 (JYQD2021) //0.6 //0.5 (JYQD2017) // do not change 2.0 (for non-Ardumower motors or if the motor speed control is too fast you may try: KP=1.0, KI=0, KD=0)
#define MOTOR_PID_KI 0.03 //0.03 (JYQD2021) //0.01 //0.03 (JYQD2017) // do not change 0.03
#define MOTOR_PID_KD 0 //0.04 (JYQD2021) //0.03 //0.04 (JYQD2017) // do not change 0.03
Als Stanley Werte nutze ich das (Mit den Slow Werten experementiere ich noch):
Code:
// stanley control for path tracking - determines gain how fast to correct for lateral path errors
#define STANLEY_CONTROL_P_NORMAL 0.6 // 3.0 for path tracking control (angular gain) when mowing
#define STANLEY_CONTROL_K_NORMAL 0.4 // 1.0 for path tracking control (lateral gain) when mowing
#define STANLEY_CONTROL_P_SLOW 0.8 // 3.0 for path tracking control (angular gain) when docking tracking
#define STANLEY_CONTROL_K_SLOW 0.1 // 0.1 for path tracking control (lateral gain) when docking tracking
Generell sind diese Treiber deutlich besser als die JYQD(2017), da diese keinen Soft-Start oder Soft-Stop haben. Die Motoren reagieren sofort auf alle Änderungen. Die Treiber sollen auch mehr Leistung liefern, allerdings bis an die Grenzen würde ich die nichr ausreizen. Ich empfehle jedem, der die hohe Leistung nutzen will, den Kühlkörper, wie eigentlich bei jedem China-Teil, abzumontieren, reinigen, neue Wärmeleitpaste aufzutragen und den Kühlkörper wieder anbringen. Bei mir war z.B. ein hauchdüner Luftspalt zw. dem Kühlkörper und enem der MOS-FETs zu sehen.
So, ich glaube das war's im groben. Wenn mir noch was einfällt, ergänze ich das hier.
Gruß
Alexander
Update: Sollte der Brake Eingang zum Abremsen des Rovers genutzt werden, kann unter bestimmten Umständen passieren, dass der Treiber in den Fehlerzustand wechselt,
Lösungen:
1. Der Treiber lässt sich aus dem Code wiedebeleben. Hierzu müssen folgende Zeilene in AmRobotDriver.cpp ergänzt werden:
Code:
void AmMotorDriver::resetMotorFaults(){
if (digitalRead(pinMotorLeftFault) == gearsDriverChip.faultActive) {
if (gearsDriverChip.resetFaultByToggleEnable){
digitalWrite(pinMotorEnable, !gearsDriverChip.enableActive);
digitalWrite(pinMotorEnable, gearsDriverChip.enableActive);
}
}
if (digitalRead(pinMotorRightFault) == gearsDriverChip.faultActive) {
if (gearsDriverChip.resetFaultByToggleEnable){
digitalWrite(pinMotorEnable, !gearsDriverChip.enableActive);
digitalWrite(pinMotorEnable, gearsDriverChip.enableActive);
}
}
if (digitalRead(pinMotorMowFault) == mowDriverChip.faultActive) {
if (mowDriverChip.resetFaultByToggleEnable){
digitalWrite(pinMotorMowEnable, !mowDriverChip.enableActive);
digitalWrite(pinMotorMowEnable, mowDriverChip.enableActive);
}
}
Rücksetzen des Fehlerzustands für den JYQD2021
digitalWrite(pinRemoteSwitch, LOW);
digitalWrite(pinRemoteSpeed, LOW);
digitalWrite(pinMotorLeftDir, LOW);
digitalWrite(pinMotorRightDir, LOW);
CONSOLE.println("Starting Recovery JYQD2021 Driver. Brake-Pins and Dir-Pins are LOW for 100ms");
delay(100);
//Ende
Zusätzlich muss in der config.h die Fehlererkennung über Odometrie für die Drive Motoren aktiv sein
2. Der Treiber lässt sich auch hardwareseitig aus dem Fehlerzustand wiederbeleben, siehe hierzu diesen Post:
100k Widerstand zwischen BRK und GND
Zuletzt bearbeitet: