Visualizing and exploring the power-sensing PAS in Specialized mid-drives — an interactive graphical model

Jeremy McCreary

Well-Known Member
Region
USA
City
Carlsbad, CA
For our more math-minded Specialized mid-drive riders, here's an interactive graphical model of your bike's tunable power-sensing pedal assist system -- hereafter, just "PAS".

The model doesn't cover complex PAS responses to transient events like starting out or approaching PAS cut-off speed (e.g., 28 mph for Class 3). But I think it captures basic PAS operation quite well.


This PAS model resides on Desmos, a powerful online graphing calculator. You can view the graph and play with its underlying parameters via sliders at the link above without fear of altering the master copy on Desmos.

Looking forward to hearing what insights my fellow EBR members might glean from playing around with this tool. Comments and corrections welcome!

NB: Sorry, no way to keep this intro brief. I'll use pre-defined letter symbols like "Pr" and "Pm" to save words wherever possible. Hereafter, "power" will mean mechanical power in watts. Specialized's PAS terminolgy has changed in recent years. The terms used here follow the latest Specialized app (v. 1.31.1) and its online documentation.

The model graph
Screenshot_20241108_183429_Chrome.jpg

In the graph snapshot above, real-time rider power (Pr) plots on the horizontal x-axis. Power delivered to the crank in various ways plots on the vertical y-axis.

The ramp-like blue line is the motor power (Pm) delivered to the crank as a function of Pr, the main PAS input. This PAS is "power-sensing" in that it measures Pr with various onboard sensors and doles out Pm accordingly. This graphical model reveals the main parameters and algorithms behind this process.

The purple plot is Pt = Pr + Pm, the total power delivered to the crank as a function of Pr. This is the power delivered to the rear wheel by the drivetrain before losses. The red diagonal line shows Pr's direct contribution to Pt.

The orange vertical line marks the saturation power Prs — the rider power at which Pm "saturates" (maxes out) in a given assist mode (OFF, ECO, SPORT, TURBO, or MicroTune). Much more about saturation below.

NB: Saturation turns out to be key concept in this PAS. Keep an eye on it.

Model parameters
Screenshot_20241108_163406_Chrome.jpg

The mathematical relationship between Pm and Pr depends on 4 PAS parameters with adjustable sliders in the first 4 lines of Desmos "code" below the graph. The first two (Px and B) are motor constants that to my knowledge apply to any Specialized ebike with exactly the same motor -- e.g., the Vado SL 5.0 and Creo 1.

The other two are PAS settings (E and M) chosen as a pair when an assist mode is selected. To my knowledge, E and M work the same way in all Specialized mid-drives with this PAS. But the resulting Pm depends on the Px and B values specific to the motor involved.

You'll be able to explore all of this with the model's sliders.

Example ebikes
20240920_170209.jpg

My Vado SL 5.0. This PAS model and its slider limits were designed to cover at least this bike and 4 other Specialized mid-drives:
  • The Vado SL 5.0 ("SL" for short) and Creo 1 with the Mahle SL 1.1 motor, for which Px = 240W and B = 1.8.
  • The Creo 2 with the newer Mahle SL 1.2 motor, for which Px = 320W and B = 2.3.
  • The full-powered, non-SL Vado 5.0 ("full Vado" for short) with the Brose 2.2 motor, for which Px = 560W and B = 4.1.
Parameter sliders
There are 14 lines of Desmos "code" below the graph -- some with sliders like those above, and some with the PAS model's underlying equations.

Screenshot_20241108_171655_Chrome.jpg

The Pri slider just puts a gray vertical line at a Pr value of interest -- say, 200W, or your FTP. No effect on the Pr, Pm, or Pt plots.

NB: Play with the sliders all you like, but changing the equations will break your local copy of the graph.

Motor constants Px and B
Constant Px is the motor's built-in peak power — e.g., 240W for the SL and 320W for the Creo 2. Px is a hard upper limit on Pm.

Constant B goes by various names, but I call it "boost" for short. We'll see how boost affects Pm in a moment.

