I built this to automate the plotting of camshaft profiles.
30 years ago I sat with a piece of graph paper, a dial indicator, and a degree wheel for several days plotting camshaft profiles for a race engine. After gaining some experience with stepper motors and microcontrollers I decided to make a tool to do this automatically.
The design is my own, there are a few existing variations of Arduino camshaft measuring tools on the web and I did get inspiration from several of these as well as using modified code from GitHub and and other sources.
I posted a video of this in operation.
The Hidden Dial Indicator Protocol
Building a race engine requires measuring cams down to the ten-thousandth of an inch. A standard micrometer can't map a sweeping curve. The Arduino Camshaft Measurement Tool mathematically intercepts real-time displacement telemetry from a digital dial indicator, plotting an infinitesimally precise, 360-degree lift graph directly onto your laptop!
A cheap $25 digital dial indicator looks completely standalone, but hidden under a plastic flap are 4 microscopic metal pads (VCC, GND, CLK, DATA).
- The Logic Level Trap: These generic indicators run on a tiny 1.5V button cell battery. The Arduino is 5V. If you plug them together, the Arduino will instantly obliterate the dial indicator.
- You must utilize an NPN Transistor Level Shifter or a dedicated 4-channel
3.3V-to-5Vlogic level converter circuit. - The data does not stream; it bursts. The dial is the "Master." It sends a clock pulse
(CLK)every few milliseconds, followed by 24 bits of pure, raw binary(DATA).
Intercepting and Plotting the 24-Bit String
The Arduino must listen passively and act as a high-speed data catcher.
attachInterrupt(digitalPinToInterrupt(CLOCK_PIN), readBit, FALLING);- Every time the clock dips, the Arduino instantly reads the DATA pin
(1 or 0). - It shifts this data mathematically into a massive
longinteger representing inches or millimeters. - The Graphing Execution: The Arduino is physically connected to a Rotary Encoder attached to the camshaft's spinning centerline.
- At
0 degrees, the lift is0.0000". - At
90 degrees, the lift is0.4560". - The Arduino serializes BOTH numbers
(90, 0.4560)into the Serial Monitor, allowing the PC to literally plot the mechanical "profile curve" of the massive metal lobe!
Precision Machining Needs
- Arduino Uno/Nano (Sufficient for capturing standard dial protocols).
- A Harbor Freight or generic Digital Dial Indicator (With the secret access port exposed).
- A 3.3V to 5V Bi-Directional Logic Level Converter Module (Non-negotiable; you will fry the tool without it!).
- High Resolution Optical Rotary Encoder (To track camshaft rotation degrees).
- A heavy, magnetic metal measuring stand (Absolute physical rigidity is required; any vibration destroys the micro-level readings).