Gearbox Dynamometer
- ThriftyBuilder
- Mar 26
- 7 min read
Updated: Mar 31
Author: Mateo Peña Doll
I built this custom gearbox dynamometer (aka dyno) to test marine transmissions I design and build from the ground up. Typically, my transmissions serve as a lower-unit gearbox for hydrofoiling electric boats.
As a consulting mechanical engineer in the electric marine industry, I needed a way to run up to 1000 hours of durability testing on the transmissions I develop. But with dyno labs charging $100+ per hour, outsourcing was not an option for me. The solution? Build my own AC Dynamometer. What started as a necessity quickly turned into a fully integrated, data-driven test rig, complete with custom torque measurement, water cooling, CAN bus integration, and a Python-based dashboard.
This project became a thesis-level deep dive into mechanical testing. From designing the 8020 aluminum frame, tuning motor controllers, to calibrating strain gauges, I picked up what felt like a degree in control systems and test engineering. Many things I learned the hard way. This post is all about the dyno itself: how I built it, the challenges I ran into, and the technical details behind getting it to work.
Dyno Overview

In essence, this dyno measures the shaft power into the gearbox, and shaft power out. Shaft power = torque * speed. With the right parameters, I can simulate anything from light cruising loads to full-throttle acceleration, while monitoring how the gearbox is performing.
The dyno system works by inputting power to the Drive Motor, and then regenerating power output from the Dyno Motor. The system has a variety of losses, mechanical and electrical, so the regenerated power is a fraction of the input power (about 70% overall efficiency at optimal conditions). The approximately 30% losses end up coming from the 220VAC split-phase input to the power supplies (from the grid, costing money). I'll talk more about the power supplies below. The dyno can handle about 30kW continuous, and 50kW peak at the Drive Motor.

I selected PMAC motors in the power range I needed, ultimately going with the Motenergy ME1616. For control, I chose Sevcon Gen4 Size 6 controllers, well-documented and widely used. Getting the ME1616 to work with the Sevcons required tuning using the Sevcon DVT tool. At this point I am versed in Sevcon DVT. Many thanks to Motenergy and the Endless-Sphere forums for supporting me with motor control information and config files.
Sensors
Measuring torque and speed was not trivial, and beyond that, several other parameters track system behavior. All data is captured using an Arduino-based DAQ system running my custom program.
Torque & Speed - Measured at both the gearbox input and output shafts
Efficiency - Output shaft power divided by input shaft power
Temperatures - housings, oil, water, and ambient
Internal Gearbox Pressure
Since the Sevcon controllers have their own slew of data, and require monitoring / calibration, I also monitor:
Motor and Controller Temperatures
Voltages and Currents
Motor Velocities and Torques (reported)
Many other minutia

For sensors, I used low-cost, Arduino-compatible modules. The Arduino Due captures sensor data, transmits it via CAN bus, and also acts as an error detector and fault trigger, stopping the system if needed. Each sensor had it's own communication protocols, noise sensitivities, and posed unique challenges for me to setup. I go into more details about learnings and future improvements at the end of this post.
Torque Sensor: Daysensor DYN-200 (500 Nm, 4-20mA output)
Strain Gauge Amplifier: SparkFun SEN-13879 (HX711 based) - love these!
Pressure Sensor: Honeywell HSCSANN015PA2A3 (I2C)
Current Sensor: Adafruit INA228 (I2C) - Unfortunately I never actually got this one to work
Thermocouple Amplifier: Adafruit 1778 (AD8495, K-Type)
CAN Transceiver: Copperhill SN65HVD230
Dashboard and Database
Managing all 50+ data points required setting up an automated data collection system using MongoDB, which stores everything for post-analysis. To manage the database and monitor the data real-time, I built a custom Python dashboard using Tkinter, with CAN bus integration using an IXXAT to USB converter. Special thanks to ChatGPT for doing most of the leg work on the coding :)