Assist mode settings E and M
These settings are percentages without the "%" signs. Both range from 0 to 100. More mode tuning info here:

E (for "ease" in current Specialized-speak) requests boost power Pb = (E / 100) B Pr from the motor. Whether the motor fully grants the request depends on its Px and how M is set.

M (for "motor power") caps Pm at the saturation (motor) power Ps = (M / 100) Px . Once Pm rises to Ps — i.e., once you saturate your bike at Pb = Ps — pedaling harder won't get you any more assist.

Screenshot_20241108_184153_Chrome.jpg

From the online app documentation, with E on the horizontal axis and M on the vertical. Three different assist modes are shown.

Specialized assist mode tunings like those above are often given in E/M format. For example, the factory Universal defaults on my SL were OFF = 0/0, ECO = 35/35, SPORT = 55/55, and TURBO = 100/100. Modes ECO, SPORT, and TURBO are tunable in the Specialized app. OFF is not.

MicroTune mode is always 50/50 on entry but can be adjusted from the SL handlebar remote thereafter -- always with E = M. Your bike may differ.

Screenshot_20241109_205416_Chrome.jpg

Line 8 above calculates saturation power Ps for the M setting in effect. Line 9 calculates boost power Pb as a function of Pr. Line 10 then calculates motor power Pm, capping it at Ps.

20241109_205806.jpg

Lines 11 and 12 plot Pm and Pt, resp.

Saturation rider power Prs
Screenshot_20241108_171204_Chrome.jpg

The rider power at which Pm saturates is given by

Prs = (M / E) (Px / B) = (M / E) Prs1,

where Prs1 = Px / B is another useful motor constant. The orange vertical on the graph automatically marks Prs.

For the SL and Creo 1, Prs1 = 240W / 1.8 = 133W. For the Creo 2 and full Vado, it's 139W and 137W.

Interesting pattern: All of these bikes saturate at about the same Pr in any M = E assist mode!

Exploring the effects of E and M on Pm
The blue plot of Pm as a function of Pr always has the same basic shape -- a "ramp" of constant slope leading up from the origin to a horizontal "plateau" at Pm = Ps, with the break in slope always occurring at Pr = Prs.

Playing around with the E slider at constant M shows that increasing E with a given motor (fixed Px and B) steepens the ramp without affecting plateau height. This has the effect of extending the plateau to the left toward easier pedaling, thus reducing Prs without changing Ps. Meaning that it takes less effort to reach motor saturation at higher E, but the max available assist in that mode stays the same.

Conversely, playing with the M slider at constant E shows that increasing M at fixed Px and B steepens the ramp and raises the plateau at the same time while moving Prs to the right toward harder pedaling. Meaning that it takes more effort to reach motor saturation at higher M, but the max available assist in that mode also goes up.

Note that it would take a Tour de France-level sprinter to saturate any of the sample bikes in a 10/90 assist mode.

Exploring the effects of Px and B on Pm
I'll leave this as an exercise for the interested reader. Suffice it to say here that in practice, these motor constants have more to do with how much assist you get than with when you get it.

Special case: M = E
It's common to set M = E to conserve battery charge at high effort. All of my SL's default (Universal) modes use M = E, and so does MicroTune.

Interestingly, Prs becomes fixed at the motor-specific value Prs1 = Px / B whenever M = E. Practically speaking, since all the example bikes have similar Prs1 values, you'll saturate all of them at similar efforts regardless of the actual E setting involved! I find that pretty remarkable but doubt it's by chance.

You can confirm this by setting the Px and B sliders to your own motor's values and setting the Pri slider to put the gray vertical at the motor's Prs1. Then fiddle with the E and M sliders and watch the orange vertical marking Prs. No matter what E you choose, the orange vertical will always pass through the gray one just as you pass through M = E.

20240918_085144.jpg

