Easy Prony Brake Dyno for Small Motors and Engines

Complete Info on build, program, test, and data collection, for a budget prony brake dyno for small motors and engines.

I am building a small diesel engine and needed an affordable dyno to do some testing after I get it running. I still have a ways to go on the engine, but I DIY'd a simple prony brake dyno and was able to test and record the data from a sewing machine stepper motor that is rated at about 1kw. RPM is collected thru a hall sensor and the PULSEIN function, rather than interrupts like others seem to use. As soon as the pulsein function reads the micro secs for one revolution and converts that to RPM, a force reading is taken from the prony brake lever arm pushing against the load cell. That force, along with the length of the lever arm gives the torque, and that along with the RPM is used to calculate the HP (or kw). The prony brake method is a very old method and takes a little eye-hand coordination to get a good run of the dyno that yields a nice looking output graph without weird humps and dips in it. Because a dyno run only takes a few seconds, doing repeat runs is quick and easy so long as the friction part of the prony brake, or the motor are not over-heated.

Here is the code, a napkin schematic, and a you tube video showing the hardware, electrical, setup, and a dyno run, and full explanation. The video is kind of long and geeky, but there are some jump-to times in there if your attention span is that of a puppy, LOL. I spent less than $40 USD on this and it is pretty ok for that. I am sure it can be improved upon in all aspects, but it is a good start considering what ANY kind of dyno SW or HW cost (gasp!).

I have credited a couple of forum members with some of the code, and I am grateful to them for making this first Arduino project a success. Their help is listed in the opening comments of the code.

I don't really have any questions at this time, but comments (constructive, of course, ha ha) are welcome and appreciated.
Lloyd-ss


```cpp
//** Prony Brake Dyno
//Or any other load absorbing dyno
//Arduino sketch and its associated Excel program for instrumentation
//of a small prony brake dyno as demonstrated on YouTube
//***https://youtu.be/7QtO2RXxbck?si=lA_l2PzZd3d5cmJ7***
//by Lloyd-ss (aka, on YouTube) the Airgun Lab
//Uses Hall Effect sensor and 5kg Load Cell with HX711 amp board
//Sketch for Arduino Nano by Lloyd-ss
//
//But based on the work of ** Net^Devil ** for the new "PLX DAQ v2" and
//its associated Arduino Sketch
//Thank you, Net^Devil, your work is much appreciated!!
//*
//And also based on the Load Cell work and library done by Rob Tillaart
//FILE: HX_kitchen_scale.ino
//AUTHOR: Rob Tillaart
//PURPOSE: HX711 demo
// URL: https://github.com/RobTillaart/HX711
//
////////////////////////
// Library file for the loadcell amplifier board
#include "HX711.h"
HX711 scale;
//Pin assignments for the output pins of the HX711 loadcell amp board
uint8_t dataPin = (A5);
uint8_t clockPin = (A4);

// variable for the sequence counter for use in the Excel program
int i = 0;
//
//This is the input pin that receives the output from the Hall Effect sensor
const int rpmPin = 2;
long int duration = 0;
long int RPM = 0;
int torque = 0;

void setup() {

  //A5 is the data output from the loadcell amp
  //int sensordataValue = digitalRead(A5);
  // open serial connection at 9600 Baud
  Serial.begin(19200);
  // Prep the Excel spreadsheet for new data
  Serial.println("CLEARDATA");  // clears the excel spreadsheet starting at row 2
  // define 8 columns in the Excel sheet named: Date, Time, Timer, Counter, RPM,
  //Force, Torque, and HP. Data will be written to these columns
  //%Serial.println("LABEL,Timer,Counter,RPM, Force");
  //
  // These next 3 lines are start up info for the loadcell amplifier. The offset and scale
  //need to be determined by running the calibration routine from the library mentioned at the
  //top of this sketch. The offset adjusts the "Zero" point. The scale makes the
  //loadcell output read directly in pounds (or grams, etc.).
  scale.begin(dataPin, clockPin);
  scale.set_offset(610500);
  scale.set_scale(211831);
  //This sets the pinmode to recieve the High and Low readings from the Hall sensor
  //The pullup seems to be necessary for signal stability
  pinMode(rpmPin, INPUT);
}

void loop() {

  //Hall Effect sensor for the RPM
  //****HiLetgo NJK-5002C 3 wire Hall effect sensor****
  //Use the Pulse-In function to time how long it takes the magnet(s) on the
  //motor shaft to turn one revolution. Mine uses 2 magnets at 180 degrees
  //so the timing is for a half revolution. Using 2 magnets improves the data
  //acquisition at low RPM. Magnets must be accurately space at 180 deg for accurate readings.
  //Only one magnet is needed for higher rpm.
  duration = 0;
  duration = pulseIn(rpmPin, HIGH, 10000000);
  // The pulseIn number is in micro seconds.  This numerator over the duration
  //has to found by trial and error until the correct RPM is
  //printed in the spreadsheet.
  RPM = 57058000 / duration;
  //
  //Now that there is an RPM data point, the Loadcell can be read to find out
  //the force from the prony brake lever arm. (I don't know what the 5 does.)
  Serial.println(scale.get_units(5));
  float force = (scale.get_units(5));

  // Convert the analog force reading in pounds to torque by multiplying
  // by the torque arm length in feet
  float torque = (force * .71);
  float HP = RPM * torque / 5252;
  //print the data values into the spreadsheet, and then continue to the beginning of theloop.
  Serial.println((String) "DATA,TIMER," + i++ + ", " + RPM + " , " + force + ",AUTOSCROLL_20");
  delay(1);
}



Here is a napkin sketch schematic.

![DynoSchematic|690x479](upload://516zYXQlqwzWYbqzOx0FCWMiUHu.jpeg)


And here is the you tube video that shows all of it.

https://youtu.be/7QtO2RXxbck?si=NSZDGIm_fuOKpI4T

(I might have messed up the upload of the schematic and the you tube link, so here it is again. My apologies.)

Here is a napkin sketch schematic.

And here is the you tube video that shows all of it.

Hi, Moving here from the PLX-daq thread.

Here is what i changed in your code to make it easier for my part :

 //Pin assignments for the output pins of the HX711 loadcell amp board
uint8_t dataPin = (A5);
uint8_t clockPin = (A4);```

