closed loop stepper

so I am very new to Arduino, but I can program to a fair extent and have basic electronic knowledge.

what I want to achieve is a stepper motor moving in 60 or 30-degree steps. in only one revelation then returning 60 or 30 degrees at a time each movement controlled by a pulse on an input. it will need to be closed-loop and i need an accurate VR in the system for some other part of the system so I am thinking about using the VR for position feedback to the Arduino.

am I expecting too much? is this something the Arduino can achieve?

Thanks for your time.

What you describe can be easily done with an Arduino. I assume that VR is a variable resistor, is that right? How accurate do the angles have to be? A stepper does not, necessarily, need feedback to get precise positioning as each step is precise and counting steps will give position. Precision can be increased by using a stepper driver that allows microstepping.

pulse on an input

What is the amplitude and duration of the pulse?

Here is Robin2's basic stepper tutorial to get you started.

it will need to be closed-loop


Most 3D printers run faultlessly for hours without the need for a closed loop system. If the stepper motor is missing steps then it is inadequate for the job, is inadequately powered or inappropriately controlled.

I can't imagine any variable resistor being able to match the precision of a stepper motor.

Most stepper motors have 200 steps per revolution which means that they are incapable of moving exactly 30° or 60°. The nearest to 30° would be 17 steps or 30.6°. Maybe that small error does not matter.


Continuing from Robin’s comment...
You could get very accurate positioning by using a ‘true’ servo, using a DC motor, shaft encoder and h-bridge.

This operates in the same way as an RC servo, but gives you absolute choice of control, power and positioning.

so, it does need to be a closed-loop, there is a chance that the mechanism its driving could stop the stepper (any drive system) and the control needs to know about it.

i am currently using the variable resistor to mesure the position that's manually operated at the moment and its more than accurate enough. think +-1degree (its more than better than that at the moment but it would be acceptable)

i hadn't thought about a DC motor with an encoder, my concern would be that i need a very fast movement. i would like the 60deg movement to be less than 40ms which equates to 200~RPM instantly. would a DC motor be able to do that?

the biggest reason for using a VR for feedback would be that no homing would be required, this is an absolute position and homing at startup will not be possible!

Then a stepper is off the table.
A high performance DC servo is exactly what you want.
Think of comparing an old floppy drive vs a fast HD head positioned.

Then a stepper is off the table.
A high performance DC servo is exactly what you want.
Think of comparing an old floppy drive vs a fast HD head positioned.

thanks, this is why i wanted to ask the question! do you know if there is anything of the shelf that might be suitable?

I’m out at dinner!
Someone else may respond first- but I’ll look for some links.

How heavy is the mass you need to move?

the mass is somewhat complex, but not a lot. I have done a few tests with a torque wrench and max I sore was 0.8nm.

i had a little look and found this, what do you think?

dc motor with encoder and drive

That’s exactly the type of beast I was thinking of. Well done.
Do your research, and ensure the gearing and output speed are sufficient for your positioning /timing requirements.

Also ensure the operating duty cycle (heat) and and power requirement is right for your application... this type of motor-set goes from minuscule up to very large, with internal and external driver electronics.

(and, yes, it’s 2am now!)