Drop photography is a fascinating occupation for the dark winter days, when outside is not much to observe. It's a hobby that you can exercise in house without getting frozen. My interest arose from the interest for photographing falling objects, in particular liquid. By photographing moving liquids the motion freezes in a natural form and all its beauty visible.
It is almost impossible to push the camera button manually at the right time without feedback. My first idea was to build a light tunnel by which the camera is triggered once something falls through the light beam. At that time, a fellow colleague suggested to use the Arduino, see www.arduino.cc.
The Arduino is a single-chip computer with a number of analog input / output ports and digital ports. The Arduino can be programmed with your PC at is able to work standalone. You can order a quite a comprehensive starter kit for less than € 50, -.
My attempts with the laser tunnel failed because it missed a lot of falling droplets before the camera was triggered. This was because the adjustment of a drop is very difficult in a system that is build based upon moveable parts. Furthermore, I suspect that a transparent drop has difficulty to interrupt a light beam. Well, let’s use the light tunnel for another project.
Because I was fed up with a dripping system based on a hole in a plastic bottle, I ordered a valve relay. This relay you can control via a command to the Arduino. The idea was to control the drop size and time delay to the second drop. With the control of the first drop, the control of the camera is also arranged.
The laser beam in combination with the light sensor was not needed anymore. When the first drop is fired, you can precisely determine the delay for activating the camera.
Through my efforts with the light tunnel I found that work fully autonomously with an Arduino demands to many ports. Time for a different approach. Most ports were occupied by potentiometers and switches for setting the various program functions. What if I would use the PC to make all settings and send it to the Arduino, which it will perform, then it might work much more flexible.
The prototype was built quickly in Dot.net. In one screen you can make the necessary settings, and then press a button to the Arduino to execute the command. Command and setting string is serially controlled via the USB cable connected to the Arduino. For the Arduino, I have built a program that separates the command and settings to operate certain functions.
One problem that I have encountered is that the Arduino uses a delay command to make a timer setting. If this delay command is executed everything stops in the Arduino. Because I needed two timers that have to work at the same time, I found a solution by creating two separate subroutines, one for the dropper and one for the camera delay. When calling the subroutine, the first action is to save the current time plus the delay time. If the delay time has elapsed, the desired action is performed.
The next obstacle was the bad serial connection. Whenever the PC gave a command to the Arduino, it seemed as if only half came through, or not at all. It is so very annoying that the drop relay does not close and the entire liquid stock deflate, as the droplet size is not come through.
The cause was found in the overflow of the serial buffer of the Arduino. There was a Serial.print command that I used to study the program sequence, constantly sending information to the serial port at the same time as my PC did.
The new structure does have ensured that the number of ports used on the Arduino is drastically reduced so that I confidently can increase new functionality. But that's for the next update of this page. Look here for the first results!
For questions, source codes or experience exchanges, use my contact page. If required, we can exchange our email addresses.