NewAE Snapper - Camera Controller
[Background]
The NewAE Snapper is an open-source camera controller. It started in 2007 as a way to do high-speed photography. The hardware is based on the Atmel Butterfly, and can be built for under $50. The idea is to take a picture a certain amount after a sound is heard - for instance you fire a BB gun at a balloon. When the BB gun fires it starts the timer, and then the picture is taken just as the BB is in the middle of the frame.
Current features include:
- Programmable delay of 0 to 99999 mS from event to flash
- Adjustable input threshold
- Automatically takes "background" level reading
- Can be triggered by external sensor, such as switch or water sensor
- Control of Sony HVL-F36AM and compatible flashes using IR (works poorly)
- Auto power-off
- Interval timing mode, take time-delay sequence
[How to Use]
Scroll down on the joystick until you see "Sound Sync". Push to the right to enter sound sync mode.
You should see the M flashing, this is the timing units. It is always on M for "mS". You can move the flashing digit left and right, and adjust that digit with up and down. If you move off the left of the screen, you will go back to the main menu. Set say 15 mS as a test. Adjust the threshold to zero, then increase it a tiny bit. Say 1/8th or 1/16th of a rotation. Press down on the joystick - the box says "WAIT" for two seconds, at the end of those two seconds it takes the background measurement. It will now say "ARMED". Clap your hands, and the display changes to "FIRE" for an instant and then back to the sound sync menu.
Note an easy way to force it to fire is to tap the box or microphone. If you set the threshold too high, it will stay in ARMED mode. To get around this remove one battery for a second to reset the thing [TODO: fix that!].
Now you'll need to connect your flash up to the unit. The device uses an NPN transistor to pull the flash line to ground - this is how most flashes trigger. Use a modern one as it's not designed to work with high voltages - just a few volts!
For taking the picture, I use the following method:
- Setup scene as needed
- Get snapper in 'armed' mode
- Set camera to 1.6 second shutter, 2 second delay. Turn off lights and press the shutter down. This gives you a second to then trigger whatever it is you do (fire BB gun for instance) when you hear the shutter itself open
- Flash will trigger based on your timing setup, so only that one instant will be exposed
You have to modify the Butterfly slightly to work with this hardware. First check out the schematic, references in ports are to the butterfly and shown in the next picture:

The following shows you what is done:
The following are the steps to modify a Butterfly. You'll want the user manual for the AVR Butterfly at http://www.atmel.com/dyn/resources/prod_documents/doc4271.pdf. It describes the location of things referenced here:
- Remove the NTC (R211)
- Remove R212 and short the pads together. This connects VIN to PF1 on the AVR.
- Remove R208. One side (closest to the AVR) goes to one endpoint of the pot. The other side goes to the wiper of the pot. This pot sets the threshold. The other end of the pot goes to GND.
- Remove R209, replace with a 100k resistor. Hint: R208 is a 100k resistor, so just slide it down.
- Remove R202 to disable the buzzer. You could remove the buzzer if you wanted too.
- Remove the LDS (light sensor).
- The LDS sensor has 4 pads under it. 2 of them go to ground, and 2 of them are connected together. You want to use the latter here. Connect a 10 uF cap from one of the pads to VIN. Connect the positive side of the electret microphone to the other pad.
- The base of the camera/flash sync trigger goes to PORTB0 through a 10k resistor.
- The base of the IR driving transistor goes to PORTB5 through a 1k resistor. If you don't have a Sony/Minolta flash that this will work with don't bother though...
The hardware was designed to be as easy as possible, and "cheats" a bit to accomplish this. The microphone isn't amplified at all beyond the amplifier built into the electret mic. Hence you NEED to use an electret mic here, which almost all are. Be sure to use the right polarity!
The mic gets it's power for the FET inside it through R201, which is 3k3. The 10uF cap you add eliminates the DC offset in the output of the microphone, then a 100k loosely pulls it to ground. If you have an external sensor plugged in, it needs to pull VIN high. The mic will still be connected too. I use this feature as you can tap the case of the device to trigger it for testing, since that will create a very lound sound in the microphone. Avoids needing another button.
The pot sets the threshold. It just connects to the ADC and is read in software, so is used as a way to quickly and easily set a specific level. In retrospect you don't change this a lot - a dedicated control is not needed.
To save power the microphone and pot are only ever powered on when you are in sound sync mode. Otherwise you'd end up wasting a lot of power...
The IR mode is used for some Sony/Minolta flashes. The code just triggers a "preflash" from the flash - which tends to be powerful and long. This is not good for high-speed photography, hence of very limited use. The problem is that to trigger a lower power level, it takes up to 46 mS to transmit the information to the flash. This is too long a delay, as for me I would have already missed the event. The IR command is always sent right now - I might just disable it since it's not really used.
IMPORTANT NOTE: Check the polarity of anything you plug into the sync port. The negative side has to go to GND, otherwise the transitor will always be conducting! So if you measure 2.5V across your flash for instance, the negative lead of your mulitmeter is on the negative side. So connected that to the GND in the plug.
[Download]
Get the source code: snapper-0.1.zip [86k]
Release: 20080101: 0.1 - Initial release, lots to fix still!