First Arduino project: Z-wave desk (Stepper motor choice and design validation)

Hi!

So for my first Arduino project, I would like to build a Z-wave controllable sit/standing desk. And I have tried to research as much as possible, but I would like to have some experienced opinions about my plans :D.

So the desk I want to modify is the IKEA SKARSTA: http://www.ikea.com/nl/nl/catalog/products/S49084965/. It already allows you to adjust the hight manually, so I only have to attach a motor. As I want to be able to precisely control the height, I figured a stepper motor would be best. But what I find hard to figure out is how powerful the motor should be. With some manual comparing with my torque-wrench and the demo table at the IKEA I estimate that moving an empty desk requires around 2/3 Nm torque.

So my current plan is ordering the following:
Geared Nema 23 Stepper Motor Bipolar 2.8A with Gear Ratio 5:1
Digital Stepper Drive 1.8~5.6A 20-50VDC
150W 36V 4.17A Power Supply

My question about these are, do you think this motor is strong enough? I don't have the desk yet so it's hard to measure exactly, but I also have no experience with the power of stepper motors. And if so, is 36V the right voltage to drive the motor? I read that 10-20 times the rated voltage is common when driving a stepper motor?

So next, to be able to controll the driver using z-wave, I think I need the Z-Uno. It's a 3.3v Arduino compatible board, so to be able to control the 5V of the driver I think I need the 74LVC245 level shifter. And finally, I need a 36 to 3.3V DC/DC convertor like this one to power the Z-Uno itself

My plan is to connect everything is as follows (imagine the power source to be the 36V DC power supply)! Please feel free to comment on anything as I am trying to learn!

Image from Original Post so we don’t have to download it. See this Image Guide

f0d107406f897c3149c0cf13fa2f8e823fbdf8bd.png

…R

As you can see Fritzing is a very poor way of displaying connections. A photo of a simple pencil drawing would be much easier to interpret.

I know nothing about Z-wave but it sounds like you are already familiar with it.

The stepper motor stuff sounds about right but, to be honest a simple geared DC motor would probably be just as effective and a lot simpler and probably cheaper. I presume the motor will be operating a screw to raise and lower the desk and the desk will stay in position when power is turned off.

...R

Robin2:
Image from Original Post so we don't have to download it. See this Image Guide
...

Yes, I wanted to edit it with the image, but I had to wait 5 minutes

Robin2:
..

The stepper motor stuff sounds about right but, to be honest a simple geared DC motor would probably be just as effective and a lot simpler and probably cheaper. I presume the motor will be operating a screw to raise and lower the desk and the desk will stay in position when power is turned off.

...

I agree that a simple DC geared motor would be simpler. However, as the Z-wave devices are connected to HomeKit, I would like to say "Siri, set my desk at 36%" and therefore I need to know at which position the desk is. Or do you have other ideas on how to manage that?

JorritP:
I would like to say "Siri, set my desk at 36%" and therefore I need to know at which position the desk is.

It's not quite that simple even with a stepper motor. A stepper motor does not know where it is and the usual way to deal with that is when the Arduino starts up it moves the stepper all the way to the ZERO or HOME position which is identified by a limit switch being triggered. Once the Arduino knows the motor is at ZERO it can count steps for all the other positions until the next time the Arduino is turned off.

You are correct that there is no means to tell a DC motor how far to turn unless you add some sort of rotary encoder that can count the turns. And there would still be the problem of identifying the ZERO position.

What about just telling the table to "move up a little" or "move down a little" and judging the height by eye?

...R

What about a distance sensor mounted on the underside of the desk and aimed at the floor? Arduino could read it and drive the desk to the desired height.