The program has been written by Steven Aitken.

" Steve Aitken - 2015 - with much help in testing from Al Bates - who spent many hours with audio files retesting and retesting the methods until we settled on this one. "

Original code from Steven

I split the signal that produced from flywheel on 2 monitors .

On this videos i row for 2 minute reverse .The result on the screen

Few words for the programme.

Original programme from Steven doesn't work with model B and C.( model B and C has the same sensor ).

I spent Hundreds of hours testing , writing code and fixing some bugs of programme.

The big problem WAS that it didn't have any stability for strokes .I try many diferent ways with no succes .

The solution after hundred hours was so simple .Just add 100k resistance to cable that comes from flyweel to analogRead( 1 ) .

( MAGIC ....everything worked PERFECTLY )

This solution might possibly work with the original programm of Steven Aitkens but this project has been very tired for me so I quit .that's why i left inside the programme many unusefull variables , many unusefull comments because i don't have the courage to find and delete them .( i hope someone else to do that ).

I have remove some screens like watt , kcal , graphics and settings and others ( if you want them , they are included in the original programme of Steven) , but it works perfectly for : free rowing , reverse meter , reverse time , and time intervals , screen .(all with dragFactor on screen )

I observed something strange to dragFactor , that takes place in some ergometer ( model C and maybe to model D ).The test has been done on 12 ergometers model C and 2 model D.

Some ergometer gives different drag from what i am expected . .

I belιeve that is happening because this has relationship with polarity of magnets ( north -south ) but i don't have the knowledge to prove it . ( maybe "AC to DC Power Adapter IN4007 Bridge Rectifier Full-wave Rectifier " give the solution but ... I quit . someone help for this ).

The solution for this , is that i add one screens to regulate and find the correct value of K ( K is the basicly value which gives dragFactor ) .

The K value storage to EPROM .You do this ONLY one time then you can put the damper anywhere .

How find the correct value for K .

For model C :

1. if you have PM2 , PM3 ,PM4 is very simple:

a . Find the drag ( example 140 or about in the middle of dumper ) then change monitor and put arduino monitor .

b. Go to screen "set dragFactor" and write the number of dragFactor that you have find before with the original monitor ( PM2 etc ) and push select button twice .

c. Start rowing for 20 -21 strokes with middle power.Stroke per minute must be about 26 . Then you see the screen " finished please restart " .The monitor is ready for THIS ergometer.After that put the dumper as you wish , is READY.

ATTENTION Please make TEST . You must found the drag you have wrote before (for about 10-15 strokes ) otherwise again goto screen set dragfactor .

2 . If you don't have monitor : Get out the dumper / fan (photo).The maximun dragFactor of all model C with out dumper is 235 ( EXTREMLY VERY HEAVY ).

a .With dumper out in screen " set dragFactor " write 235 and push select button twice.

b . goto previus c paragraph .

ATTENTION Please make test without dumper . You must found 235 drag ( for about 10-15 strokes ) otherwise again goto screen set dragfactor ( if it is high ex 240 set drag to 234 ) .

I know is barbaric but is very important to do that .

For model D and possible for model E ( have he same sensor) :

1. back to way 1 :

2. With dumper out , i don't have maximun number of Drag .

For model B ( the best of all) :

Model A,C,D,and E has 14 tooth gear .Model B has 2 gear one with 13 tooth and another with 15 tooth .

DragFactor as you can see on video that i upload is exacly the same , if you put chain at gear with 13 tooth or gear with 15 tooth.

Gear with 15 tooth is easiest , gear with 13 tooth is harder but they have the same dragFactor.

Explenation for 13 and 15 tooth here

( TIP : if you want to go faster in model C,D,E with monitor PM3,PM4,PM5 ....just replace the gear ) .

Anyway model B with bumper open dragFactor is ( i upload soon ) and with dumper close is ( i upload soon ) .

( this value are taken from monitor PM2 )

If you can find monitor follow method for model C paragraph 1.

If something goes wrong I add onother one screen which delete the K ( from eprom) and start normally .

Start from the beginning .

// Another one interesting constant is" I " which gives meter that produced from flywheel . So if you change

// that variable you can do ergometer go faster or slower .I have set this value to 0,1025. " I = 0,1025 "

// another important constant is " C " I setup up " 2.9 " ( i am not sure )

// All this changes has been done because I add 100k resistance .

MANY MANY MANY thanks to Steven Aitkens .

Step 1: Let's Make It .

1 . cover usb with tape .

2 . make cable as see in the picture with 100kΩ resistance .

3. powered from 9v rechargeable battery with on-off switch or 12v simple adapter 1.5A

4 . push some pin down ( with iron soldering ) because they connect to arduino usb and create problems .

5 . connect monitor on arduino .

6 . this simpe corner made of iron is screwing on arm of ergometer the arduino with base snaps on it .

Step 2: Upload Files to Arduino

download main.h in library of arduino

download " final_9A_with_delete_drag.ino "and open .

upload to arduino and finished .

possible problems : meters runs without stroke

- Possible in jack female the 2 cable has connection between of then or somewhere has connection between cables . I have tighten it up on board as you see on picture .

- Check if usb has connections with the pins of monitor .

A very interesting file is Ergodiplay.pdf describes where Steven found information to make the programme .

Be the First to Share


    • Science Fair Challenge

      Science Fair Challenge
    • Home and Garden Contest

      Home and Garden Contest
    • Trash to Treasure Contest

      Trash to Treasure Contest



    7 months ago

    Thanks for making this. I bought a Concept 2 Model B for a great price, but had no computer. This took me a bit to get working. Once I did, it's been great!


    Question 1 year ago on Step 1

    Steve, AFTER sending you a message with lots of questions, I've JUST NOW looked at the pdf which has all the info I need to get started with making a replacement PM3 for the C2 rowing machine. Kindly disregard the earlier (premature) message! regards, Greg


    Question 4 years ago on Introduction

    hi, I am experimenting with this setup, but after loading to program to arduino, it says "just row" and no buttons are working.
    Any suggestions how to fix this?
    btw. I also tried the original program of Steve, but it is not giving me the right data. But menu's are working


    Answer 1 year ago

    I had the same issue. The "problem" is actually in the sketch lines 46-52. These lines tell the code what voltages correspond to which buttons.

    To fix, upload the sketch found in the Addruino IDE Examples (File-->Examples-->01.Basic-->ReadAnalogVoltage) to your Arduino with the LCD Shield installed, and leave it connected to the USB. Start the Serial Monitor (Tools-->Serial Monitor). Then push and hold each button in turn, and write down the numbers that scroll through the monitor.

    Once you've done that, go to the Erg script lines 46-52 and replace (or comment, copy and paste those new lines) the original values with the values you recorded. If the values in the monitor fluctuated, don't worry, that's what "_threshold" is for. For me, UP went from 98 to 133, Down from 255 to 310, etc.

    Save and upload, then follow the rest of the instructable. Bob is now your uncle.
    (I am using a C2 Model C, the PM2 is not working...hence the Arduino trick)


    Answer 4 years ago

    HI - what model do you have and what was the problem with data that you saw? - feel free to mail me or to raise an issue on github if you find a problem


    Tip 4 years ago

    The detection of rotation is done on the point that the current crosses zero (it willl spike either positive or negative, then cross zero and spike the opposite way, returning to zero) the middle zero is what this sketch detects - so polarity *should* not make any difference?