All projects

DJDB8 haptic drill-press feed controller

A motorised lever that feeds a bench drill press and pushes back with the cutting force, so the operator can feel the bit find the surface and bite into the metal, from a distance.

Course
EPR 400 capstone
Institution
University of Pretoria
Year
2026
Role
Sole designer and builder
Drill bit cutting into aluminium with chips flying, rendered close up

Overview

Feeding a drill by hand, you feel everything: the moment the bit touches, how hard the metal pushes back, when it's about to grab. Put a motor between you and the drill and that feeling disappears.

DJDB8 puts it back. The operator turns a haptic lever, and the drill press feed follows its position. Load cells under the workpiece measure the thrust, and the lever's motor reproduces that force in the operator's hand, unscaled, through a control loop running at 1 kHz.

The project runs through the whole stack: a three-phase gate driver designed at transistor level in a 0.18 µm high-voltage CMOS process, the same driver built as a discrete inverter PCB, field-oriented control firmware written from first principles on an STM32, a drill-side controller on an ESP32, and a live diagnostics console that runs in the browser.

1 kHzbilateral link, 1.0 ms delay
1.3 %force error, closest run
16 : 1printed herringbone reducer
330 nshardware dead time

See it working

A 60-second 3D film of the system, modelled, animated and rendered in Blender, with a robot arm standing in for the operator. Every number on screen follows the real force chain.

Watch the widescreen version

How it works

Two controllers share a wired link: the lever position goes to the drill at 1 kHz, and the measured thrust comes back at 200 Hz. A laptop console shows the whole loop live.

System diagram: the haptic lever unit and the drill-side controller exchange position and force over a 1 kHz link, with a laptop console attached to the lever unit. Haptic lever unit, operator side STM32F405FOC and bilateral control Inverterdiscrete IRLZ44N bridge Dead-time channelsRC delay, 330 ns measured DF4015 BLDCgimbal motor, AS5600 encoder 16 : 1 herringbone reducer to the lever lever position measured thrust wired UART link1 kHz out, 200 Hz back Drill press, remote side ESP32feed control and sensing BTS7960feed motor driver HX711four 50 kg load cells Feed gearmotorFIT0185, 131 : 1 Workpiece on the load platform, 32 kg cap Laptop consolebrowser app over Web Serial at 460 800 baud live telemetry

Renders

Stills from the Blender scene, rendered at high sample counts. Select one to view it full size.

The real build

The prototype on the bench, from the lever unit to the drill press, plus a clip of a hole being drilled through the haptic lever.

Drilling through the haptic lever
Haptic lever unit
16 : 1 herringbone gearbox
Drill side and load platform
Three-phase inverter PCB
Inside the lever unit
Lever and handle
Printed gears

Design files

Inverter PCB layout: two copper layers, three identical phase sectors
CMOS gate-driver layout, one phase cell in XH018 0.18 µm HV
Assura LVS: schematic and layout match, no DRC violations

Results

Every requirement in the approved proposal, measured on the integrated system between 22 October and 2 November 2026.

RequirementSpecificationMeasured
Bilateral feedForce replicated unscaled up to 40 N, loop at least 100 Hz, latency under 10 ms, tracking error under 15 %Force at the grip within 1.3 % of command (closest run, mean 3.5 %), 1 kHz loop, 1.00 ms link delay, 2.7 % tracking error, quill within 0.05 mm of the lever
Motor driveDiscrete inverter and transistor-level CMOS driver, dead time 0 to 500 ns, no shoot-through20 kHz PWM, 330 ns measured dead time, no shoot-through in any test. CMOS: about 10 ns non-overlap (simulated), DRC and LVS clean
Torque controlFOC with stable torque at every lever positionVoltage-mode FOC with current estimated from a measured drive model, force within 1.3 % of command from 10 to 40 N
Drill sensingMeasure feed force and position, send both continuously2.000 kg read as 2.080 kg, quill within 0.31° of command, both sent at 200 Hz
Rotor sensingAngle and speed every control cycle, speed error within 5 RPMUpdated at 1 kHz with no failed reads, speed within 2.3 RPM RMS of the encoder
SafetyLever force under 42 N, stop within 100 ms on link loss, E-stop disables both sides40.9 N maximum, stopped 60 ms (lever) and 61 ms (drill) after link loss, drill bridge off within 7.0 ms of E-stop
Force at the grip on the load cells: commanded against measured, five runs
Position tracking: the quill follows the lever through steps and a 3 mm sine
4 mm bit through 10 mm 6082 aluminium: median 12.5 kg, peak 16.8 kg thrust
Drilling pine: thrust at the drill against force rendered at the lever
One-way link delay over 1000 frames: mean 1.00 ms, worst 1.01 ms
Phase A gate signals on the scope: 330 ns mean dead time
Motor speed at ±60 RPM: command, observer estimate and encoder
Safety: E-stop to drill bridge off, and time to stop after link loss

Read the report

The full final report: literature, approach, design calculations, simulations, the discrete and CMOS hardware, firmware, every qualification test and the discussion. 90 pages.