Open bioréacteur

De Nicelab
Aller à : navigation, rechercher

Ce projet n'est plus en cours de réalisation. Un design différent, jugé plus simple et efficace est en cours d'élaboration, voir Flat_reactor

Open Bioréacteur

Un bioréacteur polyvalent

"Un bioréacteur, appelé également fermenteur ou propagateur, est un appareil dans lequel on multiplie des micro-organismes (levures, bactéries, champignons microscopiques, algues, cellules animales et végétales) pour la production de biomasse (écologie), ou pour la production d'un métabolite ou encore la bioconversion d'une molécule d'intérêt." wikipedia Le design proposé est un monoplongeur plug and play, à faible coût qui assurera plusieurs fonctions:

  • le brassage en douceur grace à l'aspiration des cellules, permet de faire l'économie d'un systême moteur/hélice ou d'une table de marée.
  • L'oxygénation et la carbonisation controlée par capteur de CO2 relié a un arduino
  • La photosynthèse pour les organismes qui en nécessitent
  • Le pilotage du chauffage du medium de culture


Openbioreacteur.jpg
OpenBioreactor v2.png
Son concept "tout en un" permet de réaliser des économies matérielles, une meilleure étanchéité, un risque de contamination diminué par l'absence de jointure mobile, ainsi qu'une adaptabilité selon le contenant. Les entrées/sorties sont assurées par un arduino.

La contenance du prototype initial est entre 1 et 2L pour des raisons de coût. Cependant la production en continue est possible via l'ajout d'une pompe périlstatique au systeme qui permettra l'extraction, le renouvellement, et le prélévement du medium. Un controle du PH sur une sonde extérieure, via des cycles horodatés de prélévements peut être mis en place si nécessaire.

Sa fabrication ne requiert aucune compétence particulière. Les seules fournitures "exotiques" sont les tubes transparents, facilement trouvable en magasins aquariophile. Un modèle imprimable en ABS transparent est disponible pour les heureux possesseurs d'imprimante 3D. Pour les pays émergents, n'ayant pas accès facilement à certains éléments, une réflexion sur une version 100% récup sera menée parallèlement.

Liste du matériel

Pour le prototype actuel je devrais utiliser:

  • 2 tubes plastiques transparents ∅22 et ∅35 (si vous n'avez pas d'imprimante 3D)
  • Du flexible cristal, environ 2m pour être tranquille
  • une pompe aquarium faible ou moyenne capacité
  • une valve anti retour
  • filtre HEPA d'aspirateur + mousse
  • un tupperware de la taille de la pompe à air
  • un arduino
  • colle epoxy
  • une thermistance type CTN (récupérable sur une batterie de PC portable)
  • un bloc d'alimentation PC
  • un neon T5 de 10 ou 15cm blanc chaud
  • un starter d'ampoule fluocompacte 7W
  • un élément chauffant au choix: fil, plaque de cuisson, ampoule halogène
  • 4 transistors de puissance et 4 diodes schotty
  • un contenant de 1 à 2 L avec son couvercle
  • une pompe de lave vitre automobile (optionnelle selon l'utilisation du bioréacteur)

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/