Treadmill Project

put on a 5k pot. a 1 watt or so. the larger type on old radios.

if that does the speed, then just connect a stepper to the pot and control the stepper.

the irony would be that you are using a stepper to control a treadmill, that is, in a way, a stepper.

A pot will not control this board. When we test to see if a "NBM= No Belt Movement" is a mcb or display issue. We look for a .5 to 1.5 VDC signal. Our meters don't measure PWM, so this is a crude test to see if any type of signal is coming from the display PCB. We also listen for the relay click when starting the walk belt.

If a pot would not control the board, what exactly would you suggest?

If the MCB- board is not being controlled by PWM signals then I am not sure why when the treadmill starts the PWM LED becomes lit. Starting to think building my own driver board would be best xD

The board is controlled by 0v to 5vdc square wave of variable period coming from the display. This is a signal that the ardurino can make, along with the relay enable ( a 5vdc High, I think) the drive motor should start. I will try to find one of these boards in my stock and get a closer look.

S/W - 17 Volt Dwn - -.086volt Up - -.086 volt VCC - 18 Volt Fast - 5 Volt Slow 5 volt Grnd - -.098 volt??? Spd - 5 Volt Spd - 0 Volt Vr1 - 5 Volt Vr2 - 5 volt Vr 3 - 0 Volt

Blew a few fuses trying to get amperage, because my multimeter has less than an amp tester.................. All the 5 volt ratings fluctuate some from 4.5 - 5. Ill have to do more testing later. The 1volt test was because I didnt test the Voltage on a high enough setting. I am learning just how over my head this stuff is. baby steps.

Actually, using Ohms Law, I should be able to check the resistance on the leads and calculate the Amperage since I now know the voltage right? A = V/R.

Latest update.

Got a 10000 ohm resistor tied in with a diode and am getting a 60 hz signal, but I cant really tell how to read the PWM yet.

I have included the pictures of the schematics below.

I would greatly appreciate anyones assistance in figuring out how to use the Arduino to replicate this signal.

On JK1 there are 12 pins. Of interest to me are pins 5&6 or Fast/Slow

in the picture Schematic 3 I have a close up of JK1 and the pins and their wiring. Schematic 1 is the whole board.
Using Schematic 3 if you follow pins 5&6 it shows how it is connected. In schematic 1 it shows another branch of it that I do not understand. I am assuming that signal goes to an IC

JK2 is the reed switch which I might also use later, most likely will need it for displaying speed.

After looking over the schematics for a few hours, I've run into the conclusion that there is probably more than just PWM signals being sent.

PIC12F508 is a micro controller but I do know that the signal from the GP2 goes to the opto which goes to the other Microcontroller (if it wasnt complicated enough). The Fast pin goes to GP4, and Slow goes to GP5 and again everything coming out which is likely serial data of somekind goes out of GP2 which activates the PWM Led on the board which then goes to the Voltage IN on the ALT-633060A Microprocesor/controller which controls the PWM signal that goes to the transistors that control the motor. So I either need to interpret the PWM out going to the motor, or interpret the data coming out of the GP2 from 12F508 which I imagine... I cannot do since I am a newb at all of this.

Any suggestions? Anybody with 12F508 experience? Anybody know how to interpret data from such a source maybe coming off of the opto?

I am going to be researching it a bit more.

Here is the datasheet on the 12F508 -

(note: schematic says 12C508, but it is actually the 12F508)

looks like the whole speed control is two transistors and two mosfets controlled by one PWM signal.

Q3 Transisitor is NPN - BC637
Q4 Transisitor is PNP -BC638 or

They both have 60V collectors
NPN has +5 V Emitter
PNP Has -5 V Emitter

It looks like the Emitter for theBC638 PNP goes to ground so the NPN is isolating and amplifying the signal? The second one is smoothing it out? I dont know anything about these things yet.

dave-in-nj: looks like the whole speed control is two transistors and two mosfets controlled by one PWM signal.

How easy is it to damage that system trying to interpret the PWM frequency and wavelength patterns?

I bought some shielded cable today to go ahead and try the oscilloscope again on that wire. (that 60hz that I was getting I believe to be the power cord that the wire was near, which means I didnt really get any important data). Can the arduino in anyway capture data from the Fast and Slow pins? I believe it to be data rather than a PWM signal because they both feed into pins on an IC which then outputs a signal to a LED --> then opto coupler --> Microcontroller --> PWM output to the motor via transistors NPN and PNP interaction with the mosfets.

My concern being if I damage the components that tell that motor what to do then I am screwed, where as If i try to interpret the data being sent to the 1'st microprocessor i have less of a chance hurting the components.

Is there a way to copy the 12F508 IC and decode the way and interprets and transmits data, or is my understanding of IC's flawed? If yall were in my shoes, what would yall be checking or would yall go for the PWM signal?

I know that information is being sent from the Fast and Slow pins to the IC, and then they are sent to an LED and then to an opto, where it goes to a more complex microprocessor that then sends a PWM signal to the motor. Also after analyzing where all the pins are going. The only ones of interest are the Fast and Slow, the rest of them are jumpers essentially for plug ins on the board. The other important ones being the Power and Ground.

