Mathjax

Sunday, January 13, 2019

Surprise! I trued a bicycle wheel

I finished truing a wheel!   My accomplishment should not rate much a mention in a blog devoted mostly to talking about my computer algorithm to true bicycle wheels.  However, it has been awhile since I worked on my own wheels.  I worked quite a while helping a company who build truing machines in a place known for both tulips and bicycles.  They gave me some high accuracy wheel mechanical data that helped me improve my model considerably.  I gave them some insight into how best to optimize their truing algorithms.  The truing algorithm like most control problems requires a balance between rapid convergence (few truing iterations) and robustness to errors in either measurements or modeling.  Their original algorithm was maxed out in the direction of fast convergence.  It didn't alway converge as a result. I showed them how to make their algorithm have a a balance between robustness and convergence.

I also helped an aspiring small wheel company to implement my algorithm on a truing machine they were designing and building.  Neither activity led to anything long term for me, but it did consume a lot my time budgeted for hobbies and general fun.

Then, then! three little grandchildren moved into my orbit.  What a delightful distraction from any other activity they have been.  I basically stopped riding, doing math, truing wheels, or anything for about two years after the grandson was born.

However, my bicycle in Atlanta has a rear wheel that has been out of true for quite a long time.  The wheel in question is a Zipp 303.  It is the most expensive wheel I own.  I am not sure how it got so out of true.   Whatever the cause, the problem was easily diagnosed.  One of the spokes is bent sharply at a distinct point.  At the bend, the spoke is necked down a bit, and it is only bent at that one point.  Above and below the bend, the spoke is straight.  I remember that I hit a pothole pretty much straight on about the time I stopped riding.  I think that the rim deformed (in contact with said pothole) and then snapped back very hard with the stress concentrating at the weakest spot along the spoke.  It wasn't quite enough force to break the spoke but close.  After that, I noticed that the wheel a millimeter or two out of true.  The tire blew on impact.  I have looked carefully at the rim for signs of damage from the impact and I do not see any cracks around the spoke hole or dings along the rim's tire hook edges.  I think I am safe just replacing the spoke

One of the hang ups to fixing the Zipp 303 was the lack of a place to set up my truing stand.  About six months ago, Mrs. Geezer saw a much larger condo go on the market.  One of its features that was a major selling point for us was a large storage room.  In the first week after moving in, I had the truing stand set up.  Then, I threw a couple of roadblocks in my own way before I could get to turning spoke nipples.  First, when I started on assembling the data for the wheel, I decided I needed fill in an omission in the original work.  I have never had a good way to calculate the parameters for bending and twisting of the rim, (second moments of area of the cross section and the Saint-Venant torsion constant).  These parameters depend on having the profile of the rim in some mathematical form for computation which is generally unavailable in any specification of the rim.  I had an idea of how it could be done using tape with millimeter markings and a dial caliper so I felt I must write the program ago do that first.  If anyone is interested in the rim profile program, I will write up the method and post the program on the Mathworks file exchange.   The next thing was to resurrect the truing program for my truing stand.  The problem here is that I had made many improvements for potential customers which were in program versions specifically for their needs.   I needed to sort all the changes out, find the improved code, and update the program for my truing stand.  The unique features of the program for my stand are the routines for processing input data and generating output data that interface with forms that I use for manually recording data and applying the spoke adjustments.   I also had to find the Work forms that I use for data taking.

I also felt the need to buy a digital spoke tension meter to do this truing job properly.  The conversion tables that came with the new gauge did not include the Sapim CX-Ray bladed spokes I would be using so that necessitated a trip to my good wheel building friend's factory to borrow their spoke load test fixture to measure a load-displacement curve for the CX-Ray spoke using my new gauge.  I added to the delay by seeing the need for a mechanical model of the spoke and gauge to accurately smooth the measured data and interpolate the measurements.  To do this, it seemed necessary to do this in Mathematica and so I had to learn a new computer language.  This took a month or two.   I have gotten all this stuff done and last week I put in a major effort to debug the program and true the wheel that is the main subject here.

Enough of the excuses, let's get on to the pictures.

This is a pic of the rim and tape with millimeter graduations.  The caliper measures from matching marks on either side of the rim.

Here is a picture of the profile determined by the tape-caliper method.
The tape gives distance along the perimeter of the rim.  The dial calipers give the width at various perimeter values.  That data and Pythagoras theorem determine the x-y coordinates along the perimeter.  I estimated the thickness of the rim wall by combining this profile and the wheel diameter to compute the rim volume.  I then used the rim density to get weight of the rim .  I iterated on the thickness to find a value of the rim mass that matched the actual rim mass.  I assumed the thickness was uniform.  The thickness then gives the inner surface of the rim.  I make somewhat crude estimates of Izz, Irr, and J from this profile.  The moment calculations just take the area concentrated at the center point of each segment.  The torsion constant is estimated by the formula for closed, thin-walled beams.  I could do a better job with my mathematical representation of geometry but it would take a lot more time.

