I have moved the dropController to its own website at www.dropcontroller.com and this page is no longer being updated.
The new site also includes dropControllerBT with the dropControllerBT Android app and dropControllerPC with the Windows app.
Arduino based drop controller for creating water drops for drop collision photography.
The dropController is used to create water drops for water drop photography. It allows up to 9 drops to be created and the size and time for each drop can be fully controlled.
Below is version 2 of the dropController. I’ve been using it for a while but have only just got round to documenting it. It is still bread board only but has been working well. It is based around an Arduino Nano which is ideal for use with bread boards.
The circuit is fairly simply and should be able to be created by anybody.
dropController version 2 features
Connections for 3 solenoid valves
Up to 9 drops. Each drop separately controlled
Camera shutter and focus control
Mirror lock up option
LEDs to show when camera, flash and valves are active
Switches for draining the valves
5 button navigation keypad
4×20 2IC LCD screen
Loop mode (Keep looping until you stop it)
Increase or decrease times (for example increase the flash trigger time or decrease a drop start time each loop)
Quick mode when using up to 3 drops (uses a simplified display)
Full mode when using more than 3 drops
Save system settings
Load and save drop data (can save 3 different sets of data)
Auto load drop data on start up
The dropController uses the following Arduino pins
PIN 2 – SELECT
PIN 3 – RIGHT
PIN 4 – DOWN
PIN 5 – UP
PIN 6 – LEFT
PIN 7 – SOL 1
PIN 8 – SOL 2
PIN 9 – SOL 3
PIN 10 – Flash trigger
PIN 11 – Camera trigger – shutter release
PIN 12 – Camera trigger – focus
PIN 13 –
PIN A0  – Analogue keypad
PIN A1  –
PIN A2  –
PIN A3  – Pause/Remote start button (A3 is used as a digital pin)
PIN A4  – LCD
PIN A5  – LCD
PIN A6  –
PIN A7  –
The dropController can use either a digital keypad, where the button switches are connected to separate pins, or an analogue keypad that uses just one pin.
Sequence of events
The general sequence for how I use the dropController is:
Activate mirror lock up.
Wait a second
Open shutter (camera in bulb mode)
Activate the solenoids and create the water drops.
Wait for the splash or the collision
Fire the flashes
Close the shutter
You can also use the camera with a set shutter time rather than bulb mode. This is how I used version 1 which could not activate bulb mode on my camera. I set the camera to manual with a shutter speed of around a second. The only thing to take care with is ensuring the flashes fire before the shutter closes.
Most people online suggest a totally dark room but I have found that I can take photos in dim light rather than totally black. To check the light I normally take a 1 second exposure before I start. If the photo is black then the light is OK. Use a low ISO (100/200) and a small aperture (F11-F16 works for me).
Used in the way it is the flash that takes the photo, not the shutter or the aperture.
Camera and flash triggers
The camera trigger circuit uses 4N25/26 opto-couplers as digital switches (I have used both 25’s and 26’s since these were what I had but other models can be used). Opto-couplers allow the Arduino to trigger the camera and flashes without having a direct electrical connection. More info here. The camera focus and camera shutter triggers use separate opto-couplers which then go to the same 3.5 connector. I have a Canon camera which requires both focus and shutter to be active for bulb mode to work. I didn’t realize this when I built version 1 and the focus control was added in version 2.
Solenoid valve connections
TIP120’s are used as switches and are controlled from the Arduino. The push button switches are to drain the valves. You can also do this in the software but it is not as convenient.
Close up showing the solenoid valve connectors.
The dropController and the solenoid valves are powered from the same power supply; either a 12V or a 24V wall wart power supply (I bought them from a local shop). The dropController accepts both voltages but the power supply must be matched to the solenoid values you are using. Valves with different voltages cannot be used together.
When I started working on version 2 of the dropController I only had 12V solenoids and I used a 7806 to reduce the voltage from 12V to 6V to power the Arduino. (see the 12V to 5V/6V post). I later bought 24V solenoids and so used a 24V power supply. I had concerns about how hot the 7806 would become when reducing 24V to 6V so I looked for other options. I now use a pre-made regulated power converter that I bought from Taobao (they are also available from ebay and many online suppliers). These little converters accept a wide range of input voltages and are able to output a wide range of voltages. The output voltage is set by turning a small pot.
If you are only using 12V valves then you can use a 7806. See the post 12V to 5V / 6V
Reverse Voltage Protection
In an earlier version of the dropCopntroller, that used a 7806 to reduce the voltage from the external power supply, I had a weird problem, when the Arduino was connected to a computer by usb and at the same time the device was powered by the external power supply, the computer would crash when the usb cable was unpluged. I fixed this by adding a diode to the 5V out line on the Arduino. This stopped the computer crashing but unfortunately the diode ate too much power (fairly high forward voltage drop) and the LCD screen stopped working. After some Google research, I came across a post that described using a mosfet instead of a diode. The mosfet offers the same polarity protection without the large forward voltage drop.
When there is power on the 5V line the mosfet is turned on and allows current to flow. Remove the 5V and the mosfet turns off.
The dropController can now use either a digital keypad or an analogue keypad. When I first started I could not find suitable navigation keypads so I built my own. Later, I found pre-made analogue keypads. It is fairly straight forward to make your own keypads, either digital or analogue, see the keypad post for details.
Remote start button switch
The remote button switch is exactly the same as the switches used for the digital keypad. The only difference is it is on the end of a cord and connected by a 3.5 jack. I currently use the A3 pin as a digital input for the switch.
Download the (draft) manual
Please visit www.dropcontroller.com for latest downloads
Download the sketch
Please visit www.dropcontroller.com for latest downloads
This version can use either a digital keypad or an analogue keypad. Set the type you are using at the start of the sketch.
Uncomment the statement that matches the type of keypad you have.
// comment out the type of keypad you are not using //#define KEYPAD_ANALOGUE //#define KEYPAD_DIGITAL
If using an analogue keypad then uncomment the #define KEYPAD_ANALOGUE statement
// comment out the type of keypad you are not using #define KEYPAD_ANALOGUE //#define KEYPAD_DIGITAL
The Arduino IDE will then automatically select the correct code to compile.
This is an ino file and you will need to use the Arduino IDE to compile it and then upload it to an Arduino
The sketch has 7 tabs:
The main sketch is in the dropControl tab.
The dropController sketch uses the following Arduino libraries:
– digital IO performance. Download from here
– EEPROM. Included in the Arduino installation
– Button. Download from here
– Wire. Included in the Arduino installation
– LiquidCrystal_I2C. I used the version from here. The LCD page on the Arduino Wiki is very helpful.