How I built my Arduino-powered automatic pan-tilt head for shooting stitched panoramic landscapes - DIY Photography

2022-03-24 03:39:40 By : Ms. Joey Chung

Hacking Photography - one Picture at a time

Mar 23, 2022 by Don Simmons Leave a Comment

Shooting multi-frame panorama photographs can be fun, and the resulting images can be striking. But once you get past a panorama that is, say, four or five frames wide, it becomes difficult to do without a tripod. And if you want a panorama that is more than one frame in height, then hand-held is nigh impossible.

There are manual panorama heads you can mount on your tripod, but using one can become a bit tedious, especially shooting a dozen or so frames. They become more onerous when you want a pano that is several rows high.

I like to shoot panos with a longer lens – an 85 or 100mm – rather than the 28 or 35mm wide-angle lens most folks use. But since the field of view is much smaller on a longer lens – a 28mm lens has approximately 3 times the field of view of an 85mm lens – the number of frames for a given pano will be many more.

So I decided to build my own automatic, motorized pano head that would do the work for me and give me repeatable frames. I had previously built an automatic focus-stacking rail for macros using an Arduino micro-controller. So I decided to also use an Arduino to control the movements of the panorama head.

The actual pano head consists of an “L” shaped bracket or arm, two servo motors, an Arduino Nano microcontroller and some software. How much it will cost to build depends solely on what parts you buy and what find in your junk drawer or on your workbench. Since I have no facilities for doing metalwork or anything other than some light wood-cutting or drilling, the design, for me, had to consist of off-the-shelf parts. This automatic panorama head can be made right at the kitchen table with nothing more than some hand tools, an electric drill, and a soldering iron.

Keep in mind that just about any part of this project can be altered or changed to your liking with the exception of the electronics. If the electronics are changed, then the program code will have to be changed.

The bracket for the pano head is a simple L-shape with a 6.75” vertical arm and a 7.75” horizontal arm. Most any material can be used – wood, aluminum, Lucite, etc – as long as it is rigid enough for the two servos and your camera and lens. The dimensions are not critical as long as you can mount your servos and your camera fits comfortably and has room to vertically pivot.

Because I wanted this to be a “kitchen table” project, I chose to use aluminum channel and hardware from GoBilda, an engineered system of building components. The constituent pieces all have standardized dimensions and standardized hole patterns that make it easy to fit pieces together with no cutting or drilling.

I chose GoBilda’s 1120 Series U-Channel for the pano frame. Their U-channel looks somewhat like Swiss cheese with lots of holes. But the standardized hole patterns meant that drilling metal was eliminated from my task. All GoBilda components fit and bolt together. Using two corner brackets, the U-channels bolted together to form a strong L-shaped structure with a perfect 90° corner.

For drive motors, I chose the GoBilda 3206 Series Servo Gearbox which uses a Hitec HS-788HB servo motor. This unit has an aluminum framework that is both the servo mount and a pillow block for the drive all in one. The servo and the U-channel have dimensions and matching bolt holes that make for an easy fit.

This servo is available with six different gear ratios. I chose the 9:1 ratio which gives me plenty of torque and a nice rotational speed. The HS-788HB is an eight turn servo so even with the gear reduction it can complete approximately 320° of a circle. The clamping hub on the output gear has threaded holes that are perfect for mounting brackets.

You can definitely use a smaller, less expensive servo than the model I chose. The one I chose is both overkill and expensive. You might even consider a servo such as the GoBilda 2000 Series Dual Mode Servo. Just know the weight of the camera and lens you plan to use and compare that to the servo’s torque rating.

There will be no panorama until the servos can be attached to the tripod and camera.

An Arca-Swiss quick-release plate is used to connect the pano head to your tripod and an Arca-Swiss quick-release clamp is used to connect a nodal rail that mounts the camera. I used GoBilda Surface mounts which bolt directly to the servo’s output gear to connect the Arco-Swiss hardware.

Fortunately, most Arca-type QR plates are slotted and will match up with and bolt directly to the GoBilda surface mount. Bolt the surface-mount to the output gear of the servo on the horizontal arm of the pano head. The QR plate is then bolted to the surface mount.

Mounting an Arca-type quick-release clamp to the surface mount requires a bit more effort. The surface mount has a number of holes, including 2 slotted holes along the centerline, but none of these work with Arca clamps which typically mount with a centered ¼-20 screw. One way to handle this is to carefully lay out two points on the clamp that align with the slots on the surface mount. Drill and countersink these holes. Now you can attach the clamp with flathead screws and nuts.

Another method is to use the GoBilda hole-reducer. Choose the reducer with a 4mm i.d.; epoxy the reducer to the underside of the surface mount. Drill out the hole in the reducer to accept a ¼” screw. Use a ¼-20 x ⅝” screw and bring it from underneath the surface mount. Fix it in place with a nut (see photos). The Arca clamp can screw onto the surface-mount just as it would on a tripod.

The electronics center around an Arduino Nano which does all the necessary calculations and controls the servomotors. You can use the Arduino Uno or other Arduino models as well. I chose the Nano solely for its small size.

Wire your Nano and other electronics according to the circuit diagram. Pay careful attention to match the pin numbers on the Nano as they are referenced in the program code.

I seriously suggest you first connect everything on a solderless breadboard so you can test your circuit and adjust your servos before putting it all together in a case. Use a breadboard that has a power rail (or bus) down each side and two banks of connection points separated by a groove or gap. Mount the Nano so that it spans the gap and the pins on one side of the Nano can use one bank of connectors and the pins on the other side can use the other bank of connectors. Viewing a YouTube video or two will make it clear how to use a Nano with a solderless breadboard and jumper wires.