Some years ago, I was putting together data for a wheel and needed to visualize the lacing pattern to see that it was right.  I was able to plot the location of the spokes rather easily from the parameters I computed for the structural model.   Here is the plot of  Zipp 303 lacing pattern as determined by my mechanical model.  Again, I can put the routine up on the Mathworks File Exchange if anyone is following along at home.


The truing took several iterations, some were for debugging and some for truing.  I learned several things about truing with the algorithm along the way.  At one point, I adjusted the spokes making all the computed spoke adjustments backwards.  This left the wheel in worse true than the starting point.  I also tried just truing by the conventional method working on each bulge a bit to reduce the error by eye.  As it turns out, even a novice wheel builder like me can bring a wheel into a useable true pretty well without a truing program.  This is not really news.  But, my fear of not being able to do this was the motivation for developing the truing algorithm.  In this case, most of this wheel's error was around the replaced spoke so this was an easy wheel to true, Very few spokes needed much adjustment.  However, I quickly reached a point where the wheel was satisfactory for riding but not quite as good as I was trying to achieve.  After a few iterations of hand truing, each round of adjustment after that did not produce overall improvement.  The errors just moved around-- some getting better, some getting worse.  So now the need for a program that looked at the whole wheel was needed to get any better.  I brought out the data sheets and computer again to see if I could get some uniform improvement.  In one iteration, I got the wheel very true and equally tensioned.  It is this last iteration that I show.  The plots show the as-found condition, which is not bad; the calculated improvement from the optimum adjustments; and the actual improvement from adjusting the spokes and measuring the wheel.   The reader will note that the measured improvement was not as good as calculated.   This may be of some concern but the important thing is that wheel improved uniformly all around.  All the adjustments moved the rim closer to trueness.  The errors look big because of the plot scale but, at this point, the wheel is very true.  The reason that the calculated and actual improvement are different is of course modeling and measurement accuracy.   The model is not perfect and my tests show that it overestimates the effect of the nipple adjustment in all directions.  This may be the main effect in the difference.  Also, the measurement accuracy of rim displacement is 0.01 mm.  This is certainly small but rim manufacturing tolerances are in this range.  The width of the rim measured by caliper varies by this amount around the rim.  Presumably the radial edge used as the reference point would also have variations in this range.  This variation is harder to measure.  The spoke tension meter is perhaps least accurate measurement.  We could improve on all these things but the fact is that this is very good truing.  

The max and min displacement errors in radial and axial directions are within the 0.15 mm criteria that I generally strive for.  The tensions are within 30 N of set point.  I called it done and put the wheel back on the bike.  I went for the first ride on this bike is years.

In the plots, I show the as-found condition, the calculated improvement in trueness from applying the calculated adjustments to the model, and the actual improvement which I measured.  I also show the s

This plot is is the axial displacement.  This variable name on the figure is "uz".   In my nomenclature, "u" is a displacement variable, "z" is the axial direction or component.   Some wheel builders call this lateral error.  This is the most sensitive truing parameter.  The plot show a reduction of the maximum errors (min, max)  from (-0.25, 0.15) to (-0.15,0.07).  This is within my criteria for stopping.  It seems likely that one more iteration would have gotten the error down a bit more, but this is certainly a good stopping point. I measured this particular wheel when it was new before I rode it.  It was not quite this good from Zipp.

The radial displacement is shown next.   The modeling variable name is "ur".   This variable proved to be much easier to get within tolerance.  This plot shows that the iteration reduces the radial error (min, max) from (-0.06,0.079) to (-0.04,0.03).  That is tight.

The tension plot is separated into lines for the drive side (higher values) and non-drive side (lower values).  The setpoint for the drive side is 920 N.  The geometry of the wheel gives a calculated tension set point for the non-drive side tension of 432.8 N.  The tension is hard to measure with the tension gauge.  Slightly twisting the gauge on the spoke yield quite a range of values.  Twisting the spoke tends to increase the measurement so I recorded the lowest value seen.  The min/max of the drive side is (870.5,951.5).  The non-drive side is (403.3,467.0).


I have data for single spoke perturbations that compare measured versus calculate effect for tightening a single spoke one full turn.  These quantify the error in the structural model.  If anyone expresses interest, I will add a post to show them.  The wheel geometrical data are "unretouched";  that is, I did not do anything to improve the match between calculation and measurement.  

No comments:

Post a Comment