I made some research with Gemini IA to know how manufacters like Bosh, Yamaha manage the assistance in function of torque, cadence and assist level.
It seems that the assistance is mainly based on torque and not on cadence.
Furthermore, it seems that inside a given assist leve(e.g. eco, tour), the assistance is not proportional to the torque.
They uses a curve (profile) to change the sensitivity: Assistance grows slowly for low human torque, grows much more in the middel and saturates for high human torque.
For level like eco, even at the maximum human torque, the motor does not deliver the max power.
On the opposite, on level turbo, the motor delivers already his max power when the human torque is much less than the maximum human torque and so it just keep the max power even if the user press more on the pedal.
For TSDZ8, the power assist mode uses a formula like assistance = torque * cadence * some ratio (up to the max power). This is quite different.
For TSDZ8 the mode that is the most similar to Bosch Yamaha is the torque assist mode where the motor power is proportional to the human torque (as measured by the sensor) up the max power (defined in the configurator for motor and battery). So this is quite similar to the principle of Bosh and Yamaha. Still in TSDZ8, up to the max power, the power is just proportional (linear) to the sensor torque (and assist % defined for the selected assist level). For TSD8, I already added a concept of expo in order to change the linear relation but I expect that this concept has not been largely used. Furthermore, when used, expo is applied in the same way for all levels.
Still in TSDZ8 the power is stricly proportional to the human torque as meassured by the torque sensor.
Note : it seems that measurements are linear with weight on pedal up to 50 kg which is normally enough in practice.
In order to offer more flexibility, I could make some changes:
The assistance level is defined in TSDZ8 with a number in range 0...254 (0= no assistance, 254 = max assistance).
Without changing the configurator/860C display, each number could combine 2 different meanings:
- the last digit (0...9) could identify a curve. So there could be up to 10 curves. Each curve convert human torque (in % from the useful range) into a % of power motor.
Each curve could give a different sensitivity (=profile) of the torque sensor over the used range.
All curves have the same first (0%,0%) and last (100%, 100%) points but will differs in between.
E.g. curve 0 = linear curve = like now = constant sensitivity over the whole torque range.
1...9 = curve that grows less than the linear curve for low weights and grows faster in the upper part).The user get relatively less assistance for low weight and relatively more dor high weight.
- the assist level could then be defined by the value discarding the last digit. So there would be only 25 different levels instead of 254.
Value e.g. 32 would say : apply a level similar to actual level 30 (discard last digit) but instead of a linear response apply curve nr 2 (so with just a littel less progessivity for low weight and a little more for high weight).
Value e.g. 59 would say : apply a level similar to actual level 50 but instead of a linear response apply curve nr 9 (so with much much less progessivity for low weight and much much more for high weight).
Then, the motor power would be calculated based on a formula like : 4000W * selected level * output from the selected curve.
Selected level = value without last digit / 240; So 245 -> 240/240 = 1 = 100%; 52 -> 50/240 = 0.20 = 20%
Output of the selected curve would depend on % of the human torque inside the useful range.
Note: the useful range depends itself on the selected level because for a high level, the max power is alredy reached for a human torque less than the maximum human weight. Then the "useful" is reduced.
E.g. with 4000w in the formula, a max power of 1100W (23A X 48V), a max human weight of 50kg:
- if level = 200, then the max power 1100W would already be reached with a weight of 17 kg (1100/4000*250/200*50) ; So useful range is 0...17 kg
- if level = 100, then the max power 1100W would be reached with a weight of 34kg (1100/4000*250/100*50); so usefull useful range is 0...34 kg
- if level = 50, then the max power 1100W would never be reached. At 50 Kg, max power would be 4000 * 50 /250 = 800W; here usefull range is 0...50kg.
If this logic gives good results, it would be possible to apply it also for "power" mode and "eMTB" mode.
When one of those mode would be selected, the logic would be the same as for torque mode but with other assistance level and different profiles (depending on the set up in configurator/860C display.
Comments on this proposal are welcome.
It seems that the assistance is mainly based on torque and not on cadence.
Furthermore, it seems that inside a given assist leve(e.g. eco, tour), the assistance is not proportional to the torque.
They uses a curve (profile) to change the sensitivity: Assistance grows slowly for low human torque, grows much more in the middel and saturates for high human torque.
For level like eco, even at the maximum human torque, the motor does not deliver the max power.
On the opposite, on level turbo, the motor delivers already his max power when the human torque is much less than the maximum human torque and so it just keep the max power even if the user press more on the pedal.
For TSDZ8, the power assist mode uses a formula like assistance = torque * cadence * some ratio (up to the max power). This is quite different.
For TSDZ8 the mode that is the most similar to Bosch Yamaha is the torque assist mode where the motor power is proportional to the human torque (as measured by the sensor) up the max power (defined in the configurator for motor and battery). So this is quite similar to the principle of Bosh and Yamaha. Still in TSDZ8, up to the max power, the power is just proportional (linear) to the sensor torque (and assist % defined for the selected assist level). For TSD8, I already added a concept of expo in order to change the linear relation but I expect that this concept has not been largely used. Furthermore, when used, expo is applied in the same way for all levels.
Still in TSDZ8 the power is stricly proportional to the human torque as meassured by the torque sensor.
Note : it seems that measurements are linear with weight on pedal up to 50 kg which is normally enough in practice.
In order to offer more flexibility, I could make some changes:
The assistance level is defined in TSDZ8 with a number in range 0...254 (0= no assistance, 254 = max assistance).
Without changing the configurator/860C display, each number could combine 2 different meanings:
- the last digit (0...9) could identify a curve. So there could be up to 10 curves. Each curve convert human torque (in % from the useful range) into a % of power motor.
Each curve could give a different sensitivity (=profile) of the torque sensor over the used range.
All curves have the same first (0%,0%) and last (100%, 100%) points but will differs in between.
E.g. curve 0 = linear curve = like now = constant sensitivity over the whole torque range.
1...9 = curve that grows less than the linear curve for low weights and grows faster in the upper part).The user get relatively less assistance for low weight and relatively more dor high weight.
- the assist level could then be defined by the value discarding the last digit. So there would be only 25 different levels instead of 254.
Value e.g. 32 would say : apply a level similar to actual level 30 (discard last digit) but instead of a linear response apply curve nr 2 (so with just a littel less progessivity for low weight and a little more for high weight).
Value e.g. 59 would say : apply a level similar to actual level 50 but instead of a linear response apply curve nr 9 (so with much much less progessivity for low weight and much much more for high weight).
Then, the motor power would be calculated based on a formula like : 4000W * selected level * output from the selected curve.
Selected level = value without last digit / 240; So 245 -> 240/240 = 1 = 100%; 52 -> 50/240 = 0.20 = 20%
Output of the selected curve would depend on % of the human torque inside the useful range.
Note: the useful range depends itself on the selected level because for a high level, the max power is alredy reached for a human torque less than the maximum human weight. Then the "useful" is reduced.
E.g. with 4000w in the formula, a max power of 1100W (23A X 48V), a max human weight of 50kg:
- if level = 200, then the max power 1100W would already be reached with a weight of 17 kg (1100/4000*250/200*50) ; So useful range is 0...17 kg
- if level = 100, then the max power 1100W would be reached with a weight of 34kg (1100/4000*250/100*50); so usefull useful range is 0...34 kg
- if level = 50, then the max power 1100W would never be reached. At 50 Kg, max power would be 4000 * 50 /250 = 800W; here usefull range is 0...50kg.
If this logic gives good results, it would be possible to apply it also for "power" mode and "eMTB" mode.
When one of those mode would be selected, the logic would be the same as for torque mode but with other assistance level and different profiles (depending on the set up in configurator/860C display.
Comments on this proposal are welcome.


