Thursday, March 07, 2013

More ZO Zen

A follow up to my post the other day about the setting of zero-offset / torque zero on power meters, and how we need to be sceptical about how auto-zero functions operate (if your power meter uses one).

I received feedback to suggest that auto-zero on SRM could not be as bad as I am suggesting, and that it might indeed be more accurate to leave the auto-zero on.

Well it hasn't been my personal experience that the auto-ZO is as reliable as theory might suggest, so I thought I'd do a test when I got the chance. More backyard science.

So today happened to be a lovely day, and I decided to go for a ride. Not a long one mind you because right now I'm about as fit as Harry the Hairy Nosed Wombat, but a long enough ride outdoors under fairly typical riding conditions for me.

For those that know Sydney - the ride went from Annandale, through Stanmore, past Sydney University, Redfern and onto Centennial Park where I did a 20-min "test" and rode back home again. I've done that ride about a bazillion times.

And before leaving I set my Powercontrol VI to use SRM's auto-zero function, and had my phone camera along to take a few snaps, to see what I noticed along the way. Here's the Powercontrol screen showing zero-offset before starting my ride:

The bottom line is the zero-offset value stored by the Powercontrol, and is the value used when calculating (and storing) power values. The middle, larger number, is the "live" zero-offset reading, akin to the offset number shown in the video in my previous post. i.e. if you apply some force to the cranks, that's the number that will fluctuate along with the force being applied. The "Auto" along the top just tells you that the auto-zero function is enabled.

The temperature inside and outside my home was not all that different, and my meter  had about 10-minutes outside before this initial check. This is a different SRM to the one in the video (different bike), although it's the same model of SRM.

So, my starting zero-offset was 409Hz.

After about 15-minutes I'm at some traffic lights near Redfern Oval, so I take the chance to pull over to the side and see what the zero-offset has done.

We can see that at some stage along the way in that initial 15-minutes, auto-zero has reset the zero-offset value to 417Hz, while the actual zero-offset is 407Hz, 2Hz less than when I left home 15-minutes earlier.

Just so that's clear, that incorrect zero-offset value is now being used to calculate all my power numbers. I have no idea when or how many times during that initial 15-minutes of riding the zero-offset was changed, nor what the size of those changes might have been, other than when I stopped to make this check.

OK, so I continue on to the Park and do a 20-minute test effort. Then after that I leave the Park to head back home, stopping on the bikeway alongside Moore Park to do another check. This is what I see:

Auto-zero has set zero-offset to 419Hz, when the actual zero-offset is 409Hz, same as when I left home about 50-minutes earlier.

Continue on home, and this is the final check I made after about 75 minutes of riding:

Auto-zero has set zero-offset to 403Hz, when the actual zero-offset is 407Hz.

So, to summarise in table format:

So, I have four actual zero-offset readings in a 1:15 ride that vary by only 2Hz (and this is pretty typical for my SRMs, i.e. not much drift in zero readings), yet the auto-zero function has reset the zero-offset value with a range spanning 16Hz. And that's just what I know it's done, let alone what I don't know it's done. As Rumsfeld would say, it's a known unknown.

Perhaps now you can see why I don't use auto-zero on my SRM Powercontrol.

The possible impact to my average power on this ride of a 16Hz differential in zero-offset is 3.5% and for my modest 20-minute test effort today, that's 8 watts. I reckon 8 watts is worth knowing about no matter how fast you are. If it were true, that's nearly one second per km in a time trial. But it ain't.

Now I have no idea whether the auto-zero performed better or worse than that on average because we just don't know. We can never know since no power meter keeps a log of zero-offset changes.

As I said in my previous post, such anomalous changes in zero-offset would make some analysis not worth doing (e.g. aero field testing when you are fine tuning equipment and position choices). I don't know about you, but I think a possible 3.5% variance is pretty significant. It's not something you can correct post-hoc either, since there is no record of what and when changes to zero-offset were made (power values are calculated based on the zero-offset value used at the time of recording).

At least with the Powercontrol, you can easily turn off the auto-zero function (just press the "Pro" button on the zero-offset screen), and checking the zero-offset is trivial press of the Mode & Set buttons at same time.

That's far better than having to navigate through various menus to perform one of the most important checks a power meter user needs to make every time they ride, let alone not being able to disable the auto-zero.

Of course YMMV


Buckles said...

This is what sucks about the power2max (and I own one!)

Harry said...

Thanks for the continued discussion and testing.

