In 2002, a renegade science photographer, Martin Waugh, was playing with high-speed photography and discovered he could image two drips of water hitting each other. This special event takes place only under certain conditions: when a single drop hits a water surface and rebounds up in perfect timing for a second falling drip to collide with the first at its peak of rebound. Martin decided he had to build a special computer controlled dripper to make these collisions and explore the topic photographically. Martin’s drips went viral on the internet and became the inspiration for numerous arts today. Several companies like Mumford Time systems and Cognisys Inc. make special systems just for this double drip photography. In this article I will explain how you can make your own.
For this project I made a stand for the dripper that was more complicated than needed since I plan on using it for a number of demonstrations with students and need to easily adjust it. I like using 11 layer plywood, sold for cabinets and fine woodworking. This material is ⅝” thick. This wood is quite stable, free of voids, and is a lot easier to work with than machining metal. Over the years, this plywood has become my favorite material for building these types of projects.
The project is started by making a Mariott’s bottle, often called a Mariott’s Siphon, and is a way to keep very constant water pressure on the water valve used in this project. Without the Marriott’s bottle the pressure and thus the droplet size would change with the height of water in the bottle so the system would quickly loose calibration. I use a Rubbermaid Litterless Juice Box model #3115 16oz./500ml, which is easily available at any grocery store. Any bottle will work and I often buy bottles at a discount store when I have a class of students building systems. To increase adhesion between the plastic bottle and the valve/bracket I recommend using sandpaper to roughen the surface. I like to use silicone adhesive designed for glass for this application. If the design is changed, the silicone can always be cut off. The different plastics often make it difficult for the adhesive to stick, so try a few inexpensive bottles to see which ones the glue sticks to the best.
The drip solenoid valve is a 12VDC valve bought from a surplus center. These are easily available for a few dollars online. There are a number of better valves on the market and in general the more you spend on the solenoid valve the better they are in quality. The 12VDC valve I use is normally closed and works fine on 9 volts. This is an advantage since students can easily run the valve off a 9V transistor battery. This makes the circuits a lot easier and inexpensive since it does not require an expensive power supply. The solenoid valve is controlled by a 5VDC reed switch, which in turn is controlled by pin 8 of the Arduino. The reed switch is an inexpensive way to isolate the Arduino from the 9VDC pulse that is sent to the valve. The valve takes a lot of current and the reed switch is an easy way to control the valve. The reed switch also makes an audible chirp that is very useful for debugging the circuit. I use the COTO 9020 5V reed switch with an internal resistance of 150ohms available from Allelectronics.com (a nice source for surplus electronics).
The Mariott’s bottle is placed so that the valve to water distance is 44 cm. This distance is where I calibrated the code and valve in my sample program which is a good distance to start. The dripper can be calibrated for any height, but the second drop needs time to hit the first drop, so there is a minimum height that is dependent on the speed of the drip valve. Most of my students find the minimum drip height to be around 20cm.
The Mariott’s bottle. The center straw is cut to be about 3 cm above the bottom on the bottle on the left.
To control the circuit and trigger the Arduino to start, I use a simple push button on the breadboard. The switch is held in a high state by a 1,000 ohm resister and connected to pin 7 on the Arduino. The push button connects pin 7 to low and starts the timing of the solenoid valve.
The flash is controlled by an opto-isolator, which uses a triac circuit so the polarity of the flash cable is not important. The opto-isolator is very fast and it’s perfect for the flash trigger that does not carry much current. It should be noted that the opto-isolator cannot carry the current required for the solenoid, and would easily blow out if an experimenter tried. The flash cable is a standard male PC connector and is supplied by HiViz.com, a site that makes educational kits. Inexpensive cords can also be found on the internet and cut apart. Just make sure you do not cut the connector that matches your flash off.
The flash system is any flash that can be manually controlled to a 1/32 power or lower setting. These low power settings are created by producing a fast flash with a low light output.
Once the system is set up it is time to adjust the valve and timings. Use // to comment out any of the lines in the Arduino code that you do not want to run. Comment out the lines responsible for the second drip. The first thing to do is change the timing of the ValveOpen variable so that the valve makes one clean drip every time. This time will depend on your valve and is different for every manufacturer. The next adjustment is to change the ValvePause variable to create the two drips to collide with each other — timing it to be exact when the first drip is highest in its recoil. After working with systems for a while you can see the unique splash, so you can correct the timing. Experimenters new to the system can use an iPhone 6 on the high speed setting to see if the splash takes place at the correct time. The use of any video camera will greatly simplify the setup time for the experiment.
The last step in the setup is to adjust the flashDelay variable to trigger the flash at the exact time of the collision. This can be done with a video camera to see if the flash takes place before or after the desired time of the drip collision.
The setup can often be difficult. Be patient and take your time, with careful adjustments you will work the variables and get the shot.
Once every variable is adjusted and the system is triggering at the correct time on every flash, it’s time to do some serious still photography. In a dark room, I set the camera to bulb and use a 105 mm macro lens. I put a bolt in the drip to give me something to focus on to get the correct placement of the frame. The camera is set to bulb and triggered in a dark room. The camera shutter is opened and then the water drip system is triggered, then the camera shutter is closed. The water is transparent so the background is what produces the colors for the image. The flash is also directed to the background rather than the subject to the drip. The flash I use is a Canon Speedlight set to 1/64th power, which creates a relatively fast flash of light that is able to stop the motion of the water drips. The placement of colored background patterns creates stunning colors in the water droplets.
After capturing a number of great images, the experimenter will be ready to try changing a few variables to get different effects — these include:
- Adding food coloring to the dripper
- Changing background patterns
- Changing the temperature of the water
- Changing the depth of the water
- Changing the viscosity of the dripped fluid by adding guar gum
- Dripping milk
- Dripping two drops at the same time
- Valve height
- Adding a control to trigger a camera
- Adding a second drip valve
Experimentation is just about endless with this simple system.
Once the photography is over for the day, it’s important to clean out the solenoid valve. The inexpensive valves I use for my class easily rust if water is left in them and will jam up if milk is allowed to dry in the valve. Sometimes a jammed valve can be freed up by using a blunt end of electrical wire pushed through the dripper, lightly freeing up the stuck valve.
This project is a great way for students in just about any level to be introduced to using the Arduino for photography projects.
This is a great project for classrooms teaching 9th grade and up. This is also a wonderful project to stress S.T.E.A.M (science, technology, engineering, art, and math) all in one project.
Adruino Code:
/*
* How to Make a Double Water Drip system
* By
* Ted Kinsman emkpph@rit.edu
* Assistant Professor of Photographic Sciences
* at Rochester Institute of Technology (RIT)
* May 24, 2016
* This is the simplest version of code and circuit to
* make a double water drip.
* The values below are for a drip height of 44cm from bottom of
* valve to surface of water
*/
const int flashPin = 3; // Set flash to pin 3 controls the opto-isolator
const int StartButton = 7; // Set push button to pin 7 this will be an input from a switch
const int DripValve = 8; // Set valve to pin 8 connects to a reed switch which
// controls the solenoid valve
int buttonState = HIGH;
int ValveOpen = 95; // Set a delay variable for time (milliseconds) valve is open
int ValvePause = 20; // set delay between drips (milliseconds)
int flashDelay = 290; // Set a delay for flash to be triggered: adjust
// this for part of collision you want to photograph
void setup() {
pinMode(flashPin, OUTPUT); // Set pin 3 as an output
pinMode(StartButton, INPUT); // Set pin 7 as an input
pinMode(DripValve, OUTPUT); // Set pin 8 as an output
}
void loop() {
buttonState = digitalRead(StartButton);
if (buttonState==LOW) { //starts the drips if the button is pressed
digitalWrite(DripValve, HIGH); // makes the valve open
delay(ValveOpen); //keeps valve open for ValveOpen time (milliseconds)
digitalWrite(DripValve, LOW); // makes the valve close
delay(ValvePause); //keeps valve closed for the time between drips
digitalWrite(DripValve, HIGH); // makes the valve open for second drip
delay(ValveOpen); //keeps valve open for ValveOpen time (milliseconds)
digitalWrite(DripValve, LOW); // closes the valve
delay(flashDelay); //wait the flash delay time to trigger flash
digitalWrite(flashPin, HIGH); //trigger the flash
delay(5); //keep flash trigger pin high long enough to trigger flash
digitalWrite(flashPin, LOW); //turn off flash trigger
delay(3000); // keeps the system in a pause mode to avoid false triggers
} else{
digitalWrite(flashPin, LOW); //sets pins low
digitalWrite(DripValve, LOW); //sets pins low
}
}
Resources
Products:
Cognisys water drop photography kit
Time Machine water drop photography kit
References / Resources:
Electronic parts:
Flash Cables: