Stepper motors - pan/tilt project

Hi all, I'm starting a rather ambitious project - I'd like to make a pan/tilt head for a camera. Most of the projects I find online are for small webcams - we're using full size cameras with batteries, for a combined weight of about 20lbs. Further more, I'd like to use this for hockey games, so the system needs to be fairly fast and responsive.

I know this a little off topic, as I haven't even gotten to the interfacing stage yet, but does anyone have experience with beefy steppers? I've never used them, and I'm looking for a little advice on how big these motors should be, what kind of controller would work well with this project (and an Arduino), and perhaps where I should buy. I thought steppers would be the logical choice for this project, but if large Servos might work better, or even continuous DC motors (precise positioning and feedback isn't a concern) I'm open to any ideas.

Thanks! ;D

Hi, not so beefy but strong enough to pan and tilt a 1,5kg dslr is my robot. I use 42mm steppers and the Sparkfun easydriver which is able to run steppers up to 0,8 amps.

Take a look to servocity website - they have strong servos and some pan/tilt mounts.

cheers
Paul

If you want speed of response then I would suggest going for DC motors with positional feedback making a servo system. The maths is quite complex though so I am not sure if this platform is up to it. Stepping motors might be a bit slow, plus the large mass and speed mean that you will be into an overshoot and compensate situation. It's called critical damping and something you can't do with steppers (unless you have separate positional feedback)

I use the easydrivers to run a pan/tilt/truck system I've been designing - the steppers are rated @ 1.8 amps, although the easy driver is rated @ 750mA, you don't need to hit full current load when chopping like the easydriver does. (Add to that the 20.4:1 gearing I used, and I can easily move about 40lbs, with a resolution of 0.01 degrees.)

You can see my latest prototype here: TLA – Prototype V2 – Pan Stage Complete | The Roaming Drone

Are you looking for time-lapse, gigapano, or video panning/tilting system? The reason I ask is because they have much different requirements for motion. If you're looking to do time-lapse, then you should stick with the steppers, use a micro-stepping driver like the easydriver, and gear it way down to produce very discreet motions. These should also be taken between shots.

If you're looking to do a gigapano system, I'd recommend going with servos. They'll make life much easier as they have absolute positioning capabilities with error correction. servocity.com produces some pre-fabbed pan/tilt systems for moving large camera (up to 9lbs, iirc) that are economical and very easy to work with the arduino. (Just use the servo library and you're pretty much done.)

If you want to turn standard DC motor into a servo, I wrote a quick tutorial a while back here: DIY Servo with Arduino, DC Motor, and Potentiometer | The Roaming Drone

Essentially, you'll read the potentiometer as an analog input. It has limitations, mostly that the ADC on arduino is 10 bits, and most pot's don't do 360 degree rotation. You can get around this by buying a 24-32bit ADC chip (digikey has a number of them that work via i2c, serial, or parallel) to increase resolution.

Hope this helps!

!c

Hi Drone,
He said:-

I'd like to use this for hockey games, so the system needs to be fairly fast and responsive.

Will any of those solutions work that fast?

Thanks for the insight. I found this guy on youtube:

It looks like it would be plenty fast enough, however everything is sourced from england, which makes it way too expensive for me. Does anyone know where I can get some nice gearbox motors like those 810:1 motors he uses in the video?

Oops, I missed the hockey game point. Ok, so you're looking to make a video pan/tilt head for live-action.

So, you'll have two primary problems: speed and torque (you've got to think about moving all of your weight, not just the camera - if the tilt portion has a frame, that has to be moved too), but absolute positioning via programming isn't an issue (you'll control it via some other mechanism).

So, the least expensive route is going to be using DC geared motors (as he mentioned in the video), although I'm not sure you actually need a "810:1" geared motor. As you gear it down, you increase torque, but decrease speed. Most of these DC motors start (before the gearbox) in the ~3k-6k RPMs, so if you split that by 810, you're getting just a few rotations per minute - limiting speed.