I did a very quick and dirty garage experiment with my SRM & PC7. I rode my CT and attempted to force the PC7 to obtain a new Zero Offset automatically. It was nearly impossible. I'm guessing because I can't speed up fast enough and stop pedaling (Zero Cadence) to keep the rear wheel spinning long enough for an Auto Zero to occur or maybe the value it's seeing is outside the limit to obtain a new value. Just know way to know for sure.

So I do my 1.5hr ride and at the end I look at both numbers. My stored value of zero offset had not changed, which is not surprising because I don't normally do any coasting on the CT, even with auto zero offset set to on but my "Current" zero offset had moved 4-5 hz.

Just as you have no way of knowing when or how often Auto Zero changed your stored value I have no way of knowing when or how often my true or current zero offset changed values.

So basically I'm saying I had errors even though my Stored Zero Offset never changed. Should clarify....Never changed that I knew about. Obviously we both agree it would be nice to have a record of when it does change but I'm not completely convinced of its value. Say we know when it changes and what it changes to. What does that tell us? Wouldn't we need to know what the "True" ZO value was? Obviously no way to know that without stopping during the ride and unclipping and checking. This value is certainly something that could never be stored automatically by any head unit unless they add a sensor to both pedal clips. :-)

In my garage experiment it's possible the difference was due to temperature fluctuations within my garage.

What is the relationship between temperature and ZO?

Your data suggest, based upon the algorithm you provided for how Auto Zero Offset is activated, that during the first 15 minutes of your ride that you coasted several times. Did you in fact coast for over 5 seconds a couple of times during that first 15 minutes?

Probably should have been asked a long time ago but are you running the latest firmware on the head unit?

You have inspired me to do some field testing of my own. It will be a few days but I intend to start looking at both values more often.

From the PCVI Short manual:

1. The ”Auto” zero offset works only while riding – when the speed is not zero. Please take
care that the speed sensor is paired!
2. Cadence has to be zero for at least 5 seconds, for example on a downhill.
3. The measured zero offset fluctuates max +/- 4 Hz
If the points above are all met, the average of the 5 second-zero offset is stored as the new
zero offset and will be the base of the power calculation. It will remain the zero offset up until
the moment the next automatically calculated zero offset is stored.
Setting the zero offset never changes the power values that have already been measured; it
only affects the power readings from when you set it onwards. You can’t see on the
PowerControl when a new zero offset is stored and you also can’t see it in the file after
downloading in the SRM Win software.
Even if the “Auto” zero offset is activated we recommend setting the zero offset manually
before every ride to have correct data until the first “Auto” zero offset.

Language can be difficult to understand sometimes. What do you think #3 above actually says?

Does it mean that the new potential value of ZO has to be within +-4hz of the old value or does it mean that the new value being considered can't vary more than +-4hz during the 5 second period of time it is looking at the value?

Huge difference between the two interpretations. I guess we might be able to do a test to determine which it is. I'm thinking we would need to fool the speed sensor into thinking that the speed was greater than 0 while maintaining a very stable torque on the crank with zero cadence.

Harry said...

How and why are we seeing fluctuations in the Zero Offset number (Actual not stored) when there isn't any torque on the spider?

I once had something wrong with my rear wheel that was causing the freewheel to not work properly. Is it possible that the freewheel mechanism is creating tension on the chain and causing a small amount of torque in the spider?

Guess I could remove the chain and watch the ZO as I stand on the cranks in different positions.

Nate said...

Depressing stuff. I've actually seen conflicting reports as to whether Garmins always enable auto-zero for SRMs or never enable it (on account of not even implementing PowerControl's auto-zero function). Maybe wishful thinking, but I do hope it's the latter.

Nate said...

...and I say "depressing stuff" because if these are typical results of leaving auto-zero on, then power data for a typical outdoor ride with auto-zero is IMO almost complete garbage. Much worse than the more "known unknown" drift error that led me to recently "upgrade" from Quarq to SRM. At least with Quarq drift I can monitor and manage the problem by obsessively setting the ZO multiple times per ride, and it's impossible to engage Quarq's auto-zero unintentionally.

Harry said...


I know Alex believes that the Auto Zero Offset can create data errors.

Myself, I'm not convinced. SRM specifically states to use Auto Zero to obtain better data.

I've never seen what Alex has but I've not been actively looking for it either.

What I can say is that my power data has never shown me anything that would make me think I'm having a problem using Auto Zero Offset.


SRM FAQ had this. Might be worth checking;

