TR-01 DIY Rotary Engine Compression Tester

14,036

31

25

Introduction: TR-01 DIY Rotary Engine Compression Tester

About: I like rotary engines and rotary engine accessories.

Starting in 2009, the original TR-01 v1.0, v2.0 and v2.0 Baro from TwistedRotors set the standard for hand-held, digital, rotary engine compression testers. And now you can build your own!

For 2017, in honor of the 50th Anniversary of Mazdas Rotary Engine and 20th year of SevenStock, I am releasing a DIY version of the TR-01. It's based on the massively popular Arduino line of micro-controller boards and super easy to build. There is also a broad price range of supported pressure transducers so you can make this tester as affordable as you like.

To program your tester you'll be using the Arduino IDE. I'm providing the code here completely free of any licensing or charge. Enjoy! Feel free to add features and modify it in any way you'd like. The only thing I ask is that you share your code and ideas with the community.

Step 1: Tools

  • Soldering iron
  • Solder
  • Wrenches
  • RTV
  • Teflon pipe tape
  • Computer with Arduino IDE installed (Arduino - Software)

Step 2: Parts

Here is a list of the parts you will need. These are my personal recommendations but I also list more affordable options as well. You do not have to use the links I provide, you may purchase these items from anywhere.

Arduino

  • Recommended:
  • Cheap:
    • Arduino Pro Mini 5v Knockoff - eBay
    • PL2303HX USB to Serial Cable - eBay

Pressure Transducer (5v supply, 0.5v-4.5v -> 0-200psi scale) and Spark Plug Adapter

  • Recommended:
  • Cheap:
    • Sensor and Connector Pigtail - Ebay
    • 1/4” NPT Male to 1/8” NPT Female Adapter - Amazon
    • Spark Plug Non-fouler 14mm Gasket Seat (Dorman HELP! Part Number 42000) - Amazon
    • O-Ring Assortment - Harbor Freight

Step 3: Build It!

Now it's time to do a little electronics soldering. I think that this is a fantastic project for beginners but if you've never soldered anything then you might want to take a look at this tutorial from the great people at Sparkfun.

First you're going to build the tester. You'll start by soldering the right-angle header pins to your Arduino Pro Mini. This is how the FTDI Serial USB cable connects. Now solder the sensor connector to the Arduino. Use the pictures (sensor pinout and connector) to determine the wiring. The wire marked as "A" should be connected to the Arduino's "GND" (ground) pin, "B" is connected to "VCC" (5v) and "C" will be connected to "A0" (analog input 0, that's a zero).

Next you'll build the sensor module itself. If you're using the recommended Honeywell sensor then it's as simple as putting a bead of RTV sealant all the way around the threads of the sensor and then threading it into the Spark Plug Non-fouler. Tighten the two together with your wrenches and then wipe off the excess RTV that squeezed out. Set aside and let it cure for at least 24 hours.

If you're using the "more affordable" eBay sensor (or any other sensor with a 1/8" NPT end) then you'll need to thread the 1/4” NPT Male to 1/8” NPT Female Adapter onto the sensor with teflon tape and then RTV the short Spark Plug Non-fouler to the 1/4" end.

Add the o-ring and maybe some heatshrink tubing and you're done!

Step 4: Program It!

Connect the Arduino board to your computer using the FTDI cable.

Download the attached TR01_OS_v01.ino file and open it using your Arduino IDE.

In the "Tools" menu make sure you have the correct board, processor and port selected. If you're using an Arduino Pro Mini then my example picture will work for you except that your port may be different.

Open the "Sketch" menu and choose "Upload".

Step 5: Use It!

You'll want to refer to the FSM for your specific car to find instructions on how to perform a compression test. Generally though, you'll need to disable your ignition and fuel system, remove all trailing spark plugs and then insert pressure sensor module into the trailing spark plug hole of the rotor housing to be tested.

Once you've got the sensor installed then you'll plug the tester into it and then connect the tester to your computer using the FTDI cable.

