Back to projects
Embedded

Strain-Gauge Force Measurement System

Low-cost force sensing for CNC machining. (Graduation project)

MATLABWheatstone BridgeSignal Conditioning

CNC machining needs accurate cutting-force measurement to catch tool wear, chatter, and drift before they ruin a part - but the industrial standard, spindle-integrated dynamometers, is expensive and hard to install. This graduation project (ENS 491-492, with Sıtkı Ataberk Kahraman, Alp Eren Yiğit, and Doruk Saraçgil, supervised by Erhan Budak and Farzin Abbası) built a low-cost, externally-mountable alternative: a strain gauge bonded to an aluminum block, positioned next to the machining zone without touching the CNC machine itself.

Strain gauge mounted on CNC test setup

Getting a clean signal out of a noisy sensor

A bare strain gauge's resistance change is tiny and buried in noise. We wired it into a quarter-bridge Wheatstone configuration with stabilized excitation and a high-gain instrumentation amplifier to get it to a usable voltage - and this stage went through real failure before it worked. The first gauge was lost to bonding failure from inadequate surface prep; we fixed it with better cleaning, surface neutralization, and adhesive technique before re-bonding. Cutting force and strain-gauge voltage were logged simultaneously against a reference industrial dynamometer via a DAQ unit at 15-20 Hz, giving synchronized Fref(t) / VSG(t) pairs to calibrate against.

Wheatstone bridge signal conditioning circuit

Filtering and fitting the relationship

Raw strain-gauge signals were noisy enough that correlation to reference force was weak (Pearson r between -0.09 and 0.63 across five raw datasets). A custom MATLAB pipeline (lvm_to_graph.m) applied an FIR low-pass filter - a sinc-based impulse response windowed with a Hann function - before fitting force to voltage:

% FIR design (sinc kernel * Hann window) and application
n = 0:N;
h = sinc(2*fc*(n - N/2)) .* hann(N+1)';
y = conv(VSG_raw, h, 'same');
 
% Constant-gain and linear fits underperformed at higher loads,
% so calibration moved to a quadratic model instead
p = polyfit(y, Fref, 2);   % F = a*S^2 + b*S + c
Fpred = polyval(p, y);

A constant-gain model - force as a fixed multiple of strain - turned out to be inadequate; at low loads it produced negative R² values. Linear regression did better, but a quadratic fit consistently beat it, especially as load increased and the strain-force relationship grew visibly nonlinear. Band-pass filtering (0.5-5 Hz) was the best-performing filter type, pushing average correlation to r = 0.92 and R² = 0.85 across datasets, versus 0.75/0.56 for low-pass and 0.68/0.49 for high-pass alone. A final PT1 low-pass stage at a 4 Hz cutoff smoothed the quadratic predictions into a stable, realistic force signal.

Measured vs predicted force scatter plot

Result

Quadratic regression combined with band-pass/PT1 filtering gave the closest agreement with the reference dynamometer across light, moderate, and heavy loading conditions - validating that an external, non-invasive strain-gauge rig can substitute for an embedded industrial sensor once the nonlinearity between strain and force is modeled correctly. The dataset and pipeline are built to extend into machine-learning-based tool-wear and predictive-maintenance work.