So what good is this? Well, I like to monitor Pr on my SL's Mastermind TCU as I pedal along in ECO to save battery. When I find myself wanting more assist in any E = M mode (the usual case), I now know that pedaling harder isn't going to get it if my Pr is already above 133W. I'll have to bump to an assist mode with higher M instead.

Special case: E = 100 / B
@Stefan Mikes really likes his SL's 55/55 mode. And that's how my SL's default (Universal) SPORT mode is set. Maybe not a coincidence.

When E = 100 / B = 56 on the SL, you get Pm = Pr, and Pt = 2 Pr all the way to saturation. Maybe just a fun fact, but man and machine in perfect harmony! Have to admit, my 55/55 has a nice feel.

Same effect on the Creo 2 at E = 100 / B = 43, and on the full Vado at E = 100 / B = 24. When you then set M = E on all 3 bikes, their graphs become identical.

Why not M < E?
I have yet to see someone use or recommend an assist mode with M < E. How come? Frankly, after over 400 mi of experience with this PAS and 2 weeks of playing around with this tool, I'm still not sure.

Mathematically, Prs < Prs1 when M < E. If nothing else, this means earlier saturation than in the M = E case. But my gut says it's more than that.

Thoughts?

Acknowledgments
First, any remaining errors or misunderstandings here are mine alone. I've relied on official documentation from Specialized whenever possible, but that's left many gaps. Special thanks to @Stefan Mikes , whose vast technical knowledge and understanding of all things Specialized has filled in many of those gaps. EBR members too numerous to mention have also contributed through their posts over the years.
 
Last edited:
As for an engineer, reading your detailed analysis and playing with the model had been a real pleasure, Jeremy! Thank you so much for this food for thought!

I want to stress out the E=1/B setting (which is close to 0.55) was not coincidental. I just wanted to have the 1x Boost Factor, or Assist, or 'Ease' :) While M < E makes -- in my humble opinion -- a little sense as the motor would be maxed out (or, saturated) very soon, the M = 100 makes a lot of sense. You discussed the 'Carrot Effect' in another thread. With an E/100, the rider is rewarded for putting more effort (Pr) into the cranks. Of course, it is at the cost of the increased battery use! (For my legs, 30/100% makes the same use of the battery as 55/55% but is more rewarding the rider's effort).

There is something you have not discussed yet, and what can only be determined by an experiment: The battery consumption factor BCE expressed in W/km or W/mi. Your Gen 2 SL will not work with the BLEvo app but my Gen 1 will. If I go for a long ride, I intend to connect BLEvo to my SL, to eventually produce an Excel table with these columns (as the function of the ride time and/or distance):
  • Rider Power Pr
  • Motor Power Pm
BLEvo records the assistance mode as well. If I set my E and M to ECO: 55/55, SPORT: 75/75, and TURBO: 100/100, then I can make a post-ride analysis confirming the Specialized assistance actually works as declared. I will also be able to analyse the battery consumption (hopefully).

The unknown here is the motor efficiency, which certainly depends on cadence and possibly other parameters. BLEvo can only return the electrical motor power. By many analyses done in the past, I can estimate the motor efficiency to 0.79. How was that determined? Both @mschwett and I were at some time measuring the battery power consumption in the Turbo mode. When we were both sure the motor was maxed out, the SL 1.1 motor used 303 W from the battery. As we trust the declared max motor power figure of 240 W, the efficiency would be 240/303 = 0.792.

I cannot promise I would be as smart as to be able to analyse the Excel file properly. I might pass that file to you Jeremy, as your analytical mind would certainly be better for analysing the data!

Cheers!
 
Last edited:
All this from a resistance based strain gauge?
Or is speed and cadence being fed in as well?


How long before...
2028 Specialised for sale
ABS warning light on, battery in limp mode, geofenced to legal trails, key fob lost, saddle height locked..iphone only app.

50 dollars.
 
2028 Specialised for sale
You mismatched the brands, Chris. You certainly meant Bosch E-Bike :) A brand in which you have to pay for tuning your motor, which has ABS (in the EU only), and you pay a subscription for several more services :) And which certainly has no ANT+ capability :D

