Da es anscheinen auch von offizieller Seite keine Vorschläge/Lösungen für die Behebung des leidigen Themas für die nicht anlaufenden BL-Motore an den DRV8308 BL-Treibern gibt, habe ich bei mir einen Workaround am laufen, der bisher die Motoren zuverlässig startet.
Der Workaround besteht aus einem Relais, einem Step-Down-Regler, einem 470 Ohm 2Watt Widerstand, ein paar Kabeln, einem Anschlusskabel mit 5pol. XH-Stecker und etwas Software.
Die Spannungsversorgung der BL-Treiber wird, wenn diese längere Zeit nicht angesteuert wurden, für einen kurzen Moment durch den Relais-Kontakt getrennt und über den Widerstand entladen.
Dafür ist die gekennzeichnete Leiterbahn bei P49 auf der Rückseite des
PCB 1.4 zu unterbrechen. Den speisenden Plus vom P49 auf den positiven Eingang am Strombegrenzer (ist ein Step Downregler mit Strombegrenzung 5A) angeschlossen (Dieser sollte, da die Ausgangsspannung meistens 2V kleiner als die Eingangsspannung ist, voll aufgedreht werden, damit die Treiber genügend Spannung zur Verfügung haben um ordnungsgemäß Arbeiten zu können).
Ein Step-Up Regler wäre wahrscheinlich die besser Wahl, aber leider hatte ich bisher noch keinen. Der Vorteil wäre, dass die Versorgungsspannung für die Treiber annähernd auf konstantem Level gehalten werden würde.
Bei der Verwendung eines Step-Up Reglers muss man aber unbedingt vor anschließen der Treiber die Ausgangsspannung auf einen zulässigen Wert (bei dem Standard Ardumower mit BL-Antrieben 28V) einstellen!!!
Masse vom P43 geholt (Draht mit unter die Minus-Klemme) für den Step Downregler. Positiver Ausgang des Reglers auf den Öffner vom Relais. Den Gemeinsamen vom Relais zurück auf den anderen Kontakt von P49.
Den Schließer vom Relais mit einem 470 Ohm 2Watt Widerstand gegen Masse als Entladewiderstand anklemmen. Das Relais wird über den UserSwitch3 angesteuert.
Eine Unterbrechung von 3 Sek. reicht aus, um die Treiber unter 2V zu bringen.
Durch die Strombegrenzung von 5A sollten die Treibersicherungen beim Wiedereinschalten halten und die Relais-Kontakte nicht „verschweißen“. Bei einer Blockierung der Antriebsmotoren sollte dennoch genügend Strom fließen, damit der Fehler per Software erkannt werden kann.
Das ganze wurde bei mir mit dem original BL-Antriebssatz von Marotronics mit den DRV8308 Treibern getestet.
Eine Grafik, wie, was und wo anzuklemmen ist, ist unten beigefügt.
Am Anfang der Tests hatte ich den Step-Down-Regler noch nicht dazwischen, was dazu führte, dass die 3,5A Sicherung der BL-Treiber durch den hohen Einschaltstrom ausgelöst haben. Ich habe diese daraufhin durch Träge 3A SMD Sicherungen ersetzt. Da ich leider keine original Sicherungen hatte, konnte ich leider nicht testen, ob diese wirklich mit dem Step-Down-Regler standhalten würden.
Daher gilt (wie eigentlich immer):
TESTEN AUF EIGENE GEFAHR!!!
Benötigtes Material:
1 x 5V Relais für
Arduino (z.B.
dieses hier)
1 x Step-Down Regler für mind. 35V und 5A (z.B.
diesen hier) oder vermutlich noch besser einen Step-Up Regler für min. 35V 5A (z.B.
diesen hier)
1 x 470 Ohm Widerstand 2 Watt oder 4 Widerstände parallel a 2,2 kOhm 0,6 Watt (z.B.
diese hier)
1m 0,5mm² Kupferlitze
1 x Anschlusskabel mit 5pol. XH-Stecker
Zum Programmablauf:
Es gibt die Möglichkeit, den gezielten Neustart der BL-Treiber nach Zeit und/oder diverser möglicher Motorstörungen durchführen zu lassen.
Ist der Parameter "REACTICATE_BL_DRIVER_AFTER_IDLE" auf "true", so wird ein Neustart der Treiber durchgeführt, wenn alle Motoren mindestens für die unter "REACTIVATE_IDLE_TIME" eingestellte Zeit in Minuten keine Bewegung von sich gegeben haben (weil der Mäher z.B. im IDLE oder CHARGE Zustand war). Sobald ein neuer Startbefehl für min. einen der Treiber anliegt, wird der Startbefehl unterdrückt, das Relais per UserSwitch3 angeschaltet, wodurch die Treiber Ihre noch vorhandene Ladespannung über den Widerstand gegen Masse entladen. Nach der unter "REACTIVATE_SWITCH_OFF_TIME" in Millisekunden eingetragenen Zeit fällt das Relais wieder ab und die Treiber werden über den Step-Down Regler wieder mit begrenztem Ladestrom auf die Betriebsspannung gebracht.
Der gleiche Ablauf erfolgt auch, wenn einer der möglichen Motorfehler auftritt und dieser in der Konfiguration auf "true" gesetzt ist. Es wird dann gewartet, bis bei allen das PWM-Ausgangssignal nahe NULL ist, bevor der Neustart erfolgt.
Die zusätzlichen Parameter für die Config.h stehen hier:
C++:
// ----- WORKAROUND FOR NOT STARTING BL-DRIVER (FORCE POWERCYCLE FOR RESTART) ------------
#define REACTICATE_BL_DRIVER_AFTER_IDLE false // powercycle for motor driver at start, if motor was switched off for more than REACTIVATE_IDLE_TIME
#define REACTICATE_BL_DRIVER_AFTER_FAULT false // powercycle for bl-driver if bl-driver send error signal (checkFault)
#define REACTICATE_BL_DRIVER_AFTER_LOW_CURRENT false // powercycle for bl-driver after too low current error (checkCurrentTooLowError)
#define REACTICATE_BL_DRIVER_AFTER_HIGH_CURRENT false // powercycle for bl-driver after too high current error (checkCurrentTooHighError)
#define REACTICATE_BL_DRIVER_AFTER_RPM_FAULT false // powercycle for bl-driver after rpm fault detection (checkMowRpmFault)
#define REACTICATE_BL_DRIVER_AFTER_ODOMETRY_ERROR false // powercycle for bl-driver after odometry error (checkOdometryError)
#define REACTIVATE_IDLE_TIME 30 // duration in minutes the drivers have to stay in IDLE to performe a short powercycle if drivers have to start again.
#define REACTIVATE_SWITCH_OFF_TIME 3000 // duration in ms the drivers stay without power
//----- END WORKAROUND --------------------------------------------------------------------
Damit dieser Workaround aktiv ist, müssen die benötigten Parameter auf "true" gesetzt werden.
Und auch hier gilt: Die eigene config.h ist zu sichern und dann mit der neuen config_example.h abzugleichen, wobei neue Parameter aus der config_example.h zu übernehmen und für den eigenen Mäher sinnvoll anzupassen sind.
Die Softwareänderung ist zur Zeit leider nur in einer angepassten 1.0.286 Version integriert mit zusätzlichen Funktionen und
kann hier herunter geladen werden. Alle zusätzlichen Funktionen sind in der "Version.md" im Hauptverzeichnis der Sunray-Version beschrieben.
Falls Interesse besteht kann ich auch eine reine Relase Version von der 1.0.286 nur mit dem Workaround-Zusatz erstellen.
Gruß Sven