Skip to content

The normal ride mode

stancecoke edited this page Apr 24, 2026 · 22 revisions

Basics

The basic principle of the firmware is the relationship
Motor power = assistance factor * human power

Mechanical power is speed * torque

For the motor, this means:
Motor power = rotor speed * motor torque

For human power, this means:
Human power = cadence * torque at the crank

So we can write:
Rotor speed * motor torque = assistance factor * cadence * torque at the crank

With a middrive motor, the rotor speed is always in a constant ratio to the cadence due to the internal gear
Rotor speed = gear ratio * cadence

Therefore, the cadence cancels out of the equation.

gear ratio * Cadence * Motor torque = Assistance factor * Cadence * Torque at the crank

Solving for torque yields:
Motor torque = Assistance factor * Torque at the crank / Gear ratio

The motor torque depends solely on the motor current and the motor constant KM.
Motor torque = Motor current * KM

It follows that: Motor current = Assistance factor * Torque at the crank / (Gear ratio * KM)

The various constants in the formula can be combined into a single constant:

Motor current = System constant * Assistance factor * Torque at the crank

Maximum Motor Current per assist level

For each support level, a percentage of the maximum motor current defined in the “max Current on Low Charge” field is specified in the “Current limit” column.

The assist factor can now be adjusted in various ways to suit your personal preferences.

Smoothing the torque signal

The torque curve at the crank does not remain constant over one crank revolution, but rather takes the form of two positive sine half-waves. If this torque signal were used directly to control the motor, the result would be very pulsating assistance. That is why the torque signal is smoothed. The “Torque Filter” parameter allows you to set the filtering strength for each assist level. The higher the value, the less pulsating the assist is, but the slower it responds to changes in torque initiated by the rider.

torque filtering

Define the cadence dependence of the motor current

As explained above, the cadence for a middrive motor is derived from the simple equation: Motor current = System constant * Assistance factor * Torque at the crank. Nevertheless, some riders prefer proportionally greater assistance at higher cadences. This can be adjusted using the cadence exponent, field "Expected Range on Full Charge". The smaller the value, the greater the influence of cadence. For high values, there is virtually no influence; the multiplier always remains 1. The allowed range for the exponent is 0 to 255 (8bit)

Cadence exponent

Define the speed dependence of the motor current

In the torque table, a percentage scaling of the motor current per assistance level can be individually set for 5 equally sized speed ranges. The speed ranges are distributed across the set speed limit, regardless of whether the Legal flag is set. If the current speed is higher than the set speed limit, the last value in the column is used. For example, for a speed limit of 25 km/h, the ranges are: 0 to 5 km/h
5 to 10 km/h
10 to 15 km/h
15 to 20 km/h
20 to 25 km/h

If you are wondering why 6 values must be set per assistance level, that is correct, since we need a start and an end value.

Speed Ranges

Clone this wiki locally