I got really tired of turning the crank of my IKEA Starska standing desk multiple times a day. Not only this is tedious, but also I can't keep on typing or using my mouse while doing so. And if I'm in a meeting, I look stupid. So I decided to motorize it. I know IKEA already sells an electrical version of it with a motor, but it's 200 euros more expensive and I already had one desk. Plus I like challenges!
After hours of googling and reading various blog posts (see the bottom of this page for links), after days spent waiting for all my orders to arrive, after minutes of tinkering, I finally got a working prototype!
That's far from perfect, I already have ideas about how to improve it, but for now that'll do... Down below is the shopping list for this project and the steps to build it. I hope this helps!
DC 12V Gear Motor (37D mm)
- Not just a regular DC motor. See the difference between a regular DC motor and a DC gear motor
- The diameter must be 37 mm, so that it fits perfectly under the IKEA Starska standing desk
- Torque must be equal to or greater than 2Nm (20.4 kg.cm) (info found here). Look at the stall torque, not the rated torque.
I bought and tried these 2, the 12V 72 RPM edition, that draws 3 amps ("stall current"), and the 12V 136 RPM one. According to the specs of the 72 RPM one, the stall torque is greater than 30 Kg.cm and it works perfectly! I can put weight on the desk (I tried more than 30 Kg) and it still raises the desk up easily! As to the 136 RPM, it works well too, up to 30 Kg, but it gets real close to stalling. Without much weight (a laptop and a monitor), it raises the desk at about 100 rotations per minute.
Alternatively, this other motor looks like a viable option too.
Aluminum L-Bracket for 37D Metal Gearmotors
We will use this to secure the motor to the desk. I got it from The PiHut.
Power adapter INPUT AC 110-240V / OUTPUT DC 12V 5A
I got this one from Amazon, works like a charm!
6mm hex key
I got this one Obi.de and I had to cut off the bent part of it. This will replace the original crank provided with the desk.
7mm shaft coupler
This will connect the motor to the hex key in the desk. Get a 7mm shaft coupler, since the motor comes with a 6mm D-shaped shaft. The hex shaft for the desk is 6mm too, so the shaft coupler must be 1mm larger.
DC motor driver
This will control the motor. I went with the MD10-POT from Cytron, that comes with a potentiometer (adjust speed) and switch (2 directions and stop), and that does not require any Arduino nor any code writing.
Careful: this is a regenerative motor driver (as described at the bottom here), meaning that when you stop powering the motor, it keeps spinning a bit before coming to a stop (due to inertia, while it's "braking"), and as a result the current flows back to the power source. As a consequence this driver should be used with a battery, not a switching power supply, because a battery can be charged but with a switching power supply the current has nowhere to go. For this project it is ok though as the desk is heavy and won't allow the motor to keep spinning when the power is cut.
Learn more about controlling a DC motor here.
DC Connector Barrel Plug Adapter 2.5mm x 5.5mm
This is used to connect the DC power supply with the motor driver, I got this one from Amazon.
- Duct tape
- A grinder, to cut off the bent part of the hex key
- Electrical wire
How to build it
- Cut off the bent part of the hex key with a grinder. We need a straight hex key.
- Replace the original crank with the hex key, mounted with the shaft coupler.
- Position the L-bracket with the motor at the end of the hex key and mark the final position with a pen.
Screw the L-bracket to the desk using a drill (slow speed)
Secure the motor to the L-bracket
Attach the power supply to the desk with a self-adhesive velcro, or just tape:
Connect the motor to the DC motor driver using wires, and tape the junctions for improved safety
Connect the power supply to the DC motor driver (pay attention to polarity) using the barrel and wrap it in tape for improved safety
And last, tape everything under the desk, make sure nothing is hanging. I protected some parts (soldered points) of the motor driver board with tape. I placed the switch button near the edge of the desk to reach it easily. A better design would be to put everything in a small plastic box.
A V2 of my project would be...
With a different motor driver, that has "Over Current" and "Under Voltage" protections, such as the MD13S from Cytron. Also with an Arduino and auto-raise feature based on how long it takes to raise/lower it. I don't need to have multiple programmable positions, nor an OLED screen. An auto-raise/lower feature can be tricky, for the following reasons (copy/pasted from https://github.com/cesar-moya/arduino-power-desktop/blob/master/MotorControl/MotorControl.ino):
If you activate auto-raise, and your desk was already at the maximum height, then - depending on your desk - on the IKEA SKARSTA it will hit a stopping point and the MOTORS WILL STALL for the amount of seconds that you recorded. In other words, if you recorded 30 seconds to raise, and your desk is already at the top position (or close), and you still enable auto-raise, you risk damaging your motors as a full power will be sent to them but they will be blocked. When using auto-raise and auto-lower you must ALWAYS be present and watching the desk, ready to cancel the operation if the motors stall for any reason.
And finally, a nicer design, where everything is not taped underneath but put in a plastic box.
- http://cesarmoya.com/blog/motorizing-standup-desk/: says 2Nm is needed for torque
- https://www.instructables.com/Motorizing-an-IKEA-SKARSTA-Table/: they use an optional endstop to count how many rotations the motor does, thanks to some flag put on the shaft
- https://hackcorrelation.blogspot.com/2015/09/ikea-skarsta-sitstanding-desk-hack.html: says 2Nm is needed for torque