I know there have been a few on here from a basic search, but I need advice and some guidance for controlling a treadmill with an Arduino. I should also specify that I will not completely replace the control board that came with it, but I will have a secondary controller until my project is complete.
I first need to find out which Arduino board I need to use.
Second, I would like to control a treadmill board via PWM signals which I understand to be a timespan of 51ms. I have never programmed an Arduino before, so this is an interesting first step and I welcome the challenge. Some people have suggested using 555 ic's but I do not know how to go about that with an Arduino.
How can I write the code and program the Arduino to send the PWM to the Motor Board to control speed?
Also, does anyone know how to copy signals from the original device and implement them into the arduino?
Edit to add:
** The project is going well, since I have not been getting any responses I've just been updating it for any other hobbyist that may be able to use what I've learned for their projects. I have succesfully controlled the treadmill now with a PWM signal using TimerOne.h - you can find it in the arduino playground downloads
You can use Arduino Board itself. Please Desciribe Image Properly.
Ur Using ANy motor Driver To interface B/w Arduino Board and Motor. If yes Pin specifications. and voltage levels.
The motor driver board attached in the picture with the first post is the board. I have not been able to pull the schematics for it online, the one in white is one that I found that resembled the board in a google image search.
The white pins are:
1) S/W - Which i am assuming is the safety swithc which is either open or closed.
2) Down - This is the down for Incline motor
3) Up - Up for incline motor
4) VCC - Commons??*
5) Fast - from the upper controller to motor - Increases speed of motor.
6) Slow - Decreases speed of motor
7) GND? Unknown
8) SPD Unknown
9) SPD Unknown
10) VR-1 Unknown
11) VR-2 Unknown
12) VR-3 Unknown
The black and white schematics show that the PWM signals is sent between 0-5volts and the signal interval is 51ms.
The motor itself is 90v 30amp rating.
Other than that I do not have much information. I was assuming that the 0-5 volt information was enough. What other information is needed to make a conclusion? Also I was more curious as to which Arduino would allow me to send multiple PWM signals. I am curious if the 2 (SPD?) buttons from above have anything to do with speed and/or if they are the additional speed switches as there are 2 on the upper control board. I have called the company and spoken with them, they do not have schematics that they offer. Is there any other way to find out?
removed pic from original post because of its irrelevance.
What i need to figure out is how to control the Speed pins on the board pictured using arduino. 0-5 Volt, Square Wave PWM Signal at 51ms Interval.
I have used treadmill motors and drivers in the pasts. every one used a 5k pot as the speed control.
do you have a data sheet for the ALT-6330 driver board?
I found a reference on the Alatech site about dual pwm for speed control.
could not find an actual data sheet.
need more information on the pulse requirements.
I have done google searches as well as part searchers for the ALT 6330 board, I have not found anything.
I also contacted SOLE fitness who uses the board (also Spirit fitness), and they claimed they didnt have such information when i spoke with both sales and the technicians. Not sure if they dont want people to take trade secrets or what? The board is very similar to the MG5220 and 28 something that controls other treadmills.
There is another board in the console that sends a signal to the motor driver board, so unfortunately that complicates it. If I could control the motor alone I would, however not sure how difficult it would be to control a motor with an arduino and not blow my computers circuits considering the motor is 90v 30amp. (I know I would have to create a secondary board).
What type of information is needed? I cant make any calls today because they are not open, but hopefully I will find something. I believe I will be purchasing my first Arduino today so hopefully soon I will be out of theoretical, to practical and experimental mode.
This project has been a bit overwhelming, but worth it in the end, I have learned a lot about electronics, soldering, etc. Hopefully I will be designing my own boards soon.
the ALT-6330 appears to be supplied by alatech technology
sales info :
It would seem that you need to intercept the existing controller signals. easy to do, an opto can receive them and output a 5v signal that can then be send to another opto that controls a transistor. this way everything between the opto's is board level voltage and everything outboard is powered by the system.
a relay could be used to either pass those signals, or allow you to inject your own signals.
If I were making this interface board, I would have the Arduino be able to decipher the PWM so you can duplicate it. send it back out as one means of control.
an o-scope would be very useful to determine the signal. since it appears they are saying that all of their boards work the same way, you may find someone as deciphered the signals on a different board. or, there may be notes on the controller board output to this driver board.
I will mention that many speed controls accept a varying voltage from 0 to 5 volts. For those types of controllers, if you want to go half speed, you provide 2.5volts on the signal line.
So, my question is if you are certain that your signal is a PWM signal that jumps from 0 to 5 volts? If not, then it may be that you need to send it a varying voltage to vary the speed.
Thank you Dave and Cad,
Dave, I've been looking into the Optos, and I agree that it would be the best idea for protecting the computers end.
Also, I checked out the Alatec website and found some good stuff but I guess at my entry level electronics know-how I am overwhelmed with this stuff.
Which Arduino should I get for this project at this stage in order to dechipher the voltages and pwm signals? It sounds like reading those might be difficult to do? Also I have priced Oscilloscopes... I feel like Id be paying for a high quality audio system without the amazing sound quality lol. I saw some cheap versions for 140$ I am interested in that, but at those point I have to find out how the treadmill is sending out the signal and I think to do that I need the Arduino.
CadCoke, I am not For sure that my pwm signal for the motor control specifically is 0-5. It could be for the incline, I had assumped they were both similar in operation. I have to do some testing. Any recommendations on which arduino to get in order to intercept the signals?
I was thinking the Uno R3 would be ok but the Mega looks tempting. I dont think I will need that many pwm signals either.
Any Arduino can read an analog signal, or analyze a PWM signal (provided the frequency is not too high). Though, you would need a voltage divider (i.e. two resistors) to cut the voltage down if necessary.
By the way,I have seen some mentions of using an Arduino as an oscilloscope. Though, I imagine unless there is a bunch of hardware added, you would need to have prior knowledge that the voltages on the signal is withing the ratings for the Arduino.
I have priced Oscilloscopes... l. I saw some cheap versions for 140$
$140.... yeah, let me save you $140....
these are software programs that use your sound card input to display the frequency. since frequency is a word for how often something happens.... and your pulse is how often something happens....
google free o-scope to see what is available for your platform. (not everyone uses Linux)
that helps part of the equation...
I just bought 2 Uno R3's.
Thanks for the heads up.
I dont use Linux, but I need to learn how. I have an older computer that will do what I need it to with the sound card and I can probably put Linux on it tomorrow.
Later in the project I am gonna post videos of the progress. I've seen people with questions and answers and once they get the answers they do not follow up on t he project. Want to help out whoever is interested.
Thanks Dave and Cad
free o-scope versions for windows, linux and mac. no need to load a platform you are not familiar with.
using something other than your main box is a VERY good idea.
get some opto's 90% of what is available will work, you will have to look to find one too slow.
find a part, get the data sheet and check the propegation delay. needs to be faster than 100ns.
determine resistor values needed and get some resistors. get some LED's as well. you should be able to put one opto to receive the signal, and another to output from the first one. and have the LED connected in between to blink at whatever rate the PWM is. series led for sizing the resistor
I am downloading Linux anyways because sometimes folks i know only need a basic computer and I've seen tutorials for setting the theme to look like windows 7 etc and this would be a great time to start learning it. I have done computer repair and rebuilds for 12 years, its about time I get my head back in the game. Thank you for the advice. I will probably try these programs on an old laptop and once i feel more comfortable I might put this linux program on a Pentium 4 that just doesnt seem to perform anymore. I am interested to see how it does with linux.
As far as the Optos, been looking at some on Amazon. I am gonna get them once I do a bit more research on how I am gonna set it all up.
Do you think this program will work? http://www.zeitnitz.de/Christian/scope_en. Also checking out this one - http://www.sillanumsoft.org/ .
Thanks for the input. Going to continue to look more into this. Bought a dummies book for backup :smiley-red:
Bought the 2 Arduinos, they are still on the way due to the weather in Atlanta, whereabouts I live.
Have been watching videos and learning about the sound-card oscilloscope, and I think I get the jist of it. Bought some 3.5mm jacks today. I think by the end of this coming week I should be able to have learned enough to control the board.
Got the Boards today
Ran the Volt/Ohmeter on the pins and found that they are pushing 1 volt on all of the active pins.
* That makes me think that its possible all of the signals might be pwm.
I bought the the 3.5 mm audio jacks, but none of them have come in. I want to find a way to connect a wire to the wire being used and run the signal in my stereo/audio. To do the oscilloscope trick. At 1Volt, what is the risk of frying my audio circuits? What I am hoping that I will find it the Square wave pattern going in speed but it also has 4 different speed labels on the boards. Does anyone have any ideas on what the extra ones could be or how to diagnose it?
- SPD Up
- SPD Down
- SPD - ST-IN (Maybe Start Switch In)
- SPD - SPD
Or any clue what the VR's might go to?
I have contacted the company but they have yet to answer.
typically VR-1,2 and 3 would be your 5 or 10k speed pot
just wire in a 10k pot.
most time VR-2 will be the wiper.
as a note, treadmill controllers typically require that the speed pot be turned off or to minimum speed when the power is applied. you cannot just start them as speed.
often there is a fixed ramp speed. so it will take x seconds to get to full speed.
looks like VR-1 is 5v and VR-3 is ground.
that means the wiper of your pot would go to VR-2 to control the speed.
very interested to know how that works out.
bty, if you motor has blue wires they are most likely to a temperature sensor. they open the circuit when the motor gets too hot.
figure the board is running about 120 to 140 volts AC
and 90 volts DC.
so, if you are concerned about your audio jack, select a resistor to start testing with based on those values.
figure your audio jack could handle about 0.1ma for your calculations.
better to start out too safe.
maybe even use an LED instead while you are getting things set up.
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.
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 (http://www.fairchildsemi.com/ds/BC/BC638.pdf) or http://pdf.datasheetcatalog.com/datasheet/motorola/BC638.pdf (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.
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 - https://www.pjrc.com/teensy/td_libs_TimerOne.html
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.
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.
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.