Ultra Tuning: Decoding the Voltage Section of Torque Tab

smorgasbord

Well-Known Member
Region
USA
EDIT: This revised post corrects and updates previous information. Thanks to @ProphetZarquon for his insights!
EDIT #2: See post #10 below for a How-To primer in case you don't want/need to understand but to try this out. Everyone should update their Base Voltage at least!

I've undertaken yet another attempt at better Ultra tuning. I've tried Karl, stock Luna, Biktrix, eBikeaholic, Mike/Frey, EveryAmp, etc. Part of my problem was that in not understanding what the parameters actually controlled, and having the explanations put forth either not making sense or just absent, I couldn't figure out how to change what I was feeling. I was adding to the great "Bafang Ultra "Smooth" tune by Mike at Frey" thread, but I think a number of smaller threads that concentrate on specific aspects will be more valuable.

In this thread, I put forth what I've learned about the top section of the Torque Tab, which deals with voltages and torque. The Ultra contains an internal torque sensor that outputs voltage based on the pedal force applied. The purpose of the Delta Voltage table is to enable calibration so that the system can accurately convert the voltage output by the sensor to the actual pedal force being applied by the rider. That pedal force is then fed into the Spd table (also on the Torque tab) which will then output a percentage of current to be multiplied by the PAS's current percentage, which is then multiplied by the "Limited Current" (in Amps) specified on the Basic tab. That current is sent to the motor to provide power assist. Viola!

Here's what the Delta Voltage table looks like in the EggRider app, which is what I use and recommend over the programming cable since it enables much faster tweaking of values since your EggRider is your display and you just whip out your phone, make changes and ride. No disconnecting and reconnecting each time like you have to do with a laptop and programming cable. Another advantage to the EggRider is that you can do a "Live Torque Data" display while actually the bike and if you record your phone screen you can then see what your actual riding max voltage produced is.

The values I show here were just ones I had when I started down this path. You can use these, but as different Ultras are each slightly different (whether due to age, wear, whatever), I do recommend following the step by step instructions on post #10 below (although there is now a Quick Start recommendation in the Master thread).

IMG_2149.PNG


Let's start with Base Voltage, which should be the voltage output of the torque sensor when no force is being applied to the pedals. Turns out most Ultras' torque sensors output between 730mV and 760mV just sitting there powered on but idle. The best value to put in there is 1 or 2 mV higher than what your Ultra actually puts out when at rest. And you can measure this in the Torque Tab itself at the bottom (the TqVoltate field) with a "Continuous Get," or from the "Torque Live Data" page in your EggRider.
I have two Ultra-powered bikes: one reads 752 at rest, the other reads 757 at rest. So I put 753mV and 758mV in, respectively. That sets the start of the torque sensing range appropriately.

The next step is to fill in the Delta Voltage table. The maximum pedal pressure the Ultra torque sensor can measure is 60Kg. While Kg is not a unit of torque, this is apparently the force being applied to pedals located at the end of the Bafang standard 170mm cranks. What you want is to set the Delta Voltages such that the sum of them just reaches the maximum output by the torque sensor when your full pedal pressure is applied. Again, the "Continuous Get" or Torque Live Data" reading comes into play. Sit on the powered bike in a low PAS setting (try 0) and, with the brakes firmly applied, stand on one of the pedals with all your weight and note the highest reading. On my two bikes the readings were 3260mV and 3289mV. Alternatively, with the EggRider you can display Torque Live Data on your phone and go for a ride on some empty uphill road is mid/high gear so you have to stand (or almost stand) on the pedals while recording the screen. Look at the recording to see the maximum voltage produced while you ride, which may be less than the stationary value. This way you get to decide at what pedal force you get full motor support.

We can now calculate the Ultra's torque sensor voltage output range, which is the full-pedal-pressure reading minus the no-pedal-pressure reading. In my cases that's 3260-753=2507mV and 3289-758=2531mV.

OK, so what do you use this range for? The answer is the "Delta Voltage" table. There are 8 ranges of values to cover the Ultra torque sensor operating range of 0Kg to 60Kg. By putting in the Base Voltage, you've set the voltage that's output at 0Kg. Now we need to put in the voltage output for each range cell of pedal pressure. The first Delta Voltage value sets the voltage output when 5Kg of pedal force is applied. The second Delta Voltage value sets the additional voltage output when an additional 5Kg of pedal force is applied (the "5-10Kg" label). So, at 10Kg of pedal force, the voltage output from the controller will be:
10Kg = Base Voltage + "0-5Kg" Value + "5-10Kg" Value
In my programming (above), that would be 753+208+208 = 1169mV.

