Direct drive (hub) motor winch

Hi all, first post here. Found this forum after searching for “vesc winch” online, and this seems to be the place with multiple such builds :slight_smile:

About 2 years ago I needed a project to work on during the cold winter months. Passion for snowboarding + the fact that Latvia is a vert flat country with many fields and forests lead me to exploring propulsion methods alternative to the good old downhill.

As others, I too found reWinch and Motowinch, but wasn’t too interested in their pricing, and I still needed a project to build.

So V0.1 of a hub motor plywood box winch was born.

  • MXUS 3K V3 Turbo (16:4) hub motor - really nice runner, haven’t had any issues with it so far
  • Kelly KLS7212S - this has worked well for me so far, however there is an issue that I want to address (more on that later)
  • 20s4p custom battery pack with Samsung 21700 40T cells & BMS - through some friends I found a guy working on eBikes, eScooters and such, who built me this solid pack
  • 3mm dyneema rope
  • ESP32<-ESP NOW->ESP32 (DAC output) remote throttle - this has seen multiple iterations. Of course I wanted a “rider remote” installed on the handle at the end of the rope. I first tried using scooter throttle, but later switched to a momentary switch, long-pressing which would send a pre-configured “speed curve” to the receiver end.

The plywood design was just a PoC, it worked, and was successfully torn apart by my heavier friend using an experimental faster acceleration curve :smiley:

Fast forward last winter it was clear that the design could work, but needed certain improvements to more reliable. I didn’t want to get into welding, or any other type of complex frame building. So I figured I’d give 20x20 extruded aluminum + water jet cut aluminum sides a go. Around the same time I upgraded to BambuLab printer and designed a new rider remote.



Last winter didn’t see much snow at all here, so we only started testing it this summer - wakeskate on the river and in the sea.

The current state is:

  • Surface/shallow water start works perfectly, and tows riders at different speed levels very confidently.
  • 3D printed remote didn’t have any water ingress protection, and I temporarily re-fitted it into some PVC piping (grey cylinder on the last photo)
  • I’m not entirely happy with the motor controller. It performs, but I lack more precise control of the throttle speed/current. ESP32 onboard DAC means that I’m half-guessing the 0-3V output that I’m producing from the 0-255 values. Due to this I’ve ordered a ubox 100V/100A VESC which I’m going to test as soon as it arrives.
  • Lack of end of rope detection also meant that when either the button, or the DAC output have gotten “stuck”, end of the rope carabiner/handle were sent into the winch at full speed. Scary! I’ve now received a couple of induction metal detection coils which I was hoping to give a go to along with some metal parts installed on/into the rope. But tbh I’m hoping to receive the VESC soon and implement something better, like a hub motor revolution counter which would track the current rope spooling state.

I’ll post progress and developments here, and will be happy to hear from fellow winch builders :smiley:

1 Like

I have implemented a auto stop in vesc.

See the code in the GitHub…

2 Likes

thanks for the link! IIUC you’re importing BLCD lib and using mc_interface_get_tachometer_value() from it. How are you translating this reading into meters?

For Eg. abs(mc_interface_get_tachometer_value(false)) < 1500

1500 is 15m

1 Like

Yup, I was more wondering about how mc_interface_get_tachometer_value translates into meters, not immediately obvious to me. I’ll have a play with it once the VESC arrives. Thank you!