The DollyShield is an adaptation of the Arduino Motor Shield v3 that provides directional PWM control of two DC motors, at up to 1A of current each. In addition to the motor drivers, it also provides a stereo plug with dual opto-coupled outputs for direct camera control, a 2x16 LCD, five user input buttons, and four auxilliary inputs or outputs through two stereo jacks. It is designed to provide an inexpensive and easy-to-use interface for two-axis motion control integrated with a camera.
The design is based on the Arduino Motor Shield, and uses the same L293B driver chip and driver circuitry. It expands on the normal capabilities of the motor shield by providing all elements necessary for a stand-alone user interface, an integrated and isolated camera connection, easy access to the hardware serial pins through a stereo jack, and an additional stereo jack connecting to pins 2 and 3 of the Arduino to allow for the use of encoders or limit switches. Pins 2 and 3 are chosen for their association with hardware interrupts which increase the reliability of encoder or limit switch actions. Using the DollyShield, one may quickly and easily experiment with 2-axis motion control systems designed around DC motors, and even utilize encoders for servo-like precision.
On the DollyShield, there are three 1/8" stereo jacks. One provides a connection for the camera focus and shutter remote pins, isolated from the circuit with optocouplers, one provides direct connection to the hardware serial pins, and the third provides direction connection to digital pins 2 and 3. There are two DC barrel jacks on the right-hand side of the board, providing connections for each motor. These barrel jacks use a 2.5x5.5mm pin config to prevent accidentally hooking up DC power to the motor outputs. (The arduino DC input is 2.1x5.5mm.) An additional LED displays when the camera is currently exposing.
General Design Philosophy
- Two-sided design for compactness
- Two-layer for low-cost production
- All under-side parts out of the way of Arduino components (except USB connector - need tape)
- No heatsinks required if using 2oz copper pour (entire bottom is heat sink)
- All through-hole components for easy assembly by beginners
- No bare pads for hook-ups, ready for field use with TRS connectors and DC barrel jacks
- Arduino "shield" (requires Arduino board)
- 2x DC Motor Speed/Direction PWM Drivers (Up to 1A)
- 1x 1/8" TRS Plug for isolated camera connection (focus+shutter)
- 1x Camera exposing LED
- 2x 1/8" TRS Plug for auxiliary I/O (Hardware Serial, Digital 2+3)
- Can be used for encoders, limit switches, serial communication other boards, etc.
- 1x 16x2 LCD for display
- 5x Momentary pushbuttons
- 2x DC Barrel Jacks for Motor Hookup
- 9v-12v supply voltage
- Compact: 3.85x2.7"
The DollyShield is designed to run off the supplied 'Vin' pin on the arduino board. While the motor driver can take up to 36V of input, the overall design is limited to 9-12V minimum-maximum voltage. This is due to the fact that the voltage regulator on the arduino cannot reliably exceed 12V, and because the filter capacitors for the motors are limited to 16V.
To power the DollyShield, use the DC barrel jack input on the Arduino board. While it is perfectly reasonable to run the intervalometer function only while powering off of USB, motors will not operate under USB power.
While the DollyShield has not been tested with a large number of cameras, it will generally work for any camera that uses a three-pin connection for remote camera control. While the actual connector for many cameras may vary, often they use the same or similar control mechanisms. The DollyShield design expects that the focus and shutter signals represent positive signals, and a connection from either of them to the camera common causes current to flow towards the camera common connection. This is true for many Canons, Nikons, and Pentaxes.
The LCD is wired in a standard 4-bit parallel interface, using the pins specified in the schematic below. In addition, the backlight level is controlled via PWM on Arduino digital pin 9. To allow for up to 200mA of current for the LCD backlight, the PWM output controls a small
2N4124 transistor which isolates current drawn from the pin.
A contrast adjustment potentiometer is on the back of the board, and can be accessed when an arduino is attached.
The DollyShield utilizes the following Arduino pins for the following purposes:
|Arduino Pin||Connected To|
|Digital 0||Ext_0 (Ring)|
|Digital 1||Ext_0 (Tip)|
|Digital 2||Ext_1 (Ring)|
|Digital 3||Ext_1 (Tip)|
|Digital 4||LCD D7|
|Digital 5||Motor 0 PWM|
|Digital 6||Motor 1 PWM|
|Digital 7||LCD D6|
|Digital 8||LCD D5|
|Digital 9||LCD Backlight PWM|
|Digital 11||LCD D4|
|Digital 12||Focus (Cam Ring, OK1/1)|
|Digital 13||Shutter (Cam Tip, OK1/2)|
|Analog 1||Motor 0 DIR|
|Analog 2||Motor 1 DIR|
|Analog 3||LCD DIR|
|Analog 4||LCD EN|
There are five pushbuttons on the shield, four near the lower-center arranged in a cross-pattern, and one to the left of this group. All five buttons are wired to a single analog input, and use a series of resistors to differentiate the value. Note, that if you press two buttons at the same time, you would only register the one with the highest resistance. A simple lookup of the value read via
analogRead(button_pin) compared to a table of button values will tell you which button (if any) were pressed.
Please note, these values are average readings and may be impacted by environmental influence. It is important to apply thresholds, as the readings may fluctuate by a large amount for the same button pressed.
For example code to read the buttons, read: Example Button Code for the DollyShield.
The L293B has no fly-back voltage protection diodes built-in, and there are none added to the board (like the Motor Shield 3.0). Using the L293B you can provide up to 1A continuous current for each motor. If you require fly-back protection, the L293D is a drop-in replacement with built-in diodes. The L293D has a continuous current limit of 600mA per motor, however, and for many applications the advantages of a higher current limit can outweigh the desire for fly-back protection.
To get you started, a stock set of firmware providing all the basic requirements for continuous, shoot-move-shoot integrated timelapse shooting is available here: MX2 Dolly Engine Firmware. For documentation on the capabilities of the firmware, and how to use it, see the MX2 Dolly Engine Documentation.
Click on the schematic to expand to full-size.
The following image gives a quick view of the board layout:
The Schematic, Board, Gerber, and BOM files can be downloaded here: OMDSV1-01.zip
These files are compatible with Eagle 5.10.0
The DollyShield is Copyright (c) 2010 Dynamic Perception LLC
All files, design, schematics, bill of materials, and all content on this page are licensed under the terms of the Creative Commons Attribution-ShareAlike 3.0 Unported License. For more information about the rights and any associated responsibilities this bestows upon you, see the Copyrights page.