Brushless Driver Board mit BL8015

Ich habe es heute endlich geschafft, meinen Ardumower ans laufen zu bekommen. Leider scheint die Steuerung invertiert zu sein (vorwärts ist rückwärts). Ist das "normal"? Ich hatte oben gelesen, dass man einen motor ggf "umdrehen" muss, aber beide? ggf habe ich ja auch etwas falsch angeschlossen. Der "Linke" motor ist für mich der in richtung Bumper linke, oder?
 
Seiten sind wie beim Auto in Fahrtrichtung, Fahrerseite ist links, Beifahrer rechts.
Ich hab bei mir auch beide Motoren invertieren müssen, wovon das abhängig ist hab ich auch noch nicht verstanden.
 
schau mal unter
---gear motors---
#define MOTOR_LEFT_SWAP_DIRECTION 1 // uncomment to swap left motor direction
#define MOTOR_RIGHT_SWAP_DIRECTION 1 // uncomment to swap right motor direction
 
USB Kabel abziehn - Rechner neustarten - Roboter stromlos machen

Dass da mal alles resettet, dann nochmal versuchen.
 
weiß jemand wieviel Ticks die
BL8015 Treiber und 57BLR50-24-01-HG100
24V 84W 35RPM Bürstenloser Gleichstrommotor mit Getriebe 100:1
brauchen
Hallo @tor,
ich kann Dir leider nicht sicher sagen, wie viele Impulse der Motor pro Umdrehung liefert.
Die Standard-BL Motore aus dem Shop liefern 6 Impulse pro Umdrehung.
Ich gehe einmal davon aus, dass der Motor durch die 3-Hallsensoren nach Auswertung durch den Treiber 6 Ticks pro Umdrehungen liefert. Durch das Getriebe mit einer Untersetzung von 100:1 müssten sich 600 Ticks pro Radumdrehung ergeben.
Wenn auf Deinem PCB der ODO-Teiler auf 2 steht, würde das 300 Ticks für Deinen Motor ergeben.
Du kannst das dann aber mit dem Odometrie-Test im serial Monitor überprüfen. Die aktuelle Stellung der Räder markieren (z.B. 12 Uhr Position) und den Test mit AT+E Komando starten. Die Räder sollen dann 10 Umdrehungen zurücklegen. Wenn die Antriebe nach 10 Umdrehungen stoppen, stimmen die Ticks. Sind es zu wenig oder zu viele Umdrehungen kannst Du die Ticks dann anschließend per 3-Satz berechnen oder durch versuche ermitteln. Eine leichte Abweichung (weniger als 1/4 Umdrehung) nach den 10 Umdrehungen von der 12 Uhr Position ist in Ordnung.

Gruß Sven
 
Nach einigem hin und her habe ich das Borad wieder als COM Port in der Arduino IDE. Ich habe nen Mac mit dem USB Adapter. Der IDE bzw. dem OS scheint es gar nicht egal zu sein, welcher Port am Rechner UND am USB Adapter genutzt wird. Zudem muss man es mit der richtigen Kombination auch mehrmals probieren. Jedenfalls klappt es jetzt.

Der ODO Test dreht meine Räder allerdings ca. 35 Mal. Nicht bloß 10 mal. Ich habe die BL8015 und die standard BL Motoren aus dem Shop. Muss ich hier die Ticks ändern? Oder liegt es daran, dass ich den ODO Bugfix nicht eingelötet habe: https://wiki.ardumower.de/index.php?title=Datei:Odofix.png
 
Hallo @codekonzept,

