DIY F/Stop Timer Construction

This webpage shows how you can build an f/stop timer for B&W analogue printing. If you just want to buy one, both RHD and DA will sell you a very nice working and well-supported unit. I will not sell you a timer.

If you build this, please contact me (email address is in the headers of all the source files) as I'd like to have some idea of how many of these are out there. Of course if you have suggestions or bug reports, please send them in too.

Parts and Resources

You will require:

PCBs from the prototype run are all sold out now, sorry. If there is enough demand, I might consider a new batch. The board design files have an additional circuit (an analogue timer) that you can disregard.

This was my first attempt at using KiCad so library files ended up spattered all over my filesystem. I've tried to include everything in the above tar archive but if there's something missing (note the extras directory, you need everything in that too) and it won't build then email me.

You don't need to use the official PCB, you can easily make up the circuit using an Arduino Prototyping Shield (about $3 on eBay) and a couple of hours with the soldering iron.

Construction Process

From the source code archive, copy the Keypad, RotaryEncoder and FstopTimer directories to your Arduino Libraries directory and the fstop_driver (top level sketch) to your sketchbook. Make sure it compiles successfully.

Load the PCB...

The power supply components on the board (bridge and 470uF cap) can be left off if you're running on USB power but are needed if you want to run from a 5V AC transformer.

If using a TTL-compatible output device, e.g. optocoupler, connect it to the OUTTTL header and leave off the relay driver components (BC548 and 1N4004). Otherwise, connect your relay coil to OUT and use the OUTVCC header to supply the relay's coil voltage. If the relay coil is 5V, you can just short the OUTVCC header to use the local 5V rail.

Connect a normally open momentary footswitch to the FOOT header.

The rotary encoder gets mounted on a little daughter board and connected to the main board using 6 pins of header; this is to raise it to the front-panel level with the LCD.

Put it all in a box, compile the source and flash the Arduino. Plug the USB port of the Arduino into a USB power source (e.g. iPhone charger) and it should boot up after a second.

If the keypresses result in unexpected behaviour, you probably have the pins to the keypad in the wrong order so it thinks you're pressing different keys. Get them in the right order.

Construction Photos

Fresh PCBs:

Assembled board, top:

With annotations as to component purpose

Assembled board, bottom:

Note that the contrast-adjust pot (blue thing) for the LCD has been mounted on this side for accessibility, and the pins for the Arduino go here too because the board will stack on top of the Arduino.

Rotary Encoder daughterboard:

with pin header on reverse:

Complete assembled stack, showing Arduino, new PCB and LCD:



Note that you can also see the keypad attached by ribbon cable.

Beginning installation in aluminium case (forgive the clumsy Dremel-work):


You can see here that I've removed the power-filter capacitor (this instance doesn't use it because it depends on USB-power) in order to clear the keypad. It's very very tight in that case...

Showing how the PCB stacks line up to get the encoder at the right height:

Installation of solid-state relay:

As you can see here, the case I chose is slightly too small for the PCB, so I've had to trim the right hand side fairly heavily. It doesn't encroach on any tracks, but it was a pretty ugly hack to cram it in there. Similar trimming of the rotary encoder PCB was required and that came very very close to the pins.

Finally, the completed item:

The 3.5mm port you can see at front-left is for attaching the foot-switch. It is connected in parallel with the push-switch of the rotary encoder.

I originally intended for the case to have a male/female pair of IEC sockets and an internal power supply transformer but it was nowhere near large enough to accommodate all of that. This particular instance therefore depends on an external USB power supply and the mains connections are flying-leads.