danielnilsson9 / bbs-fw

Open source firmware for multiple electric bike motor controllers.

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Request - Configurable max temp and current downscaling

aaron-manning opened this issue · comments

I understand that the temperature limit is currently hardcoded.

It would be awesome to have the max temp be user configurable.
It would be amazing to also have the ability to determine the rate (in %) that max current will drop for each degrees c the temp sensor is above the max temp.
It would be useful to also have a configurable maximum (failsafe) temperature that causes the motor to shut off until the temperature has dropped.

This would allow us to run higher max currents when the motor is cool, and have the max be progressively reduced as the motor/controller temp heats up.

commented

This would allow us to run higher max currents when the motor is cool, and have the max be progressively reduced as the motor/controller temp heats up.

As is, that's how it works already. If you want over-safety;

  • drop max temperature by 5, or whatever makes you feel better
  • increase interval to 10 or 15, for bigger scale/early action
  • drop the percent from 20 to 1, while 0 might work too

// Applied to both motor and controller tmeperature sensor
#define MAX_TEMPERATURE 85
// Current ramp down starts at MAX_TEMPERATURE - 5.
#define MAX_TEMPERATURE_RAMP_DOWN_INTERVAL 5
// Maximum allowed motor current in percent of maximum configured current (A)
// to still apply when maximum temperature has been reached.
// Motor current is ramped down linearly until this value when approaching
// max temperature.
#define MAX_TEMPERATURE_LOW_CURRENT_PERCENT 20

With above default settings, the controller* does already cool down a bit despite 30A max in use.
So it will begin ramping down at 80c, and continue until 85c where it will be at 20%(=6A on 30A).

I believe the sensor, and resolution available from ADC in the mcu responsible for this might not
actually be good enough for such an thing as doing things by each degree.

  • Atleast on bbs02b, the only sensor is not even close to the center of the thing that fets have
    been screwed on for cooling - might be hotter in the middle, fwiw..

*) bbs02b 750w 48V on a warm&sunny summerday with full throttle(>50km/h) for over 15mins
is only enough to get somewhere above 70c in my experience(hitting the temperature limit has
required uphills for me).

Ramp down works very nicely on BBSHD with NTC thermistor. Some BBSHD ship with PTC thermistor with far worse resolution, it might not be as smooth of a ramp there, not sure.

Configurable temperature limit is not a high prio issue, what would you even consider changing it to? 85 is a high enough limit to not hit without riding like crazy and low enough to not damage the motor.

Anyone with conflicting view on this can edit fwcondig.h recompile or disable temperature sensor in config tool (mostly useful if broken).

The motivation for this is that it's recommended in various guides to fit a battery operated aquarium temperature sensor inside the controller housing of the bbs02 and to then monitor and adjust your riding style depending on the reading (60c is considered the point to turn off the motor).

The main purpose of this is to protect the nylon gear from overheating.

Source:
https://electricbike-blog.com/2015/06/07/installing-a-temperature-sensor-in-the-bbs02-unit/

As there's already a temperature sensor in the bbs02 controller and its readout is used to ramp down the current, having this be user configurable would allow us to automate this process as the current 85c limit is too high (at least according to this guide)

Personally, I would like to set my bbs02 to 52v 30A (possibly 33, but the last time I checked the config software no longer permits it), set the ramp down temperature starting point to 45c the cutoff point at 65c and the ramp down percentage to be 4% per degrees c.

This would mean at 50c the motor power would be reduced by 20%.

55c -40%
60c -60%
65c cutoff

It should then be safe to run very high wattage through the motor, as it would quickly throttle when pushed too hard

These settings sound very conservative, and I would likely want to tweak it, but it would sure beat getting off the bike frequently to manually check the motor temp (I live in a very hilly area)

It's entirely possible that the current way the firmware works is sufficient to protect the motor. It would just give more peace of mind if it were user configurable.

