Freezing Nucleation Apparatus LINDA
(LED based Ice Nucleation Detection Aparatus),
an instrument for immersion freezing assays

LINDA is an Open Source Hardware (and Software) Project (OSHW)

under the terms of CERN Open Hardware Licence V. 1.1
(see CERN Open Hardware Licence - Introduction for an explanation)

Table of Contents

Cooling Bath

We use a Lauda RC6 Cooling Bath.
broken link: (manual)
manual, local copy

We use a second cooling bath: Lauda ECO RE630 G .
(manual) local copy

The bath is filled with a mixture of ethylene glycol (1/3) and water (2/3).

Light source

The light source is a printed circuit board (PCB) with 56 red LEDs and current limiting resistors for every LED. The PCB is mounted into a case made from polycarbonate sheet and molded into a polyurethane resin. (See below for more information on resin type and handling.)


The electrical circuit is very simple: there are 56 LEDs each with a current limiting resistor. All of the LED/resistor pairs are connected in parallel.
It possibly would be a good idea to add protective circuitry against reverse polarity and overvoltage.
Keep care not to reverse supply polarity and not to supply more than 5V!

Printed Circuit Board

A printed circuit board has been designed using the free (GPL v2) KiCad EDA Software Suite.
The kicad project file, the schematic file and the PCB design file are available for download.

Also available is the collection of Gerber and Excellon production files.

Populating the PCB

Soldering surface mount devices (SMD) by hand requires good soldering skills and an appropriate soldering tool. We first glued the components to the PCB with surface mount adhesive SMA10SL from Electrolube. After positioning the components with the adhesive it needs to be cured for 30 minutes at 90°C.
SMA10SL adhesive may be bought e.g. at Farnell.

Osram LH T674 Any red LED in P-LCC 2 surface mount case with top emission may be used.
We used the Osram LH T674 which has 645nm and 10mA recommended forward current.
This part may be bought at Pollin

We use 180 Ohm SMD chip resistors with 1206 package to get around 20mA LED forward current at 5V supply for every LED.

Power Supply

PEAKTECH 6080 To supply power to the LEDs we use a cheap linear regulated power supply: PEAKTECH 6080 0-15 VDC / 0-3 ADC, bought at Reichelt.

Tray Holder / Tray

Tray Holder

The tray holder consists of a submersible housing for the LED PCB made from polycarbonate sheets of 2, 3 and 5mm thickness, four PCB stand offs made of brass to position the tube tray and a frame to position the whole thing in the cooling bath.

We used extruded transparent polycarbonate sheets made by Bayer (Makrolon GP) and bought it at Röhm. As a glue we used Technicoll 108 also bought at Röhm.

Don't use plexi (polyacryl) as it may loose shape in water (esp. in hot water) and might not perform properly in glycol.

Look the drawings below for the exact dimensions (in mm) of the tray holder.

PCB Mounting and Molding

To mount and mold the LED PCB into the Makrolon housing we implemented the following procedure:

Drill the four holes for mounting the tray holder stands into the polycarbonate top sheet.
Glue together the 3mm top sheet and the three 5mm height edge bars.

Treat the sufaces getting in contact with the polyurethane mold with 3M Scotchcast Electrical Resin Primer 5136 and let dry. The primer improves the adhesion of the polyurethane mold to the polycarbonate sheet.

Put a tiny droplet of transparent silicone to the top of every LED and screw the PCB to the top sheet. The silicone prevents the polyurethane from flowing between the top sheet and the LED when molding.
Additionally seal the screws protruding through the top sheet to hold the stands with a bit of silicone. The resin 226 has very low viscosity and may even flow into the threads.

Glue the back sheet to close the housing except from one side slit.

For the molding we used 3M Scotchcast 226 which has a very low viscosity and easily fills small gaps. In hardened state it has a black color. (see datasheet)

Consider the following instructions when casting with resin 226:
Liquid Resin - Mixing and Handling
Resin Guide Troubleshooting
Resin 226 Safety Data Sheet