Now, this is a linear Delta Voltage table. That is each 41.6mV of output from the sensor is interpreted at 1 Kg of force to be fed into the Spd table. I imagine the actual purpose of the Delta Voltage table is to adjust for any non-linearities in the torque sensor. If you have a variety of 5/10/20 Kg weights, you can place them on the pedal, measure the voltage, and enter the appropriate values into the table to that the system is correctly recognizing actual pedal forces.

With me so far?

Ideally, the sum of Base Voltage plus all the Delta Voltage Values together should equal your Max Voltage output that you read in Continuous Get/Torque Live Data, which should equate to 60Kg of pedal force on a 170mm crank.

Note that a recent web article from "EveryAmp" doesn't follow any real world torque/voltage mapping, and so ends up reaching maximum output well before reaching maximum pedal pressure, which is not what he intends, as it would map the highest pedal pressure to a lower pedal pressure value, thus not achieving the full potential of motor assist no matter what. There's also a subtle thing happening with the Delta Voltage cell ranges. The first 4 cells cover 5Kg of range each, but the last 4 cells cover 10Kg of range each. So, the default values of 200mV for the first four 5Kg ranges and 400 for the last four 10Kg ranges all equate to a constant 40mV of output per Kg of pedal pressure. "EveryAmp" didn't notice the range differences and just spread his values across both 5 & 10 range amounts equally, which results in an unequal decline in output per pressure with a double jumping at 20kg, which can't feel natural.

While the intention with the Delta Voltage table was almost certainly to be able to report proper torques into the system, the table could be used to have a purposely non-linear curve. For instance, Mike/Frey has his "smooth" delta voltage values starting high (900mV) and decreasing per Kg as pedal pressure increases. So, at low pedal pressures there is less assistance, but, as Mike notes: "As rider increase pedal pressure, system will offer progressively more assistance." Mike provided no information on how he arrived at his numbers, and the jump in range from 5Kg to 10Kg is perhaps ignored is concerning as well.

At any rate, now you know enough to change the Delta Voltage settings. I took (Max voltage - Base voltage) and divided by 12 to get the value for the first four Delta Voltage values, then doubled that for the last four. The result is a perfectly flat/linear Kg/voltage number at any pedal pressure, same as default except now we get full use of the available torque sensing range of the Ultra. That turned out to be 208/416mV for one bike and 210/420mV for the other bike.

Note that people using 0 for the Base Voltage are probably wasting the first 22% of the Ultra's torque sensing ability, and if they're using almost anyone's Delta Voltage values they're not reaching the maximum output of their motor. That is unless Bafang is somehow automatically putting in a value like 740 if 0 is entered for Base Voltage. This kind of 0=Default thing is done by Bafang in other places, like the Return(Kg) values, but this here seems hard to verify either way given the system complexity.

So what's left here? The Error Voltage range values defaults to 300 on the low end and 4300 at the high end. Since Ultras put out at least 730mV even at rest, seeing 300mV should indeed be an error. And since the max reading at full pedal pressure is always under 3300mV, seeing 4300mV should also be an error. I see no reason to change from these values.

Finally, there's "0 Speed Boost Time." Mike/Frey reports this as "Amount of time power is applied to motor when initial pedaling take place with bike starting speed as stationary. This is useful to program as hill-assist start." The value is in 10milliseconds, so 1 is 1/100th of a second. A default of 120 means you get a little over a second of hill assist boost. I haven't thoroughly tested different values here yet.


I hope this was helpful. My plan is to come back in a couple days time and start another thread on another aspect of Ultra tuning. I guess the Kg to Current(%) in Spd ranges would be logically next, but there's actually interesting information for the Basic tab, which is where newbies should start their Ultra tuning since the Basic settings are easily noticeable and very safe to adjust.
 
Last edited:
Smorgasbord
Thank you for that information,
now I understand some of this info, and I'll be following along, for the next step.
I am in the process of setting up an XL program on all these different Ultra tunes
so I can see the differences.

I also think on HOW/What/Where we ride makes a big different,
as to the BEST tuning we could use, for your riding situations etc.

It would also be a help to make a short bit of info on what/how you ride.
I greatly appreciate this post...:cool:
Tia,
Don
 
