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
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.
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.
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.
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.
Design files
Results
Every requirement in the approved proposal, measured on the integrated system between 22 October and 2 November 2026.
| Requirement | Specification | Measured |
|---|---|---|
| Bilateral feed | Force 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 drive | Discrete inverter and transistor-level CMOS driver, dead time 0 to 500 ns, no shoot-through | 20 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 control | FOC with stable torque at every lever position | Voltage-mode FOC with current estimated from a measured drive model, force within 1.3 % of command from 10 to 40 N |
| Drill sensing | Measure feed force and position, send both continuously | 2.000 kg read as 2.080 kg, quill within 0.31° of command, both sent at 200 Hz |
| Rotor sensing | Angle and speed every control cycle, speed error within 5 RPM | Updated at 1 kHz with no failed reads, speed within 2.3 RPM RMS of the encoder |
| Safety | Lever force under 42 N, stop within 100 ms on link loss, E-stop disables both sides | 40.9 N maximum, stopped 60 ms (lever) and 61 ms (drill) after link loss, drill bridge off within 7.0 ms of E-stop |
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.