Especially keep care to adhere to the prescribed proportion of the two resin components, to thoroughly mix and deaerate the resin after mixing. We used a vacuum desiccator at 1000 Pa to deaerate.

For filling the mold into the housing we used a 60ml syringe with a 3-way tap. This allows to close the tap and remove the syringe when completely filled. For filling we drilled a hole into the side at a corner of the housing oriented it vertically and slowly filled from bottom up to avoid air bubble inclusions.

Cure the mold PCB housing in an oven at 67°C for six hours as it takes more than three days to fully cure at room temperature.


We made tray plates from 5mm polycarbonate sheet.
We made a metal drilling gauge and stacked 5 or more sheets to drill at once.
Cool with water when drilling more than 5 stacked sheets.

Sample Tubes

Eppendorf safe lock tubes We use Eppendorf safe lock tubes (0.5 ml).

Camera System


ImagingSource DMK 72BUC02 USB CMOS Monochrome Camera, 1/2.5" Micron CMOS, progressive scan, up to 2592x1944 pixel DMK 72BUC02 from ImagingSource.

We use the camera in 4x binning mode at 640x480 pixels. A cheaper camera with less resolution probably would also do but the software needed adaptation when using a resolution different from 640x480.

angled miniUSB adapter To connect the USB cable to the camera mounted in the hood an angled USB adapter like the Delock 65097 might be useful (see picture).
It may be bought at


Pentax Lens C1614-M 16mm/f1.4 C1614-M 16mm/f1.4 from PENTAX Precision Co.,Ltd. bought at ImagingSource
It seems that in the mean time Ricoh has taken over the lenses from Pentax, the lens model number is RICOH FL-CC1614-2M, now

Camera Hood

Camera Hood
We made a camera hood from polycarbonate sheet painted black to protect from stray light and to position the camera at a distance of 430 mm from the top of the tubes. 430 mm is the optimal distance for a 16mm lens and our 7x8 tube trays.

See below for drawings.

Temperature Measurement

To measure the temperature in sample tubes, a PhidgetBridge (see below) with four Pt1000 chip sensors molded into sample tubes are used.

Pt1000 Sensors

Temperature sensor soldered Temperature sensor in tube
Temperature Sensors before molding
Temperature Sensors after molding
As temperature sensors we use DIN class A Pt1000 thin film chip sensors 2.3 x 2 mm2 from IST INNOVATIVE SENSOR TECHNOLOGY (P1K0.232.6W.A.010) molded into sample tubes with 3M Scotchcast 226 polyurethane resin. (See above for more information on resin handling.)
These sensors can be bought e.g. at Farnell.

Details on how to manufacture temperature sensors

Solder the Pt1000 chips to a cable (130cm length), making shure the sensor wires do not short. The cable shield should be cut off at the sensor end to avoid making contact to the sensor leads. We used Alpha Wire 3302 with 3.1mm outer diameter.

Perforate the tube lid by one hole large enough to feed Pt1000 sensor through (3mm dia.) and one smaller hole to fill in the resin with a syringe needle. The sensor cable jacket should fit tightly into the hole.

Fix Eppendorf tubes in vertical position, perforated lid on upper end. Feed the Pt1000 chip on lead into the tube and close the lid. Bring the chip inside the tube into a position where it makes contact with the inside wall of the tube (somewhere near the bottom end of the tube, where the tube will be immersed in the cooling liquid) by carefully moving around the lead extending above the tube and watching the position of the chip. Once it is in the right position, hold it there by fixing the lead outside the tube.

Fill the tube with the resin through the second hole in lid by using a small syringe and a large diameter (1.2mm) needle. The tube should be filled from bottom up to avoid inclusion of air bubbles. To facilitate the flow of the viscous resin through the needle, you may have to shorten the needle (2 cm length is o.k.).