I've undertaken yet another attempt at better Ultra tuning. I've tried stock Luna, eBikeaholic, Mike/Frey, etc. Part of my problem was that in not understanding what the parameters actually controlled, and having the explanations put forth either not making sense or just absent, I couldn't figure out how to change what I was feeling. I was adding to the great "Bafang Ultra "Smooth" tune by Mike at Frey" thread, but I think a number of smaller threads that concentrate on specific aspects will be more valuable.

In this thread, I put forth what I've learned about the top section of the Torque Tab, which deals with voltages. Here's what it looks like in the EggRider app, which is what I use and recommend over the programming cable since it enables much faster tweaking of values since your EggRider is your display and you just whip out your phone, make changes and ride. No disconnecting and reconnecting each time like you have to do with a laptop and programming cable.

View attachment 149399

Let's start with Base Voltage, which is, as Mike/Frey says: "Voltage, which software will use as starting voltage for calculation of pedal load." That's fine as far as it goes, but it doesn't tell you why Mike has 740 in there or why so many OEMs ship with 0. This thread at electricbike.com contains that this represents the voltage output of the controller when no force is being applied to the pedals. Turns out most Ultras output between 730mV and 760mV just sitting there. The best value to put in there is 1 or 2 mV higher than what your Ultra actually puts out when at rest. And you can measure this in the Torque Tab itself at the bottom (the TqVoltate field) with a "Continuous Get," or from the Live page in your EggRider.
I have two Ultra-powered bikes: one reads 752 at rest, the other reads 757 at rest. So I put 753mV and 758mV in, respectively. That sets the start of the torque sensing range appropriately.

The next step is to fill in the Delta Voltage table. Turns out the maximum pedal pressure the Ultra motor can measure is 60Kg. What we want is to set out Delta Voltages such that the sum of them just reaches the maximum Voltage output by the motor when full pedal pressure is applied. Again, the "Continuous Get" or Live reading comes into play. Sit on the powered bike in a low PAS setting and, with the brakes firmly applied, stand on one of the pedals with all your weight and note the highest reading. On my two bikes the readings were 3260mV and 3289mV. So now you can calculate your Ultra's voltage output range, which is your full-pedal-pressure reading minus your no-pedal-pressure reading. In my cases that's 3260-753=2507mV and 3289-758=2531mV.

OK, so what do you use this range for? The answer is the "Delta Voltage" table. There are 8 ranges of values to cover the Ultra pressure reading range of 0Kg to 60Kg. By putting in your Base Voltage, you've set the voltage that's output at 0Kg. Now we need to put in the voltage output for each range cell of pedal pressure. The first Delta Voltage value sets the voltage output when 5Kg of pedal force is applied. The second Delta Voltage value sets the additional voltage output when an additional 5Kg of pedal force is applied (the "5-10Kg" label). So, at 10Kg of pedal force, the voltage output from the controller will be:
10Kg = Base Voltage + "0-5Kg" Value + "5-10Kg" Value
In my programming (above), that would be 753+208+208 = 1169mV.

Ideally, the sum of Base Voltage plus all the Delta Voltage Values together should equal your Max Voltage output that you read in Continuous Get/Live. And if you look at the default values, that comes pretty close. Note that a recent web article from "EveryAmp" doesn't obey this and so ends up reaching maximum output before reaching maximum pedal pressure, which I don't think is what he intends, but if your a light/weak rider wanting full power you may want to tailor your Delta Voltage table to max out at 55Kg or 50Kg, or perhaps even lower.

With me so far?

Now, there's a subtle thing happening with the Delta Voltage cells. The first 4 cells cover 5Kg of range each, but the last 4 cells cover 10Kg of range each. So, the default values of 200mV for the first four 5Kg ranges and 400 for the last four 10Kg ranges all equate to a constant 40mV of output per Kg of pedal pressure.

EveryAmp didn't notice the range differences and just spread his values across both 5 & 10 range amounts equally, which results in an unequal decline in output per pressure jumping at 20kg. Mike/Frey has his "smooth" values decreasing per Kg as pedal pressure increases pretty linearly. This maybe intentional effect is that you get a lot of boost from low pedal pressures (the first 5Kg gets you 36% of max output, the first 10Kg gets you over 55% of max output!). I say "maybe intentional" because Mike/Frey correctly describes the Base and Max voltage outputs, but then says: "As rider increase pedal pressure, system will offer progressively more assistance." That's incorrect, though, as the system will offer progressively less assistance per Kg of pedal pressure as pedal pressure increases. This explains why my experience with the "smooth" setting is that when I'm riding hard, riding harder doesn't seem to help much. Getting 55% of the motor output when applying only 17% of the max pedal pressure doesn't feel right to me.

