DSLR automated HDRI panoramic head project [first Arduino project]

Hello,

I realised rescently that I need specialised HDRI panoramic head for my DSLR for making 360 panoramic images. I could buy one, but automated heads are really expensive and I love to make stuff on my free time.
I'm pretty solid when it comes to make something - I work with wood, metal and any other materials, I have background on programing and I'm very good with 3D software, but Arduino and related elecronic stuff is new for me, thats why I became a member of this huge comunity (I spend a lot of time on Youtube to get general idea how Arduino works).

Heads frame itself will be easy to make - will be laser cutted in the end from aluminum or stainless steel.
I will attach some images with very basic idea how it will work.
I want it to be sturdy - it should easily handle up to 3 Kg camera (incl. lens).

Thing I like to hear ideas/advices/corrections on:

Hardware which I think I will need:
*Arduino chip itself (advice which one) - it will trigger shutter aswell (3 to 5 automatic exposure braketing, no metering/focus is needed, at least for now)
*2 stepper motors or 2 servos (for horizontal/360 and vertical/180 camera rotation) - witch will sute better?
*2 motor controlers
*Start button to start runing code

Optionally later:
LCD and few keys for basic data input and output (at first - picture count and rotation angle will be hardcoded, on 2nd revision I would like to add LCD with option to input lens type so it could automaticaly calculate rotation angles/picture count.

Maybe there is someone who can guide me thru purchasing right electronic hardware for this project? I promise You will not waste Your time - I will make this project and will give away high resolution profesional quality panoramic images to those people :slight_smile:

DSCN1753-h500.jpg

What kind of duration are you shooting for, time-lapse length of times or just set up, take a pano, pack up and move along?

The horizontal is easy, you don't need a terribly strong motor with a good bearing system. The vertical, though, you'll not want to skimp on if it is to support the weight of the camera. I'd actually look into a worm gear setup to utilize some self locking geometry.

I assume your camera has flash/shutter remotes, either IR or Bluetooth, you'll want to know what kind of products are on the market so you can imitate their functions with your Arduino. That is unless you envision ghetto rigging some physical servo to physically press the shutter.

Does the camera have a wired remote to trigger the shutter? Then two optocouplers or small relays can easily trigger the pre-focus and shutter. If you are limited to infrared only, then that is a little more work. The idea of a small servo positioned over the shutter button is not ridiculous.

INTP:
What kind of duration are you shooting for, time-lapse length of times or just set up, take a pano, pack up and move along?

The horizontal is easy, you don't need a terribly strong motor with a good bearing system. The vertical, though, you'll not want to skimp on if it is to support the weight of the camera. I'd actually look into a worm gear setup to utilize some self locking geometry.

I assume your camera has flash/shutter remotes, either IR or Bluetooth, you'll want to know what kind of products are on the market so you can imitate their functions with your Arduino. That is unless you envision ghetto rigging some physical servo to physically press the shutter.

Thank You for Your reply

For now lets just settle for quick panoramic shot, no time lapse (thought it would be nice to have this option if it will not add crazy amount of money).

How about something like this:
Nema-17-stepper-motor-CNC-Reprap-Prusa or Nema-17-Stepper-motor-shaft
Will they be enough? I could even add 2 of them to rotate vertically. My knowlege is pretty poor about stepping motors performance, but I think it would be good idea to add some gears to reduce rotation speed (it will increase torque, yes?). Its just a thought but is it a bad idea to keep feeding last step of the mottor to keep all unit more steady while camera takes a pictures? It will took not more than 5 seconds, sorry if this a stupid idea :slight_smile:

For camera shutter I will use Canon external shutter port (2.5mm audio jack type). All I need to do to force it to take a picture is to "shorten" (don't know exact term in English) 2 specific leads on that port (shouldn't be hard on Arduino, right?). I even can purchase wireless shutter device, but for now lets go with wire. I did dug in to this, it's not complicated to make it work. Example Video how it will work
Though there is some potencial issues - I can't use burst mode on camera and take all exposures with "one click" cause of different light amount in the scene and exposure time from scene to scene (as I understand there is no easy way to get feedback from camera to Arduino when picture is taken and camera is ready to take another one).
So my only way is to "guess" and hardcode time value when to push shutter as many time as I need exposures (camera will exposure bracket automaticaly).
There is a way to control camera via USB and get feedback when picture is taken, but it's way out of the scope of this project and my knowlege. I will be happy with hadrcoding time interval and later add option to change these intervals via input/output screen.

"Short" is the correct English word. Check with the camera if you need to use both wires or if it will fire with just the shutter. You can try this with just a plug and bare wires.

Steppers are usually driven at 77% power when standing still. Your idea has already been invented. This makes battery life an issue but I think you will have no problem as your actual time in use will be around 1 minute per shot.

Steppers have no built in zero position. You might use a stepper for left-right and a servo for up-down.

Thank You for Your time,

MorganS:
Steppers are usually driven at 77% power when standing still. Your idea has already been invented. This makes battery life an issue but I think you will have no problem as your actual time in use will be around 1 minute per shot.

I'm sure this idea wasn't invented by me, I was consern if this might dammadge motor itself.

MorganS:
Steppers have no built in zero position. You might use a stepper for left-right and a servo for up-down.

I'm aware of this issue, but I think If a motor will have enough torque it will not skip any steps - I can track position by code, by counting steps, or this is wrong method?

I would like some hardware sugestions :slight_smile:

If you have the facilities to laser cut aluminum, I would make a mount for the camera that includes support along the rotation axes. That way the motors you use can be smaller and only be in charge of pushing the camera instead of doing any real weight support. Like imagine a chicken on a spit or the Price is Right wheel, the weight is supported, and doesn't take much to rotate.
I'd stick with stepper motors, counting steps will work just fine if you're halfway decent with math.
Servos have limited range, and the continuous ones are harder to work with as you're writing speed and direction to them.
This project will have plenty of room for simple limit switches which will work just dandy wit stepper motors.

If the camera mounting is counterbalanced you should not need much torque to move it in either direction.

If servos give you sufficient control they will be very much simpler to install, to power and to program than a stepper motor. I suggest you build a rough system and try it with servos before concluding that stepper motors are needed.

Note, however that normal servos only move through about 180 degrees. If you need a full 360 deg movement you will probably need a sail-winch servo or, perhaps, gearing to convert 180 deg into 360 deg. The HobbyKing website has a huge selection of servos if you want to study what is available.

...R
Stepper Motor Basics

INTP:
If you have the facilities to laser cut aluminum, I would make a mount for the camera that includes support along the rotation axes. That way the motors you use can be smaller and only be in charge of pushing the camera instead of doing any real weight support. Like imagine a chicken on a spit or the Price is Right wheel, the weight is supported, and doesn't take much to rotate.
I'd stick with stepper motors, counting steps will work just fine if you're halfway decent with math.
Servos have limited range, and the continuous ones are harder to work with as you're writing speed and direction to them.
This project will have plenty of room for simple limit switches which will work just dandy wit stepper motors.

Robin2:
If the camera mounting is counterbalanced you should not need much torque to move it in either direction.

If servos give you sufficient control they will be very much simpler to install, to power and to program than a stepper motor. I suggest you build a rough system and try it with servos before concluding that stepper motors are needed.

Note, however that normal servos only move through about 180 degrees. If you need a full 360 deg movement you will probably need a sail-winch servo or, perhaps, gearing to convert 180 deg into 360 deg. The HobbyKing website has a huge selection of servos if you want to study what is available.

...R
Stepper Motor Basics

It's not going to work in this case becouse to get good perspective on images I need to make panohead to rotate on a specific rotation centre in the lense itself (it's for parallaxing issue, don't worry on this one, just trust me when I say it must be done this way) so the only way to ballance it is to add weight - this means even more torque.

I would like to go with stepper motors aswell, I don't need exact tracking of movements becouse every positional image will overlap about 1/3 or even 1/2 on another image so there is plenty space for error and missing steps.
And yes, I can handle math :slight_smile:

I have some couple pretty powerful stepper motor laying around, they will be enough to start concepting, can someone recommend Arduino model I should purchase?

For the panning action, just because your axis is not where the center of gravity is, doesn't change anything meaningful. The difference is simply dealt with in the bearings or whatever friction-reducing system you go for.
E.g., a lazy susan can be a good deal off balance weight wise and the movement or interest, being on a perpendicular vertex, is theoretically unchanged (realistically trivially affected by friction as mentioned).

INTP:
For the panning action, just because your axis is not where the center of gravity is, doesn't change anything meaningful. The difference is simply dealt with in the bearings or whatever friction-reducing system you go for.
E.g., a lazy susan can be a good deal off balance weight wise and the movement or interest, being on a perpendicular vertex, is theoretically unchanged (realistically trivially affected by friction as mentioned).

Balance issues will be sorted out in 3D design stage, now my biggest concern is all electronic parts and motors. It's a bit strange that noone give me advice on electronics - that is what I need help with :slight_smile:

So you want to buy motors without knowing what kind of forces they need to handle. Okay, good luck with that.
Just thought I'd nail down what exactly it is you're working with since details matter before meaningful input can be meaningful. For what it's worth, I already have a setup where centering my lens on rotation axis with good weight balance just needed a ring mount on the lens and a mount hole in the base plate under the sensor.

INTP:
So you want to buy motors without knowing what kind of forces they need to handle. Okay, good luck with that.
Just thought I'd nail down what exactly it is you're working with since details matter before meaningful input can be meaningful. For what it's worth, I already have a setup where centering my lens on rotation axis with good weight balance just needed a ring mount on the lens and a mount hole in the base plate under the sensor.

Ok, let's settle on these ones at least:
Will Nema 17 motors be enough or I should go with Nema 23 ?
Will Arduino UNO be enough for 2 stepper motors controlers, shutter button, LCD something like this, and at least 3 input buttons (in the future) and maybe sound output. If so how many outputs I will be left with? Arduino stuff is very new for me, so if I write something that doesn't make sence - sorry :slight_smile:

3Dgeo:
so the only way to ballance it is to add weight - this means even more torque.

That is simply not true. A child could move 40 tonnes if it was properly balanced and had a low-friction bearing.

How fast must the camera be moved from one position to the next?

3Dgeo:
It's a bit strange that noone give me advice on electronics - that is what I need help with :slight_smile:

I did - use servos.

...R

NEMA17 should be OK. There is a big variety of motors that fit the NEMA17 frame size, so I cannot be definitive. If you can, plan on a toothed belt drive with a 2:1 ratio or higher. You can change the ratio later with different pulleys.

Calculate the maximum unbalance torque from your camera and get a motor with twice this holding torque. That is after the gear ratio multiplication, so if you use 2:1 then your holding torque could equal the unbalance torque.

Yes, the Uno will be good for two motors and that LCD. Sound should be a piezo buzzer that just takes an on-off signal from one Arduino pin. Some other LCDs come with 5 buttons or a tiny joystick switch. That is useful to make a user interface. The LCD and interface will be the most time-consuming part of the project.

Robin2:
That is simply not true. A child could move 40 tonnes if it was properly balanced and had a low-friction bearing.

How fast must the camera be moved from one position to the next?

I guess this is true, I will handle balancing issue in the concepting phase.

I think It should take all panoramic images in about a minute or so, speed is not required unless scene has moving objects, I would like to have option to take very fast panoramas, but ussualy slower speed will be fine.

For now these two things is not my main concern - i will deal with them later.

MorganS:
NEMA17 should be OK. There is a big variety of motors that fit the NEMA17 frame size, so I cannot be definitive.

THANK YOU, this is what I needed to know, I know there is many variations and torque with nema 17, I do not need to know exact motor model to use - all I needed was motor mounting specs. Now I can start concepting frame itself in 3D.

MorganS:
If you can, plan on a toothed belt drive with a 2:1 ratio or higher. You can change the ratio later with different pulleys

I'm not an expert, but I think belts will be a bit flimsy, gears instead?
I have tried to look for gears - its seems they are pretty hard to find.
I think I would be ok even with 5 to 1 ratio gears, but probably will setle with 3 to 1 because It's hard to find them (link me if You know where to find solid ones).

MorganS:
Calculate the maximum unbalance torque from your camera and get a motor with twice this holding torque. That is after the gear ratio multiplication, so if you use 2:1 then your holding torque could equal the unbalance torque.

I will just go wild and will put 2 motors on each side (same controller with enough power, just splitted wires) for vertical rotation, with gears it should produce pretty decent torque, If I still get missing steps or flimsy setup I will try balance it by adding weight. It might be overkill, but I think it's the best way to go.
I'm not expecting this project to come out perfectly at first so I'm prepared to fix flaws :slight_smile:

MorganS:
Yes, the Uno will be good for two motors and that LCD. Sound should be a piezo buzzer that just takes an on-off signal from one Arduino pin. Some other LCDs come with 5 buttons or a tiny joystick switch. That is useful to make a user interface. The LCD and interface will be the most time-consuming part of the project.

THANK YOU, I feel we are getting somewhere :slight_smile:
Links to LCDs with joystick would be extremely useful :slight_smile:
How about this one: 1.8 Inch TFT LCD Touch Panel? It looks fancy and If touch works properly than it would solve a lot of UI issues.
Yes, I'm aware that LCD will require some serious coding - I should handle it.

For now last thing I need to find out is what gears should I use and where to purchase them, any ideas?

No, gears are more difficult. The spacing between the axles must be exact. A toothed belt gives some more flexibility. Look,at how most 3D printers are built, although they must have linear motion, which is even more convenient for belt drive.

Two motors is really not going to be easier than one. Double the gears, double the mounting hassles, extra overall width, extra power consumption. I would go with direct-drive and one motor before considering two. Have you done your torque calculation yet?

Also, while it is possible to put two motors in series or parallel from one controller, it is better to have two controllers paralleled on the Arduino side. The modern controllers in the A4988 and DRV8825 are really smart and they do a lot of clever stuff to the motor. Look at the options available here: Pololu - Stepper Motor Drivers

Pololu probably also has lots of gears and other useful hardware in their robotics section.

MorganS:
No, gears are more difficult. The spacing between the axles must be exact. A toothed belt gives some more flexibility. Look,at how most 3D printers are built, although they must have linear motion, which is even more convenient for belt drive.

Two motors is really not going to be easier than one. Double the gears, double the mounting hassles, extra overall width, extra power consumption. I would go with direct-drive and one motor before considering two. Have you done your torque calculation yet?

Have to agree with this, though I even already found some cheap gears for this :slight_smile:
Even I agree I might try gears first because of same reason I will put 2 motors - it will be more stable and sturdy - I can't show now why I need 2 motors and potencially gears instead of belt, but it will be many adjustable parts, this and heavy camera will not be very durable and weight of this device is not an issue, potentially flimsy head - is.
And no, I didn't do calculations because I don't know how, i just go with brute force and hope for the best :smiley: And this is another reason for 2 motors instead of 1, with 4:1 gears/belt two motors will provide plenty of torque.

MorganS:
Also, while it is possible to put two motors in series or parallel from one controller, it is better to have two controllers paralleled on the Arduino side. The modern controllers in the A4988 and DRV8825 are really smart and they do a lot of clever stuff to the motor. Look at the options available here: Pololu - Stepper Motor Drivers

Again, I am noob at this, but as I understand If I connect right pairs of wires of each motor to 1 controller it will work fine, only output power will be doubling. I need both motor to rotate exactly the same step amount, just one of them have to rotate oposite direction compared to other one, and this will be achieved by mixing right pairs. Or I am missing something? Only 1 controler will save some money and Arduino pins aswell.
Also, to get sound output from one pin I will need active buzzer right These ones will be good?
P.S. I am from Europe, so best way for me to purchase parts is via Ebay

And thank You for keep helping me, I really appreciate it.

Hey guys, please give me advice while I give you insufficient details.
Hey guys, thanks for all the advice, I'm going to go do my own thing instead.
:sleeping:

If you don't have experience then you must design with calculations. You only need multiplication and division. It's not a differential equation.

The power is limited by the controller. Two motors will have the same power as one. And they won't share that power equally. One will get more than the other, and not consistently.