Cure the mold in an oven at 67°C for six hours as it takes more than three days to fully cure at room temperature. Wait for the resin grown hard before removing the finished sensor from the holding devices as otherwise the position of the chip inside the tube may change again.

Phidgets USB AD Converter

PhidgetBridge The PhidgetBridge is a USB AD converter interface especially for Wheatstone Bridge based sensors.

A local copy of the PhidgetBridge User Manual is available.

PhidgetBridge PCB
The Pt1000 sensors are connected to the PhidgetBridge as described under "Measuring Resistive Thermal Devices (RTD)" at "Using a Voltage Divider" using two 1000 Ohm 0.1% metal film chip resistors from PANASONIC (ERA6ARB102P). We soldered them to the screw terminal pads of the phidget board (marked with red circles on the picture to the right).
These resistors can be bought e.g. at Farnell.

Eventually you might prefer a leaded instead of an SMD resistor, e.g. this one. You may directly wire them to the phidget's screw terminals.

Computer Control

Operating System Installation

The software system is completely based on free and open software. We use openSuSE Linux distribution but any decent linux distro like Ubuntu, Fedora or whatever would do.


The data aquisition software is grouped around a modified/extended version of the free software (GPL v2) ucview. The extended ucview (ucview-fna) is only available as source and needs to be built for your system.


UCView is a video capture and display program based on the unicap video imaging library which is supported by the camera manufacturer ImagingSource.

As we want to automatically record a sequence of images together with the temperatures measured at the time of the taken picture we needed to program some extension to ucview. The patched sources are available for download.

The extension to ucview allows for running a script after each taken picture.

Image Analysis Script

The image analysis script is written in perl and uses ImageMagick perl module.
The script is available for download (version 2012-07-02).

The image analysis script expects a b/w 640x480 pixels image as input, applies a mask of 8 x 7 circles with a given radius and calculates the sum of the intensities of all the pixels within a circle for each circle.

The center positions of each circle are hardcoded in an array. To compensate for the positioning of the well plate under the camera, the script may transform the image by shifting, rotating and expanding/shrinking according to the respective command line options (--offset, --rotate, --expand).
Use option --help for a description.

Temperature Readout

A small program (Bridge-simple) written in C allows for reading out the temperatures off the Phidgets USB AD converter.
The C source is available for download as well as a Makefile (updated 2014-03-06).

The program queries the Phidgets ADC and calculates the temperature according to the ADC value. The program has a hardcoded list of linear calibration factors, selected based on the Phidgets serial number. If you wish to add your own factors, you may extend deviceCalib[].

Furthermore there is a sensor wire resistance compensation according to a hardcoded constant (wire_resistance).

To build the program, you first need to download, build and install libphidgets. To build libphidgets, the development version of libusb is required.

To be able to access the phidgets devices as a normal user, the file udev/99-phidgets.rules from libphidgets may be copied to /etc/udev/rules.d.

Script to combine image data and temperature

A shell script combining image analysis and temperature registration is available for download (updated 2014-03-14).

This script is meant to be called from ucview and calls the image analysis script and the Phidgets temperature readout program in turn. It combines the time, the result of the image analysis and the temperatures and writes the values to a csv file.

Our extended version of ucview has in the "Preferences" dialog under the tab "Time Lapse" the possibility to specify a script to be executed with every taken image ("Image Processing Script File Path"). The "Image Processing Script Options" specify the command line arguments for the script. The script gets called with these options and the path to the image file appended.

An example "Image Processing Script Options" could be:

--show -c darkred -o ~/tmp/ucview_data/test/test.csv

Use option --help for a description.

The paths to the image analysis script and the temperature registration program are hardcoded, so depending on your setup you will need to change these.

SpreadSheet Data Examination

to be written



For building ucview, you need to have installed the development versions of the needed libraries as well as of course a working gcc tool chain, autotools, dpkg, gtk-doc tools and intltools.