Open the Arduino IDE and in the "Tools" menu double check that the "Port" option is correct and then click on the "Serial Monitor" option.

When the monitor opens you'll need to set the baud rate (lower left corner) to 19200 baud. Once that's done you should see the "TR-01 Open Source" splash text and then you are ready to begin the test.

Crank the engine over and your TR-01 will display the compression test results and calculated RPM in the "Serial Monitor" window.

Step 6: Bonus!

Here are some tips, recommendations and ideas:

  • I prefer the Arduino Pro Mini paired with a legit "FTDI Serial TTL-232 USB" cable (Sparkfun or Adafruit) because FTDI has an app that will allow you to connect the tester to your Android phone using an USB OTG adapter. If that's not a priority for you then any Arduino could be used.
  • The Adafruit FTDI Serial TTL cable is the better choice because it's connector has LED's built in so you can see active serial communication. I linked to the Sparkfun in the parts section so you can save shipping.
  • You should be able to find the Spark Plug Non-foulers at any auto parts store that carries the Dorman HELP! line of parts. Here in the U.S. O'Reillys, Autozone and Advance Auto Parts all carry them.
  • Some features you could add:
    • Bluetooth
    • WiFi
    • LCD Screen
    • Case
    • Printer
  • I plan to continue to update this Instructable and code as time goes on. I'll probably add support for an LCD screen first.
  • If you'd rather just purchase a complete, high quality, rotary engine compression tester then you can still get the TR-01 v2.0 Baro from my site. www.TwistedRotors.com

