You are here

I made a Boost Current Mod

10 posts / 0 new
Last post
JL2579
Offline
Last seen: 4 years 5 months ago
Joined: 2017-12-25 21:09
Posts: 13
I made a Boost Current Mod

Hi everyone,

as I stated a few days ago, I was requesting a boost current feature to allow a short term increase in the maximum motor current, Intended for motors without temperature sensors ( i.e. Turnigy SK3 ) , to increase performance and acceleration without risking motor overheating during long term increased load, for example climbing up a long hill .

I went ahead and made a github branch together with my buddy Tom, dug into the code for 2 days and managed to add this boost current feature to the interface as awell as updating the firmware.

Below you can see some screenshots of the current status and where these features are added.

So far the feature is not tested yet, since I am currently away from my own VESC 6.4.

I was wondering whether anybody is interested in the version with this specific feature or if anybody could test it for me, as I will likely not be able to do with my own VESC for the next 2 weeks.

Also, If the devs of the main project are interested, I would like to add this feature to the main branch of course ( after it has been tested).

I also found a bug in the soft current ramp down calculation for the mosfets and the motor temperature and added a suggested fix for it.

At last the firmware also contains an (untested) soft Duty Cycle limit. This behaves similar to the ERPM limit, however, it is dependend on the battery voltage, so with this you can set a soft cutoff that is always i.e. at 95% of the battery voltage, so the limit will apply at higher speeds with a full battery than with an empty one :)

 

JL2579

Boost SEttings

 

ThierryGTLTS
Offline
Last seen: 3 years 9 months ago
Joined: 2017-09-06 14:18
Posts: 116

I thought Maximum current was average and Absolute maximum was peak (short-term).

So for me it exists from the beginning, but it's not adjustable like yours.

And I think it's interesting for many motors, several Maxon controllers allows "boost" for severals seconds too.

Have a Nice Day.

Thierry

JL2579
Offline
Last seen: 4 years 5 months ago
Joined: 2017-12-25 21:09
Posts: 13

The absolute maximum is something very different. The controller uses a complex control system to steer the motor as desired by the user (your throttle input). That system including the drivetrain has a certain delay though and can't react to all sudden changes. There are current spikes way above the normal maximum current limit during normal operation that will only occur for less than 0.1 seconds, for example when you hit a bump in the road that immediately increases the load on the motor for a fraction of a second. These spikes though should still never reach the absolute maximum current.  The controller never tries to reach  this current and will immediately shut down if it does,  because it assumes that something went completely wrong. The boost current feature is something very different, it is a controlled state of the system that is allowed for several seconds.

I will link to the mod as soon as I had the chance to test it myself to make sure that it works as intended before someone messes up his controller ;) 

JL2579

benjamin
Offline
Last seen: 3 days 11 hours ago
VESC FreeVESC OriginalVESC Platinum
Joined: 2016-12-26 15:20
Posts: 485

Thanks for posting, interesting mod and I look forwards to seeing how it works. Integrating it in the main branch might be an option.

JL2579
Offline
Last seen: 4 years 5 months ago
Joined: 2017-12-25 21:09
Posts: 13

You can have a look at our current github branch here: https://github.com/tkersten09/vesc_tool/commits/current-boost-option-for...
​and here https://github.com/tkersten09/bldc/commits/current-boost-option-for-adc
​I just noticed that we should rename the branch since the mod is now in the general motor settings, originally I had started to modify the ADC app until I unterstood the VESC  firmware better ;)

 

JL2579

Roger Wolff
Offline
Last seen: 2 weeks 4 days ago
VESC FreeVESC Original
Joined: 2017-05-24 12:27
Posts: 202

I don't know how you guys implemented it, but I would like to have it like described below. I'm a bit afraid that if I run with your settings, running 1s at 61A will require me to wait for 90 seconds before I can use the boost again.... 

We keep track of a "leaky bucket" The bucket leaks from full to empty in 90 seconds as configured. When the bucket is full, boost no longer works. For every second at 80 amps, we add 1/10th (as configured) of the capacity of the bucked into the bucket. So running for two seconds at 80 amps will cool down in 90/5 seconds. Similarly a 70A boost should count only for half the tokens added to the bucket. 

More concrete: say we scale the bucket to hold 90000 tokens, it leaks 1000 tokens per second. For each second above 60A we add ( I -60)/(80-60) * 9000 tokens to the bucket. 

 

A refinement might be to lower the 80A max boost on say the second half of the bucket. To get the same boost-energy you'd need slightly higher numbers. 

 