meines Wissens bewirkt der ODO Bugfix, dass zusätzliche kurze Impulse, die über die Signalleitungen "eingefangen" werden, herausgefiltert werden, damit ausschließlich die ODO-Signale erfasst werden. Ohne ODO Bugfix hättest Du mehr erfasste Impulse bei gleicher Drehung, was dazu führen würde, dass die Räder weniger Umdrehungen machen (da der Vergleich auf die erforderlichen Ticks für 10 Umdrehungen früher erreicht wird).
Wenn bei Dir die BL-Shop Motore verbaut sind, dann liefern diese theoretisch 1274 Impulse (212,33 Motorumdrehungen für 1 Radumdrehung mal 6 Ticks pro Motorumdrehung). In der Praxis hat sich ein Wert von 1194 im Mittel bewährt. Durch den ODO-Teiler von 2 auf dem Board ergibt sich 597 als Wert für "TICKS_PER_REVOLUTION" in der config.h.
Ich würde den Wert, den Du für "TICKS_PER_REVOLUTION" eingetragen hast durch 3,5 teilen, bzw. durch Versuche anpassen, bis der Test bei 10 Umdrehungen stoppt. Dann das ganze mehrmals wiederholen, um zu prüfen, dass das Ergebnis reproduzierbar ist. Also kein großer Fehler in der Erfassung der ODO-Signale besteht. Eine kleine Abweichung ist akzeptabel und der Signalaufbereitung/-auswertung geschuldet. Bei Interesse hierzu kann ich diesen Beitrag empfehlen.

Gruß Sven
 
nochmals DANKE Svolo
für die super Erklärung,

bei mir läuft jetzt alles (test über 4 Stunden)
und ich bin sehr zufrieden, die Motoren ziehen durch und sind robust
kurz zusammen gefasst

Brushless Driver Board für die BL8015
BL8015 Treiber
Fahr-Motor
57BLR50-24-01-HG100 24V 84W 35RPM Bürstenloser Gleichstrommotor mit Getriebe 100:1
Mäh-Motor
24V 3500RPM 0.47Nm 172W 10.4A Ф57x69mm Bürstenloser Gleichstr

falls noch jemand einen Verbesserungsvorschlag hat, sehr gern

hier meine config Sunray-1.0.287
_________________________________________________________________________________________________________________________________________________________-
 

Anhänge

  • config.zip
    10,5 KB · Aufrufe: 15
Vielen Dank für die Infos. Ich werde heute damit auch experimentieren und später berichten.

Ist es denn normal, dass die Default Werte geändert werden müssen? Liegt dies an der Verwendung der 8015a Treiber? Ansonsten ist ja alles Standard Shop Hardware und die Defaults müssten passen, oder?
Ich habe meinen ODO Teiler pbrigens nicht geändert. Steht er dann auf 2? Lt Thread hätte ich jetzt 1 gedacht.
 
Hallo Zusammen, hier ein kurzes Update.

Ich habe nun so weit alles zusammengebaut und konnte erste Tests im Garten machen. Der ODO Test hat auch funktioniert. Anbei ein Video. Die Steuerung des Mowers im Garten wirkt etwas hakelig / ruppig. Fast so als würden sich die Motoren wellenartig bewegen. Jedenfalls konnte ich hiermit eine Karte aufnehmen. Der Start Button in der App ist aber immer grau. Ich kann diesen dennoch anklicken. Der Mower startet aber nicht. Ich habe das Gefühl, dass er dann einen Reboot macht. Verbindung bricht reproduzierbar zusammen. Log sieht auch danach aus.