You'll want to make sure your stall torque is well above the actual weight, and preferably the torque at maximum efficiency is below your total weight. Say, this motor here: http://servocity.com/html/20_rpm_gear_motor.html -- with a 2" gear attached to it, mating to the exact same sized gear (can substitute "pulley" for "gear" if you're thinking along the lines of the video), would be able to move ~8 lbs of weight at 20RPM. Again, thinking of speed, that would mean that if you were dealing with a tilt mechanism, that would be about 120 degrees per second of movement. (Might want to double-check my math, but it should be "napkin-sketch" close =)

Obviously, you'd need to feather your starts and stops, but that's pretty easy to do -- just ramp your PWM up to full speed over a fraction of a second.

For a motor controller, I'd go with an L298 compact motor driver kit from Solarbotics, which would run both motors at 12v, and interfaces real easy from the arduino. You just send PWM to the right pin to make one of the motors go in a direction. For $19 it's darned easy to use. Here's the URL: http://www.solarbotics.com/products/k_cmd/

You could hack up an old joystick as an input device for your two axis.

I think the hardest part is the actual construction grin - getting everything lined up is going to be the hardest part. Make sure you get high-quality bearings, don't buy the cheap ones @ your local hardware store. They have a lot of slop and that slop will result in vibrations and lost power. Servocity sells some decent ones, but as of late, I've taken to liking VXB for bearings.

!c

however everything is sourced from england, which makes it way too expensive for me

Sorry I don't have a U.S. source but it just makes a change, because we in England (note please it is a country and has a capital E) normally have the problem of getting things from the States.

however everything is sourced from england, which makes it way too expensive for me

Sorry I don't have a U.S. source but it just makes a change, because we in England normally have the problem of getting things from the States.

It does make a change, but I think mhenstell will find that he can source stuff in the US a lot cheaper then he would from Maplin and RS :wink:

There are many, many sources in the US for motors and mechanicals, some of my favorites:

servocity.com (it's easy to get everything working together from here -- they have the components to link everything they sell, if not a little more pricey. But, their customer service is top-notch)

mcmaster-carr.com (these guys have, well, pretty much everything =)

www.vxb.com (VXB bearings, a good source for bearings and linear motion components)

Steppers are a poor choice for your application (they lose torque as they run faster, and are generally used for either high-torque, low-speed or fine positioning applications).

Get motors that run/can be run at 12V. This way you can run your motor controllers and arduino off the same 12V supply. This makes life easier when designing your power runs. There are so many motors that can run at 12V, that you should have no problem finding them. You also don't need those huge, expensive motor controllers for running motors at 10+ amps. In fact, those size motors and controllers are serious overkill for such a project. In that video he spent nearly $300 just for the motor controller! That's a complete waste of energy and money in most cases. You're moving a camera, not lifting hundreds of pounds of material. Strike a good balance between gearing (in the reduction box attached to the motor, and also in your own external gearing) and input power. Remember you can always increase torque at the cost of speed.

!c

Wow, lots of interesting information. Drone, the motor your recommended looks great, but I'm afraid my mount will be more like 15 to 20 pounds with camera attached (these are full size broadcast cameras). Will I need to size up that motor a bit for the extra weight? And I suppose two matching motors would work best for pan/tilt?

Thanks!

Wow, lots of interesting information. Drone, the motor your recommended looks great, but I'm afraid my mount will be more like 15 to 20 pounds with camera attached (these are full size broadcast cameras). Will I need to size up that motor a bit for the extra weight? And I suppose two matching motors would work best for pan/tilt?

There are other motors that you can choose from. You should start calculating out your speed and torque requirements - you have a torque requirement now (20lbs), now you need a speed requirement. There are varying beliefs a to what is "fast" =)

For example, there's this motor, that with a 2" gear/pulley on it will result in 36.5 lb's of torque: http://servocity.com/html/4_rpm_gear_motor.html

