Treadmill Project

I repair fitness equipment for a living, so please allow me pass on what I know. (which is not much). During POST of the display pcb it sends an enable to the motor controller to activate the motor run relay but does not send a motor pwm signal. The controller reports to the display pcb the motor current and if it see a large amount the controller goes into "fold-back current limit". Fold-back current limit is done by the motor controller, but some display can do it also. This is to keep a shorted mosfet from throwing the user into the wall. So I would guess that one pin must be the relay enable signal. Also I would guess that the controller "talks" to the display. I say this because some display pcb's allow me to view DC buss voltage, fold-back current status and RPM (better displays yield more info). I am sure that the RPM signal from the reed switch is passed through the motor controller and up to the display pcb. The lift motor is almost always controlled by a simple "up" "down" signal, but if the lift motor has a pot on it, that too will be passed up to the display. FYI, I work for both Spirit and Sole doing warranty repairs and they don't tell us anything either. PS: Don't take anything I said as fact, just opinion.

Thank you for the info Dave and Jgum.

I have not updated lately because I have been trying to learn C++ and C# programming for the software side.

I did try connecting a wire via exposing the speed wire and splicing it with resistance to the Audio in. There was a lot of noise/interference to say the least and I did not see any form of a square wave which leads me to think that the wire is the enable motor signal.

Today I was doing research on building my own board, but Jgum, when you mention the Mosfet protection... that can be very important as these failsafes protect the user. The last thing I want is a custom board breaking peoples backs, bones, and pride.

I still have not received my 3.5mm Jacks and I have avoided taking the jacks off of my beloved electronics, but I found an old CD Player that I might try to use. Is there any particular way to set this up? When I clip the wire using an alligator clip and run it to the 3.5 mm jack, is there anything that I need to do about the ground? Considering that I would only have the 1 wire?

Dave, I would not know where to begin to calculating the right resistor size. You are right, that it has about 120 Volts AC, but if i remember correctly, everything on the board becomes DC after the rectifier that we installed which is rated at 1000 Volts and 35amps. (We installed it after troubleshooting the ohms on the board and found that the rectifier went bad).

With Jgum's input would you still recommend installing a Potentiometer to try to control it? I have not purchased one yet. I was thinking about buying this (http://www.amazon.com/Digital-Potentiometer-ICs-Step-50kOhm/dp/B005T6CO86/ref=sr_1_5?ie=UTF8&qid=1392928695&sr=8-5&keywords=Digital+Potentiometer) and then using my second Arduino to control it.

All of this info is still overwhelming, but i am trying to hang on in hopes of learning this stuff hands on.

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 - http://pdf.datasheetcatalog.com/datasheets2/16/1643295_1.pdf

(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 http://www.onsemi.com/pub_link/Collateral/BC635-D.PDF
Q4 Transisitor is PNP -BC638 http://www.fairchildsemi.com/ds/BC/BC638.pdf or http://pdf.datasheetcatalog.com/datasheet/motorola/BC638.pdf

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: https://community.spark.io/t/spark-controlled-nordic-treadmill-web-based-treadmill-interface/5419

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.

https://www.facebook.com/FitEquipRedesign

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.

Andrew

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: https://www.amazon.com/Sole-Fitness-Controller-Transformer-Treadmill/dp/B07K5K1YK9 - 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.

Hi,

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.