%IMAGE{"nxtpan1.JPG" type="frame" align="right" size="240" caption="NXTPanoramaStepper in action, EOS Rebel XS mounted"}%

NXT Panorama Stepper

The NXT Panorama Stepper is an automatic motorized tripod head for taking panoramic photos. It can rotate the camera along both pan and tilt axes and trigger the shutter using the camera's remote control connector.



The mechanical suppor is made mostly from aluminum angle bar and acrylic sheet. The rotation axes use three "lazy susan" ball bearing plates, one supporting the pan axis and two on either side of the tilt axis. The camera is supported, in landscape orientation, on a horizontal acrylic plate connected to the tilt axis and secured using a standard tripod screw. In order to keep the lens's no-parallax point near the center of rotation, the camera is postioned at the back of the plate, with a counterweight near the front balance it. The entire mechanism is mounted on top of a medium-density fiberboard base that also holds the electronic components and attaches to the top of a tripod.


Each rotation axis is driven by a stepper motor and geared down to acehve enough torque and precision to move the camera. The pan axis uses a pair of gears for transmission, and can rotate through 360°. The tilt motor is coupled using a belt drive, and can rotate more than 90° up and down (although the extreme ends of this range are less optically useful)

Camera Control

The camera's shutter is controlled through a remote control cable and relay. The camera end of the cable is terminated with a 3-conductor 2.5mm phone plug that plugs into a Canon EOS Rebel series SLR. A relay connects the ground and shutter release contacts to signal the camera to take an exposure. It can be programmed to fire up to three exposures at each position to take advantage of auto exposure bracketing in the camera.


%IMAGE{"IMG_5498.JPG" type="frame" align="right" size="380" caption="Stepper motor control board and NXT"}%

Stepper Motor Controller

The two rotation axes are controlled by bipolar stepper motors. These motors are controlled by I²C signals using an NXP PCA9554 I/O expander and four Toshiba TA84007PQ H-bridge drivers. All pins on the PCA9554 are configured as outputs and connected to the eight input pins of the bridge drivers. The outputs of each bridge are connected to one coil of one motor.

LEGO NXT and Sensor Interface

All motor movements and shutter relay closures are controlled by a LEGO Mindstorms NXT programmable brick running the Java-based LeJOS NXJ firmware. All actuators are driven through a single sensor port using I²C. A cable runs from the NXT to a Mindsensors PCF8574 sensor building kit with a relay and LED connected to two of its output pins. The motor control board is daisy-chained to the first sensor board using a custom cable that carries 5V power, ground, and the I²C SCL/SDA signals.

Power Supply

The NXT is powered by its own batteries. 5V power supplied via the sensor port powers all logic circuits, including both I²C chips, LED, and relay. Since the sensor port cannot supply enough current to run the motors, the motor control board has a separate power input, supplied from four NiMH cells, used for energizing the motor coils. The ground sides of both power supplies are connected together; the bridge drivers use the NXT's power for their logic supply and the second battery pack for motor supply.


360° panorama taken with the NXT Panorama Stepper: %IMAGE{"Panorama360/street600.jpg" type="frame" align="center" caption="Spring Street, Glastonbury - Immersive viewer: Large / Small"}%

-- StephenCavilia - 2009-07-28
Topic revision: r2 - 23 Aug 2009, StephenCavilia
This site is powered by FoswikiCopyright © by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
Ideas, requests, problems regarding CodenamePending? Send feedback