If geared 1:1 at 4RPM, it would result in a max speed of (360*4)/60 = 24 degrees per second. That would make it take 15 seconds to do a complete 360, or 7.5 to cover a 180 degree field. Of course, your lens will also have an FOV that would be taken into account, but I think this gives you what you need to consider.

Also, remember, that increasing the length of your lever increases the torque output - so if you go to, say, a 4" pulley, you'll get nearly 2x as much torque out of it.

Here's another motor I might suggest, I have one of these at home, and while they are loud, they do the job quite well:

http://servocity.com/html/dayton_gear_motors__12v_.html

If you look at the 8.75 RPM one, that's 41lbs of torque per inch of lever! So, using a 2" drive gear (again, the lever is half the diameter of the gear, or 1") connecting 1:1 to a 2" driven gear (or pulley, etc.) - you could move 41lbs of camera at the rate of 52.5 degrees per second. I'm pretty sure that would meet most requirements - you would be able to sweep a 180 degree field of view in just over three seconds. If you wanted it to go twice as fast, but retain the same torque, you could do a little trickery in the drive-train:

Motor->4" gear/pulley->2" gear/pulley.

What would happen is here that you're doubling the lever (4" pulley == 2" lever) and thereby doubling the torque. Then, you're halving the relationship between the drive gear and the driven gear, doubling speed and halving torque. So, you'd end up close to your 41lbs (you loose some to inefficiency in the gears/pulleys) but you'd be at 17.5 RPM, or 105 degrees/second.

I'd suggest making a spreadsheet - put in each motor's characteristics, including power consumption, and play with different gear ratios/initial gear sizes to calculate the right amount of torque vs. cost vs. speed vs. power consumption. It's often hard to keep it all in your head, and I usually find new combinations that I hadn't considered before.

You can definitely save money by determining exactly what you need vs. something that's big enough to handle anything grin

As for matching motors? It's not a requirement, no. In fact, you would probably end up with a slightly more powerful motor for the pan than for the tilt, given the pan has to move the tilt mechanism as well. However, it would probably make life easier on you to order two of everything than two different sets. =)

!c

For controlling a larger motor, you might look at this: Pololu 3A Motor Controller with Feedback (3 amps) and this: Pololu SMC04 High-Power Motor Controller w/Feedback (10 amps, 30 amp peak)

They have PID. You can attach a potentiometer to your pan and tilt bearings, run the potentiometer into the respective motor driver, and the driver will try to maintain a position just like a big RC servo. You can actually use RC servo signals to control the position; or you can directly command them to a position by using serial commands, or you can hook up a potentiometer and select position by turning knobs with no other controller necessary. You can tune the PID to get the ideal mix of smoothness and speed, so your camera doesn't lunge and bounce every time you move it.

I used one of these motor controllers to servo a car's rack and pinion steering for drive-by-wire control on this thing: http://www.flickr.com/photos/8304793@N04/2790412152/in/set-72157602711984268/. You can see the driver is suspended up in the cockpit on a swivel chair, with the command console hinged to the arm rest, so a mechanical steering method was impossible.

Hi,

Do you think arduino is powerfull enough to do closed-loop positionning, using DC motors and quadrature encoders? None of the polulu modules can read such encoders...

Thanks,

mhenstell, on Autopano Pro forums, we started, last year, a project based on the Merlin/Orion atronomic mount. The idea was to turn it into a panoramic head.

First, we though we had to replace the electronic. But then, I hacked the serial protocol used between the remote and the head, and I've been able to develop Papywizard, a software to control it.

It works fine, but the internal head electronic has some limitations and annoying things. Some people are also interested to make timelapse, which is difficult now. So, it may be a good idea to develop a complete new electronic.

As I think this head can fit your needs, I was wondering if you are interested to develop a new electronic, based on arduino stuff?

You can find some information on APP wiki (sorry, in french):

Feel free to contact me if you want more information.

Thanks!

really great tutorial on how to mill your own pan/tilt from your friends at dxarts, university of washington
http://wiki.dxarts.washington.edu/groups/tutorialsdemos/wiki/10404/Pan_Tilt_Mount_Tutorial.html