OpenPCR Design

Design Goals and Decisions

OpenPCR was designed with three primary goals:

  1. Ultra low cost: roughly 1/10th the cost of traditional machines
  2. Be easy to understand, build, modify, and use
  3. Perform accurately: you should be able to trust that the OpenPCR temperature control is not a source of error for your experiments

To meet objectives #1 and #2, we made extensive use of off-the-shelf components, such as the open source Arduino microcontroller and a CPU cooler for the heatsink/fan. Where custom components were needed, we used cheap and commonly available fabrication methods whenever possible, such as the laser-cut birch wooden case. When more specialized components were required, such as the peltier thermoelectric units and lid heater, we sourced parts directly from manufacturers and ordered in bulk to minimize kit costs.

To reduce costs further, we also chose a well block size of only 16 wells, which is smaller than most traditional thermocyclers. We felt that 16 wells were sufficient for many users and usages, and limiting the wells to 16 reduced the heating/cooling and power requirements greatly, as well as the size of the machine. Thus we were able to deliver the lowest cost machine possible, and give users requiring more reaction wells the option of simply using additional machines. Certainly though the 16 well block is not appropriate for all users, such as those doing high-throughput screening.

Accurate temperature control and PCR performance was achieved by a combination of a precision thermistor and measurement circuitry, sophisticated and tuned control algorithms, and the addition of a heated lid to prevent condensation. Though we could have reduced the cost significantly by forgoing the heated lid (users could instead use oil to control evaporation), we chose to include it as the heated lid makes it significantly easier to get accurate PCR results, an important design goal.

Releasing an open source design along with an extensive assembly manual, and basing the system on the commonly used Arduino Uno microcontroller, thus making it easy to modify, further satisfied design goal #2.

The below sections explain the technical details of some of the key OpenPCR systems further.

Temperature Control & Uniformity

For accurate PCR results, it is important that the temperature of each well be consistent. We began by ensuring the entire bottom surface area of the heatblock interfaced with the peltier thermoelectric unit, which simplified the thermal consistency design. We also machined the heat block from 1100 aluminum, which has a higher thermal conductivity and a lower specific heat compared with other alloys of aluminum. The 1100 aluminum is more difficult to machine, but improves the thermal consistency, while the lower specific heat improves the ramp times. The heat block is insulated at the sides, and machined to provide tight contact with standard 200 uL tubes.

To measure the heat block temperature, we embed a 0.033” diameter, +/- 0.5 C thermistor deep within the heat block, coupled with a thermally conductive yet electrically insulating epoxy. This thermistor is read with 22-bit accuracy by a precision ADC. The small size of the thermistor responds quickly to temperature changes within the block.

The heat block temperature measurements feed into a temperature controller, which controls the drive of the thermoelectric heater/cooler. The goal is to reach target temperatures as quickly as possible, with little to no overshoot or oscillation. Our controller uses a hybrid of bang-bang and PID control, and the PID algorithm is further tuned based on the target temperature range and heating/cooling direction.

Heated Lid

You carefully prepare your PCR reaction mixture with the right concentrations, but it doesn't always stay that way. When the PCR machine heats up, some of what water inevitably evaporates. The small amount that initially evaporates is inconsequential, but what happens next depends on your machine.

Without a heated lid, that moisture begins to condense at the cooler, top of the tube. Eventually, this process transfers a good deal of water to a large droplet at the top of the tube, at which point your reagent concentrations are greatly effected, and your reaction fails.

The OpenPCR machine features an adjustable-height heated lid, which heats the tops of your tube up to 120 C, preventing any substantial condensation. The adjustable-height lid also places a force on each PCR tube, ensuring adequate thermal contact between the PCR tube and well block. Though condensation can be combatted by placing a layer of mineral oil above your reactions, this extra step is inconvenient and often leads to PCR contamination. The OpenPCR's heated lid is made from a kapton resistive heater and controlled with a PID algorithm, and helps deliver reproducible PCR results every time.

Software Control

The OpenPCR is controlled in real-time by an Arduino Uno microcontroller, and displays its status on a 4x20 LCD. The Arduino software is written in C++ and open-sourced. We hope this provides an easy way to modify the behavior of your OpenPCR, or a solid starting point for other thermal control projects you may have.

The PCR protocol is programmed via a Windows/OS X GUI application created in Adobe AIR. This makes it easy to program your PCR protocol graphically. You simply connect your OpenPCR via USB when you are ready to upload your program, and once the program has begun, you may disconnect OpenPCR from your computer. The PC GUI application supports storage of an unlimited number of PCR programs, while the OpenPCR itself stores only one. However this makes it easy to re-run the previously used PCR protocol without reconnecting a PC.

We modified the Arduino Uno to present itself as a USB Mass Storage device. This was a little hackish, but lets the OpenPCR work across Windows/Linux/OS X without USB driver support. It also opens up some interesting automation options, because it makes control of the machine simple read/write file operations. OpenPyCR is an interesting example of a project using this capability to control the OpenPCR from a Python library/command line client. OpenPyCR is the recommended method for controlling OpenPCR from Linux computers due to the lack of Adobe AIR on Linux.