to 

```//Pin assignments for the output pins of the HX711 loadcell amp board
uint8_t dataPin = (6);
uint8_t clockPin = (7);

Those pins where used in the calibration program, so no need to change anything when uploading your dyno program.

When i tried writing D6 or D7 it didnt work (syntax error or something like that)
My understanding is that the amp (ADC converter) for the load cell converts it from like 4-20mA to 0-5v DC. So isnt that a digital signal ?
Suggestion to help beginners is writing "idiot" proof instructions,
It would have made my life easier :smiley:

1 Like


Here is how i did it!

@nystromer
Nice, I like the neat schematic. So, the only real difference between our 2 setups is the pin assignments for the digital output the HX711. The pins on the nano are quite versatile and many of them can be change from (assigned as) input or output, digital or analog. Also, the numbering system is quite confusing. Some pins have single digit numbers, but the board itself has various A or D numbers stenciled on it.

The output from the HX711 is a digital output, not analog. The loadcell itself outputs an analog signal to the HX711, which then converts it to digital. I am by no means an expert and might even be wrong, but here is how it works.

The loadcell has a "full bridge" on it that consistsof 4 resistors wired in a diamond pattern. An excitation voltage (that can vary), but in this case it is 5Vdc from the nano, is applied to 2 opposite corners of the bridge. Then, there is a low level output from the other 2 corners. This output is analog because it varies from (a guess) a few millivolts/volt of excitation, to several milivolts of output if a large force is applied to the loadcell. This analog output can vary quite a bit and is not exact because of measuring capabilities of the nano. For example, the output might measure .021 volts, or .0215 volts. The HX711 converts the analog to a digital (A to D convertor) digital signal. For example, if it is a 10 bit convertor, the output will vary from 0 bits to 2^10 bits (1024) depending on the convertor and how it's parameters are set in the nano. So, for example ,the digital signal if set to out put 0 to 5 volts digitally,will output one bit per 5V/1024=.00488V. Please do some reading for a better explanation of the A-D conversions. Once you understand the concept it is easy.
Lloyd

1 Like

@nystromer
You mentioned mechanical and hydraulic. Is that still in the concept stage? My setup, for now, is strictly proof of concept, although I hope to actually build it with some type of energy absorber in the future, if I get the diesel engine to work.
I am very interested.
Thanks,
Lloyd

1 Like

I have seen it done, Here in Sweden moped culture is a big thing, 2 stroke mostly. So anything from old to new gets pushed to the limits. Since 2 strokes are so sensitive to fuel/air mixture, Being able to set it up in an absorber dyno and run it with a couple of Nm of load you could fiddle with the mixture to get it perfect.

I have a hydraulic pump , hoses and a manual throttle valve ready to build it, Concept is pretty easy if you know how to weld etc.

The engine will be mounted on a "universal" mount, The output will be connect to a driveshaft by chain and sprockets , where RPM is measured, And the pump is connected. The pump will "float" on the axle, so when fluid is being restricted, the pump will want to turn, A torque arm will be fastened to it. That way we have the Force :slight_smile: Will draw a schematic/blueprint for it so it might be easier to understand.

Thats the idea behind it.

Hopefully this is understandable :smiley: Made in a Electric schematics program. Think of it as a view from above of the dyno in real life.


Something like this!

1 Like

If measuring peak Horsepower, Full throttle on engine, Start to add more restriction to the hydraulic pump = more force on load cell, Until engine starts to bog/loss of power. Your program makes the curve and horspower readable!

@nystromer
The hydraulic system has been proven many times to work well, and since you already have the pump and hoses and valve. The picture of the hyd set-up actually has very little welding that I can see. Mostly a bolted construction. Very straight-forward.
I had considered using a disc brake and hyd caliper for the load. The chain ratio between the engine and disc brake would have to be figured to not over-rev the disc brake.

Nystrom, a question:
One thing I have noticed about the Arduino sketch and the Excel sheet is that it only updates into Excel about once every 0.9 seconds, no matter what the motor RPM is. I am not sure where/how the update frequency is controlled, so, some testing will be needed to figure that out. Every 0.9 sec might be fast enough for some types of tests, but not others.
Sometimes, the data transfer seems to get slow and has to finish populating the spreadsheet after the data is collected. The data all looks correct, it is just late getting intot he spreadsheet.
Did you notice that? Lloyd

Yes i did notice that, I didnt think much about it at the time. But 0.9 sec is fine for me at the moment. But yes faster would be pretty slick. Atleast for a more accurate curve in excel.

The welding isnt needed. Mine will be more heavyduty. Im making it so it can handle max 25-30hp engines. Plus i like welding :slight_smile:

1 Like

Use a disk brake meant for motorcycles/mopeds. Inexpensive both new or used. Then gear it the same as "the" bike would🙂

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.