Any Specialized Turbo e-bike since 2019 has the same premium electronics and data communications free of charge :) True, Specialized has killed BLEvo but provided the Mastermind instead :)

The issue with you is you'll never ride a Specialized*, so you cannot appreciate it. Jeremy has crossed the line though :)
-----------
*) Were I you, I would be saving up for a Levo :)
 
Last edited:
All this from a resistance based strain gauge?
Or is speed and cadence being fed in as well?
I'd also like to know the nuts and bolts behind Specialized's measurement of mechanical rider power at the crank (Pr).

Several members have commented that their Pr numbers aren't the most accurate. But they somehow measure Pr accurately enough (1) to base a fine PAS on it, and (2) to satisfy my casual curiosity about how hard I'm pedaling.

The governing relationship is

Pr = k C Qr,

where C = cadence in RPM, Qr = a suitably time-averaged rider torque in N m, and k is a conversion constant to make Pr come out in watts. You'll have to measure two of the quantities Pr, C, and Qr to calculate the third.

Saw a Specialized document somewhere recently suggesting that they measure Pr and C directly. Certainly technically possible these days (just add money!) — especially in the space available inside a mid-drive motor casing. But I'm not confident about this. Maybe @Stefan Mikes will know.

20240913_172941.jpg

All I know is that I'm delighted to have an ebike that allows me to see my assist mode, C, and Pr all at once in real time without investing $$$ in a fancy third-party power meter and bike computer. Fascinating, Captain!

I'm sure their PAS uses wheel speed to finesse situations like starting out or approaching the class ground speed cut-off on assist. Beyond that, who knows?
 
Last edited:
As for an engineer, reading your detailed analysis and playing with the model had been a real pleasure, Jeremy! Thank you so much for this food for thought!

I want to stress out the E=1/B setting (which is close to 0.55) was not coincidental. I just wanted to have the 1x Boost Factor, or Assist, or 'Ease' :) While M < E makes -- in my humble opinion -- a little sense as the motor would be maxed out (or, saturated) very soon, the M = 100 makes a lot of sense. You discussed the 'Carrot Effect' in another thread. With an E/100, the rider is rewarded for putting more effort (Pr) into the cranks. Of course, it is at the cost of the increased battery use! (For my legs, 30/100% makes the same use of the battery as 55/55% but is more rewarding the rider's effort).

There is something you have not discussed yet, and what can only be determined by an experiment: The battery consumption factor BCE expressed in W/km or W/mi. Your Gen 2 SL will not work with the BLEvo app but my Gen 1 will. If I go for a long ride, I intend to connect BLEvo to my SL, to eventually produce an Excel table with these columns (as the function of the ride time and/or distance):
  • Rider Power Pr
  • Motor Power Pm
BLEvo records the assistance mode as well. If I set my E and M to ECO: 55/55, SPORT: 75/75, and TURBO: 100/100, then I can make a post-ride analysis confirming the Specialized assistance actually works as declared. I will also be able to analyse the battery consumption (hopefully).

The unknown here is the motor efficiency, which certainly depends on cadence and possibly other parameters. BLEvo can only return the electrical motor power. By many analyses done in the past, I can estimate the motor efficiency to 0.79. How was that determined? Both @mschwett and I were at some time measuring the battery power consumption in the Turbo mode. When we were both sure the motor was maxed out, the SL 1.1 motor used 303 W from the battery. As we trust the declared max motor power figure of 240 W, the efficiency would be 240/303 = 0.792.

I cannot promise I would be as smart as to be able to analyse the Excel file properly. I might pass that file to you Jeremy, as your analytical mind would certainly be better for analysing the data!

Cheers!
Thanks for the kind words! The things I've learned from you had a lot to do with that model.

Happy to help with the Excel file to come out of your experiment and eager to see the results!
 
Saw a Specialized document somewhere recently suggesting that they measure Pr and C directly.
Jeremy your work above is an extraordinary analysis of the Specialized system! Great work. :)

