Throttle reverse (gear)

Great info above - many thanks. I have been using a pair of flipsky 75100’s in our 250kg rover mower and they have been excellent. I’ve used the “PPM” aka PWM connections from the FC to the ESC’s and no drama. I have read ive greated a potential ground loop, but again no drama so far.

A new pair of 75100’s just arrived for a new project, so im looking to connect via CANBUS, as chaining the ESC’s wil resolve the potential groundloop issue.

Anyone got canbus working with these ? I may need to update the ESC firmware from v5.2 (per doco) to something more recent to fix eRPM and maybe reverse issue. Any pointers appreciated.

I use these for my deck motors on my mowers and I control them (forward only) with CAN. Pixhawk 6C + Ardurover. Fixed my groundloop issues! Given that yours are from the same shop, I suspect yours will work.

For my traction motors I use these 1x VESC 6/75 - £250 each and I also control them with CAN, including reverse.

Incidentally I also have a waveshare CAN hat on my raspberry Pi companion computer to permit the companion computer to receive the status messages those controllers publish.

1 Like

Thanks for your answer Chris - perfect timing.
I put 2x new 75100 VESC’s onto our newer bigger (sadly slower) mower, configured them up (sensorless) using PPM and got some poor behaviour. Not sure why but the skid steer mower would circle instead of track straight sometimes. Wiring, or motor config, groundloop - i dont think so, even though i have 2 ground paths via the two ppms-controller-motor pairs but all at low 28v max. Anyways - to save debuggng pwm / groundloop im diving into Vesc uavcan ↔ ardupilot dronecan configuration.

Finding Vesc - Ardupilot documentation is a little challenging, however

  1. Connecting 2 pin Vesc Can connector pins CAN-H and CAN-L to my Zealot’s 4 pin can hub ports
    (noting 30+ volts across the can-l and can-h pins into the FC - could end badly … )
  2. Setting mission planner CAN_P1_DRIVER 1 and CAN_D1_DRIVER 1 CAN_P1_BITRATE 500000
  3. setting VESC to UAVCAN protocol - scan canbus shows no traffic :frowning: none in devtools either
  4. Mission Planner DroneCan inspector now shows bus traffic - Node 47, so i added CAN_D1_NODE 47
  5. In mission planner after a bit of mucking about - now getting CAN data (joy)

Thats enough for tonight / this morning.

Next challenge(s)

  • getting throttle commands to move the motor on the VESC. and reverse.
  • getting RPM data displayed in Mission Planner

Cheers

1 Like

Update : Seems it was all working - i just didnt have the safety switch available, my disabling hw savefty’s wasnt good enough. Once i connected the safety switch, i now have full ESC control for skid steer

  • esc1_voltage
  • esc1_current
  • esc1_temperature
  • esc1_rpm - which only reads in the forwards direction. Reverse rpms are always 0. No biggie.
  • Forwards and Reverse control

I’ve wired up a Y cable for the canbus - tomorrow i’ll map up the 2nd VESC over canbus, then mow baby mow.

1 Like

and for the sake of documentation -
Ardurover is now 100% for skidsteer with 2x Flipsky 75100 Vesc’s. Forwards/Reverse and turning.
canbus with Y Cable linking 2x VESC to “CAN splitter board” and into the CAN port of th Zealot FC
notes

  • update VESC firmware. i used 6.02 75100_100_v2 - easy and quick drama free firmware
  • always ensure Filters are turned off in the FOC tab - magic smoke problems elsewise
  • set canbus speeds to match - 500K baud eveyrwhere for me
  • set Vesc protocol to UAVCAN - there is no dronecan.
  • set Vesc can ID to the servo/motor channel to use as ESC i used ID 0 and ID 1
    Update: Dont use can Id 0 : telemetry worked initally then stopped - changed to ID 1 and ID2
  • set Vesc ESC index to the ESCn numbers in ardupilot i used 0 and 1
  • i set the VESC canbus throttle mode to “Duty Cycle” - it seemed to work well

Im away from the mower - so Mission Planner can_ parameters from memory

  • CAN_P1_PROTOCOL 1 (dronecan)
  • CAN_P1_DRIVER 1 (driver 1 assigned to port 1)
  • CAN_D1_UC_NODE bitmask - selecting 0 and 1 as ESC’s
    Update: Dont use Id 0 : telemetry worked initally then stopped - changed to ID 1 and ID2
  • CAN_D1_UC_ESC_BM bitmask 0 and 1 from memory
  • CAN_D1_UC_ESC_RM bitmask 0 and 1
  • SERVO1_FUNCTION to 73 (Throttle Left)
  • SERVO2_FUNCTION to 74 (Throttle Right)

hints and observations.
I couldnt find much doco around - but setting the canbus ID to 0 and 1 made servo channels 1 and 2 start to work. I spent a bit of time trying how to map ESC1 to Vesc node 47, but thats not how it works.
Update : As above Dont use Can Id 0 as the telemetry stopped working on it for me. I moved to ID 1 and ID 2 and now both telemetry and control work fine.
SLCAN ate and flooded my telemetry bandwidth. Setting it from 1 to 0 restored things.

Definately have your rover off the ground. I had an uncommanded full throttle. On a 300kg mower it would have been a problem if it was on the ground. This is how i found the Vesc’s ESC index is 0 based.

Mission Planner info is good.


zero RPM is correct for ch1out 1500 - mid throttle.
I had odd behaviour with servo (pwm) range extended 950-2050 with 1500 midpoint. Direction of track reversed at full throttle. >2000 . Reset to standard 1000-2000 and all good.

Cheers

2 Likes