At any rate, now you know enough to change the Delta Voltage settings. I took Max voltage - Base voltage and divided by 12 to get the value for the first four Delta Voltage values, then doubled that for the last four. The result is a perfectly flat/linear Kg/voltage number at any pedal pressure, same as default except now we get full use of the available torque sensing range of the Ultra. That turned out to be 208/416mV for one bike and 210/420mV for the other bike.

But, if you wanted to have your "torque multiplier" to progress up or down as pressure increases, you can now have a higher or lower multiplier for the different ranges - just be sure that the sum of the ranges' values is close to your (Max Voltage - Base Voltage) number. Note that people using 0 for the Base Voltage are essentially wasting the first 22% of the Ultra's torque sensing ability, and if they're using almost anyone's Delta Voltage values they're not reaching the maximum output of their motor. That is unless Bafang is somehow automatically putting in a value like 740 if 0 is entered. This kind of 0=Default thing is done by Bafang in other places, like the Return(Kg) values.

So what's left here? The Error Voltage range values defaults to 300 on the low end and 4300 at the high end. Since Ultras put out at least 730mV even at rest, seeing 300mV should be an error. And since the max reading at full pedal pressure is always under 3300mV, seeing 4300mV should also be an error. I see no reason to change from these values.

Finally, there's "0 Speed Boost Time." Mike/Frey reports this as "Amount of time power is applied to motor when initial pedalling take place with bike starting speed as stationary. This is useful to program as hill-assist start." The value is in 10milliseconds, so 1 is 1/100th of a second. A default of 120 means you get a little over a second of hill assist boost. I use the throttle in these from a stand-still situation so I haven't tested different values here.


I hope this was helpful. My plan is to come back in a couple days time and start another thread on another aspect of Ultra tuning. I guess the Kg to Current in Spd ranges would be logically next, but there's actually interesting information for the Basic tab, which is where newbies should start their Ultra tuning since the Basic settings are easily noticeable and very safe to adjust.
Thanks for sharing these nuts and bolts. Don"t have your motor and controller, just interested in how PAS levels are spaced in real torque-sensing ebikes.

If I'm reading correctly, your controller recognizes 9 pedal "pressures" (0, 5, 10, 15, 20, 30, 40, 50, 60) kg. (Kilograms aren't pressure units, but they work if pedal force in Newtons is divided by some standard acceleration of gravity and pedal contact area.)

Your constant Deltage Voltage increments of 208 mV per 5 kg effectively assign a max voltage to each pedal pressure in the linear sequence (753, 951, 1169, 1377, 1585 2001, 2417, 2833, 3249) mV.

Let me start with some questions:

Q1. Is the above correct?

Q2. Sounds like your controller varies the motor's mechanical output (either power or torque) by varying applied voltage rather than current. Correct?

Q3: If so, any ideas on the relationship between applied voltage and output power or torque in your motor? (For example, in the ideal case, output torque would be linear with applied voltage at constant effective motor resistance.)
 
Last edited:
Thanks for sharing these nuts and bolts. Don"t have your motor and controller, just interested in how PAS levels are spaced in real torque-sensing ebikes.
In the Bafang Ultra, PAS levels are specified on a completely separate tab. You have a maximum of 10 levels and can assign Current limits (as a percentage) to each. You can also assign motor rpm limits to each - that is you can say above a certain motor rpm that you get no additional assist. I've not seen anyone change those latter values from 100.
Essentially, the PAS levels limit the power that the motor can produce by limiting the current fed into it.

If I'm reading correctly, your controller recognizes 9 pedal "pressures" (0, 5, 10, 15, 20, 30, 40, 50, 60) kg. (Kilograms aren't pressure units, but they work if pedal force in Newtons is divided by some standard acceleration of gravity and pedal contact area.)
First, kilograms is a measure of force, in this case force being applied to a pedal. I don't believe either gravity nor contact area matter. What does matter is the length of the crank since I suspect it's really a torque measurement being made.
Second, I don't believe the output voltages are discreet. I suspect they scale within each pressure range. With my settings above, a pedal pressure of 7.5Kg should result in an output voltage of 753+208+50%*208 = 1,065mV. I haven't tried measuring this with my EggRider while riding though. At least not yet!

Your constant Deltage Voltage increments of 208 mV per 5 kg effectively assign a max voltage to each pedal pressure in the linear sequence (753, 951, 1169, 1377, 1585 2001, 2417, 2833, 3249) mV.
I prefer to think of it as a constant 41.6 mV/Kg conversion factor.

