Stepper motor or Simple DC motor for linear motion project?

I want to look at making a simple linear motion project. All I want to do is run a carriage up along a length of steel.

Portability is a must so it needs to run on batteries. Because of this, I do not know if I should use a stepper or a standard dc motor. My limited experience is that a stepper motor itself might be rated at say 2-5 volts but the actual voltage that you can supply to the driver circuit can be up to like 48v etc. I think the theory is that there is a higher voltage to keep the motor going at the faster rpms.

In my case I only need a slow motor shaft rpm, estimated from say 6rpm to maybe 20rpm. Gearing can change this.

So having said that I need it portable, I can easily use an 8pack AA battery holder. It will not be up around 50volts, but as the motor is turning very slow I should not need that much voltage to have its full holding torque. Is that correct?

Stepper is better for low RPM and precise positioning. How much torque is required? I have some steppers from old disc drives that run nicely from 12 volts using a driver chip.

apples:
I want to look at making a simple linear motion project. All I want to do is run a carriage up along a length of steel.

Simplest and quickest way is to use a piece of threaded rod, with a travelling nut. Hook it up to a DC motor, attach the rod to the DC motor using a piece of rubber tubing (or some other coupling method).

For the travelling nut, you can try to use a coupler nut (used to join two lengths of threaded rod together), but I have found that sometimes the individual threads along the length of the rod aren't uniform, and the nut will bind. Sometimes you can clear this up by forcing the coupler past the threads, or by running a tap and die set on the threads of the rod and/or coupler.

As an alternative, though, what you can do is use two or three standard nuts, spaced apart but connected together.

