Open bioreactor

De Nicelab
Révision de 10 juin 2013 à 21:43 par Winston (discussion | contributions) (Mechanical parts)

Aller à : navigation, rechercher

Open Bioréactor

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


Openbioreacteur.jpg
OpenBioreactor v2.png
His all in one design allows raw material economy, contaminant resistant by the lack of mobile jointure and adaptable to many jar. I/O signals are treated by an Arduino.

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

Prototype open bioreacteur.jpg

Partie électronique

en cours de réalisation

Liens

Le biohackerspace "La paillasse" travaille sur un projet de bio réacteur opensource également, je vous invite à consulter: http://www.lapaillasse.org/news/475/nom-de-code-bioreacteur/