Q2. Sounds like your controller varies the motor's mechanical output (either power or torque) by varying applied voltage rather than current. Correct?
No, as my subsequent thread describes, the final output is a combination of scaled voltage and scaled current. There is a separate SpdXX table for that, which essentially determines current based on torque AND cadence. That's then scaled down by the PAS level chosen.

Q3: If so, any ideas on the relationship between applied voltage and output power or torque in your motor? (For example, in the ideal case, output torque would be linear with applied voltage at constant effective motor resistance.)
No real ideas on output torque, sorry. And even if things were linear, as humans our perception of increases isn't linear. Which actually reminds me that one future topic is choosing current percentage limits not as linear percentages of current values, but as a linear percentage of previous current values (some kind of exponential). I just tried this and it seems to me to work much better - but that's another thread topic.
 
First, thanks for the detailed reply!
First, kilograms is a measure of force, in this case force being applied to a pedal. I don't believe either gravity nor contact area matter. What does matter is the length of the crank since I suspect it's really a torque measurement being made.
As a quick Wikipedia check will show, the kilogram (kg) is the SI unit of mass, the Newton (N) = kg m/s² the SI unit of force, the Pascal (Pa) = N/m² the SI unit of pressure, and the Newton-meter (N m) the SI unit of torque.

Mass and force are 2 very different things. A typical digital scale measures weight W (a force) in N but reports mass M in kg using M = W / g, where g is some reference acceleration of gravity in m/s² baked into the scale firmware. Often this g is "standard gravity", with a value of 9.80665 m/s².

Likewise, to get a convenient index B of pedal force F, with B expressed in kg, you'd use something like B = F / g. The index would work as long as you used the same g every time.

Pedal pressure and pedal force are also 2 very different quantities. To get a pressure P from a force F, you use P = F /A, where A is the area over which F is applied in m².

No real ideas on output torque, sorry. And even if things were linear, as humans our perception of increases isn't linear. Which actually reminds me that one future topic is choosing current percentage limits not as linear percentages of current values, but as a linear percentage of previous current values (some kind of exponential). I just tried this and it seems to me to work much better - but that's another thread topic.
Agree, an exponential progression of the max mechanical power or torque associated with each PAS level would feel more natural. The teeth on the cogs of a cassette grow roughly exponentially in the same way, and for the same reason.
 
First, thanks for the detailed reply!

As a quick Wikipedia check will show, the kilogram (kg) is the SI unit of mass, the Newton (N) = kg m/s² the SI unit of force, the Pascal (Pa) = N/m² the SI unit of pressure, and the Newton-meter (N m) the SI unit of torque.
OK, sure, but don't you think they're using kgf (Kilogram-force)?

Overall, I think you're being too technical with your terminology. Not that you're incorrect - you're absolutely right - but I wouldn't expect some Bafang UI engineer to be as clear, especially with English translation going on.

As for using the term "Pressure," I'm guilty as charged.

Agree, an exponential progression of the max mechanical power or torque associated with each PAS level would feel more natural. The teeth on the cogs of a cassette grow roughly exponentially in the same way, and for the same reason.
Nice analogy!
 
OK, sure, but don't you think they're using kgf (Kilogram-force)?

Overall, I think you're being too technical with your terminology. Not that you're incorrect - you're absolutely right - but I wouldn't expect some Bafang UI engineer to be as clear, especially with English translation going on.
OK, maybe translation got in the way. The engineers I know are sticklers for units and don't use kgf = (1 kg) (9.80665 m/s²) = 9.80665 N. But maybe software engineers are different.
 
Note that @ProphetZarquon has posted additional information in the Frey "Smooth" thread that is now incorporated in the edited first post in this thread.
 
Last edited:
How to Setup your Delta Voltage Table, step-by-step.

Follow Steps 1-7.
Then, if you're going to be happy with a linear Pedal Force to Motor Current mapping follow the first set of steps 8-13. Don't be discouraged by the number of steps, I've made each step easy and small. If you want to get fancy with progressive torque curves, then follow the second set of steps 8-14, which include downloading a spreadsheet I've created.

1) Hook up your EggRider as your display, or Bafang programming cable to the motor and Windows computer running the Bafang App.
2A) For EggRider, Go to the Torque Settings tab, then click the "speedometer” looking link at the top right. This will bring up the "Torque Live Data" tab, which looks like this:
TorqueLiveData.jpg

