So, I had a perfectly functional height-adjustable desk. The only problem? It had a manual crank. Naturally, instead of spending 10 seconds turning a handle, I decided to spend countless hours engineering a solution. As one does.
The result is my DIY Arduino-powered sit-stand desk controller!
I repurposed a 12V windshield wiper motor, connected it to the original desk mechanism, and built a custom controller around an Arduino Uno and an IBT-2 motor driver.
A few features I've managed to squeeze into it:
Proportional joystick control – push a little for slow movement, push further for full speed.
Soft start and stop – because launching my monitors into orbit wasn't part of the plan.
Current monitoring using an ACS712 sensor, with configurable overcurrent shutdown.
Upper and lower limit switches to prevent the desk from travelling too far.
OLED display showing motor current, movement direction, PWM output (with a little progress bar, obviously), and limit-switch status.
Physical emergency power cutoff, just in case the electrons decide to misbehave.
Custom 3D-printed enclosure housing the electronics.
The motor typically draws around 10–11 A under load, and I've configured a 20 A software overcurrent threshold.
Everything is running on a 12V power supply, and I'm genuinely surprised at how smoothly the proportional joystick control works.
Is it cheaper or easier than buying an electric standing desk? Probably not.
Was it necessary? Absolutely not.
Did I learn a ridiculous amount about Arduino programming, PWM, motor drivers, current sensing, wiring, and 3D printing? Absolutely.
And now I get to adjust my desk height with a joystick, which, let's be honest, is objectively cooler than a button.
I've attached a couple of renders of the controller, including a look at the electronics inside.