Open bioreactor
Sommaire
Open Bioreactor
A polyvalent bioreactor
"A bioreactor [...] refer to a device or system meant to grow cells or tissues in the context of cell culture. These devices are being developed for use in tissue engineering or biochemical engineering." wikipedia the proposed design is a plug&play unique diver's, low cost and will insure those functions:
- Soft brewing of cells by sucking up air reflux, no helix are requiered.
- Oxygenation and CO2 control via Arduino
- Photosynthesis
- Smart heating
Initial volume 'll be 1 or 2 liters. More would be costly. By the way, by renewing the nutritive solution, a production mode is possible. An outside PHmeter could check the acidity of the solution by taking sample via a perilstatic pump.
It would be easy to build. All parts are easy to find and cheap. A printable version exists. For the emerging countries a reflexion on a model based on recycled raw material will be achieve.
Mechanical parts
For the first prototype the following elements should be necessary:
- 2 plastic pipes ∅22 et ∅35
- Crystal tube, about 2 meters
- a fish tank pump
- a no return valve
- HEPA filters from a vaccum
- a tupperware box
- an arduino
- heat resistant epoxy glue
- a thermoresistor CTN type
- a computer's power suplly
- T5 neon
- a 7w lightbulb starter
- heating wire or halogen lamp
- 4 mosfets and 4 schotty diodes
- a 1 or 2 liter jar
- a windscreen washer's pump (optional)
Openscad
difference() { cylinder(h=200,r=11,center=true); cylinder (h=240,r=10,center=true); } difference() { union(){cube([2,21,160],center=true); rotate(120,0) cube([2,21,160],center=true); rotate(60,0) cube([2,21,160],center=true);} cylinder(h = 200, r = 8.1, center = true); } difference(){ difference() { translate([0,0,40]) cylinder(h= 100,r= 15); translate([0,0,38]) cylinder(h= 110,r= 14);} translate([0,-5,60]) rotate([90,90,0]) cylinder(h=15,r =1.5); } translate([-3,10,40]) cube([6,4,40]); difference() { translate([-3,-14,40]) cube([6,4,40]); translate([0,-5,60]) rotate([90,90,0]) cylinder(h=15,r =1); } difference() { translate ([0,0,90]) cylinder(h=27,r=11.1); translate ([0,0,89.9]) cylinder(h=27.2,r=7.5);} difference() { translate([0,0,-88]) cylinder(h=5,r=16,center=true); translate ([0,0,-80]) cylinder (h=30,r=10,center=true); } difference() { translate ([0,0,-100]) metric_thread(26, 2, 12); translate ([0,0,-95]) cylinder (h=20,r=10,center=true); } pi = 3.14159265; function segments(diameter) = min(50, ceil(diameter*6)); module metric_thread(diameter=8, pitch=1, length=1, internal=false, n_starts=1) { n_turns = floor(length/pitch); n_segments = segments(diameter); h = pitch * cos(30); union() { intersection() { for (i=[-1*n_starts : n_turns-1]) { translate([0, 0, i*pitch]) { metric_thread_turn(diameter, pitch, internal, n_starts); } } translate([0, 0, length/2]) { cube([diameter*1.1, diameter*1.1, length], center=true); } } if (internal) { cylinder(r=diameter/2 - h*5/8, h=length, $fn=n_segments); } else { cylinder(r=diameter/2 - h*5.3/8, h=length, $fn=n_segments); } } } module english_thread(diameter=0.25, threads_per_inch=20, length=1, internal=false, n_starts=1) { mm_diameter = diameter*25.4; mm_pitch = (1.0/threads_per_inch)*25.4; mm_length = length*25.4; echo(str("mm_diameter: ", mm_diameter)); echo(str("mm_pitch: ", mm_pitch)); echo(str("mm_length: ", mm_length)); metric_thread(mm_diameter, mm_pitch, mm_length, internal, n_starts); } module metric_thread_turn(diameter, pitch, internal, n_starts) { n_segments = segments(diameter); fraction_circle = 1.0/n_segments; for (i=[0 : n_segments-1]) { rotate([0, 0, i*360*fraction_circle]) { translate([0, 0, i*n_starts*pitch*fraction_circle]) { thread_polyhedron(diameter/2, pitch, internal, n_starts); } } } } function z_fct(current_radius, radius, pitch) = 0.5*(current_radius - (radius - 0.875*pitch*cos(30))) /cos(30); module thread_polyhedron(radius, pitch, internal, n_starts) { n_segments = segments(radius*2); fraction_circle = 1.0/n_segments; h = pitch * cos(30); outer_r = radius + (internal ? h/20 : 0); inner_r = radius - 0.875*h; x_incr_outer = outer_r * fraction_circle * 2 * pi * 1.005; x_incr_inner = inner_r * fraction_circle * 2 * pi * 1.005; z_incr = n_starts * pitch * fraction_circle * 1.005; x1_outer = outer_r * fraction_circle * 2 * pi; z0_outer = z_fct(outer_r, radius, pitch); z1_outer = z0_outer + z_incr; polyhedron( points = [ [-x_incr_inner/2, -inner_r, 0], [x_incr_inner/2, -inner_r, z_incr], [x_incr_inner/2, -inner_r, pitch + z_incr], [-x_incr_inner/2, -inner_r, pitch], [-x_incr_outer/2, -outer_r, z0_outer], [x_incr_outer/2, -outer_r, z0_outer + z_incr], [x_incr_outer/2, -outer_r, pitch - z0_outer + z_incr], [-x_incr_outer/2, -outer_r, pitch - z0_outer] ], triangles = [ [0, 3, 4], [3, 7, 4], [1, 5, 2], [2, 5, 6], [0, 1, 2], [0, 2, 3], [4, 6, 5], [4, 7, 6], [7, 2, 6], [7, 3, 2], [0, 5, 1], [0, 4, 5] ] ); }
prototype
Electronic
Coming soon
Links
The biohackerspace "La paillasse" is working on a similar project, I invite you to see: http://www.lapaillasse.org/news/475/nom-de-code-bioreacteur/