2B) For Bafang Windows App, go to the Torque Settings tab and click the "Continuous Get" button near the bottom.
3) Read the "Torque Voltage" (EggRider) or the "TqVoltate(mv) field and write that number down. Add 1 or 2 to that for use as your "Base Voltage".
4) Sit on the stationary bike and backwards rotate a pedal until it's horizontal in front.
5) With the brakes firmly applied (and perhaps a low PAS level), start to put pressure on that front pedal. The Torque Voltage/TqVoltate field should start to increase. If things feel safe, apply more and more pressure to that pedal until you're standing with all your weight on the pedal. If you don't weigh more than 133 pounds, that's OK. After riding more and thinking about it more, there's not much point in having the torque system go beyond what you're capable of when riding. If you have an EggRider, you can record your phone's screen while you're riding in this mode and then look over the video to see what the maximum voltage value you produce is.
6) Read/remember the maximum value you see. This is your Max Voltage (you don't enter this number into any setting, but you'll need it for future calculations).
7) Get off the bike carefully. If you're using the EggRider, click the "Settings Page" button to go back to the Torque Tab.

Now if you want to do a linear Torque to Motor Current map (I recommend doing the progressive, listed further below), do the following:
8) Do a "Read" to be sure you're looking at the settings currently in the motor.
9) Enter the new Base Voltage at the top.
10) Subtract Base Voltage from Max Voltage. Divide by 12, round fully up (209.1 -> 210) and enter that number into the top 4 Delta Voltage fields.
11) Enter double that number into the bottom 4 Delta Voltage fields.
12) Save/Write to the motor.

That's it!

But, if you want to get fancy and have a progressive/non-linear torque map, then you'll want to download this spreadsheet from my Google Drive:
Screen Shot 2023-03-21 at 4.29.21 PM.png


8) Enter the Base Voltage into cell B1 and Max Voltage into B10 (green are cells you input, blue are your output values).
9) The cells B2 to B9 should then update. If you wanted a linear mapping you could enter those values into your Settings page now, but you didn't need this spreadsheet for that.
10) Decide how aggressive you want the progression to be. This spreadsheet is setup to create a symmetrical "S-curve" where the amount you modify the 4 lowest torque mapping is balanced by an equal modification in the other direction of the high torque mapping. The value in G10 shows the sum of your values, which should always equal Max Voltage-Base Voltage. If G10 is smaller then you'll never get MaxCur(%) in use, and if it's greater then you'll hit MaxCur(%) before you top off the pedal torque sensitivity range.
11) If you weren't able to max out the Voltage in Step 5, above, then you'll need to modify the calculations accordingly. If you don't know how to do this, DM me and I'll help you out.
12) I decided to try 175% on the lowest torques (0kg-5kg), 150% on the next level, 125% on the third level, and a 1:1 (100%) mapping in the middle. Note that putting 175% in F2 caused F9 to drop to 62.25%. Having a longer/smoother take off from no pedaling needs to be compensated for somewhere - I did that by having a shorter/faster ramp at the highest torques. The idea is that humans can modulate how much low torque they're applying pretty easily, but will have a hard time differentiating between a Kg of force at the high 50kg-60kg levels, so might as well just ramp away because the rider is pressing hard and simply wants MORE POWER!
13) Personally, I felt that keeping a linear mapping in the middle of the torque range was best, but you should be able to modify F5 if you disagree. You could also try putting in lower than 100% in the F2-F5 fields, which would have amps ramp up faster in the beginning, but that's probably going to create a more jerky take-off.
13) After entering F2-F5, everything should update. Copy the values in blue, G2-G9 into the appropriate fields in your Delta Voltage table.
14) Hit "Write" and go for a ride. Start at a low PAS level and carefully accelerate on level ground. If all seems good, you can start to raise the PAS level and try other things.

That's it. Oh, except the bottom of the spreadsheet shows the reverse math. In the green "A" column entries you can enter a pedal force being applied and 3 columns over see what force that will map to if you had, as Bafang defaults to, a linear Delta Voltage table. Here's a sample:
Screen Shot 2023-05-07 at 11.18.51 PM.png


For the settings above, pressing down with 20 Kg of force is equivalent to pressing with 27.5 Kg of force if the values were default linear. These Output Kg values are the ones sent to the Spd Table in the rest of the Torque Settings tab, and that may help you decide what you want the Start/Full Kg and Min/Max Current % to be for those entries.
You can enter any value in the green fields to see what the result would be.

If you use this, please let me know - either here or via DM - how it worked out for you. If you find bugs in the calculations, or have suggestions for improvement, also let me know.
 
Last edited:
I'm just getting to this thread. Great work so far!

I think this information could really help m620 owners\builders who see it.

