This article is about the construction of a 'Do It Youself' (DIY) f-stop darkroom timer.
Introduction
Some time ago I decided to find a replacement for my old mechanical darkroom timer. I was immidiately suprized by the cost of buying a new one, so I decided to build my own instead. Of course, one seldoms earn any great money on such decision, but it is a creative process and one ends up with a device tailored for ones needs.
Some criterions that were important for me while sketching on the design were:
- a nice price for value
- feature rich
- easily upgradeable
- easy to operate
- compact in size
At the time of writing this article, my timer has the following features:
- f-stop timer mode
- test strip mode
- burn mode
- manual exposure mode
- foot-pedal switch
- metronome
The main unit can be seen in Figure 1 below:
Figure 1: The f-stop timer main unit
Hardware
I wanted a small and handy f-stop timer. Therfore, the power-switch (a solid state relay that switches the 240 VAC on and off) was built in a separate unit, connected to the main unit via a thin and flexible cable (see Figure 2 and Figure 3). There is an USB-connection on the side of the main unit (see Figure 4), to enable easy upgrade of the timers firmware, more on this later.
Figure 2: The f-stop timer main unit with all perifials connected. The black box on top of the image is the power-switch unit. To the left of the main unit is a foot pedal.
Figure 3: Backside of the main unit. A RCA-connection to the power switch unit, a phono-plug to the foot pedal, and the main units on/off switch.
Figure 4: USB-connection for easy upgrade with new firmware.
Internal Hardware
The interior of the f-stop timer is shown in Figure 5-6. The design is built upon an Arduino-board. For those with interest in electronics: Arduino is an open-source electronics prototyping platform based on flexible, easy-to-use hardware and software. It is based on a 8-bit Atmel AVR microcontroller. The Arduino-board is equipped with voltage regulators, USB-interface, I/O-ports etc.
Figure 5: The f-stop timer from within. In the lid (left), a 2x16 character LCD-display is fitted. In between all buttons, one can also spot a speaker to enable audiable output (=metronome). In the bottom part of the case (right), one can see the Arduino micro-computer platform (blue circuit board). Below and to the left of the Arduino board is a 'priority bit encoder' that handles the key-pad. Immidiately below the Arduino is a small circuit that enable contrast and backlight level adjustment of the LCD.
Figure 6: A Close-up on the circuitry described in figure 5.
Firmware
The micro controller on the Arduino platform can be programmed using the Arduino Programming Language, which is based on Wiring. Essentially, both the Arduino Programming Language and Wiring are C/C++.
The AVR chip on the microcontroller has been pre-programmed with a bootloader, making it possible to download new firmware to the Arduino via a standard USB-cable connected to your PC/MAC/Linux computer. No extra hardware is needed to program the chip.
The power of the C++ language and the ease of uploading new code to the chip makes it extraordinary simple to extend the functionality of the f-stop timer whenever you feel you it should have another feature. Great! For example: I did not bother to include an exposure meter in my design. If anyone feel such a need, it is just to hook up a light-sensitive sensor to any of the analog inputs available on the Arduino and write a few lines of code to read the sensor values.
The firmware currently include four different modes of operation:
Normal mode:
You set the exposure time in f-stops. The LCD displays the corresponding time in seconds. Increments and decrements of the exposure time are made in steps of either {1/1, 1/2, 1/3, 1/6, 1/10} full stops. When you press go, the exposure starts and the current exposure time is shown on LCD. During exposure, a metronome beep every full second.
Figure 7: Normal mode LCD
Strip mode:
In strip mode you can either choose to exposure each strip with a full individual exposure, or you can start by first making an exposure to the whole sheet of paper, and then cover-up strips sequentially and make small additive exposures. In both cases you set the base exposure and the number of strips you want to make. You also set the difference in exposure that you want between each strip. On each press on go, the timer expose the next strip by the correct time and also show on LCD how many strips that remains to make.
Figure 8: Strip mode LCD
Figure 9: Strip mode LCD
The example given by Figure 9 will result in the following exposure sequence:
4.00 - 2/3 | 4.00 - 1/3 | 4.00 | 4.00 + 1/3 | 4.00 + 2/3 |
Burn mode:
In burn mode, you can simplify the burn-in of details in a print. You set the additional amount of burn-in you wish to make, in stops relative to the base exposure. The timer automatically calculate, and shows on LCD, the corresponding burn-in time. A press on go starts the burn in exposure.
Figure 10: Burn mode LCD
Manual Mode:
In manual mode, the exposure is controlled manually by the user. Ther are two different ways to expose: (1) the light is toggled on and off on every tap on the go-button (or equivalently on the foot pedal). (2) The light is on as long as you press down to go-button / foot-pedal. In both cases, the timer show the acumulated exposure time on LCD and make a beep every second.
Figure 11: Normal mode LCD
How to make your own
Within short, I intend to extend this article and publish source code to the firmware and include sketches on the circuitry.
Update (January 2015):
Readers interested in building their own f-stop timer are encouraged to do so. It is free to use my design as it is, or to make further improvements to it, as long as it is for non-profit and non-commercial purposes. I take no liability for any damage or injuries that might come with following my design and/or using my firmware. I can not guarante that the source code is free from errors or that the circuity is properly designed and dimensioned. However, I have used the timer for many hours in the darkroom without noticing any bad or odd behaviours.
An outline of the circuitry is illustrated in figure 11 below. The design basically consists of:
- An Arduino base board
- A standard 16x2 LCD display. A trimpot is used to set the contrast of the display. The intensity of the LCD's back-light is controlled by the firmware (PWM) and via a transistor drive.
- A speaker: to enable audiable metronome output.
- A priority bit encoder: to handle the push-button's and to spare some pins on the Arduino base board.
- A solid-state relay: To safely interface with the mains of the enlarger. I strongly advice to implement this interface in a careful and safe manner!
Figure 11: Basic outline of the circuitry. Note that this schematic is not 100% complete.
The firmware's source code and an outline of the schematics are available for download (License GPLv2), see below. Note that the firmware has been slightly updated over the years that I have been using the timer. The current firmware do not correspond to 100% with the 'screen shots' shown above. A bit of warning, the source code is not very well documented. There is currently no 'operators manual' on how to use the timer.
Comments (9)