######################
setOperation op=1
changeOperationType
dumpState: X=14.71 Y=9.99 delta=0.27 mapCRC=107807 mowPointsIdx=0 dockPointsIdx=0 freePointsIdx=0 wayMode=4 op=1 sensor=4 sonar.enabled=1 fixTimeout=100 absolutePosSource=0 lon=0.00 lat=0.00
save state... ok
==> changeOp:Mow(initiatedByOperator 1)
OP_MOW
Map::startMowing
trying to detect Bluetooth 4.0/BLE (HM-10 module) (make sure your phone is NOT connected)115200...
BLE: AT
atKsLP9QS
error: no BLE module found!
RCModel disabled in config
ENABLE_PASS
ENABLE_TILT_DETECTION
FREEWHEEL_IS_AT_BACKSIDE: 1
WHEEL_BASE_CM: 36
WHEEL_DIAMETER: 250
ENABLE_ODOMETRY_ERROR_DETECTION: 0
TICKS_PER_REVOLUTION: 162
MOTOR_DRIVER_BRUSHLESS
MOTOR_DRIVER_BRUSHLESS_MOW_BLDC8015A
MOTOR_DRIVER_BRUSHLESS_GEARS_BLDC8015A
MOTOR_FAULT_CURRENT: 6.00
MOTOR_OVERLOAD_CURRENT: 0.80
USE_LINEAR_SPEED_RAMP: 0
MOTOR_PID_KP: 2.00
MOTOR_PID_KI: 0.03
MOTOR_PID_KD: 0.03
MOTOR_LEFT_SWAP_DIRECTION
MOTOR_RIGHT_SWAP_DIRECTION
ENABLE_DYNAMIC_MOWER_SPEED: 0
MOW_FAULT_CURRENT: 8.00
MOW_OVERLOAD_CURRENT: 2.00
ENABLE_OVERLOAD_DETECTION: 1
ENABLE_FAULT_DETECTION: 1
ENABLE_FAULT_OBSTACLE_AVOIDANCE: 1
ENABLE_RPM_FAULT_DETECTION: 1
ENABLE_DYNAMIC_MOWMOTOR: 0
SONAR_INSTALLED
SONAR_ENABLE: 1
SONAR_TRIGGER_OBSTACLES: 1
RAIN_ENABLE: 0
BUMPER_ENABLE: 1
BUMPER_DEADTIME: 1000
BUMPER_TRIGGER_DELAY: 0
BUMPER_MAX_TRIGGER_TIME: 30
CURRENT_FACTOR: 1.98
GO_HOME_VOLTAGE: 21.50
BAT_FULL_VOLTAGE: 28.70
BAT_FULL_CURRENT: 0.20
BAT_SWITCH_OFF_IDLE: 0
BAT_SWITCH_OFF_UNDERVOLTAGE: 1
REQUIRE_VALID_GPS: 1
GPS_SPEED_DETECTION: 1
GPS_MOTION_DETECTION: 1
GPS_REBOOT_RECOVERY: 1
GPS_CONFIG: 1
GPS_CONFIG_FILTER: 1
CPG_CONFIG_FILTER_MINELEV: 10
CPG_CONFIG_FILTER_NCNOTHRS: 10
CPG_CONFIG_FILTER_CNOTHRS: 30
ALLOW_ROUTE_OUTSIDE_PERI_METER: 1.00
OBSTACLE_DETECTION_ROTATION: 1
KIDNAP_DETECT: 1
KIDNAP_DETECT_ALLOWED_PATH_TOLERANCE: 1.00
DOCKING_STATION: 1
DOCK_IGNORE_GPS: 0
DOCK_AUTO_START: 1
TARGET_REACHED_TOLERANCE: 0.05
STANLEY_CONTROL_P_NORMAL: 3.00
STANLEY_CONTROL_K_NORMAL: 1.00
STANLEY_CONTROL_P_SLOW: 3.00
STANLEY_CONTROL_K_SLOW: 0.10
BUTTON_CONTROL: 1
USE_TEMP_SENSOR
BUZZER_ENABLE
SERIAL_BUFFER_SIZE=1024 (increase if you experience GPS checksum errors)
-----------------------------------------------------
UBLOX::begin serial
using gps driver: UBLOX
trying to connect to ublox f9p...
NOTE: if GPS is not responding either set 'GPS_CONFIG=false' in config.h or perform GPS wire fix (see Wiki)
trying baud 115200
GPS receiver found!
ublox f9p: sending GPS rover configuration...
idx=0...OK
idx=1...OK
idx=2...OK
config sent successfully
sizeof Point=4
map load... ok
map dump - mapCRC=107807
points:
perimeter pts: 5
exclusion pts: 0
exclusions: 0
dock pts: 0
mow pts: 69
first mow point:1.80,8.82
free pts: 0
mowPointsIdx=0 dockPointsIdx=0 freePointsIdx=0 wayMode=3
probing for ESP8266 (NOTE: will fail for ESP32)...
WIFI (ESP8266) not found! If you have ESP8266 and the problem persist, you may need to flash your ESP to firmware 2.2.168
MPU6050/9150 found
using imu driver: MpuDriver
resuming is activated
state load... ok
dumpState: X=14.71 Y=9.99 delta=0.27 mapCRC=107807 mowPointsIdx=0 dockPointsIdx=0 freePointsIdx=0 wayMode=4 op=0 sensor=4 sonar.enabled=1 fixTimeout=100 absolutePosSource=0 lon=0.00 lat=0.00
resuming operation due to watchdog trigger
setOperation op=1
changeOperationType
dumpState: X=14.71 Y=9.99 delta=0.27 mapCRC=107807 mowPointsIdx=0 dockPointsIdx=0 freePointsIdx=0 wayMode=4 op=1 sensor=4 sonar.enabled=1 fixTimeout=100 absolutePosSource=0 lon=0.00 lat=0.00
save state... ok
WARN: PID unmet cycle time Ta=1.92 TaMax=0.07
WARN: PID unmet cycle time Ta=1.92 TaMax=0.07
batTemp=998 cpuTemp=50
==> changeOp:ImuCalibration(initiatedByOperator 0)->Idle
###########################