An early note regarding paragraph 4:

~ This represents the voltage output of the controller when no force is being applied to the pedals. Turns out most Ultras output between 730mV and 760mV just sitting there powered on but idle. ~
This represents the voltage output of the controller torque sensor when no force is being applied to the pedals.

Also note that for complete elimination of any jitter causing assist engagement during zero pedal force, I'd recommend using Continuous Get to watch for the highest mV reading at 0 pedal "Kg", then add 1 or 2 mV to that.

This way, any very-occasional jitter or temperature-induced fluctuation, in the spline-shaft load cell's output, still peaks at less than that Base Voltage beyond which we start counting pedal force.

"What we want is to set out Delta Voltages such that the sum of them just reaches the maximum Voltage output by the motor sensor when full pedal pressure is applied." - et cetera
 
Last edited:
Agree, an exponential progression of the max mechanical power or torque associated with each PAS level would feel more natural. The teeth on the cogs of a cassette grow roughly exponentially in the same way, and for the same reason.
I hate having to change PAS mode just for changes in speed (as opposed to a change in the amount of assist I "feel").

The feeling of uniform acceleration from a given pedal force, even as my speed \drag increases, is why I like being able to tweak those SpdXX settings on the torque tab.

I prefer to change PAS level for conserving range, navigating low-speed areas, regulatory compliance with bike routes, private land, etc. Changing PAS level just to regain control over low-speed acceleration, feels sketchy & awkward.

I don't mind needing higher PAS levels for max speeds (seems appropriate), but I don't like the way assist feels jerky at low speeds then abruptly tops out, unless max assist is reduced dramatically at lower speeds.

I never need max assist except at top speeds or holding speed through a climb under load.

I hated the jerky feeling pedal-response the m620 presented during low-to-moderate speed maneuvers, until I greatly reduced the low-speed current maximums.

(And yes, using "Kg" to refer to pedal force, hurts me too. At least the readings are about right when using standard crank lengths!?! Could be worse...)
 
"The maximum pedal pressure the Ultra motor can measure is 60Kg."
I'm splitting hairs again here, but technically the g510 m620 Ultra's motor-controller could be configured for a variety of torque sensors.

The spline-shaft sensor it comes with, has a limit of 60Kg.

(I would love to fit it with a 120Kg sensor, if I could find one compatible with the voltages provided\needed by the m620's controller! Then there's the actual fit...)
 
Sit on the powered bike in a low PAS setting (try 0) and, with the brakes firmly applied, stand on one of the pedals with all your weight and note the highest reading.
And if you weigh less than 60Kg, bounce on that front pedal! Yank up on those handlebars like you're lifting barbell weights!

For smaller riders, applying 60Kg of weight to the front pedal, could be legitimately challenging.

(For those of us who weigh more than 60Kg / 133lbs, maxing out the torque sensor is as simple as standing on just the front pedal...)
 
~ one future topic is choosing current percentage limits not as linear percentages of current values, but as a linear percentage of previous current values (some kind of exponential).
Indeed, current needed to hold a given speed, roughly doubles every ~10 MPH or so, over ~15 MPH.

So, something like 3, 6, 12, 24, 48, 100 %... except buffed quite a bit at the low end to account for all the non-aero-related drag that predominates at low speeds?

Perhaps notably, I find that our m620 produces very little increased power between 300-400 Watts; my range is literally better if I shift to a later gear & go slightly faster at 550W (or slow way down until 250W feels like plenty).

Because the m620 produces more power per Watt at somewhat higher Voltages, I suspect this phenomena of lower efficiency at lower wattages, would evaporate with a 14S battery (~52V)...

Experimentally, I'm still trying to pin down what maximum current %s feel best for each PAS level; aaaand since those affect the MaxCur %s in the SpdXX sections, some LimitCurrent% settings seem more efficient set a bit higher or lower than I might have expected: 15% felt like too much, 7% too little, 10% somehow used more charge without really helping pedal effort, & 12% felt "just right".

Definitely still playing with SpdXX settings versus PAS level percentages. Feels like every mechanical tune-up produces different sweet-spots electrically!
 
I hate having to change PAS mode just for changes in speed (as opposed to a change in the amount of assist I "feel").
Yeah, in an ideal world the motor would simply be a torque multiplier without any settings: the harder we push on the pedals the more assist the motor provides. And everything would be linear/sensitive enough that if we tapered down on the pressure the assist would decrease naturally as well as increase naturally. That way we'd have just one PAS setting where 60Kg of force would yield Max Current/Power and 1Kg of force would yield just a small enough power that we actually wouldn't notice.