Get some axle grease or petroleum jelly, and grease the threads of a smaller threaded rod or bolt with the same thread count/size as your longer threaded rod. Run the nuts onto the threads, but separate the nuts by one thread turn or so. Line them up, and set the assembly onto a plastic coffee can lid or the like. Mix up some JB Weld (best 2-part epoxy in the world!), and liberally apply it to the nuts (the reason for the grease is to act as a release agent, so the epoxy doesn't stick to the threads). Let it cure. Remove it from the lid, flip over, mix up some more epoxy, and apply it to the other side. Let it cure. Do this a few more times to build up the joints, then use a file or whatnot to shape the whole nut. If you want a stronger epoxy joint, take some steel wool and put it in the gaps between the nuts, then use a chopstick or something to work the JB Weld into the fibers and such.

You should be able to turn the nuts off the threads, and thread them on the threaded rod; check to make sure it will travel the whole rod; it should, but you never know. Also - it is possible to instead weld or braze the nuts together if you want to try that (much stronger joint, but can be tricky to do - remember to let everything cool down before attempting removal of the nuts).

Even with a "coarse threaded" rod, and a high-speed DC motor, the gear-down of the threaded action will be more than enough to make the nut move fairly slowly along the length. If you still need less speed, though, a geared DC motor (something around 400-800 RPM) can be used. If such an assembly is to be used more than for demonstration, then you'll want to install limit switches, as such a homebrew linear actuator system can have quite a bit of power - enough to break things (motors and gearboxes, mainly) and/or cause injury to the unwary or foolish.

Do you need to actively hold the carriage in place, and how much force do you need to apply to do that?

If it's a high force setup or you need to apply a significant force to hold the carriage stationary then the worm drive approach that cr0sh describes would be your best bet. Otherwise, an easier approach would be to run a belt around a pair of pulleys (one pulley being driven by a motor/gearbox combination and the other acting as an idler) and attach the moving device to the belt. This is the approach usually used for printers, curtain operators etc - it's simple, robust, and easy to get working.

JB Weld (best 2-part epoxy in the world!)

Nope, that would be Pratley Putty

But I do like that idea for making a threaded traveler, whichever epoxy is used.

Well I want to attach a welding gun to the carriage so I can make long welds in one pass with out the stop starting.

I was leaning towards a length of threaded rod (booker rod) about 8ft long. Yes those joining nuts do spin pretty easily, or like you say I can just tack weld a few nuts to a small steel plate. Or what would be easier/better maybe, was if I could make a carriage that sits or clips onto a standard length of square tube. This way you could pack the machine away and put the length of steel back on the rack.

I have a geckodrive G251 stepper driver here next to me, but it wants a minimum of 15v supply voltage. I want to try and use the least amount of batteries I can, and to get about 15v from rechargeable eneloop batteries lets say they are 1.2v each, then 15v/12.v= 12.5 batteries needed roughly. Ideally If I had a cnc machine I could mill out a socket that would accept the batteries of the cordless drills I use. That way I can just use those batteries. Like my smaller drill next to me now has a 18V lithium battery.

But if that is too much hassle, a smaller DC motor at 6v would be easier to work with because I could just have say a 6 slot AA battery holder for it.

I've pondered on the threaded rod concept in the past and one issue I didn't see addressed is the thrust loading on the rod itself. Long story short, you may want to look at putting a cordless screwdriver or drill in a bracket and use it to turn the shaft. The cordless screwdriver/drill have stout thrust bearings already incorporated into their build. For making a quick inexpensive prototype, Black and Decker makes a 6v cordless screwdriver that is normally available at walmart for ~$10 or less that could be used. Not sure where you will get the 8' threaded rod.

I think that I will not use stepper motors as they use more power than a standard dc motor from what I have read. I think they suck full amperage at o rpm as they need to "hold" the motor shaft lock in that position.

So having said that, what type of motor controller would I need? And what particular type of motor would I need?

I know that I would have a maximum voltage of 18v to play with, as I am hoping to use the cordless drill lithium battery packs. I would like to have the machine drive as smoothly as possible. So how do you do this? Do you just make sure that you have enough motor torque so that the motor is able to overcome any change in friction or drag. Or do you add a PID control system to it to keep it at a constant travel speed.

I would also need to use an encoder wouldn't I?

Operation of the machine:

  1. turn the robot on
  2. enter a total distance to drive. via a numerical keypad, or even a rotary knob having the values count from 0mm up to whatever.
  3. enter a speed at which to drive that distance- again either via a keypad or rotary knob
  4. hit button and go

And then on another mode;

  1. turn the robot on
  2. enter a total distance to drive
  3. enter length of welding distance (or distance of of a relay turned on)
  4. enter gap between welds (or distance of a relay turned off)
  5. hit button and go

So I guess I would need an encoder to run the second mode where I would want it to turn a relay on and off at set distance intervals. I want to do it this way rather than use time to turn it on, ie on for 5 seconds off for 10 seconds etc.

So having said that what type of encoder do I need. I see the quadrature encoders are talked about, don't know what they are exactly though. How many count encoder would I need for this project?

With the motor selection, I roughly worked out that with a drive wheel diameter of 50mm I would need that wheel to spin at between say 1rpm and 10rpm to give me a forward motion speed of between 250 and 1500mm/min.

50mm dia wheel C=pie x diameter, C=3.142 x 50mm, = 157.10mm traveled per 1 rpm of motor.
How many rpm needed to travel 1000mm. distance / my wheel circumference, 1000mm/157.10, =6.36 rpm will move the robot 1000mm

Then I think I go, 6.36rpm / 1000mm = 0.00636 (what are these units called then?)

Then I can multiply my desired travel speed of 250mm/min x 0.00636 = gives me 1.59rpm, so 250mm/min travel speed, means I need a drive wheel rpm of 1.59rpm
and for my top speed of 1500mm/min, 1500 x 0.00636 = 9.54rpm for drive wheel speed.

So that is why I say I need the final drive wheel speed to be between 1rpm and 10rpms.

Now I see dc gear motors online, but now how much power do I need.
Here is a motor, http://www.servocity.com/html/10_rpm_precision_gear_motor.html

12v, 750oz, 1amps stall current, gear train damage can occur if motor is stalled???, also 10rpm no load free speed.

I will take a figure out of the blue and say that I want to have the motor powerful enough to pull a weighted load of say 10kg.

750oz/in torque rating on that motor means that it can lift a weight of 750 ounces at the point that is exactly one inch from the centerline of the motors shaft, right?
So If I am working in kg, I want to know how much 750oz is in kg or grams. So I found this online "divide the oz value by 35.275 to get kg"
750oz / 35.275 = 21.26kg
okay, is that right?? that seems like a lot.

Well if that is right, that motor can lift 21.26kg at 1" which is 25.4mm. My wheel is 50mm or say 2".
That would mean that that motor on my 50mm diameter wheel should be able to lift half of 21.26, which is 10.63kg.

Okay, but I do not need to actually lift 10.63kg of weight, that is just how heavy the moving robot and combined weight is.
It's would probably have enough torque from that motor, right?

What about the issue of "gear train damage might occur if the motor is stalled?" I don't like the sounds of that.
Can I find a better or stronger motor?
Can I have some kind of current detecting circuit that will trip out the motor drive power when it reached a predetermined amperage draw. This motor is rated at 1Amp, would you then make it stop at say 0.8amps? If so, then, I would need a bigger motor as I only get full torque at the 1 amp draw, right?

So having said that what type of encoder do I need. I see the quadrature encoders are talked about, don't know what they are exactly though. How many count encoder would I need for this project?

You can make your own encoder using an optical switch and a disc with sections to interrupt the beam. Pretty easy to program. You can put as many sections on the disc you think you need. That would depend on how accurate the length of weld has to be.

Now I see dc gear motors online, but now how much power do I need.

Before you select a motor, I would check to see how much force it actually takes to move the weld head along the beam. You can then make an educated decision rather than guessing. Add a factor of 30% to torque for overload.

What about the issue of "gear train damage might occur if the motor is stalled?

Use a clutch between the motor and drive wheel. You can buy them or make your own.
You might also consider programing some code to verify the motor is turning, probably encoder counts vs time. In other words, if you don't get any encoder counts for more than say, 500ms, you could shut off power.

This sounds like a great project. Good luck.

I suggest you break your project into its various parts and start experimenting and testing the parts. You might want to get one of the small bot kits that has encoders as a starting point to get familiar with the various issues.