Friday, November 26, 2010
Guy Builds His Own Stairmaster
Stairmonster
In 2006, I discovered the stairmaster 4400CL at my local gym. It started as a great alternative to cycling during the winter and turned into a routine.
It was reasonably well constructed, and had a fairly simple interface.
Over the course of the next two years, I outgrew it. Towards the end of 2008, I was able to run for an hour on the unit at its full speed.
I was going to need to do something about this.
I searched around for faster units. They don't exist
I contacted the company and asked if there was a way to unlock a higher speed. They said no. and that I was crazy.
I considered buying a 4400cl and modifying the electronics, but I felt that wouldn't give me all of the improvements I wanted.
I was going to have to build my own.
Preliminary features:
- Higher speed than the 4400CL (currently, I've run my unit past 500 steps per minute, which I cannot sustain for any real length of time. The 4400cl can run up to 100 similarly sized steps per minute (174 steps per min for their step sizes) . I estimate that this unit can safely work at a human-ly unachievable speed of 2000 steps per minute - though the resistors and alt. could not handle that.)
- More interesting/useful interface
- Advanced Heart rate interface
- Accurate steps/min and watt calculator
- User-defined programs
- Greater range of motion/step height
- Less forgiving handlebars
These were the parameters I would start with. The project was going to be rather involved.
I set off and designed my new stairmaster in solidworks.

The initial design process (component selection, drawing, redesign, etc) took approximately one week.
Concept
I purchased two 4400cl pedalsI tied these to a 4-bar mechanism and attached a chain to the bar. This chain is wrapped around a sprocket and fed to a spring mounted to the spine of the unit
The sprockets have rotary slip clutches inside of them. These are unique spring loaded clutches that allow free movement around a shaft in one direction (the retraction phase) and lock motion in the other (the drive, or downwards phase)
The drive shaft has a #40 roller chain sprocket fixed to it. This sprocket is tied with chain to the first continuous gearbox shaft, which is mounted with self aligning spherical bearings
This shaft is tied to the next shaft by way of 72:20 gear increasing HTD5mm timing pulleys.
This next shaft is tied to the alternator by way of 72:12 gear increasing htd5mm timing pulleys, and also has the quadrature encoder on it.
All shafts and the encoder are mounted in slots so the belts can be adequately tensioned. I used solidworks to calculate the belt engagement and length and was accurate to half a millimeter! (belt stretch under tension, rounding of pulley sizes, etc, account for the error)
The output of the alternator is run into the rectifier to convert it to DC and sent through a resistor bank to generate heat and act as a load. The resistor bank box gets up to 70 deg C while I am climbing. (might put a fan on this some day, possibly even power it with the output. No problems with it yet...)
I ordered the materials I needed (mostly aluminum tubes, bolts, washers, bearings, bushings, etc)
Software interface
The system provides a lot of information to the user during and after a program. It started out very simple and crept into a fairly complex bit of code.- Current speed / Overall average speed so far
- Current heart rate / overall average heart rate
- Heart rate breakdown and history graph that relates to the user program
- Time coordinated to the path for comparison
- Color coordinated to heart rate (darker colors are higher heart rates)
- Several different speed profile programs to choose from
- Race tracking: The unit can be told a time and distance of a race. It will tell the user if they would have won or lost the race, and by how much. It also tells the user if they are on track to win or lose before the race time is up.
- Heart rate and path data can be sent to a PC in XL format after the session is completed
Program adjustability: The user interface has a touchscreen and 16 buttons to facilitate changing settings before starting and while running, including:
- Increase the current segment's speed
- Increase overall speed
- 5 second speed spike or drop (multiple presses increase the duration of the spike)
- Current speed hold
The core software is relatively simply, from a control aspect:
- Read in the position of the encoder from the LM628 quadrature decoder ever 1ms
- Aggregate this data into a register
- Every 8 milliseconds, run this register through the PID loop which changes the voltage on the field winding of the alternator, which alters the resistance of the unit.
- Whenever the unit is not in the quadrature or PID loop, update the screen.
- The heart rate monitor input is on an interrupt signal. Whenever a heart rate pulse is seen, the system records the time of the beat and computes the heart rate down to 1ms accuracy. If the heart rate strap is sending out erroneous pulses, there is a rolling average filter which discards sudden increases in heart rate, possibly caused by a moving strap.
- The firmware for the embedded controller (AT89C51RD2) was written entirely by me in C and assembly.
Heart Rate Interface
The most unusual feature of this unit would be the heart rate interface.Most stairmaster and other cardio units can interface with a standard polar compatible 5khz heart rate signal.
They use this information in one of two ways:
- Display the heart rate/graph it
- Use a single desired heart rate target and adjust the speed to achieve this target
The idea behind a heart rate program is, where a normal stairmaster program defines pedal speed over time (the first minute is 100 steps/min, then 110, then 90, up and down a mountain, etc), my software would be able to define a moving heart rate goal.
A heart rate program might look like this:
This graph shows the rise and fall that the user's heart rate will go through while running the program.
This makes it so the user can define segments of time to spend in certain cardio zones (fat burning, aerobic, cardiac muscle build). The stairmaster software will modulate the pedal speed to keep the user within 1 percent of the desired programmed heart rate, with no interaction on the user's behalf whatsoever.
I believe this is a feature that has not be built into any commercially available units, anywhere. Certainly not stairmasters.
The unit can also work in a more traditional steps per minute mode.
Power dissipation
Several people have asked me about the generated power, and the field winding of the alternator.Why don't I power something with this instead of dumping the power as heat?
A very popular question. Here are the facts:
- the power I generate changes throughout the program. The faster I'm going, the more power I generate.
- I would need a load that was very low resistance and capable of dissipating a wide range of wattage at nearly constant resistance
- I wouldn't wind up with all that much power. Follow the spinning electron to see where our losses are:
- The unit's own friction takes up some power
- The electronics have their own resistance
- Power regulation and stabilization of the power to attain constant resistance
- Different power levels based on program speed
Why not power the field winding and the unit's computer with the power I'm generating?
Indeed, I could power the field winding of the alternator with the power I'm generating. This is exactly what the Stairmaster 4400CL (the cl stands for cordless) does. Use a battery to jump-start the field winding, then switch over to powering the winding with the power being generated and even re-charge the battery in the process. One of the reasons the 4400CL does this is to eliminate the need for plugs/cords running across a commercial gym environment, where they are a hazard and will be stepped on/damaged.
I decided this wouldn't be an important feature to me at this time. It would take a fair amount of additional circuitry and distract me from working on features that would improve my stair climbing ability. At full resistance (moving as slowly as possible), the unit draws about 50w. An average draw across one of my programs is less than 5 watts. Once again, te ROI from such a project, which would be the purpose of "saving" power, would take years, given the cost of the electronics involved. I may do this when there are no other additions to be made.
Things that bug me
There are a few things I think need improvement/redesign. While the unit works great now, things like this keep me thinking of upgrades...- The pedals return by way of a thick spring. The spring is wrapped around a plastic pulley that after a year, shows signs of maybe only lasting 3-4 years. Good thing they only cost $5 each...
- Because of the way the 4-bar mechanism works with the rotary clutch, 1" of pedal travel at the top does not translate to the same amount of rotary motion of the mechanics as 1" of travel at the bottom. It is a parabolic function. Since my PID controls on rotary motion, this means that the pedals fall slightly faster as they get closer to the bottom. There are a few ways I can deal with this (other than ignoring it, as it is all but imperceptable):
- Create a linear bearing driven system, ditch the 4-bar
- Use the PID error to attempt to "find" the top of the step and account for absolute position based on error spikes
- Use an array of input prox switches along the bottom brace to do a rough encoding of the absolute position and interpolate
- The unit is not at all enclosed. I'm worried the cat might get into it.
Future additions
In the upcoming weeks and months, I am adding the following features:Wattage integrator: Sits between the alternator and the load resistors. Tells me the current wattage I'm generating (Technically, the power that the resistors are dissipating after all other losses) and the overall wattage hours I've produced
Moving arm mount, which will make the unit more similar to a versaclimber, making this a more thorough (and silly looking) workout:
Technical Details
- Alternator: 65amp DR 7SI alternator used from a boat
- Controller: Atmel AT89C51RD2 microprocessor which chats with an LM628 for use as a quadrature decoder
- PID Loop: 1ms measurement increments aggregated into an 8ms PID update function
- Power Supply: old 500 watt PC power supply (to power the controller and field winding of the alt)
- Screens: 320x240 intelligent touch screen display for graphs
- 16x2 backlit character display for debugging information and parameter selection
- Encoder: 8000 line bearing mounted quadrature encoder
- Handlebars: Dusty old set of BMX ape-bars I found cheap at a local cycle shop
- Pedals: Original stairmaster 4400cl injection molded pedals
- Cumulative drive mechanism: 2 25mm INA rotary slip clutches
- Belts: 15mm thick HTD5mm transmission belts
- Two stage gear increase to operate in the most productive range of the alternator
- Power dissipation: 4x 250 watt .5ohm ceramic resistors
- Range of speed: 6 steps per minute at its lowest, going up to at least 2000? steps per minute
Gallery
16x2 displayIntro Screen/Path selection
Main Screen just after program start
Resistor box
Top of the clutch mechanism
Left clutch mechanism
Right clutch mechanism
Left mechanics side
Right mechanics side
Stairmonster at ~50 steps per minute:
Stairmonster at ~200 steps per minute:
No comments :
Post a Comment