Once all the electronics are wired on the breadboard, you are ready to download the program and test everything.

First, you must download the Arduino IDE, the program that is used for programming Arduino microcontrollers. You can find the IDE on the Arduino website. Open the IDE and copy the code following the steps below.

The code linked here is complete. I have tried to fully comment everything so you can follow through and understand what the code is doing. There are several comments that include “NOTE.” Each time you see this there is a value e that may be changed for your particular situation. Please review these carefully.

Note: If you are an experienced Arduino or C coder, you may well laugh at what I have created. Feel free. I am sure it lacks in efficiency and elegance.

Copy the program code into the Arduino IDE and uncomment all the debugging “Serial.print” statements by deleting the double slashes (“//“) that precede them. This will allow you to follow the program in the IDE serial monitor to make sure everything is working properly. Once you are satisfied that everything is working properly, you can either comment out the statements again or erase them completely.

Once the debugging print statements are active, load the code into the nano. After loading you should see the display light up with the message, “PANO-XY 4-BUTTON” If you see this on the display, the code loaded correctly and you should be able to go through the prompts and have the system run the panorama sequence.

You can view the complete Arduino code here.

When you are ready to put everything in a case, I strongly recommend making a “subfloor” for your case and mounting all your components on the subfloor. This way everything can be mounted and wired outside the case where you have good visibility and easy access. Once everything is completed, the complete assembly can be secured in the case with just a couple of bolts. I used a solderable breadboard with power rails for my subfloor.

Another tip is to make buses for the positive and negative legs of the power source. Everything requires power, and the easiest way to wire it is to use buses. Attach your power source leads – one to each bus – and then attach your components to the two buses. I added screw terminals to the power rails of my breadboard subfloor to create my positive and negative buses.

I strongly recommend you use a screw terminal shield on the Nano when you are ready to do the permanent wiring. You will have safe, secure connections that can be changed if necessary and no soldering!

The easy way to interface the pano head control with your camera is to buy a remote shutter cable for your particular camera. Open the switch end of the cable and you should see three wires – common; autofocus; and shutter. Determine which wire is for the shutter. The common and shutter wires will be wired to the relay. The autofocus wire be trimmed off – you don’t want autofocus with a panorama. The shutter will fire every time the relay engages. You might want to add a connector to the control box so you disconnect the cable if you wish.

The power required will be determined by the servos you use. With the large servos I chose, I needed 7.5 volts. I used a case that holds 6 AAA batteries (9 volts). I jumpered one of the battery bays (soldered a wire from the positive end to the negative end) so that I could use just 5 batteries for my needed 7.5 volts (see photo). I used a barrel connector to connect the battery case to the control box. Velcro was used to attach the battery case to the control box.

If you look near the beginning of the code, you will see a section titled “Servo Variables.” Servos vary, and the default settings (1000, 1500, & 2000 microseconds) in the servo library that the code uses are, at best, guidelines. You can see in the code that the settings for my two servos are different from both the default and from each other. You will have to do a bit of trial-and-error work to find the 0° and 180° positions for each of your servos.

My parts list pretty much assumes you have absolutely nothing in your junk drawer or on your workbench. It also assumes the building of a pano head exactly like mine. Using bits and pieces you might have around is perfectly okay. The requisite electronics are starred; all the other items are suggestions.

You can download the complete parts list here.

The first iteration of the pano head used a 4 x 4 keypad and a 4-line display to input information. Although this worked well, it was way too big and ungainly, requiring a control box that was 6.5” x 6.5” x 4.5”. I redesigned the system to use a 2-line display and 4 buttons. The new control box is just 4.5” x 2.5’ x 2”.

When you are ready to take a pano you will go through a series of prompts on the display to input the information needed. Simply follow the prompts on the display using the buttons as arrow keys and just scroll to the input values you desire.

First, will be the focal length of the lens you are using. Second, will be the desired width of the pano in degrees. Third, is the number of rows you wish for the image. Finally will be whether the camera is in portrait or landscape orientation. The micro-controller will calculate the frame size and the number of frames needed to complete the panorama. It will then move the camera through the sequence taking a picture at every frame.

To make a panorama, follow the prompts and enter the lens focal length, the width of the pano in degrees, how many rows are wanted, and whether the camera is in landscape or portrait mode. The electronics then calculate how much the camera will move between images, how many images are required, the aspect ratio of the final pano, & the approximate time to complete. Then it will go about taking the photos while you enjoy a refreshing beverage.

I hope you find this project fun to complete, and you enjoy taking panorama photos with your new automatic pano head.

Don Simmons is a Texas-based retired mathematics teacher who pursues photography as a hobby. His tastes are eclectic, but he enjoys taking pictures of all sorts of things, but particularly in black and white. You can find out more about Don and see his work on his website.

Filed Under: DIY Tagged With: arduino, DIY, Don Simmons, panorama, panoramic head, Stitching

John Aldred is based in Scotland and photographs people in the wild and animals in the studio. You can find out more about John on his website and follow his adventures on YouTube.

Dunja Djudjic is a writer and photographer from Novi Sad, Serbia. You can see her work on Flickr, Behance and her Facebook page.

Alex is a commercial photographer based in Valencia, Spain. She mostly shoots people and loves anything to do with the outdoors. You can see her work on her website and follow her Spanish landscape adventures on instagram.

Adam Frimer is a Guinness World Record holder, producer, and DOP based in Tel-Aviv, Israel. Adam owns a production company that specializes in corporate marketing and brand strategy. His videos have collectively hit over a quarter billion views

Copyright © DIYPhotography 2006 - 2022 | About | Contact | Advertise | Write for DIYP | Full Disclosure | Privacy Policy