Wild OpenPCR

From Hackteria Wiki
Revision as of 13:33, 10 February 2015 by Dusjagr (talk | contribs) (More links)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to: navigation, search

Attempt to build an OpenPCR just from the description on the website OpenPCR without a kit or any supplied parts.

Pcr done.jpg

Why doing this?

call it free/libre open source There is two aspects to open source hard and software. The one is to build an new product in a community, include different people and skills, combine ideas in the process. To do so developers share files and knowledge openly. And once the product is completed, "consumers" can buy the product like any other product without knowing much about it. Maybe they build it from a kit to get it cheaper and learn a bit about how the product looks inside.
The other openness, some call it free/libre open source, does not distinguish so much between developers and consumers. Everyone should be able to have access to the design, source the parts, build the device, modify it, make derived works, redistribute and use it commercially. To be that open, more information than just source files is needed... with the present rebuild of the OpenPCR I try contribute some to this...
I think people around OpenPCR did a great job. The OpenPCR is well constructed and seems to work if everything is put together properly. The use of a peltier element together with a PC blower is a perfect solution I think. It's not just about heating, PCR also needs cooling for fast cycling... To rebuild it just from the information on the OpenPCR website is not easy. Some parts are easy available (like Arduino and PC components) some are not even open source (like the lid heater). Some software used for the design is not open source (like Solid Works CAD or Adobe AIR). With some hacking and reverse engineering (some important details can be found in the code) it is still possible as the present rebuild shows. And Josh Perfetto form the OpenPCR team responded to all my emails and helped with open and precise answers. Thank you.


Here we go:

The OpenPCR bill of materials (BOM) can be found here:
https://docs.google.com/a/snowrise.com/spreadsheet/ccc?key=0AiaWH3PL_9CndG1GbmtSZ1I3aGdkQkE4YVhwZ3o5c1E#gid=0
Good to know.
So what do we need?
- The PC-Cooler with 90° heat pipe is easy to get for around 20 euro.
- The nice and small power supply that fits into the housing is not so easy. It is a "Flex 1u PC Power Supply 200 W ATX. Bigger (standard size is more easy and should do, just won't fit into the housing
- Arduino ok, SMD driver board with AD converter, connectors, feasible. Will try to simplify the layout to make it single-side DIY. What are the big resistors for? Some kind of heating? Have to figure out.
- LCD Display - standard, anything goes, 4 Lines are nice.
- Heat block and pelter element. Hmm...
- The heated lid. Seems to be important to avoid condensation. Should be simple with any heating element capable to go up to about 100 C. Without lid heating one could just put a layer of mineral oil on top in each tube too.


Laser Cut Housing

First and easy thing is to go up to a FabLab and laser cut the wood parts for the housing. Need to get the files from the website and have the most recent version of SolidWorks to extract the drawings...

Et voila:

Pcr laserhousing.jpg

And the one pdf with all the parts as of November 2012:
File:Pcr laserfiles.pdf
Got some additional information from Josh from OpenPCR: The downloadable files are the more recent versions of our design.

Heat Block and Peltier Element

Now one tricky part is the heatblock and the peltier element. For those we have two nice hacks: 1. A peltier element with the exact right dimensions and with some luck even the rough thermo-block can be found in one of those little electric fridges:

Pcr fridges.jpg

Found those in electronic waste.

Pcr extraction.jpg

Unscrew the blower and the cooler and you will find the peltier element.

Pcr heat parts.jpg

All you need, a aluminium heat-block and a peltier element.
The technical drawing says the heat block is made from cooper and then chromed. This was the first idea to have best thermal conductivity and consistent block temperatures. However was changed later to 1100 aluminum alloy with lower heat capacity (per volume) which leads to faster heating/cooling times. Josh: The peltier is powered at 12 V and has a qMax of around 80 W, dT of 69. It's 4x4cm. It's also rated for thermal cycling (meaning it is less degraded by the thermal stresses of cycling, and will have a longer life). Again you can get slightly different values, but you may have to adjust the PID tuning params.

2. Now that we have the heating/cooling element and the block we need to get the right holes for the eppendorf tubes in it.
Josh says from his experience: "Different manufacturers make 200 ul tubes of different dimensions. But we designed OpenPCR around the key angle of 17.5 degree cone angle, which seems to work for most PCR tubes. Good luck in your endeavors".
So with a fried we designed a special milling tool around this angle. We make this an "Open Shared Hardware Tool", so who ever needs to make some nice 17.5 degree holes may borrow these for a while :-)
This is the drawing with dimensions:

