Jason's website     |     home
My software dyno
A dynamometer is a necessity for engine tuning work.  I use a software dyno which I wrote myself using Mathcad and Matlab.

Absolute accuracy is not needed for tuning, but consistency is.  Here is a plot showing the consistency of one run after another, and a comparison against a Dynojet run.

I got the idea from Home Dyno;
StreetDyno is the same idea.


This is a description of how it works:

A Dynojet (they have a webpage somewhere) is a chassis dyno where your car is strapped down, your tires turning against big heavy rollers. You let it idle in 2nd gear or 3rd
gear, the wheels turning slowly. Then you floor it, and the engine will accelerate the rollers. There's a pickup that's clipped onto an ignition wire, which monitors RPM. How fast
the rollers accelerate is a function of the mass of the rollers and power delivered from the wheels. The computer calculates then graphs torque and power.

The Home Dyno is a software program, where instead of heavy rollers, your engine will accelerate a known mass.. the car itself.

You do a 2nd gear run on a flat road, starting around 1000 rpm (~15kph) to redline (~90kph). No clutch slipping, no wheel spinning. That is, you start the car moving in 1st,
then at 15kph shift into 2nd, keeping it moving at a constant speed, then you floor it. A timing light pickup is clipped onto a spark plug wire, and is connected to a digital audio
recorder (like a MiniDisc recorder or a HiFi video camera's mic input). The "sound" the engine makes while accelerating is recorded into the recorder. You then download the
sound into a PC via the soundcard's mic input (it's turned into a .wav file), and process it with the Home Dyno software. Voila, torque and power curves.

I wrote my own version, for various reasons, using some math software that I use: Matlab and MathCad. I used the signal in the Miata diagnostic connector ("IG" pin) because it
is cleaner and easier to process than a timing light pickup signal.

Here's a post I did on a little bit on the nitty gritty details of my program:

 Message: 3

Date: Mon, 16 Aug 1999 18:56:20 +0800


Subject: Re: Dyno runs

I did my own version of "Home Dyno", for various reasons, with code that runs on a special math package called "Matlab" + some processing in MathCad. I found the pulse
detection, data processing, smoothing functions, and equations pretty involved - it took me a few weekends to get results I was happy with. The smoothing was the hardest part.
Lots of experimentation to see which worked best. The road has to be flat, and in my experience a road that looks flat may not be.

If you use the same road, and start at the same spot, consistency is pretty good - subsequent readings are typically +/- 2%. I'm able to get torque measurements down to 1000
rpm. +4hp from a timing change was very very plain to see.

If the Link gathers data every 0.2 second then the heavy smoothing required may affect resolution. My program senses the location of every pulse from the diagnostic connector
(every 180 deg crank rotation) and coincidentally the best smoothing compromise I found was 0.2 sec. FWIW the best smoothing I found was "quadratic spline interpolation"
provided in MathCad.

Other things to consider: 1% error in tire diameter is 2% error in readout, I assumed a (stock) Cd of 0.38, and I assumed/calculated a rolling friction coefficient from a coast
down time from 50kph to 30kph (or something like that).

There is some noise and jitter in the signal, even from the diagnostic connector, especially in a J&S'ed Miata :-). Still much nicer than the signal from an inductive timing light
pickup though.

Cheers,

Jason


A mail from Gary Morisson

Date: Sun, 15 Aug 1999 16:18:22 +1200

From: "Gary Morrison" <[email protected]>

Subject: Re: Dyno runs


> I have played with Home Dyno, and had a reasonably successful result. Jason

> Cuadra has played with this and also with a program he wrote himself. He

> emailed me output from that. In each case the calculation is based on rpm vs

> time and takes account of vehicle weight, gear & diff ratios (use 2nd gear

> for home dyno), temperature, aerodynamic drag etc. The homedyno output, and

    that produced by Jason from my data, both were much the same as a "real"
    dyno.

 Sequence is:

Use software PLL to read pulses - find pulse locations.

RPM is inverse of pulse spacing

Extract RPM vs. time

Smooth it a bit.

Do a curve fit using quadratic spline smoothing ("loess")

Convert RPM to velocity (gearing)

Derivative of velocity is acceleration

That's it.