(you can also turn the interpretation of the bucket around. Hmm. On second thought: That works better: you get the softer cutoff easier. 

 Each second (below 60A?) adds tokens to the bucket, and using boost requires tokens from the bucket. So for your settings, you'd add 1000 tokens to the bucket each second, and using 80A (20A overcurrent) for 10 seconds requires 90000 tokens. So each amp above 60A requires 450 tokens each second. Boost is no longer allowed when the bucket is empty. 

If you simply add tokens for every second, and then configure say 57.6A of threshold current, calling for "max throttle" will stabilize at 60A because 1000 tokens become available each second and 2.<something> get used at 450/A each second. 

 

I've been wanting to have this configuration on my bike. Although the law here requires elecric bikes to be below 250W, we've seen commercial bikes put out (*) 400W for short periods. So I'd want to configure this in my vesc based bike to allow bursts of 400W. I'd want to add tokens to the bucket for each second that less than 250W is being used. Something like 4kJ (10s at 400W) in the bucket and refilling only with half the unused below-250W energy. (i.e. you'd  have to run at 200W for 20 seconds to be allowed 10 seconds at 300W). 

(*) Well, acutally we measured the battery output, but we're assuming that the 150W is not being converted to heat in the controller. 

 

JL2579
Offline
Last seen: 4 years 5 months ago
Joined: 2017-12-25 21:09
Posts: 13

Right now it is programmed in a similar way as to what you described. Internally it "simulates" the motor temperature / your "bucket fill level" as increasing linearly with the difference between the default and the boost maximum. When the max boost current is applied for max boost seconds, a cooldown of the specified cooldown time is forced, during which no boost is possible.

If you only request half of the boost, it takes twice as long to "fill the bucket".

The bucket empties at a constant rate until its empty when the instant current is below the normal threshold, both during forced cooldown or if you simply apply less throttle than the default maximum .

 

 Initially I had the cooldown rate also tied to the difference between instant current and normal maximum, but I figured this might be too confusing for the average user, since that also means that the cooldown time heavily depends on how much throttle you give during that time. The standard limit is intended to be a current limit which the motor withstands for an infinite time within allowed operating temperatures, so the bucket should continue to empty if you apply just 60.0 A in our example.  

So this means for the default values above, you can use 80 amps for 10 seconds, or 70 amps for 20 seconds, or 65 amps for 40 seconds etc. If you use 80 amps for just 5 seconds, after 45 seconds you will be able to use the full 80A/10s boost again.

Again, once this feature is tested, you can try it yourself. (or if you dare, compile the version yourself, but no warranty!! )

JL2579

ThierryGTLTS
Offline
Last seen: 3 years 9 months ago
Joined: 2017-09-06 14:18
Posts: 116

Very clever.

It' would be interesting to do some tests with several motors equipped with temperature sensors.

That way, you can give us some indications about time value to choose.

 

Have a Nice Day.

Thierry

JL2579
Offline
Last seen: 4 years 5 months ago
Joined: 2017-12-25 21:09
Posts: 13

Most motors specify their current limit actually as maximum allowed for 15 seconds ( for example hacker motors). 
It does really depend on your cooling, for example I did mount a 3dprinted Fan blade ontop of my turnigy sk3 6374, which together with a housing that funnels the air sucked in by the fan around the motor greatly reduced the previous hot temps i noticed, in fact the motor stays completely cool within the limits I have set and the driving conditions since then. 

It would be possible , but likely overkill and prone to errors, to go for a more physical approach and use an internal model that simulates heat dissipation in watts as a (constant plus adjustable rpm increase) times difference between motor and air temp. ( due to increased airflow at higher rpms) and then not limit the current directly, but rather the R*I^2*deltaT . For that we would also need copper mass of the motor, allowed max internal winding temperature etc. Then you can integrate over the current flow and the rpms to get an estimate of the current motor temperature and continuusly limit the current according to your simulated temperature. But if the model assumptions are wrong, then you could probably easily grill your motor. I still think this would be interesting though and i might give it a try at some point, since you most likely can overclock your motor to close to twice the current for very short time spans ( 2 seconds or so) without killing it due to it's heat capacity. But on the other hand, the magnets and stator would probably saturate and the motor wouldn't generate twice the torque. I do not have enough knowlegde about motors to say what would happen.

Anyways, I hope I can test this and show a video of it soon , maybe next weekend :)

 

JL2579

frank
Offline
Last seen: 5 days 1 hour ago
VESC BronzeVESC FreeVESC GoldVESC OriginalVESC Silver
Joined: 2016-12-27 20:19
Posts: 725

RISK involved!

Such a mod also bears some risks. If your motor is allowed to pull more amps for a period X it can get hotter than usual. If you use the boost to go to a higher speed you might want good brakes at the end of your boosted acceleration (simply because you are faster than usual). While braking hard, your motor will generate even more heat and the VESC might cut out, due to reaching the temp limit set. Your brakes would fail in that case and you would still be at high speed, unable to brake.

This is why there is a feature called "Acceleration Temperature Decrease" to allow a headroom for the brakes to work. This feature is very important to make sure that the brakes always work! Basically you always want your motor to stay cool enough to allow temp headroom for brakes. A BOOST, allowing you to squeeze out a little more for 10 seconds will cut into this safety headroom. I can only imagine to have this feature in applications where a brake is not needed, or safety relevant. Startup boost for e-foils, multiocopters, robot wars etc.

If such a feature exists, some guys may use it, not seeing the risk involved. You would need to make sure that the feature is linked with other settings like mode used, selection of temp sensors, acceleration temperature decrease etc.

Frank