Pcr eppendorf milling tool.png

File:Pcr eppendorf milling tool 02.pdf
File:Pcr eppendorf milling tool 15.pdf

And the ready made tools:

Pcr eppendorf milling tools.jpg
Pcr eppendorf milling tools close.jpg

Here different thermo-blocks made with the tools:

Pcr blocks.jpg


Went up to a local tech shop and drilled the holes in the aluminum block with our nice tools. Did a really bad job though. The divisions on the old milling machine were different for all axes (2.5mm, 4mm, 3mm) this is why all the holes are so weird.

Pcr block.jpg

The drilling tool worked pretty well, drilled a 2.5 mm hole first. The depth of all holes should be equal.

Since I only used parts that were around in the lab I had to change the mechanical construction a bit. Looks like this:

Pcr TopHood.jpg

Pcr Inside.jpg


The Electronics

This is the PC blower I found (90°, with heat pipe), seems to fit pretty well:

Prc PCblower.jpg


The Electronics:
While the mechanical concept and construction is pretty well done, the people who built the electronics for the OpenPCR could have needed some help I guess... some things I still don't quite understand and some remarks: - The PCB is probably auto routed witch usually turns out not so good...(lines to close, pads to small, parts not well arranges)
- Judging form the number of components it should be possible to fit all on a single sided (even smaller) board. That would make the rebuild with home etched PCBs easier.
- The two big resistors are to meet the minimum current demands of the switching power supply... hmm
- Is the extra AD converter really needed?
Josh: That's a 22 bit ADC whereas the Arduino only has a 10 bit ADC. Is needed to compensate for very nonlinear response of thermo sensor and still get accurate (<0.1°) reading for good PID control. - Makes sense. - The two big (heating) resistors are just next to the resistors used for the temperature sensor.
- Connecting a peltier element that consumes some 6-8 ampers with such a small connector is not optimal
- Why place the connector for the temperature sensor just next (below) the LCD connector
- Why resistors at the input lines of a digital circuit and FET transistor?
- SMD components... (I like it)

Edit: Electronics design was also done by Josh (software engineer by occupation) - so kudos for that.
What ever, let's do it:
Modified the PCB as little as possible (around the SMD driver) just to make it doable in single sided. Turned out to be quite ugly with all the bridges and fixes. Would suggest to redesign completely if you do not want to order the double sided PCB. Who wants do redesign OpenPCR-PCB?
The single side design I used:
File:Pcr singlesidePCB.pdf
With those brides to be added:

Prc PCBbridges.png

Prc PCB1.jpg

PCB with reflow soldered SMD parts... looks ok. Did not put the ATX connector.

Prc PCB2.jpg

And pretty messy with all the jumpers to compensate for the second layer...
Still it works.
Connecting the LCD:
- Most LCDs need a potentiometer to adjust for the contrast (on PIN 3, VEE). Had to add this to the OpenPCR print. Don't know how they do it (with a digital pin?)
- My LCD also needed a resistor to limit the current to the back-light...
(please consider when redesigning)...

Connecting the blower
Some blower have 4 pin connectors... just the first three are needed. Pin 1 (GND) is usually marked black.

Prc blowerConnetor.png


The Temerature Sensors
There is two temperature sensors, for the heat block and the heated lid. Both are not specified in the bill of material (or data sheets are not easy to find).
However (Josh): The resistance measurements for these temperature sensors at various temperatures are in the source code. You could get slightly different ones and modify the values in the source.
I used two precision NTC sensors (TS-NTC-103), resistance at 25°C: 10 kOhm.
The said lookup table in the source code is found in the file: "thermistors.cpp"
Looks like this:
LID_RESISTANCE_TABLE[] = {28704,27417,26197,25039,23940,22897,21906,20964,20070,19219,....

The table should contain resistor values for the temperatures from -40 .. 105 °C for the heat block and 0 .. 125°C for the heated lid. These values can be found in the datasheet of your temperature sensor or calculated with a formula.

Then there is the following line in the code to calculate the temperature. You might need to adjust the resistor on the board (R4 and R10) to match your temperature sensor (resistance at about 65°C) and put the corresponding value in this line of code:

unsigned long resistance = voltage_mv * 2200 / (5000 - voltage_mv); // in hecto ohms

(My temperature sensor is 10k at 25°C and 2.2k at 65°C...)

Here my calculation sheet if this might help:

Programming the Arduino

Download the code from the OpenPCR website (do your modifications if needed) and upload it to the Arduino UNO using the normal IDE is straight forward. One tricky thing that took me a while to realize is that the OpenPCR arduino USBtoSerial interface chip is reprogrammed to make the OpenPCR look like a little mass storage. While the electronic are a bit cautiously developed, the software is rather over engineered :-). To control a device through a tiny mass storage device is rather unusual... and maybe one reason why the community is so reluctant to write a good Linux software...
Here the best attempt I guess:
https://github.com/cathalgarvey/OpenPyCR