Power Supplies
The way I provided 10kW of power to the dyno was thrifty, if I may say so myself. As mentioned, the system runs at about 70% efficiency under optimal conditions, and the Drive Motor power requirement (input power to the gearbox) was set at 30kW continuous. That meant I needed at least 9kW of continuous grid power to cover system losses. To be clear, the gearbox itself has far lower mechanical losses, most of the inefficiencies come from thermal losses in the motors.
I started with an old NiMH battery pack from an electric car conversion I did years ago. The problem? Slow charging and terrible efficiency (~65%). So I went hunting for a better power source and found that the cheapest way to get power was refurbished server power supply units (Server PSUs). I ended up selecting the platinum grade HP DPS-1200FB-1 A (RMN: HSTNS-PD19, P/N: 570451-101)​. I strung 8 of these together to build a 10kW power supply for about $125, now that is cheap power! I used this breakout from WizardOfWire. Thank you to the online community, including Seidel-Philipp's blog and this MoneroMining reddit post, for guiding me through selecting, floating, and operating these PSUs.
The PSUs were floated and connected in series to deliver 100A at 100VDC (disclaimer: these PSUs aren’t rated for 100V, so this setup is not safe by the book, but it does work for me).


Torque Calibration
The input reaction torque sensor was built into a custom motor plate with flexural members, where I placed strain gauges to measure torque-induced strain. I used the Omega shear strain gauge SGT-2H/350-SY13, with Vishay precision resistors PTF65350R00BXEK for the Wheatstone bridge. Initially, I started with a single strain gauge, but lateral forces introduced too much error. Adding a second, radially symmetric strain gauge allowed for differential strain measurement, significantly improving accuracy.


To calibrate the input reaction torque sensor, I used the DYN-200 dynamic torque sensor as a reference. I wrote a custom Arduino program that performed automatic stability detection, ensuring readings were only logged when they were steady. The program then output a correlation curve between applied torque (Nm) and measured strain, making it possible to accurately map strain gauge readings to real torque values.



Example Results
I cannot go into too much detail about the results from testing due to confidentiality, but I can give you a general example with some redactions.
The most important results from the dyno are the gearbox efficiency. I ran the dyno at constant speed, and varied the torque. Here is a graph where you can see the input and output shaft power of the gearbox, with efficiency. I filtered the data where acceleration was near zero, by taking derivative of velocity, which is shown on the graph highlighted in yellow. Only the highlighted areas are of interest, because the transient results would include changes in momentum of various dynamic components (not of interest for this analysis).

If you take the highlighted efficiency areas, and plot it on a nice color coded graph, you get the following. I then repeat this at various velocities.

Learnings from Gearbox Dynamometer
I learned an extraordinary amount building the dyno. Most of my frustrations and debugging were related to sensors and noise. EMI from the motor controllers took down my CAN bus regularly (and other digital communication lines), EMI also introduced noise into my analog sensors, and ground differentials over high current conductors was brutal to manage.
Sevcon Grounding
The SevconGen4 is considered a low-voltage system, and the designers decided to make it a single voltage system. Voltage is shared between the logic and power electronics. The Size 6 controller can handle up to 550A (I have only pushed it to about 300A), so the voltage drop across the negative power cable between the two Sevcons wreaked havoc on IO and the CAN bus. I managed to mitigate this with a giant 2/0 negative cable tied between the two Sevcons. In the future, I would certainly try to source a controller with isolated logic. The Sevcon Dragon 8 series has this isolation, but they are underpowered for my application.
Analog Sensor Isolation
Reading analog sensors in a noisy environment (EMI) proved to be a challenge, especially with any ground leaks or loops. The best approach is to isolate the analog sensors from the power system, specifically keeping the Arduino isolated from the Sevcon controllers. Currently, the only reason the grounds are shared is for CAN bus communication, but an isolated CAN transceiver would solve this.
Additionally, some sensors introduce their own ground leaks, which causes problems and are hard to detect. A fully isolated sensor architecture, where each sensor is isolated individually, would improve reliability significantly.
Moving to a Dedicated DAQ System
Instead of managing multiple analog sensors on the input pins of the Arduino Due, a more robust solution would be using a purpose-built data acquisition system (DAQ). The DataQ DI-4718B-E looks promising, as it supports a wide range of inputs and would eliminate the overhead of manually integrating each sensor. The main challenge is communication between the Arduino (which handles the CAN bus) and the DataQ (sensor acquisition).
A possible solution is serial communication between the Arduino and the DataQ. According to DataQ’s GitHub repository, integration over Ethernet using UDP packets could achieve 1 to 3 ms latency over a local network. Since this would not require internet access, I could simply connect both devices to a local network switch for high-speed communication.
Another option is switching to a Raspberry Pi or Teensy, which are USB hosts (unlike the Arduino, which is just a USB device). This would simplify integration with the USB-based DataQ, and maintain real-time data streams over the CAN bus.
These improvements would significantly reduce noise issues, improve sensor accuracy, and streamline data acquisition, making the dyno system more robust and scalable.
Thank you very much for reading!