You've pointed me to the right spot to change the source and compile it myself, which is great, thank you.

I see. Given the location of that temperature sensor (surrounded by air and potting) I guess 60C would be reasonable.. but the BBS02 sensor is located in a hole on the MOSFET heatsink which is also in direct contact with the rest of the motor housing and will probably see higher temperatures

I would be interesting to compare motor core vs mosfet temperature curves on BBSHD to se how they relate to each other, that could give a hint if 85 is a reasonable for controller reading too.

commented

Seems like someone doesn't know about the option of seeing temperature on display:)

It can be configured to show as value of range, and it can be configured also to be shown
instead of speed when switching to push assist level in a way that doesn't interrupt riding.

edit: err.. range shown by display is temperature by default on bbs-fw, the walkmode
showing temperature instead of speed is configurable.

I don't think that there is any need to change the way thermal control works for the BBSHD anyway. It works really good and I've never needed to change the values.

I have this 12km hill with 950m altitude climb. I have 46T chainring and just last weekend I did 15km/h in rear 34T for 9 kms till I hit 85 degrees, then I switched to the 40T rear and the temperature started dropping and went to the top without stopping. Was about 25 degrees Celsius that day so not too hot. Let that motor rev.

Unfortunately I had to manage my battery on that ride so couldn't really test higher speeds or I wouldn't make it back home.

One thing I did notice is some surging but I didn't know for sure if it was thermal or voltage control. I have the PTC sensor. Next ride I'll leave home with a full battery.

I have never mounted my sensor on my BBS02B above 46° I have just adjusted like this:
// Applied to both motor and controller temperature sensor
#define MAX_TEMPERATURE 45

// Current ramp down starts at MAX_TEMPERATURE - 5.
#define MAX_TEMPERATURE_RAMP_DOWN_INTERVAL 15

// Maximum allowed motor current in percent of maximum configured current (A)
// to still apply when maximum temperature has been reached.
// Motor current is ramped down linearly until this value when approaching
// max temperature.
#define MAX_TEMPERATURE_LOW_CURRENT_PERCENT 20

I will keep you informed within a few days of my feedback :)

// Applied to both motor and controller temperature sensor #define MAX_TEMPERATURE 45

// Current ramp down starts at MAX_TEMPERATURE - 5. #define MAX_TEMPERATURE_RAMP_DOWN_INTERVAL 15

// Maximum allowed motor current in percent of maximum configured current (A) // to still apply when maximum temperature has been reached. // Motor current is ramped down linearly until this value when approaching // max temperature. #define MAX_TEMPERATURE_LOW_CURRENT_PERCENT 20

Hi, after several tests at around 32° outside, I remain on these settings on, my BBS02B :

// Applied to both motor and controller temperature sensor
#define MAX_TEMPERATURE 46

// Current ramp down starts at MAX_TEMPERATURE - 5.
#define MAX_TEMPERATURE_RAMP_DOWN_INTERVAL 6

// Maximum allowed motor current in percent of maximum configured current (A)
// to still apply when maximum temperature has been reached.
// Motor current is ramped down linearly until this value when approaching
// max temperature.
#define MAX_TEMPERATURE_LOW_CURRENT_PERCENT 25

Sorry if you already know this. Your settings start reducing the AVAILABLE current from 100% at 40 degrees down to 25% at 46 degrees It is not 25% of your selected pas current. If you are in a pas level with less then 25% current then you will not see any limiting even if exceeding temperature. Is that how you understand it?

Sorry if you already know this. Your settings start reducing the AVAILABLE current from 100% at 40 degrees down to 25% at 46 degrees It is not 25% of your selected pas current. If you are in a pas level with less then 25% current then you will not see any limiting even if exceeding temperature. Is that how you understand it?

Yes, my 3 favorite modes are mode 1 15% of 24A mode 2 20% 24A and mode 3 25% 24A, I set up this limitation especially for my accelerator so that it does not send a lot of power when my engine is already hot