How To: Field Weakening

How to setup Field Weakening

What is it and how does it work

Field Weakening is a technique used in PEVs to increase top speed by potentially sacrificing torque (only while at those high speeds). High torque isn’t needed at high speeds so this is okay.
An additional current is injected separately from the normal current used to drive the motor.

If you need to know more, google it.

How to enable it
Any 5.3 and newer firmware supports field weakening, it’s a standard feature!

In FOC - Field Weakening

  • set FW Max Current to 30A (a little more may work too, but be mindful of your BMS cutoffs!)
  • set FW Duty Start to 65% (some people go as low as 50%)
  • set Ramp Time to 500ms (this helps avoid nosedips when it kicks in)

In Motor General Advanced

  • make sure max duty cycle is 95% or 96%


  • set duty tiltback to 85%


  • Why would anyone take such a risk? If you’ve ridden an XR or Plus above 16-17mph then you’ve been using this feature already, FM just doesn’t tell you about it
  • How much speed can I reach? About 30 percent more speed than without. I’ve been able to cruise at 19-20mph with a stock XR battery at 50-70% battery (flat road) while duty cycle remained at or below 80%
  • Is this an experimental feature? It’s been in the VESC firmware for a year now, ESK8 and Ebikes have used it for a while, but it’s still new for VESC balance vehicles - Update 8/8/22 many of us have been riding this now for 2 months without any issues
  • Is it safe? Field weakening is safe - going faster than you can handle is not though!
  • Any downsides? The current firmware will apply field weakening solely triggered by duty cycle. This can cause loss of torque at ultra-low speed high-torque situations, e.g. slowly crawling over a door step
  • Do I need special firmware? No, stock 5.3 supports it but ATR-firmware only enables it above a minimum ERPM (5000)

quick note on ramp time - default is 200ms but early on people reported some instability right around the speed where FW kicks in - so we’ve settled on 500-1000ms as the recommend value

however during surge testing I’ve noticed that long ramp times can cause us to not get all the FW power that we expect during surge moments. If you ride at 80% duty and it suddenly jumps to 95% then your FW current would need a few 100ms to reach its max value, so you’re at 95% duty with only 20A FW even though you got 30A configured…

so I want to change the logic, to reduce ramp time, the higher the duty cycle is

so we could still use 500ms at 60% but once we’re above 80% I’d decrease ramp time to a fraction of the configured time

basically trying to ensure that we always get all the power that we have at our disposal to keep our nose from diving down when near 95%

right now long ramp times unnecessarily cause FW to hold back