Be the First to Share

    Recommendations

    • Puzzles Speed Challenge

      Puzzles Speed Challenge
    • "Can't Touch This" Family Contest

      "Can't Touch This" Family Contest
    • CNC Contest 2020

      CNC Contest 2020

    25 Discussions

    0
    alex_lula1
    alex_lula1

    Question 3 months ago

    Hi! Currently parting all the parts for this project, this is a great alternative for all the diy'ers of this world! I was just about to buy a rotary engine comp tester as i'm just finishing the rebuild of my Cosmo's engine and i stumbled upon your page! Since i'm still a arduino noob, i just bought a i2c 20x4 lcd and was wondering if you managed to program yours to work with a lcd yet!?

    Thanks
    Alex

    3
    MiroB4
    MiroB4

    Tip 2 years ago on Step 4

    This is the version for output in bar and normalization for 250rpm. Feel free to comment and give feedback about accuracy or any problems. I also included the dead-space compensation for the 13B MSP Renesis, if you plan on testing other engines, that should be modified.

    IMG_20180519_180813.jpgIMG_20180509_200230.jpg
    0
    Ro80
    Ro80

    Reply 9 months ago

    Hi MiroB4,

    I make a script to read it from a 2x16 LCD and it works. I like to normalize it to 300RPM. Please explain the values for normalisation to 250 so I can change it to 300RPM.

    DSCF7136.JPGDSCF7148.JPGDSCF7147.JPG
    0
    MiroB4
    MiroB4

    Reply 8 months ago

    Hi, I looked up the code after I'm back home now. Bad news for you: The normalization value is not adjustable just by changing a number in the code.
    What I did is to calculate a regression for the values that Mazda provides in their diagramms that represents the correctiono value that must be added to adjust the values to 250rpm.
    So if you want to normalize to 300 rpm you could take the picture and calculate a regression for a 300rpm correction.
    The curves are not linear, so I decided to go for a polynomical regression of 2nd order. The values that represent that function are these:

    const float a0 = 8.5944582043344; // polynom Fit a0 to norm values to 250rpm
    const float a1 = -4.8028702270382E-02; // polynom Fit a1 to norm values to 250rpm
    const float a2 = 5.4250515995872E-05; // polynom Fit a2 to norm values to 250rpm

    So if you like to change to a 300rpm normalization you have to calculate values for that and change a0-a2 them in the code acording to that.

    6bMCDyD.jpg
    0
    MiroB4
    MiroB4

    Reply 9 months ago

    Hi, that should be no problem. Unfortunatly I'll not be home until end of november and have no computer with me. Once I can have a look on the code, I'll post a suggestion how to change to 300rpm. Be advised though, that the normalization is based on Mazda data, so I'm not 100% sure that can be transfered to the RO-80 engine directly.

    0
    Ro80
    Ro80

    Reply 9 months ago

    No problem at all. Sure, I can wait. I'm glad you want to help me.

    I am aware that the standardization is based on Mazda. Unfortunately this data does not exist for the NSU engine so what else can I do? The only option is to show the normalization on the display in addition to measuring the real measured values.

    In the meantime I see such meters appear on the market where the altitude is corrected as well. Seems rather nonsensical to me. After all, you measure the compression in an enclosed space.

    0
    MiroB4
    MiroB4

    Reply 9 months ago

    The altitude correction can be a factor. You can consider it as a lower baseline for the pressure and after all we can only measure pressure, not compression. If you compress now less dense air, the resulting measurement will show less pressure as if the compressed airmass was denser in the first place. Mazda has a table similar to the rpm table to adjust values. The new testers measure ambient air pressure and make a correction on that (which is the better idea than altitude anyway as pressure varies independent of altitude of course). That could easyly be integrated in the sketch but you would need another sensor that measures ambient pressure. I thought about doing that but found it to complicated. Also I live in less than 500ft elevation, so it will never be a real factor. In the ending the whole measurement gives not more than a idea about the engines health, I think it's not about +/-0,2bar but the whole picture you get is interesting.

    0
    Ro80
    Ro80

    Reply 9 months ago

    That makes sense. But I live a few metres below sea level, so it doesn't apply to me.

    0
    Ro80
    Ro80

    Reply 9 months ago

    I've done some measurements now. No altitude correction because I'm living on sea level.

    First set of measurements are without conversion to 250RPM. All at higher RPM than 250RPM. Except for one, when my battery was running out. It was at 251RPM so I knew the pressure of the engine at 250RPM. Then a new set of measurements with conversion to 250RPM. All converted values were very close to the actual measured value at 251RPM.

    So the algorithm seems to be reasonably applicable for an NSU. For other reasons, however, it is better to convert to 300RPM.

    0
    SchuKingR
    SchuKingR

    Reply 1 year ago

    Hey MiroB4,

    Thx for the sketch. When I try to upload your sketch to my pro micro, my pro micro looses connection to the pc and seems to freeze.
    I tried to upload the sketch to my nano and it worked fine.

    Do you got an idea why that happens with my pro micro? I wanted to use it with my android phone and have already soldered the sensor to it.

    Thx

    0
    MiroB4
    MiroB4

    Reply 1 year ago

    Hi, I'm not an expert in arduino, so I can't hell you unfortunately. I use the sketch on an pro mini and it works fine. Running it an android would be cool, but I never had this working either.

    0
    EXPAP
    EXPAP

    Reply 1 year ago

    Hi, MiroB4

    What is "the dead-space compensation for the 13B MSP Renesis:1.039"?

    Please let me understand it.

    0
    M_Inja
    M_Inja

    Reply 1 year ago

    So the dead space is between the sensor and the rotor. So use a measurement caliper to find the space from the rotor to the opening. Then measure the length of the spark plug non fouler.

    The distance between the plug and rotor is your dead space.

    The 250 rpm standard can be calculated by finding the dead space
    of the sensor(hollow space inside) and removing that from the
    compression ratio of the rotary in general to calculate each rpm we
    would subtract the dead space from the measurement and just use the
    mazda ecu graph to calculate the normalisation values.

    0
    MiroB4
    MiroB4

    Reply 1 year ago

    The dead space adjustment should compensate for the volume change in the system once the sensor is added. As you add volume the meassured value is less than it would be without this extra volume.
    As an example:
    Renesis single face Vmax 654cc
    Comp ratio 8,5:1
    Vmin 76.94cc
    Example sensor volume (find yours) 2.85cc
    Vmin with sensor 79,79cc
    Cr with sensor 8.20 :1
    Pv=nRT
    nRT=constant
    P(sensor) x 79.79cc = P(adjusted) x 76.94cc
    P(adjusted) = P(sensor) x 1.037
    So here you'd need to add 3.7% to measured values. Measuring the sensores volume can be done the by filing it with water and than measuring the volume or weight of that water.
    To be honest I'd like to get rid of this compensation, I'd prefer to add a compensation that gives values like the Mazda OEM tester (theses values are higher). I still need comparing values to find the relation though.
    The 250rpm normalization has nothing to do with that.
    As rpm increases also compression increases so when comparing values we need to define a rpm number, Mazda choose 250rpm.
    I just took the Mazda diagramm an fitted a non-linear fit to find the correct correction value depending on the measured rpm and included it in the code.

    kompression.jpg
    0
    M_Inja
    M_Inja

    Reply 1 year ago

    Thank you, learned something new today.
    If only one had access to a Mazda OEM Tester and could compare the results from both testers

    0
    MiroB4
    MiroB4

    Reply 1 year ago

    Yes, that would be a real help! I have insrtuctions for the old OEM tester that seem to indicate that Mazda uses a 12,5% up-correction. The first measured values indicate a 11,5% correction which is close enough (might be to a different dead-sapce of the Mazda tester). Problem is I only have 1 measuremet with a direct comparison. I'd need more of those (with different compression values) to verify that the relation is linear and true.
    Easyiest would be to test the Mazda tester against a calibrated pressure source, e.g. 3-9bar, and extract the correction values. But once again a Mazda Tester is needed and a calibrated pressure source as well.

    Capture.JPG
    0
    Austen1972
    Austen1972

    1 year ago

    Hi Everyone,


    Is this post still live?I was in the process of making a RX8 Coil tester and compression tester,
    but I’ve just stumbled on to this when was looking for a pressure transducer suitable
    for the job for compression, which has thrown a huge CAT into the basket.I’m now wondering if I can somehow use Arduino to produce a data report from both testers.


    I’ve got some Arduino bits and bobs already coming through
    the post and I’ve downloaded the software. The best an funning thing about it I
    have no clue what I’m doing with anything Arduino, so I can imagine lots of
    toys getting thrown out of the basket when things don’t work.


    Robin

    0
    onno.stehouwer
    onno.stehouwer

    Tip 1 year ago

    Thank you so much MiroB4 and John! I just completed this project. I have some tips/additions.

    Here is what I bought:

    - Arduino Nano (Atmega328P-AU MCU)

    - 1/8" NPT to 3/8" NPT (I had this turned and cut to M14x1.25)

    - M14x1.25 die (make sure it's right handed)

    - 200 psi 5 V pressure transducer

    - O ring that fits on the M14 thread (I recommend 12.5 mm or less)

    - A soldering iron

    - Optional: The attached little box for the Arduino that I created.

    Steps:

    - Solder the green wire to A0 on the board (you might need to extend it)

    - Solder the red wire to 5V on the board

    - Solder the black wire to ground on the board

    - Print the box (don't forget to put the tranducer wire through the hole before soldering)

    - Put the Arduino in

    - Download the Arduino software from here: https://www.arduino.cc/en/Main/Software

    - Select the appropiate COM port in Tools -> Port

    - Select the appropiate board and processor (Arduino Nano and Atmega328P (Old Bootloader in my case)

    - Upload the sketch

    - Done!

    IMG_20180913_232327.jpg
    0
    MiroB4
    MiroB4

    2 years ago

    Hi John, I completed the code for bar usage and also added a 250rpm normalization fuction . How can I publish the code here?

    Thanks and best regards, Miro