I'm not even going to pretend my skills here match yours. Anyone who does this in their spare time is miles ahead of those who crunch numbers out of necessity! (Feel free to correct me at any time!😊)

But to say I believe this to be true. Having been riding a purely torque-based bike for the best part of 3 years I could immediately tell C is taken into consideration - and that was just after a brief test ride of a Vado SL. If this isn't correct I'll be astonished. This is why the power delivery is much more refined than you'll find on - for example - my Bafang-based bike, where you can still get the "ghost-pedalling" effect. (Pm > Pr)

It has gone midnight here, I'm almost ready for bed :D I'll come back later and play with the graph you've provided.
 
I'd also like to know the nuts and bolts behind Specialized's measurement of mechanical rider power at the crank (Pr).

Several members have commented that their Pr numbers aren't the most accurate. But they somehow measure Pr accurately enough (1) to base a fine PAS on it, and (2) to satisfy my casual curiosity about how hard I'm pedaling.

The governing relationship is

Pr = k C Qr,

where C = cadence in RPM, Qr = a suitably time-averaged rider torque in N m, and k is a conversion constant to make Pr come out in watts. You'll have to measure two of the quantities Pr, C, and Qr to calculate the third.

Saw a Specialized document somewhere recently suggesting that they measure Pr and C directly. Certainly technically possible these days (just add money!) — especially in the space available inside a mid-drive motor casing. But I'm not confident about this. Maybe @Stefan Mikes will know.

the mtb guys have pretty thoroughly dissected these mahle motors. the torque sensor is on the drive side of the crank shaft, and my guess is that they have to do some electronic tomfoolery to account for motor power vs rider power when the motor is on, since that same shaft drives the chainring when the motor is on. this might explain why some find the power measurement pretty consistent (I almost always examined it with motor off and it was pretty consistent) but in other circumstances it seems way off.

I believe its the part I outlined in yellow, a circuit board attached to something attached to the crank. Mahle also makes a torque and cadence sensing bottom bracket which does so without attaching to the spindle, but this looks quite different.
 

Attachments

  • IMG_0738.jpeg
    IMG_0738.jpeg
    203.3 KB · Views: 45
  • IMG_0737.jpeg
    IMG_0737.jpeg
    226.7 KB · Views: 45
  • IMG_0736.jpeg
    IMG_0736.jpeg
    235.3 KB · Views: 43
the mtb guys have pretty thoroughly dissected these mahle motors. the torque sensor is on the drive side of the crank shaft, and my guess is that they have to do some electronic tomfoolery to account for motor power vs rider power when the motor is on, since that same shaft drives the chainring when the motor is on. this might explain why some find the power measurement pretty consistent (I almost always examined it with motor off and it was pretty consistent) but in other circumstances it seems way off.

I believe its the part I outlined in yellow, a circuit board attached to something attached to the crank. Mahle also makes a torque and cadence sensing bottom bracket which does so without attaching to the spindle, but this looks quite different.
Excellent! Measuring rider cadence and torque directly at the crank (with the aid of said electronic tomfoolery) makes sense to me. With the right time-averaging, you could easily calculate rider power from there.

One of my favorite things about EBR: We have many members with deep knowledge, understanding, and above all, experience in all things cycling — you included. And when this collective expertise descends on a question, stuff gets figured out.
 
Having been riding a purely torque-based bike for the best part of 3 years I could immediately tell C is taken into consideration - and that was just after a brief test ride of a Vado SL. If this isn't correct I'll be astonished. This is why the power delivery is much more refined than you'll find on - for example - my Bafang-based bike, where you can still get the "ghost-pedalling" effect. (Pm > Pr)
Very kind, and looking forward to your impressions.