Needed libraries include gtk+-2.0, gmodule-2.0, gthread-2.0, gconf-2.0, libXv, libglade-2.0, OGG/Theora libraries, OGG/Vorbis libraries, libasound, libraw1394, libudev

Before building ucview, libunicap, libunicapgtk and libucil need to be downloaded, built and installed.

The for all three libs, libunicap, libucil and libunicapgtk creates wrong symlinks to libtool's config.sub and config.guess files.
Correct this before running ./configure by issueing the following commands:

ln -s -f /usr/share/libtool/config/config.sub config.sub
ln -s -f /usr/share/libtool/config/config.guess config.guess

After successful compilation run ldconfig (as root) to make the dynamic linker aware of the freshly installed libs.

Building ucview

For building ucview-fna, download and unpack the source tarball. Change to the ucview directory and issue the commands:

sudo make install

The ucview executable should be installed in /usr/local/bin/, now.

To be able to access the camera, the user should be member of the video group (in openSUSE).

Building Bridge-simple

Download Bridge-simple.c and the Makefile to a freshly created directory, change to the directory and issue


Copy the produced executable Bridge-simple to /usr/local/bin.

Install Scripts and

Move or copy scripts and to /usr/local/bin.

Configuration Files for ucview

ucview stores it's settings in several files:

The settings from the Preferences dialog are stored as xml in the file:
(The ~/.gconf directory has moved to ~/.config/gconf in more recent versions of gtk.)

The settings for the camera mode are stored in the file:
If this file exists, it gets evaluated on start of ucview and no "Device Selection" dialog is shown but the camera mode setting is taken from the file.
This file gets created, when the check box "Remember selection and use as default in the future" in the "Device Selection" dialog is active, but once the file exists, it doesn't get updated, even with the checkbox checked. Therefore it is recommended to manually adjust the settings in the file ~/.ucview/default.ini using a text editor.
Relevant settings are [VideoFormat], [Prop-Shutter] and [Prop-Gain].
The relevant settings look like the following:

Identifier=The Imaging Source Europe GmbH DMK 72BUC02 14410275

Identifier=Y800 4x Binning