The Slow is coming into GP5 which looks to be Oscillator 2 The Fast is coming into GP4 which looks to be Oscillator 1

The output is GP2 which is goes to opto --microcontroller then pwm output to transisitors and mosfets

FYI. I've started a treadmill project based on a Wifi Spark over here:

I'll be publishing code and schematics soon.

I've had a great deal of success with this project so far and I've been working on a game based UI.

I've figured out how to control it manually (which means I still have to type it in the terminal), and recently have been trying to figure out how to code it to send it through the UI. This weekend I found a way to use the Serial in Unity3D to communicate to it.

I would also use shielded wire if I were you mate! There have been too many complications from interference without it on my end.

I would love to talk to you more about this. Check your PM. In the meantime here is my FB page to my project.

On my lunchbreak now, but wanted to update anyone who is interested in this.

I am using this library - TimerOne & TimerThree Arduino Libraries

I set the Frequency at 89hz based on my oscope readings
and I am using shielded cables to protect it from interference.

I took a PIC Holder and soldered onto it 8 Header pins or 2x4 pins which made it fit on to the socket more easliy so I can have my chip on the outside. I then made a breadboard which held the chip and a secondary PIC holder to which I put pin 9 out of the arduino to. I am using a switch to switch between devices which allows the old board to use the CHIP or if I flip the switch it turns off the Chips PWM output pin and uses the Arduinos pin 9.

Using this I have successfully been able to type in a speed and the motor run at said speed.

Now I am working on a user interface to control the device.

I was wondering if you finnished your treadmill motor control project. I have the same board and was wondering how to go about controlling the driver board for the motor.


Hi i Have a board i want to control...can you provide info on what Pins you Connect on The treadmill board And what do you push to each? Thanks and greetings from Finland.

andrewmccluskey, hynni2,

12/25/18 - Ok, here’s my treadmill project....... The details may provide some insight - I have a Spirit Esprit ET-8 Treadmill, and the top board that runs the console is fried. The bottom board: - that controls the belt speed and incline works just fine.

There’s a 12 pin cable that runs from the lower board up to the upper board console. Coincidentally, and what I expect is fairly typical, the pin layout referenced in this thread above is identical to the pin layout of the 12 pin cable in my treadmill and may be similar or identical to what you have:

1 - S/W - 17 Volt 2 - Dwn -.086volt 3 - Up -.086 volt 4 - VCC - 18 Volt 5 - Fast - 5 Volt 6 - Slow 5 volt 7 - Grnd -.098 8 - Spd - 5 Volt 9 - Spd - 0 Volt 10 - Vr1 - 5 Volt 11 - Vr2 - 5 volt 12 - Vr 3 - 0 Volt

Now, to control the treadmill - jump 1 and 4 together for power. Then A) Make Break 5 and 7 over and over to increase speed in .1 mph increments. B) Make Break 6 and 7 over and over to decrease speed by .1 mph increments. C) Make 3 and 4 together to incline the treadmill. D) Make 2 and 4 to decline the treadmill.

I have put 4 push buttons on the treadmill console that perform those four A-D functions.

Now, I’m going to do that A-D with Arduino Uno along with adding additional functions. Instead of speed increments/decrement of .1 mph, I’ll make that .5 mph. Also, will add 5 buttons to take speed right to 2, 4, 6, 8, 10 mph. Will also add 7 segment leds to display speed and incline amount.

I’ll post more as this progresses, but hopefully, there’s something here you may be able to move forward with.

12/26/18 - One note from reading through the thread - a pot is not used for any of above. Just Make Break the circuit of pins 5-7 to increase speed, and Make Break the circuit of pins 6-7 to decrease speed. The intro arduino push button solution for that is pretty basic. Connect pins 1 and 4 to the magnetic emergency switch of the treadmill.

I believe that pins 8 and 9 are used for pwm speed control. In normal operation, this is how speed would be adjusted, and pins 5 and 6 would be used internally by treadmill to adjust speed in small increments when magnetic belt sensor reading does not match user selected speed. I will need to test in a day or so.


I have a Life Fitness treadmill motor (90v DC, 20AMP, 4000RPM, 2 HP, Continuous Duty) along with MC-60 control board. I am looking for ways to speed control this motor with Arduino. The control pins for this board seem to be different from Sole Fitness control board. In addition to exploring the interfacing of Arduino with MC-60 control board, I am also exploring building a programmable power supply to the motor so that I can replace the complex control board.

My ideas to replace the board are revolving around these options: (a) AC power supply (US: 120V 60HZ) --> Bridge Rectifier + Capacitor (~ 100v-120v DC) --> High Current DC Relay Switch (to simulate Pulses via on/off) programmable with Arduino --> DC Motor

(b) AC power supply (US: 120V 60HZ) --> SCR + Digital Potentiometer programmable with Arduino --> Bridge Rectifier --> DC Motor

Are these ideas feasible? Are there any other ways to programmatically control a DC motor (treadmill motor or other DC motors which handle similar torque)?

Any information or help is appreciated.

Thanks in advance.