encoded stepper with Arduino UNO and A4988

Hi,

I need to controll a stepper motor using a Arduino Uno and would like to use a A4988.
My requirements are:
mass to lift: 1kg, lever arm: ~1cm => ~1Nm
RPM: ~160

So I thougt of using a simple Nema17 stepper and the A4988 as I need a not too expensive option.

Now my superviser wants me to include an encoder to prevent step-loss. I could not yet find a good option.
In my (beginners) understanding, I just need an suitable encoder attached to the motor which can be connected to the Arduino. Then I could control the steps directly on the Arduino. But my research says, that its not prcticable to dismount a simple Nema motor to shift the shaft so an encoder could be attached to the back. And all the DC-motors with already attached encoder which I could find so far could not handle the load.

Then there are closed-loop steppers but there I could only find expensive ones with are overdimensionised and I am not sure if I can connect them easily to the Arduino without a specific encoder driver.

Does anybody by chance know about a simple and cheap option or has a link to a similar project? (I know that there are already lots of arduino+stepper projects all over the internet but I could not yet find anything really helpful with the encoder problem).

Have a nice day!

pooltrust:
Now my superviser wants me to include an encoder to prevent step-loss.

I don't see how an encoder is going to help. If the load is too much for the motor so that it misses a step how can you recover the step even if you know that it has been missed?

IMHO the right way to avoid missing steps is to choose a motor that has substantially more torque than is required to handle the load.

...R

Thanks for your fast answer!

It makes sense what you are writing.
I guess his intention is not to miss if a step-loss is happening and to be sure to notice if te motor is under-dimensioned.

But I will discuss that with him.

But just to be sure (I am still very confused from my reseach): There is no simple and cheap solution as I dicribed it in the initial post, right?

pooltrust:
But just to be sure (I am still very confused from my reseach): There is no simple and cheap solution as I dicribed it in the initial post, right?

I don't know the answer to that.

I think you would need to get a rotary encoder that produces the same number of pulses per revolution as the steps of the stepper motor (probably 200) or a multiple of that.

...R

Ok.
Thanks for your help :slight_smile:

I’m not sure if this is helpful but you could probably create an encoder by printing a disc with 200 black and white stripes and detecting the stripes with a QRE1113 reflective optical sensor.

…R

1 kg force is 9.81N * 0.01m is only about 0.1Nm, there are many geared motors with encoders in that range at Pololu.
Q: Why a stepper motor?

Oh, you are absoultely right. I am a little bit embarrassed by my miscalucation, I don't know how this happened....
Probably because some specificaitions use Ncm and some use Nm.
That makes it much easier, thank you!

pooltrust:
Hi,

I need to controll a stepper motor using a Arduino Uno and would like to use a A4988.
My requirements are:
mass to lift: 1kg, lever arm: ~1cm => ~1Nm

Hold it there: off-axis distance 1cm, mass 1kg, therefore force = 9.8N, x 1cm = 0.098Nm

RPM: ~160

So I thougt of using a simple Nema17 stepper and the A4988 as I need a not too expensive option.

You need to find a stepper with torque/speed graphs in its datasheet so you can check if there is
enough torque at 160rpm to comfortably exceed that 0.098Nm. Holding torques are much larger
that dynamic torques, so you will need to check those graphs. Typical NEMA17 steppers are upto
about 0.4Nm holding torque

Now my superviser wants me to include an encoder to prevent step-loss. I could not yet find a good option.
In my (beginners) understanding, I just need an suitable encoder attached to the motor which can be connected to the Arduino. Then I could control the steps directly on the Arduino. But my research says, that its not prcticable to dismount a simple Nema motor to shift the shaft so an encoder could be attached to the back. And all the DC-motors with already attached encoder which I could find so far could not handle the load.

You need a dual-shaft version of a stepper - these are typically special-order from the factory, so
you don’t see them so often in brochures…

Then there are closed-loop steppers but there I could only find expensive ones with are overdimensionised and I am not sure if I can connect them easily to the Arduino without a specific encoder driver.

Does anybody by chance know about a simple and cheap option or has a link to a similar project? (I know that there are already lots of arduino+stepper projects all over the internet but I could not yet find anything really helpful with the encoder problem).

Have a nice day!

Some stepper expose the end of the shaft at the back - perhaps finding a way to mount the special
magnet for an AS5045 style magnetic encoder would be one way to go?

https://ams.com/documents/20143/36005/AS5045_DS000101_2-00.pdf/3561fcce-e9f0-22a2-880f-bdfff26b93f2

Thank you for the very detailed and helpful answer! :slight_smile:

This topic was automatically closed 120 days after the last reply. New replies are no longer allowed.