`The governing relationship is

Pr = k C Qr,

where C = cadence in RPM, Qr = a suitably time-averaged rider torque in N m, and k is a conversion constant to make Pr come out in watts.
Specialized is quite clear that rider power Pr is the main determinant of motor power in their mid-drive PAS -- at least outside special situations like starting out. So by the Pr formula above, cadence would have to be involved.

Are you thinking that cadence might have a another, more direct role outside the special cases?

Agree about the SL's refined power delivery. My torque-sensing hub-drive detects cassette rotation for safety reasons but has no way to measure true cadence -- and therefore knows nothing about my Pr. Its PAS delivers a pretty natural-feeling assist without that data, but the SL's power-sensing PAS is significantly more refined.

Addendum: Wait, cadence also enters the picture through motor efficiency. Specialized recommends above 70 rpm and ideally 80-90 rpm to keep the SL's motor in its happy place.

I can definitely feel the motor lose power below 70 rpm, and others have noted the same. (Not a big problem for me in practice, as I also start losing knee consent about then. And keeping the knees happy is always top priority.)

One way to view this efficiency drop in the context of my PAS model is to think of it as a low-cadence reduction in Px, the motor's peak mechanical power output.

To play with this in the model, I just lowered the Px slider's lower limit to zero.
 
Last edited:
Jeremy, I will wait with the BLEvo recording to the week we are promised a spectacular warming up (if that happens at all!) Today, I'm making an attempt to participate in a MTB-like group ride; as it is very cold, I want to keep my smartphone charged at all times. Unfortunately, BLEvo uses a lot of smartphone battery! Moreover, BLEvo has some glitches, and it might inadvertently change some assistance settings unless it is fully under control! :)
 
All this from a resistance based strain gauge?
Or is speed and cadence being fed in as well?


How long before...
2028 Specialised for sale
ABS warning light on, battery in limp mode, geofenced to legal trails, key fob lost, saddle height locked..iphone only app.

50 dollars.
OK. $40. Going once, going twice ... next up ...
A Cybertruck ...
 
Very kind, and looking forward to your impressions.


Specialized is quite clear that rider power Pr is the main determinant of motor power in their mid-drive PAS -- at least outside special situations like starting out. So by the Pr formula above, cadence would have to be involved.

Are you thinking that cadence might have a another, more direct role outside the special cases?

Agree about the SL's refined power delivery. My torque-sensing hub-drive detects cassette rotation for safety reasons but has no way to measure true cadence -- and therefore knows nothing about my Pr. Its PAS delivers a pretty natural-feeling assist without that data, but the SL's power-sensing PAS is significantly more refined.

I completely agree with you! :) Pr is the main determinant, with cadence influencing power delivery across the entire range by modulation of Pr, rather than just in the "special cases" like starting or approaching cutoff.
 
I completely agree with you! :) Pr is the main determinant, with cadence influencing power delivery across the entire range by modulation of Pr, rather than just in the "special cases" like starting or approaching cutoff.

the presence of the additional “ramp” parameter on the SL MTBs leads me to believe that they also use cadence as an additional term to control the rate of change in power. of course rider power itself takes cadence into account but it’s possible to obtain pretty high power standing on the pedals from zero, and i do think the bike takes both speed and cadence into account again in determining the ramp from no assist to the target assist as illustrated by jeremy - especially in the higher power modes.

this was hard to see with older versions of the firmware and software which had a one second refresh rate, but it’s much faster now.
 
Here's a 3D version of the interactive graph using all the same symbols and equations as the 2D version in the original post.


The 2D version plotted rider power Pr on the horizontal x-axis and total power at the crank Pt on the vertical y-axis. In the 3D version, the x-axis stays the same, the ease setting E plots on the y-axis, and Pt plots on a z-axis perpendicular to the other 2 axes.

The sliders for Px, B, M, and Pri are the same. But now there's a new slider letting the user mark Ei (a particular E value of interest) with a blue plane perpendicular to the y-axis.

The purple 3D Pt surface now rises with increasing Pr, E, or both. You can turn the 3D plot in any desired orientation to get a better view of the Pt surface and its intersections with the gray plane marking Pri, the blue plane marking Ei, and the orange plane marking the saturation rider power Prs associated with Ei.
 
Last edited:
Back