However, once it works it is kind of cool to just drop a new "protocol" into the OpenPCR device that shows up on the desktop to get the machine running... guess this is the idea, right?

So what you need to do (once the Arduino 328 chip is programmed) is to reprogram the at90usb8 (receptively the at90usb16) chip to hold a LUFA "mass storage device" code. (SCSI/FAT software for the ATmega8U2 written by Xia Hong)

There is an example on how to do this here (you need an AVR programmer):
http://smartinteractionlab.com/lufa-example-turning-your-arduino-into-a-keyboard/

To generate the .hex, go into the "OpenPCR-master/USB/OpenPCRMassStorage" folder with a terminal program and type "make".
Then you execute the following line to program the interface chip:
avrdude -p at90usb82 -F -P usb -c avrispmkii -U flash:w:OpenPCRMassStorage.hex -U lfuse:w:0xFF:m -U hfuse:w:0xD9:m -U efuse:w:0xF4:m -U lock:w:0x0F:m

MyPersonalOpenPCR

Once I knew what is inside the OpenPCR and how two build it, I decided to remake it my way. The "My Personal Open PCR" is based on the OpenPCR design with some parts replaced and with a re-layout of the circuit board to be signle sided.

Pcr MyPersonalOpenPCR.jpg

MyPersonalOpenPCR

Pcr thePartsMyPCR.jpg

What you need to build it.

Pcr theHeaterMyPCR.jpg

The heater is screwed directly onto a simple blower.

Pcr theIndideMyPCR.jpg

The inside when assebmled.

Pcr theDisplayMyPCR.jpg

With the software installed.

Pcr theLidHeaterMyPCR.jpg

Made a laser cut box for the heated lid.

DIY Heated Lid

Pcr theLidCloseUpMyPCR.jpg

Etched circuit board for the heated lid. Used 35um cooper coated board.
Here is the design to get about 20 Watt (1.8 A @ 12V)

File:Pcr MyOpenPCRHeatedLid.pdf
Here the file for the OpenPCR:
File:Pcr OpenPCRHeatedLid.pdf

Performance test

We tested different PCR thermocyclers, a commercial T3000 and the two homemade PCRs. We tested a sample of e.coli using a primer for the tuf gene, distrubuted the sample into all the different thermocyclers and let it run. Tested the PCR product both in a DIY gelBox and a lab grade setup. Turns out the WildOpen PCRs work perfectly! (seems dusjagr messed up the pipetting and added the ladder to the samples that were in the t3000… call it an inline reference :-)

Error creating thumbnail: File missing

MyOpenPCR GelRun.png

Other wild pcr machines

NinjaPCR

Shingo Hisakawa from Tokyo Hackerspace built the massively reworked wild OpenPCR called NinjaPCR

Pcr NinjaPCR2 Shanghai.jpg

Pcr NinjaPCR.jpg

Pcr NinjaPCR Shanghai.jpg

Presentation at Shanghai Maker Carnival with Denisa Kera from Hackteria and Andreas Siagian from LifePatch http://shanghaimakercarnival.com/sh-en/index.aspx


Here a list of all thet was changed from OpenPCR (more software support, easy board design, more easily available power supply): https://github.com/hisashin/NinjaPCR/wiki/What-we-changed-from-OpenPCR


Arduino PCR

Arduino PCR


More links

Low-cost approach to PCR.jpg

D.I.Y. P.C.R. NOTES for MAKE Magazine

A Low-Cost Approach to PCR : Appropriate Transfer of Biomolecular Techniques, 1998

Download File:Low cost approach to PCR - 2007.pdf