Ich habe auch draußen ständig Verbindungsabbrüche. Sowohl per WLAN als auch Bluetooth. Zudem bekomme ich im Log des Öfteren mal IMU Kalibrierungen. Hab die Batterie des RTK Moduls schon getauscht. Auch eine neues IMU Modul habe ich eingesetzt. Dann waren die Kalibrierungen erstmal wieder weg. Gerade war das Problem kurzzeitig wieder da. Jetzt ist es scheinbar wieder weg. Merkwürdig.

Die App zeigt auch IMU Timeout. Ggf sind die Kabel zu lang. Ich checke das morgen mal mit Kürzeren.

Mein Hauptbroblem sind aber gerade her die Verbindungsabbrüche und das ich das Mähen nicht starten kann. Ggf. hat ja von Euch einer einer Idee.

LG
Patirck
 

Anhänge

  • IMG_5977.MOV
    29,6 MB
Okay. Das hakelige hatte ich auch per BLE. Daher wäre mal das automatische Fahren interessant gewesen. Ob es da auch so ist. Aber das will ja irgendwie nicht.
 
So, habe heute nochmal die Firmware neu aufgespielt. Ich konnte eine Karte aufnehmen und bei einen klick auf Start startete der Mower auch den Mähmotor. Dann fährt er aber nicht los und geht nach ein paar Sekunden wieder aus. Ab und zu zuckt er dann ganz kurz. Hier eine Logausgabe nach dem Start. Der Mower befindet sich innerhalb der Karte.
16:46:33.012 -> ==> changeOp:Mow
16:46:33.012 -> OP_MOW
16:46:33.012 -> clearObstacles
16:46:33.012 -> Map::startMowing
16:46:33.012 -> findObstacleSafeMowPoint checking 3.81,11.27
16:46:33.012 -> findPath (1.45,11.78) (3.81,11.27)
16:46:33.012 -> path finder is enabled
16:46:33.012 -> freem=244795
16:46:33.012 -> starting path-finder
16:46:33.012 -> .finish nodes=6 duration=2
16:46:33.012 -> pathfinder: no path
16:46:33.012 -> ERROR: no path
16:46:33.012 -> gps no speed => obstacle!
16:46:33.012 -> triggerObstacle
16:46:33.050 -> TEMP OUT-OF-RANGE TRIGGERED
16:46:33.050 -> ==> changeOp:Dock
16:46:33.050 -> clearObstacles
16:46:33.050 -> OP_DOCK dockingInitiatedByOperator=0 dockReasonRainTriggered=1
16:46:33.050 -> Map::startDocking
16:46:33.050 -> ERROR: no points
16:46:33.050 -> ==> changeOp:GpsRebootRecovery->Dock
16:46:33.050 -> rebooting GPS receiver...
16:46:34.691 -> 0:5:14 ctlDur=0.02 op=GpsRebootRecovery->Dock freem=244923 sp=80982300 bat=24.93(0.16) chg=0.25(0.03) tg=0.00,0.00 x=1.38 y=11.69 delta=-2.08 tow=139612600 lon=7.13406265 lat=51.39989494 h=174.6 n=11.51 e=1.34 d=-1.90 sol=0 age=0.37
16:46:37.311 -> GPS jump: 1.33
16:46:39.681 -> 0:5:19 ctlDur=0.02 op=GpsRebootRecovery->Dock freem=244923 sp=2C390 bat=24.87(0.33) chg=0.28(0.03) tg=0.00,0.00 x=0.83 y=12.00 delta=-0.95 tow=139617600 lon=7.13406291 lat=51.39989713 h=171.2 n=11.75 e=1.36 d=1.45 sol=2 age=0.35
16:46:39.681 -> GPS jump: 0.66
16:46:44.686 -> 0:5:24 ctlDur=0.02 op=GpsRebootRecovery->Dock freem=244923 sp=3D886B35 bat=24.85(0.39) chg=0.24(0.03) tg=0.00,0.00 x=1.35 y=11.77 delta=-0.95 tow=139622400 lon=7.13406282 lat=51.39989754 h=171.2 n=11.77 e=1.35 d=1.46 sol=2 age=0.33
16:46:49.657 -> 0:5:29 ctlDur=0.02 op=GpsRebootRecovery->Dock freem=244923 sp=20400C20 bat=24.85(0.42) chg=0.26(0.03) tg=0.00,0.00 x=1.40 y=11.76 delta=-0.95 tow=139627400 lon=7.13406345 lat=51.39989723 h=171.1 n=11.76 e=1.40 d=1.53 sol=2 age=0.31
16:46:54.627 -> 0:5:34 ctlDur=0.02 op=GpsRebootRecovery->Dock freem=244923 sp=3D886B35 bat=24.84(0.44) chg=0.25(0.03) tg=0.00,0.00 x=1.40 y=11.77 delta=-0.95 tow=139632400 lon=7.13406345 lat=51.39989755 h=171.1 n=11.77 e=1.40 d=1.54 sol=2 age=0.29
16:46:59.621 -> 0:5:39 ctlDur=0.02 op=GpsRebootRecovery->Dock freem=244923 sp=3D886B35 bat=24.83(0.46) chg=0.25(0.03) tg=0.00,0.00 x=1.39 y=11.77 delta=-0.95 tow=139637400 lon=7.13406341 lat=51.39989754 h=171.1 n=11.77 e=1.39 d=1.54 sol=2 age=0.27
16:47:02.966 -> restarting operation (retryOperationTime)
16:47:02.966 -> ==> changeOp:Dock
16:47:02.966 -> clearObstacles
16:47:02.966 -> OP_DOCK dockingInitiatedByOperator=0 dockReasonRainTriggered=1
16:47:02.966 -> Map::startDocking
16:47:02.966 -> ERROR: no points
16:47:02.999 -> ==> changeOp:GpsRebootRecovery->Dock
16:47:02.999 -> rebooting GPS receiver...
16:47:04.582 -> 0:5:44 ctlDur=0.02 op=GpsRebootRecovery->Dock freem=244923 sp=80982300 bat=24.85(0.41) chg=0.25(0.03) tg=0.00,0.00 x=1.44 y=11.68 delta=-1.18 tow=139642400 lon=7.13407765 lat=51.39990725 h=166.3 n=12.85 e=2.38 d=6.33 sol=0 age=0.25
16:47:07.305 -> GPS jump: 1.96
16:47:08.473 -> GPS jump: 1.82
16:47:09.589 -> 0:5:49 ctlDur=0.02 op=GpsRebootRecovery->Dock freem=244923 sp=80982300 bat=24.88(0.30) chg=0.26(0.03) tg=0.00,0.00 x=1.34 y=11.71 delta=-2.46 tow=139647400 lon=7.13406242 lat=51.39989703 h=171.1 n=11.71 e=1.34 d=1.53 sol=2 age=0.24
16:47:14.560 -> 0:5:54 ctlDur=0.02 op=GpsRebootRecovery->Dock freem=244923 sp=80982300 bat=24.90(0.23) chg=0.25(0.03) tg=0.00,0.00 x=1.34 y=11.72 delta=-2.46 tow=139652400 lon=7.13406245 lat=51.39989712 h=171.1 n=11.72 e=1.34 d=1.54 sol=2 age=0.21
16:47:19.547 -> 0:5:59 ctlDur=0.02 op=GpsRebootRecovery->Dock freem=244923 sp=2000062C bat=24.91(0.19) chg=0.25(0.04) tg=0.00,0.00 x=1.35 y=11.64 delta=-2.46 tow=139657400 lon=7.13406254 lat=51.39989635 h=171.3 n=11.64 e=1.35 d=1.38 sol=2 age=0.20
16:47:24.529 -> 0:6:4 ctlDur=0.02 op=GpsRebootRecovery->Dock freem=244923 sp=80982300 bat=24.92(0.16) chg=0.26(0.03) tg=0.00,0.00 x=1.35 y=11.69 delta=-2.45 tow=139662400 lon=7.13406275 lat=51.39989682 h=171.1 n=11.69 e=1.35 d=1.53 sol=2 age=0.19
16:47:29.353 -> batTemp=998 cpuTemp=52
16:47:29.353 -> WARN: PID unmet cycle time Ta=0.11 TaMax=0.07
16:47:29.387 -> WARN: PID unmet cycle time Ta=0.11 TaMax=0.07
16:47:29.492 -> 0:6:9 ctlDur=0.02 op=GpsRebootRecovery->Dock freem=244923 sp=80982300 bat=24.93(0.14) chg=0.26(0.04) tg=0.00,0.00 x=1.35 y=11.69 delta=-2.45 tow=139667400 lon=7.13406254 lat=51.39989653 h=171.1 n=11.69 e=1.35 d=1.54 sol=2 age=0.14
16:47:32.890 -> restarting operation (retryOperationTime)
16:47:32.890 -> ==> changeOp:Dock
16:47:32.890 -> clearObstacles
16:47:32.890 -> OP_DOCK dockingInitiatedByOperator=0 dockReasonRainTriggered=1
16:47:32.890 -> Map::startDocking
16:47:32.890 -> ERROR: no points
16:47:32.924 -> ==> changeOp:GpsRebootRecovery->Dock
16:47:32.924 -> rebooting GPS receiver...
16:47:34.509 -> 0:6:14 ctlDur=0.02 op=GpsRebootRecovery->Dock freem=244923 sp=80982300 bat=24.92(0.15) chg=0.24(0.03) tg=0.00,0.00 x=1.28 y=11.62 delta=-2.25 tow=139672400 lon=7.13407673 lat=51.39988455 h=168.8 n=10.32 e=2.34 d=3.89 sol=0 age=0.14
16:47:37.080 -> GPS jump: 0.34


Hat jemand eine Idee?

Danke und viele Grüße
Patrick
 
Zieh ihn mal ab und kommentiere ihn aus, irgendwie triggert er. Zu testzwecken kannst du eigentlich erstmal den ganzen Schnickschnack weglassen (IMU, Sonar, Bumper etc.) Wenn erstmal läuft kannst du alles wieder langsam anstecken
 
Danke, war ein super Tipp. Zumindest fährt er jetzt. Jetzt gehts an die Details. Gibt es irgendwo Detailinfos zur App? Was bedeutet L und M auf der Karte und so?
 
Oben