Engineering
The Biofrag was designed on openSCAD and the code used to manipulate the different areas and attributes of the 3D mechanism can be found below. Both the inner and outer constructions of the Biofrag used various versions of the same code, with the inner layer being scaled down to allow for it to fit within the outer layer.
//This code below is the syntax for Biofrag v1. The code has gone through several iterations to include screw locking mechanism and multiple layers.
//All units are in mm
//the parameters of the bioballs
$fn=100; //number of faces
outer_radius=30;
inner_radius=29;
hole_radius=2;
n_holes=12;
n_angle=360/n_holes;
//end of defining parameters
difference(){ //You delete group of objects from another group of objects
union() {sphere(r=outer_radius); //This is Big sphere from which you delete another sphere}
//here we delete group of objects from the above sphere
union() {sphere(r=inner_radius); //This is small sphere from which you delete another sphere
//The following is the number of balls
for(i = [0:n_holes]) {rotate([0, 0, n_angle * i]) translate([0,7, -9])
rotate([45, 0, 0])
cylinder(r = 4, h = 50);}
for(i = [0:n_holes]) {rotate([0, 0, n_angle * i]) translate([0, 6, 4])
rotate([45, 0, 0])
cylinder(r = 3, h = 50);}
for(i = [0:n_holes])
{rotate([0, 0, n_angle * i]) translate([0, 10, 14])
rotate([45, 0, 0])
cylinder(r = 4, h = 50);}
for(i = [0:n_holes]) {rotate([0, 0, n_angle * i]) translate([0, -1, -15])
rotate([45, 0, 0])
cylinder(r = 4, h = 50);}
// This is to make the half sphere, basically we delete a big cube at hlaf-the sphere
translate([0,0,-20])
cube([outer_radius*2,outer_radius*2,40], center=true)}}
//This code below is the syntax for Biofrag v1. The code has gone through several iterations to include screw locking mechanism and multiple layers.
//All units are in mm
//the parameters of the bioballs
$fn=100; //number of faces
outer_radius=30;
inner_radius=29;
hole_radius=2;
n_holes=12;
n_angle=360/n_holes;
//end of defining parameters
difference(){ //You delete group of objects from another group of objects
union() {sphere(r=outer_radius); //This is Big sphere from which you delete another sphere}
//here we delete group of objects from the above sphere
union() {sphere(r=inner_radius); //This is small sphere from which you delete another sphere
//The following is the number of balls
for(i = [0:n_holes]) {rotate([0, 0, n_angle * i]) translate([0,7, -9])
rotate([45, 0, 0])
cylinder(r = 4, h = 50);}
for(i = [0:n_holes]) {rotate([0, 0, n_angle * i]) translate([0, 6, 4])
rotate([45, 0, 0])
cylinder(r = 3, h = 50);}
for(i = [0:n_holes])
{rotate([0, 0, n_angle * i]) translate([0, 10, 14])
rotate([45, 0, 0])
cylinder(r = 4, h = 50);}
for(i = [0:n_holes]) {rotate([0, 0, n_angle * i]) translate([0, -1, -15])
rotate([45, 0, 0])
cylinder(r = 4, h = 50);}
// This is to make the half sphere, basically we delete a big cube at hlaf-the sphere
translate([0,0,-20])
cube([outer_radius*2,outer_radius*2,40], center=true)}}
Figure 1 below shows the final version of the Biofrag and its inner and outer components
Figure 1. The inner and outer layer of the Biofrag
The Biofrag Isolation Unit
The Biofrag Isolation Unit (BIU) was also designed using the openSCAD software. The top and bottom were developed using two separate sets of codes.
The code below was manipulated to develop the bottom of the BIU.
//box length
$fn=100;
box_length = 80;
//box_breadth
box_breadth = 50;
//box height
box_height = 4;
//outer radius for rounded box
radius_outer = 5;
//radius for screw holes
radius_hole = 2;
//height of the holes
height_holes=-20;
//diameter of the banana connector
banana_diameter=8.5;
module faceplate(l,b,r_outer,r_hole) {
minkowski() {
circle(r_outer);
square([l,b]);}}
module inner_shape(l,b,r_outer) {minkowski() {circle(r_outer-3);
square([l,b]);}
module box(l,b,h,r_outer,r_hole)
{linear_extrude(height = h)faceplate(l,b,r_outer,r_hole);}
difference()
{union() {box(box_length,box_breadth,box_height,radius_outer,radius_hole);
translate([-2,-2,4])
box(box_length+4,box_breadth+4,box_height,radius_outer,radius_hole);
translate([-4,-4,8])
box(box_length+8,box_breadth+8,box_height,radius_outer,radius_hole);}
translate([0,0,4])
box(box_length,box_breadth,box_height+5,radius_outer,radius_hole);}
The top of the BIU was designed using the code below.
//box length
$fn=100;
box_length = 80;
//box_breadth
box_breadth = 50;
//box height
box_height = 30;
//outer radius for rounded box
radius_outer = 5;
//radius for screw holes
radius_hole = 2;
//height of the holes
height_holes=-20;
//diameter of the banana connector
banana_diameter=8.5;
module faceplate(l,b,r_outer,r_hole)
{difference() {
minkowski()
{circle(r_outer);
square([l,b]);}
circle(r_hole);
translate([l,0,0])circle(r_hole);
translate([0,b,0])circle(r_hole);
translate([l,b,0])circle(r_hole);}}
module inner_shape(l,b,r_outer) {difference() {minkowski() {circle(r_outer-3);
square([l,b]);}
circle(r_outer);
translate([l,0,0])circle(r_outer);
translate([0,b,0])circle(r_outer);
translate([l,b,0])circle(r_outer);}}
module box(l,b,h,r_outer,r_hole) {difference() {union()
{linear_extrude(height = h)
{difference() {faceplate(l,b,r_outer,r_hole);
inner_shape(l,b,r_outer);}}
linear_extrude(height = 2)faceplate(l,b,r_outer,r_hole);}
union() {rotate([0,0,0])
translate([box_length/2,box_breadth/2,-0.2])
cylinder(d=3, h=8, $fn=100); //Top Vent
rotate([0,90,0])
translate([height_holes+4,25,box_length-2])
cylinder(d=banana_diameter, h=10, $fn=100); //For Raman Probe}}}
box(box_length,box_breadth,box_height,radius_outer,radius_hole);
//translate([box_length+2*radius_outer+5,0,0])linear_extrude(height = 2)faceplate(box_length,box_breadth,radius_outer,radius_hole);
The code below was manipulated to develop the bottom of the BIU.
//box length
$fn=100;
box_length = 80;
//box_breadth
box_breadth = 50;
//box height
box_height = 4;
//outer radius for rounded box
radius_outer = 5;
//radius for screw holes
radius_hole = 2;
//height of the holes
height_holes=-20;
//diameter of the banana connector
banana_diameter=8.5;
module faceplate(l,b,r_outer,r_hole) {
minkowski() {
circle(r_outer);
square([l,b]);}}
module inner_shape(l,b,r_outer) {minkowski() {circle(r_outer-3);
square([l,b]);}
module box(l,b,h,r_outer,r_hole)
{linear_extrude(height = h)faceplate(l,b,r_outer,r_hole);}
difference()
{union() {box(box_length,box_breadth,box_height,radius_outer,radius_hole);
translate([-2,-2,4])
box(box_length+4,box_breadth+4,box_height,radius_outer,radius_hole);
translate([-4,-4,8])
box(box_length+8,box_breadth+8,box_height,radius_outer,radius_hole);}
translate([0,0,4])
box(box_length,box_breadth,box_height+5,radius_outer,radius_hole);}
The top of the BIU was designed using the code below.
//box length
$fn=100;
box_length = 80;
//box_breadth
box_breadth = 50;
//box height
box_height = 30;
//outer radius for rounded box
radius_outer = 5;
//radius for screw holes
radius_hole = 2;
//height of the holes
height_holes=-20;
//diameter of the banana connector
banana_diameter=8.5;
module faceplate(l,b,r_outer,r_hole)
{difference() {
minkowski()
{circle(r_outer);
square([l,b]);}
circle(r_hole);
translate([l,0,0])circle(r_hole);
translate([0,b,0])circle(r_hole);
translate([l,b,0])circle(r_hole);}}
module inner_shape(l,b,r_outer) {difference() {minkowski() {circle(r_outer-3);
square([l,b]);}
circle(r_outer);
translate([l,0,0])circle(r_outer);
translate([0,b,0])circle(r_outer);
translate([l,b,0])circle(r_outer);}}
module box(l,b,h,r_outer,r_hole) {difference() {union()
{linear_extrude(height = h)
{difference() {faceplate(l,b,r_outer,r_hole);
inner_shape(l,b,r_outer);}}
linear_extrude(height = 2)faceplate(l,b,r_outer,r_hole);}
union() {rotate([0,0,0])
translate([box_length/2,box_breadth/2,-0.2])
cylinder(d=3, h=8, $fn=100); //Top Vent
rotate([0,90,0])
translate([height_holes+4,25,box_length-2])
cylinder(d=banana_diameter, h=10, $fn=100); //For Raman Probe}}}
box(box_length,box_breadth,box_height,radius_outer,radius_hole);
//translate([box_length+2*radius_outer+5,0,0])linear_extrude(height = 2)faceplate(box_length,box_breadth,radius_outer,radius_hole);
Figure 2 below depicts a complete render of the Biofrag Isolation Unit
Figure 2: Biofrag Isolation Unit (the portholes allowing for insertion of oxygen and chlorite sensors are also depicted), the top will also be transparent.