Checking to make sure that you have a stable zero offset will also help you get the most accurate data. To do this make sure that your magnet is positioned as listed above, then spin your cranks backwards to wake up the PowerMeter. Place your right crank arm at twelve o'clock, go into your zero offset mode on the PowerControl. Slowly spin the cranks backwards to nine then six then three back to twelve. Your offset should be stable + or - 10 throughout the entire revolution. If you see drops in this process, reposition your magnet and repeat until it is stable.

Harry said...

Did a quick test to see if I could tell exactly what the +-4hz requirment for an Auto ZO to occur was.

Apparently it is simply the current number not varying more than +-4hz during the 5 seconds it is looking at the number. Not +-4hz from the currently stored value.

What I did was perform a manual ZO then spin the crank really fast to get the wheel spinning fast so that it would not stop spinning during my test. Then I grabbed the cassette with my hand and held it still while I applied pressure to the crank. This cause the reading to go up because I was pushing in the forward direction.

Took several tries but I was able to get it to auto zero with a number that was no where close to correct.

Could this happen in a normal situation? I don't know. Alex says it's happened to him. 4hz is not very much and it might be very difficult or impossible to reproduce this error in the field while riding unless there is something wrong with your bike that would put torque on the spider while coasting.

So I removed my chain and looked at the ZO numbers. Without the chain basically every position I put the crank in (Right Arm at 12,3,6,9 O'clock) while clipped in resulted in a number very close to the unclipped number. Maybe someone else can do this test to verify.

So that basically told me that my drivetrain was putting some torque on my spider when I'm coasting because I got some numbers with the chain on that were higher than without the chain. Nothing drastic but it wasn't as close as with the chain off.

So I guess it's possible that problems in the drivetrain could cause some really high ZO numbers.

None of this still answers our question.....Is Auto ZO a good thing or a bad thing. I'm not sure we can get enough information to say.

Nate said...

The test described in the blog post indicates the auto-zero was likely an unalloyed "bad thing" for the conditions described. The ZO set by auto-zero was simply wrong, with an alarming magnitude of error, verified by unclipping and actually checking the true ZO with no torque on the cranks.

"unless there is something wrong with your bike that would put torque on the spider while coasting" - There doesn't have to be anything wrong with your drivetrain. The freehub will exert back-force on the spider when coasting - something Quarq at least tries to correct for with its back-pedaling ZO procedure, even if it doesn't do an especially good job IME.

Your test does suggest that perhaps drivetrain back-force is the sole significant source of error in the auto-zero. That is to say, forces on the pedals that don't actually create net torque on the spider (despite presumably affecting the raw readings from individual strain gauges) are not responsible for much error in the ZO. That does make some sense, since there's only a single ZO value and in theory it just concerns net torque. This would jive with Alex's results (10 Hz error in the same direction each time) except for that last 403 Hz ZO value - now what on earth happened there?

Even if back-force from the drivetrain were the only source of error, note this force will vary with speed and gear ratio, so you'll still get inconsistent results. And 10 Hz is not a small effect.

Alex Simmons said...

Lots of questions.

As to the ride, I live in a large city and the ride to the park I often train in, has plenty of traffic lights and variable terrain, so yes you are coasting at times I assume for maybe 5 seconds or more on the "commute" part of the ride. It would be during these times that auto-zero has invoked.

As to the auto zero algorithm, it's just looking for a torque readings that don't fluctuate by more than 4Hz for a period. How far or close that reading is to the current ZO setting isn't a consideration.

My ZO checks are all done unclipped, with pedals rotated backwards until they are in the horizontal position.

Even so, my ZO values are very stable no matter the orientation of my cranks.

I don't think you can really test this properly on a trainer. It needs to be regular outdoor riding involving coasting and riding the bike in a normal manner that can potentially trigger an auto ZO.

My PCVI firmware is up to date.

My power meter magnet is the BB guide magnet as supplied by SRM and fitted as per manual.

@Abolish_ said...

Not having an SRM this just seems odd, you'd think it had been real world tested before they recommended it. My quarq would likely fluctuate 2-8Hz on a given day depending on temp, but 2 is fairly impressive.

Given what other posters have said about when it is initiated, I dont get the crazy differences. Like Harry said, the #3 makes it seem like it wouldnt even zero if it was more than +/-4hz, yet your results clearly show otherwise.

It would be nice if we didnt have to be so concerned with this, its an expensive product that should be less user intensive to get what it is purported to give us.

A happier medium would be to maybe just record the ZO as part of the data stream so it could be analyzed, some algorithm or temperature fx applied or whatever. Annoying issue.