I'd love nothing more than to be able to have a PAS setting of 100% for power apply-able, and then to setup the Torque Page such that the motor's response would feel like an extension of what the rider was doing. From the little Bosch/Shimano eBike riding I've done, those motors do better at coming close to this even though they're much less powerful. I have to believe that's due to better internal firmware. And I guess @ProphetZarquon and I might seem to disagree on this, but I do suspect that the other motors do take cadence into account - as well as bicycle speed and pedal torque being applied. But even those motors have different modes since what you want the motor to do also depends on whether you're on road, off road, etc.

So, something like 3, 6, 12, 24, 48, 100 %... except buffed quite a bit at the low end to account for all the non-aero-related drag that predominates at low speeds?
Experimentally, I'm still trying to pin down what maximum current %s feel best for each PAS level; aaaand since those affect the MaxCur %s in the SpdXX sections, some LimitCurrent% settings seem more efficient set a bit higher or lower than I might have expected: 15% felt like too much, 7% too little, 10% somehow used more charge without really helping pedal effort, & 12% felt "just right".
I started this thread to explain how I've set up my PAS levels. I ended up with: 7, 10, 14, 19, 27, 38, 53, 74, 100 - each of which represents a 40% increase in power over the prior PAS level. So far, I'm really liking that. I used to find that PAS levels 7,8,&9 were all pretty much the same while sometimes would hunt around between 2,3&4 trying to find one that was just right. Now I find each level is unique enough from the ones above/below it without there being major gaps. I do use all 9 levels though on my Display.

And I am working on some theory behind how to setup the SPD table. As I posted I do have some new, ground-breaking information on how that works but am waiting on someone to help me confirm my findings on a non-EggRider display before posting. I can say for sure that @ProphetZarquon was right that it's totally NOT based on pedal cadence as most internet Bafang tuners would have you believe. I'm actually surprised this isn't well known, as it wasn't hard to devise a Spd table to uncover that the 6 columns do not represent different pedal cadence ranges.

To bring this back around, without any way to accommodate human pedaling ability that varies with cadence, it's going to remain impossible to make the Ultra be as smooth without PAS level changing as the Bosch/Shimano/Yamaha/Brose motors. My hope is that we can get to a great experience with some rider-assisted PAS level changing.
 
Last edited:
An early note regarding paragraph 4:
Thanks, I've edited the post with your corrections.

Also note that for complete elimination of any jitter causing assist engagement during zero pedal force, I'd recommend using Continuous Get to watch for the highest mV reading at 0 pedal "Kg", then add 1 or 2 mV to that.
I did include that in both the original and my Step-by-step post, which is the one people who just want to set something better up could start with.
 
Last edited:
Because the m620 produces more power per Watt at somewhat higher Voltages, I suspect this phenomena of lower efficiency at lower wattages, would evaporate with a 14S battery (~52V)...
I wonder how much the differences in battery voltage and controller versions affect things. I’m running a 52v 1.1kWh battery on a Luna souped up Ultra. What’s the difference compared to a more standard 48v 725wH battery & controller?
 
Just a quick update - after some test rides today I decided I wanted to be more aggressive with the torque curve, so I upped my percentages to 275%, 158%, 117%, and 100%.

I also noted that the way the spreadsheet calculates, you can't go above about 300% because then it makes the 50-60Kg range negative. If you use the spreadsheet and want to go above 300% for the 0-5Kg range, DM me what you want the 4 percentages to be and I'll see what I can do to make the formulas in the spreadsheet more robust.
 
Another update: After riding more with my wife, I've updated Step #5 in the Step-By-Step post, above. My latest thinking is that there's really no point in pushing the Torque Table mapping beyond what you're capable of actually producing on the pedals. Might as well just capture your max pedal pressure and map things between your motor's min and your actual max accordingly.

Now, even if you can push to the full 60 kg limit, you might decide that you don't ever want to be pedaling that hard. You could accomplish this by using a lower max voltage value in the above equations, but my thinking is that you're better off using lower "Full(Kg)" values in the SPDXX columns, as that way you could vary, based on bicycle speeds, how much pedal pressure you're willing to exert. For instance, I have my SPD100 column's FULL set to only 15Kg, as when I'm already going really fast, I want almost any decent pedal pressure to give me max motor output for the PAS level I'm in. But, at SPD00, I have 50Kg for FULL since I want more controllability when just starting out. And yeah, I'm wimping out at the 60kg level even there.
 
Back