There are Device specific configuration files stored under ~/.unicap/*.ini where * stands for a camera dependent name, e.g. The%20Imaging%20Source%20Europe%20GmbH%20DMK%2072BUC02%2014410275

This file contains the same settings as the ~/.ucview/default.ini file, with the exception of the camera mode settings (binning, resolution).
The settings from the camera device specific file don't seem to override the settings from ~/.ucview/default.ini.

Tools for the ImagingSource Camera

There are some tools for firmware update and mode selection of the ImagingSource camera on github:
Also see TheImagingSource/tiscamera Wiki.

The firmware update tool is in the folder tiscamera/tools/euvccam-fw and may be built by running make.
For building euvccam-fw libusb-compat-devel needs to be installed.

euvccam-fw -m proprietary
euvccam-fw -m uvc

switches between the proprietary mode used for ucview and the uvc mode used for uvc.
To be used with ucview with 4x Binning and 640x480 resolution, the camera should be set to proprietary mode (factory default).

./euvccam-fw -v

shows the currently loaded firmware version, We have installed firmware version 158.

Firmware version: 158
Capability: d59f6

Firmware may be found under the tiscamera/data/firmware/usb2/. dmk72uc02_158.euvc

./euvccam-fw -u ../../data/firmware/usb2/dmk72uc02_158.euvc

loads the firmware version 158.

Collection of Photographs

Freezing Nucleation Apparatus Overview

FNA LED Immersable Unit

FNA LED Immersable Unit in Cooling Bath with Sample Tubes

FNA LED Printed Circuit Board (PCB)

Some Construction Drawings

The 56 LED Lightsource

Lightsource PCB Schematic Drawing

Lightsource PCB Layout

The Lightsource / Tube Tray

Sample Tray Construction Drawing

Also available as dxf file (drawn with QCad)

The Camera Hood

Camera Hood Construction Drawing

Also available as dxf file (drawn with QCad)

The Camera Hood New Version for Lauda ECO RE630 Bath

Camera Hood New Version Construction Drawing

Also available as dxf file (drawn with QCad)

Bill of Materials

Pos Amount Description Type Manufacturer Vendor Price/pce
1 1 Camera DMK 72BUC02 The Imaging Source The Imaging Source 319 EUR
2 1 Mini USB Adapter mini Usb-B 5 pin male/female 90° angled adapter Delock 6.85 CHF
3 1 Lens C1614-M 16mm/f1.4 PENTAX Precision Co.,Ltd The Imaging Source 152 EUR
4 Polycarbonate Sheet 2mm Makralon Platten GP farblos 099 2050 x 1250 x 2mm3 Bayer Röhm 98.90 CHF
5 Polycarbonate Sheet 3mm Makralon Platten GP farblos 099 2050 x 1250 x 3mm3 Bayer Röhm 148.35 CHF
6 Polycarbonate Sheet 5mm Makralon Platten GP farblos 099 2050 x 1250 x 5mm3 Bayer Röhm 247.30 CHF
7 1.2 kg Polycarbonate Glue Technicoll 108 Ruderer Klebetechnik GmbH Röhm 45.70 CHF
8 1 USB AD Converter 1046_0 - PhidgetBridge 4-Input Phidgets Phidgets $90.00
9 1 AD Converter Enclosure 3808_1 - Acrylic Enclosure for the 1046 Phidgets Phidgets $7.25
10 4 Pt1000 Sensor P1K0.232.6W.A.010 IST INNOVATIVE SENSOR TECHNOLOGY Farnell 11.70 CHF
11 8 Voltage Divider Resistor 1000 Ohm 0.1% ERA6ARB102P PANASONIC Farnell 1.35 CHF
12 2 m Pt1000 Sensor Cable 2 x 28AWG, shielded ALPHA WIRE 3302 Farnell 12.20 CHF/m
13 1 LED Power Supply
14 2.5 m Illumination Plate Power Cable ÖLFLEX® HEAT 180 SiZ Silicone isolated twin conductor 2 x 0.5mm2 LappKabel Conrad 1.08 EUR/m
15 4 Pt1000 Sensor Housing Eppendorf safe lock tubes 0.5 ml Eppendorf
16 1 Cooling Bath Lauda RC6 Lauda ? ?
17 0.453 kg Polyurethane Resin 3M Scotchcast 226 3M Rotima AG 41 CHF
18 0.454 kg Primer 3M Scotchcast Electrical Resin Primer 5136 3M Rotima AG 65.00 CHF
19 50ml Clear Silicone Rubber Sealant Clear Silicone Rubber Sealant 6011048 Dow Corning RS Components 3.938 CHF/50ml
20 4 M3 Brass Hex Standoff M3 5mm x 25mm female, female thread ETTINGER Farnell 0.555 CHF/pce
21 4 M3 Pan Head Screw M3 x 16 TR FASTENINGS Farnell 5.90 CHF/100 pcs
22 4 Brass Spacer 2.0 (1.9)mm high, innner dia 3.2mm, outer dia 6mm ETTINGER Farnell 0.205 CHF/pce
23 50 cm M4 Threaded Rod M4 Threaded Rod A4 stainless steel TR FASTENINGS Farnell 7.25 CHF/pce
24 32 M4 Nut M4 Nut A2 stainless steel DURATOOL Farnell 9.60 CHF/100
25 Mattlack, schwarz KH-Mattemail schwarz 125ml Rupf & Co AG, Glattbrugg Lachenmeier Farben 11.40 CHF
26 Lack Grundierung All Primer, white, 0.375l Delta Professional Lachenmeier Farben 11.90 CHF
27 USB Cable for Camera USB A to USB mini B cable, 3m any e.g. 11.90 CHF

last modified: 2014-10-03 Copyright 2012 by Franz Conen and Lukas Zimmermann W3C Validator