Arduino Stepper Motor project

I am 100% new to Arduino and found it while trying to come up with a drive system for an astrophotography project.

Basically, I need to create a system that will drive a nut that will open/close a barn door. This is simply rotating a nut up and down a curved bolt. The bolt is to turn at a rate of 1 RPM and needs to be as smooth as possible.

From the little research I have done, this would be possible with these basic components:

  1. Arduino Uno
  2. Arduino Motor Shield
  3. Bipolor Stepper Motor (I think this is the best for the smoothest action)
  4. Gears most likely to get the 1RPM I need

I am not sure what is needed to be able to power this and any other components I may need. Any help is appreciated.

while trying to come up with a drive system for an astrophotography project.

Basically, I need to create a system that will drive a nut that will open/close a barn door.

I suspect that my interpretation of a barn door and yours are not the same. Turning a nut at 1 RPM to open a huge rusty barn door is going to take a lot of torque and a lot of time.

LOL...not a barn door on a farm. Here is a link to what a barndoor tracker is...

Are you turning the nut, or the bolt?

Turning the bolt seems easier to arrange to me. I appreciate you may be taking advantage of the curved bolt to give you a geometrically perfect angular velocity, but at small angles the difference would be tiny - and you can compensate for it in software if it really matters.

My plan was to put a gear on the stepper motor connected to another gear that is connected to the nut. Thus the nut would be what is being turned.

I am completely open to options as well.


OK, I have been looking at designs and plans on this in further detail. There are two methods to approach this design:

  1. Using the curved bolt. This requires 2 gears: one on the motor and one with a nut or tapped to drive the bolt
  2. Using a straight bolt. This requires more research on how to drive the bolt to lift the arm. I would need to look at this in more detail.

As far as the Arduino circuitry goes, it looks like I need to use the Uno with Motor Shield. Based on info I have read, I need to look at a different type of motor because the Stepper Motors required massive voltage. I need something that can operate on smaller batteries I think. The Stepper Motors require 12V. Those batteries are big.

Whether you have the bolt hold still and turn the nut, or have the nut hold still and turn the bolt, the effect is the same. Making the nut hold still and turning the bolt is a far easier proposition. Using a microstepping stepper motor and a fine thread bolt would allow for very minute changes in angle between the two plates.

The 1RPM value that you are looking for does not need to be achieved by a constant rotation. Small steps with pauses between the steps will accomplish the same thing, so gearing isn't really necessary, unless needed to boost the torque (probably not).

If you figure out the mechanical part, I can help with the code. That part is easy. I suggest these, usually this price including driver board:

Thanks everyone for the input. I have found this version which may appear to be much simpler to design. It is a single stepper motor, no gears required, and a straight bolt. This may be the easiest method to design. The good news is they supply the assembly code in order to manage the rate at which to turn the bolt. I am not sure how that translates to Arduino though. A 1 arcsecond error on a 20 minute exposure is extremely accurate.

This would just need the following (from the electronics side):

  1. Arduino Uno
  2. Arduino Motor Shield
  3. Stepper Motor

It is simple math to keep the angular rate constant. Is that all that is required? How do you calibrate it for defects in the hardware?

There is a calculation for the angular rotation. I will have to dig it up. Since there is no rush, I am going to take it slow for the moment. I ordered the Arduino Uno and Motor/Stepper/Servo Shield kit from Adafruit. I will just play around with that for a while. Once I get an idea of how it works, I will look at the calculations necessary to get the code correct.

sbright: Thanks for the info