Introduction: Poor Man's Electric Powered Standing Desk
So it goes like this: everyone wants to have a standing desk. Sitting is the new smoking, it does all kinds of horrible things that you would want to avoid. So naturally you would go shopping for a standing desk, but if you are anything like me, that is constrained with funds, you would be blown away to learn starting prices for a piece of such an advanced furniture. However, there is an alternative for folks like us - behold the Skarsta desk. The VW beetle of standing desks if you will. Meaning - it operates by a hand crank. And yes, you kinda get another exercise for free together with your standing, but honestly, it gets old very quickly, and especially because of all the awkward positions that you have to assume to spin that thing. And there is nothing more dangerous to your back than sitting, except doing some power exercises in an awkward position.
But luckily for us, at the other end of that crank shaft we got an 6mm hex. Something so common, you literally have some few of those lower quality 6mm allen key lying around with no purpose. This, and a motor from an old audi power seat made a perfect picture. Working together, they would free up precious human power from diminishing work of repetitive revolving a crank in order to lift a thing.
Step 1: Planning
As in every good project - planning is important. Boxes full of unfinished stuff have taught me that. "To the drawing board!" - he exclaimed. It is really a full-stack project. It goes from designing mechanical parts, assembling them, soldering some electronics and writing a little bit of code.
First of all I made a block scheme (in my head) of how everything will work (I'm kidding, the block scheme was a last thing I've done, post factum).
Then was component selection. Since the project is called "Poor's man standing desk" everything was designed around the components I had laying around.
Step 2: Component Selection
For the motor I took Bosch 0130002487, that has been collecting dust since that time I bought a spare drivers seat for my car, that later turned out to be useless. It is not the most optimal, choice, as it is high torque, low RPM motor. The "high torque" part - is great, but the low RPM, is… well, it gets the job done. I recon something like motor from windshield wipers would do better. As you will see later, the whole apparatus is modular and non invasive to the table, so it would be extremely easy to replace the motor with any other motor.
For the controller board, I happen to have CyPress CY8CKIT-145-40XX PSoC® 4000S CapSense Prototyping Kit. At first I was thinking of arduino and some good old buttons or and encoder, but hey, it’s 2018 so we must have a capacitive touch sensor!
I also picked DC 16A Double Brush Motor Driver H-Bridge with PWM control of ebay and a 12V DC power supply. Since I couldn't find any datasheet for the motor, I went with a scientific guess and picked up a 15A PSU and 16A motor driver. Yes I know that the PSU should have had a higher current capabilities, but remember "Poor's..". My scientific guess was that the motor will not get into such high loads anyway, and later it was proven to be so. Even better, when I was later testing it - under extreme load turned out that the motor probably has a thermo cutoff relay, as when it would get too hot, it would turn off, and would be working again later when it would cool. But more on that later. I must say that in the finished version of the project no motor, or any other component overheats, or is pushed to work in harsh conditions.
The Motor Controller has input for direction control (which is crucial for standing desk application, as you also might want to get your desk back down) and PWM control of RPM.
Lastly, to power the CyPress controller board, I had some homemade 12V->5V DC/DC converter laying around. But virtually any 5V DC/DC converter will do here.
Also a 16A power switch that is pretty standard and can be found in any home depot like shop. Most importantly that it would fit in 25.5 x 10mm hole)
Mechanical components are all printable, you just need some bolts and nuts. Optionally, you can buy the belt, as I used standard 124L100 timing belt for the drive, but I have printed it out of TPU, and it worked just fine. It is a little too flexy, but the tensioner pulley solves that problem.
Step 3: Full List of Components and Links
- Motor: Bosch 0130002487 link
- Motor Driver: link
- PSU: link
- Controller Board: CY8CKIT-145-40XX PSoC® 4000S CapSense Prototyping Kit link
- Aluminum square tube 12x12mm, some 200mm of length link
- x4 6003-2RS link
- x2 629-2RS Bearings x2 625-2RS Bearings link
- 6mm Allen key, at least 70mm long
- Bolts: link
- x2 M8x50
- x1 M6x50
- x2 M6x10
- x5 M4x35
- x2 M3x20
- x6 M3x15
- x3 M3x6
- x5 M2x6
- Nuts: link
- x2 M8
- x3 M6
- x5 M4
- x8 M3
- x2 M2x10 Dowel Pins link
- Stainless Steel Rod 3mm, 56mm of length link
- Flat Ribbon Cable 26 strands, 1.27mm pitch, 1m length link
- About 2m of 18 AWG 2 strand wire, and an outlet plug
OPTIONAL: 124L100 timing belt link
Step 4: The Belt, the Gears, and the Limit Switches.
So now that we have all the components time for the most interesting part - design of the printed parts.
I should say that there was one more prototype before this version, but it had kind of a V-Belt, and no step-up gear set, rather drive pulley was larger than the driven. Needless to say, that did not work, as it was not possible to achieve necessary tension for the belt not to slip. So instead I decided to go for a timing belt and a gear set after it.
The belt drive was chose, so that in case of overload rather let the belt slip than sending power to the table mechanism and potentially damaging it, or even damaging the motor. Since the motor mound was kept from the first prototype, I had to play a bit with the distances between all the shafts in order to get the gears match and the belt drive to fall into a category of standart of the shelf components.
The driven pulley of a belt drive is mounted on the same shaft with spur gear. I've chose the ratio of 2.875:1 using previously mentioned scientific guess. It turned out well, the motor is more than capable to handle this ratio, though if I would be designing the system again, I would use a higher one. Or at least have some scientific trials.
The first components I designed was the so called "Motor Adaptor". The part that fits the shape of the motors original gear, and a square tube that we'll be driving with it. I suppose to handle a lot of force, so I made it quite beefy. There is also a spur gear teeth, that I put there just in case I want to drive something else later from there. One idea was to make some kind of limit switch screw assembly. But I didn't get to that part.
Speaking of limit switches. So far there is no limit switches in the system, and fail prevention is in hands of belt slip. Although, it would be easy to add a down position limit switch, it's a bit more complicated with the up position. Since the table legs that go up are kind of an outer shell, so there is nothing to push against when we are in the up position. This is why I was thinking of some kind of scaled down worm screw that would be synced with the table movement. Alternatively, one could put a current sensor on the motor, but I just didn't have one, so I don't even know would the current changes be suitable to detect the limit positions reliably. Some kind of encoder also would be an option, but then we need to store the position of the table in some kind of memory, and be sure that the position of encoder will not go out of sync. It would complicate the system beyond the effort I was willing to invest in it.
Step 5: The Frame
The frame for our contraption is a crucial component. It must be strong enough to keep the spur gears from skipping, and also should mount to the table. I chose the elegant noninvasive way of attaching my mechanism to the table. Conveniently there are two bolts right next to the part we intend to drive.
The frame is made as simple as possible. It consists of 3 parts and bolts together. The middle part is made to hold the second bearing of the hex shaft as closely to the spur gear as possible. The first hex key that I've sacrificed to the mission turned out to be not entirely straight and it introduced some mechanical resistance. The next hex key was not so long, only about 70mm long, so I had to push everything closer, thus the second bearing ended up on a intermediate frame. I strongly recommend first to examine the hex key, before cutting, if you have some tools to evaluate straightness - even better. Cutting itself is better done with an angle grinder, as proper hex keys are tend to be made from tough steel. The intermediate frame attached to the main frame with 3 M4 bolts, and I also included 2 dowel pins to ensure best alignment, however eventually I think it might be omitted.
I would also recommend to press in the bearings with the vice, as their mounting holes have groves to have them super snug fit.
Step 6: The Shafts
The shafts both squared and hex, have printed inserts to interface them with the bearing. It designed to be super snug, so sliding them in would require a fare amount of force. The output spur gear also pressed on the shaft, and it is super snug too, that would be the place through which all the power would be transmitted. I have to say I was surprised that I had no issues with this part what so ever.
Step 7: The Slider
As I was working on the mechanical part, I kind of didn't think about the controller board much. Well, I'd just stick an arduino nano and a couple of push buttons, was the initial thought. But my dad brought me a random bit of kit from the electronics exhibition. It turned out to be CY8CKIT-145-40XX PSoC® 4000S CapSense Prototyping Kit. It's a nice piece of hardware, as it has an MCU, a build in programmer, and some capacitive sensors. It also has Bluetooth module, so in theory one could build up an even more complex control system, say to implement smartphone connectivity and what not. The kit also comes with quite nice IDE, and some example projects. It even has graphical configurator, so it's extremely easy so set up all your ports, PWMs and so on. I took an example code for slider, and modified it a bit. Basically I've added a state simple machine, that changes with your input on a slider. Since it is not your of the shelf standing desk, and I don't have to comply with all sorts of regulations, I made it possible to start the table, and just leave it going on it's own. Considering how slow the raising speed turned out, it would be extremely inconvenient otherwise. The funny part is, that I've also directly send slider input to PWM, meaning that slider has a range of -100 to 0 and to +100, so you can change the speed of the motor. It's not at all useful, and the motor is so slow, but I thought it's a bit more fun this way. And it also serves as a sort-of soft start, since you can only start the motor from 0 position. I have provided both the source code and compiled firmware.
Step 8: The Slider Enclosure
The slider kit PCB is modular, and you can snap off the slider and the buttons. Buttons we'll put aside, as I chose the slider to be more fun type of controller. Then you simply need to solder the matching contact points with a ribbon cable. It takes 17 strands to connect the slider and the LED's in it.
The design of enclosure came naturally, as I decided to continue with noninvasive approach. I'm quite proud of the solution that came out, as it requires only 1 bolt, and fastens securely in the place where the original crank was. We are going to utilise the same brace that held the crank for the bolt, the other end is just hooked to the table surface.
As a major safety feature, I decided to have a power switch for everything, and to mount it below the slider. It's conveniently mounted, so that if something goes wrong, it's easy and quick to cut the power off.
While printing, it order to get such a wide window for the slider, I designed the support into the part, so it requires no additional supports.
Step 9: The PSU Enclosure
The last part of our system would be the PSU, motor driver, and a step-down converter for the slider. I designed a box, that would fir everything, would cover the high voltage terminals and would mount on the table. I'm not too proud of this design - but it works. There are things that could have been made differently, but at this stage I wanted to get it over with, so some elements are poorly designed. I apologize for that. The heat-sink of the motor driver slide in under the plastic tabs, and serves as a spacer for the PCB, so it's conveniently mounts on the tab, that are also spacers.
It is also crucial to fasten the brace right after PSU is mounted in the box, as later it would get inconvenient to do.
Step 10: The Final Assembly
When all the parts are ready, we get ourselves a nice lego set.
Putting on the Belt might be tricky. The best way to do it is to have both pulleys at the ends of the shafts, so they have bending to it. Then put on the belt on both pulleys simultaneously, and slide them both in. After that you only need to align the second part of the frame and you are done.
Then, it is most reasonable to attach the whole gear box to the table. Undo two bolts of the table and mount the gearbox. Then undo the two bolts on the other side and mount the motor.
WARNING! Do not undo all 4 bolts at the same time, as the table will become unstable and might collapse.
The PSU assembly mounts to the table with the bracket. The slider assembly should be bolted to the crank mount. I used a washer made out of TPU, so it acts as a sort of damper, in case if you hit the slider, preventing it from damage.
...
And here we are, standing on the frontier of home automation, winning yet another battle against daily manual labour.