Added a complete printer scad file with all the parts + the box frame.
authorDavid Rubio <cymerio@gmail.com>
Tue, 27 Nov 2012 22:40:13 +0000 (23:40 +0100)
committerDavid Rubio <cymerio@gmail.com>
Tue, 27 Nov 2012 22:44:52 +0000 (23:44 +0100)
configuration.scad.dist
doc/complete-printer-plus.scad [new file with mode: 0644]

index 16434e4..a0c98bd 100644 (file)
@@ -123,8 +123,14 @@ include <inc/functions.scad>
 
 // These constants define the geometry of the complete-printer.scad
 
-x_smooth_rod_length=325;
-y_smooth_rod_length=405;
-z_smooth_rod_length=235;
+//x_smooth_rod_length=325;
+//y_smooth_rod_length=405;
+//z_smooth_rod_length=235;
+bed_x_size=225;
+bed_y_size=225;
+
+x_smooth_rod_length=450+board_thickness*2+10; // 492 for 16mm thickness; 484 for 12mm thickness
+y_smooth_rod_length=470;
+z_smooth_rod_length=405;  
 bed_x_size=225;
 bed_y_size=225;
diff --git a/doc/complete-printer-plus.scad b/doc/complete-printer-plus.scad
new file mode 100644 (file)
index 0000000..e82c29f
--- /dev/null
@@ -0,0 +1,524 @@
+// PRUSA iteration3
+// Complete printer visualisation
+// GNU GPL v3
+// Greg Frost
+// http://www.reprap.org/wiki/Prusa_Mendel
+// http://github.com/prusajr/PrusaMendel
+
+include <../configuration.scad>
+use <../y-drivetrain.scad>
+use <../y-axis-corner.scad>
+use <../z-axis.scad>
+use <../x-end.scad>
+use <../x-carriage.scad>
+use <../y-axis-bracket.scad>
+use <../bushing.scad>
+use <../bearing-guide.scad>
+module ybeltholder() {
+       include <../y-belt-holder.scad>
+}
+module bearing_guide() {
+       inner();
+       translate([0,0,7+0.9*2])rotate([0,180,0])outer();
+}
+
+
+//--------------------------------------------------------------------------------------------------------------------------------
+// screws, nuts, etc
+//--------------------------------------------------------------------------------------------------------------------------------
+// wood (flat) screw
+module screw(depth=board_thickness*1.5){
+       module arrow(radiusmax=4, thickness=1, initialgap=0.5, radiusmin=0.5, depth=4) {
+               union() {
+                       hull() {
+                               translate([0,0,initialgap/2-0.25])cube(size=[radiusmax,thickness,initialgap+0.5], center=true);
+                               translate([0,0,depth])cube(size=[radiusmin,radiusmin,radiusmin], center=true);
+                       }
+                       rotate([0,0,90]) hull() {
+                               translate([0,0,initialgap/2-0.25])cube(size=[radiusmax,thickness,initialgap+0.5], center=true);
+                               translate([0,0,depth])cube(size=[radiusmin,radiusmin,radiusmin], center=true);
+                       }
+               }
+       }
+
+       color([1,1,0])
+       difference() {
+               union() {
+                       cylinder(r1=4,r2=3.5/2,h=4);
+                       cylinder(r1=3.5/2,r2=3.5/2,h=depth-2);
+                       translate([0,0,depth-2])cylinder(r1=3.5/2,r2=0,h=2);
+               }
+               arrow();
+       }
+}
+module M3screw(depth=10) {
+       difference() {
+               union() {
+                       cylinder(r=1.5, h=2+depth);
+                       cylinder(r=2.5, h=2);
+               }
+               cube(size=[6,1,2],center=true);
+       }
+}
+// M3 nut
+module M3nut(){
+       color("silver")
+       difference(){
+               translate([0,0,2])cylinder(r=6/2,h=2.5,$fn=6);
+               translate([0,0,-1])cylinder(r=3/2,h=12,$fn=10);
+       }
+}
+// M8 nut + washer
+module nutwasher(){
+       color("silver")
+       difference(){
+               union(){
+                       translate([0,0,2])cylinder(r=15/2,h=7,$fn=6);
+                       translate([0,0,0.5])cylinder(r=8.5,h=1);
+               }
+               translate([0,0,-1])cylinder(r=8/2,h=12);
+       }
+}
+//--------------------------------------------------------------------------------------------------------------------------------
+
+
+
+
+
+
+
+
+
+//--------------------------------------------------------------------------------------------------------------------------------
+// Y axis
+//--------------------------------------------------------------------------------------------------------------------------------
+// y motor mount
+translate([56-yrodseparation/2,-y_smooth_rod_length/2+9,board_thickness-12]) 
+{
+       rotate([0,90,0]) rotate([0,0,90]) motorholder();
+       translate([10,0,30])rotate([0,90,0])nutwasher();
+       translate([0,0,30])rotate([0,90,180])nutwasher();
+       translate([10,0,10])rotate([0,90,0])nutwasher();
+       translate([0,0,10])rotate([0,90,180])nutwasher();
+}
+
+// y idler mount
+translate([70-yrodseparation/2,y_smooth_rod_length/2-9,30 + board_thickness-12]) 
+{
+       translate([0,0-33,-8]) 
+               rotate([0,-90,0]) idlermount();
+       translate([0,0,0])rotate([0,90,0])nutwasher();
+       translate([-20,0,0])rotate([0,90,180])nutwasher();
+       // bearing guide
+       translate([-5,-33+8,-8+8]) 
+               rotate([0,-90,0]) bearing_guide();
+}
+
+yrodseparation=140;
+
+module yfront()
+{
+       // corners
+       leftfront();
+       translate([yrodseparation,0,0]) mirror([1,0,0]) leftfront();
+
+       // front bottom threaded rod
+       color("Aqua")
+       translate([-20,9,10]) rotate([0,90,0]) cylinder(h = yrodseparation+40, r=4);
+
+       translate([yrodseparation+11,9,10])rotate([0,90,0])nutwasher();
+       translate([yrodseparation-11,9,10])rotate([0,90,180])nutwasher();
+
+       translate([-11,9,10])rotate([0,90,180])nutwasher();
+       translate([11,9,10])rotate([0,90,0])nutwasher();
+       
+       // front top threaded rod
+       color("Aqua")
+       translate([-20,9,30]) rotate([0,90,0]) cylinder(h = yrodseparation+40, r=4);
+
+       translate([-11,9,30])rotate([0,90,180])nutwasher();
+       translate([11,9,30])rotate([0,90,0])nutwasher();
+
+       translate([yrodseparation-11,9,30])rotate([0,90,180])nutwasher();
+       translate([yrodseparation+11,9,30])rotate([0,90,0])nutwasher();
+}
+
+translate([-yrodseparation/2,-y_smooth_rod_length/2,board_thickness-12])
+{
+       yfront();
+       translate([0,y_smooth_rod_length,0]) 
+               mirror([0,1,0])
+               yfront();
+}
+
+module yside()
+{
+       translate([-yrodseparation/2,0])
+       {
+       // left top rod
+       color("MediumBlue")
+       translate([0,0,3+board_thickness + 30]) rotate([0,90,90]) cylinder(h = y_smooth_rod_length, r=4,center=true);
+       //left bottom rod
+       color("Aqua")
+       translate([0,0,3+board_thickness+4+1]) rotate([0,90,90]) cylinder(h =  y_smooth_rod_length+22, r=4,center=true);
+
+
+       // middle nuts
+       // 100=default wood plank width (see pl function below)
+       translate([0,board_thickness-4,8+board_thickness])rotate([0,-90,90])nutwasher();
+       translate([0,board_thickness+100-4,8+board_thickness])rotate([0,90,90])nutwasher();
+
+
+
+       // back nuts
+       translate([0,y_smooth_rod_length/2+2,8+board_thickness])rotate([0,90,90])nutwasher();
+       translate([0,y_smooth_rod_length/2+2-22,8+board_thickness])rotate([0,90,-90])nutwasher();
+       // front nuts
+       translate([0,-y_smooth_rod_length/2-2,8+board_thickness])rotate([0,90,-90])nutwasher();
+       translate([0,-y_smooth_rod_length/2-2+22,8+board_thickness])rotate([0,90,90])nutwasher();
+       }
+}
+
+yside();
+translate([yrodseparation,0,0])yside();
+
+// heat bed
+heatbed_height=board_thickness;
+color("Lime",0.25)
+translate([0,0,58-3+heatbed_height/2+5]) cube([bed_x_size,bed_y_size,heatbed_height], center=true);
+
+
+// Y belt holder
+translate([-yrodseparation/2+60.5   ,    0, 58-3+5-2.8]) rotate([0,90,-90]) ybeltholder();
+translate([-yrodseparation/2+60.5+12,   -5, 58-3+0-2.8-1]) screw(heatbed_height/2+8);
+translate([-yrodseparation/2+60.5-12,   -5, 58-3+0-2.8-1]) screw(heatbed_height/2+8);
+translate([-yrodseparation/2+60.5   ,-5-35, 58-3+0-2.8-1]) screw(heatbed_height/2+8);
+
+
+// bushings
+translate([yrodseparation/2   , -bed_y_size/4-10   , 50    -0.5]) rotate([0,90,90]) y_bearing();
+translate([yrodseparation/2+14, -bed_y_size/4-10+10, 50+6.5-0.5-5]) screw(heatbed_height/2+8);
+translate([yrodseparation/2-14, -bed_y_size/4-10+10, 50+6.5-0.5-5]) screw(heatbed_height/2+8);
+
+mirror([0,1,0])translate([yrodseparation/2   , -bed_y_size/4-10   , 50    -0.5]) rotate([0,90,90]) y_bearing();
+mirror([0,1,0])translate([yrodseparation/2+14, -bed_y_size/4-10+10, 50+6.5-0.5-5]) screw(heatbed_height/2+8);
+mirror([0,1,0])translate([yrodseparation/2-14, -bed_y_size/4-10+10, 50+6.5-0.5-5]) screw(heatbed_height/2+8);
+
+translate([-yrodseparation/2   , -10   , 50    -0.5]) rotate([0,90,90]) y_bearing();
+translate([-yrodseparation/2+14, -10+10, 50+6.5-0.5-5]) screw(heatbed_height/2+8);
+translate([-yrodseparation/2-14, -10+10, 50+6.5-0.5-5]) screw(heatbed_height/2+8);
+
+//--------------------------------------------------------------------------------------------------------------------------------
+
+
+
+
+
+
+
+
+//--------------------------------------------------------------------------------------------------------------------------------
+// Z axis
+//--------------------------------------------------------------------------------------------------------------------------------
+board_sides=120;
+board_w=bed_x_size+10+2*board_sides;
+
+//// aluminum XZ board
+//translate([0,board_thickness/2,150])
+//%difference()
+//{
+//     cube([board_w,board_thickness,300],true);
+//     translate([0,0,-15])
+//     cube([bed_x_size+10,board_thickness+2,200],true);
+//}
+
+
+// Z motor mounts
+translate([-board_w/2-5+12-board_thickness,12-board_thickness,42])
+rotate(-90)
+zmotorholder();
+
+translate([-board_w/2-5+12-board_thickness-1,12-board_thickness+8,42+6.5])
+rotate([-90,0,-90])
+screw(25);
+translate([-board_w/2-5+12-board_thickness+33,12-board_thickness-15,42+6.5])
+rotate([-90,0,0])
+screw(25);
+translate([-board_w/2-5+12-board_thickness+10.5,12-board_thickness-10.5,42+7])
+rotate([180,0,0])
+M3screw();
+translate([-board_w/2-5+12-board_thickness+41.5,12-board_thickness-10.5,42+7])
+rotate([180,0,0])
+M3screw();
+translate([-board_w/2-5+12-board_thickness+10.5,12-board_thickness-10.5-31,42+7])
+rotate([180,0,0])
+M3screw();
+
+
+translate([board_w/2+5-12+board_thickness,12-board_thickness,42])
+rotate(-90)
+mirror([0,1,0])
+zmotorholder();
+
+translate([board_w/2+5-12+board_thickness+1,12-board_thickness+8,42+6.5])
+rotate([90,0,-90])
+screw(25);
+translate([board_w/2+5-12+board_thickness-33,12-board_thickness-15,42+6.5])
+rotate([-90,0,0])
+screw(25);
+translate([board_w/2+5-12+board_thickness-10.5,12-board_thickness-10.5,42+7])
+rotate([180,0,0])
+M3screw();
+translate([board_w/2+5-12+board_thickness-41.5,12-board_thickness-10.5,42+7])
+rotate([180,0,0])
+M3screw();
+translate([board_w/2+5-12+board_thickness-10.5,12-board_thickness-10.5-31,42+7])
+rotate([180,0,0])
+M3screw();
+
+
+
+// Z rod mounts
+//translate([-board_w/2-5,0,260])
+translate([-board_w/2-5+12-board_thickness,12-board_thickness,430])
+rotate(-90)
+zrodholder();
+
+translate([-board_w/2-5+12-board_thickness-1,12-board_thickness+8,430+6.5])
+rotate([0,90,0])
+screw(25);
+translate([-board_w/2-5+12-board_thickness-1+34,12-board_thickness+8-23,430+6.5])
+rotate([-90,90,0])
+screw(25);
+
+
+//translate([board_w/2+5,0,260])
+translate([board_w/2+5-12+board_thickness,12-board_thickness,430])
+rotate(-90)
+mirror([0,1,0])
+zrodholder();
+
+translate([board_w/2+5-12+board_thickness+1,12-board_thickness+8,430+6.5])
+rotate([0,-90,0])
+mirror([0,1,0])
+screw(25);
+translate([board_w/2+5-12+board_thickness+1-34,12-board_thickness+8-23,430+6.5])
+rotate([-90,90,0])
+mirror([0,1,0])
+screw(25);
+
+// Z rods
+module z_rods()
+{
+       color("MediumBlue")
+       translate([board_w/2-4-12+board_thickness,-26+12-board_thickness,42])cylinder(h=z_smooth_rod_length,r=4);
+       color("Aqua")
+       translate([board_w/2-4-12+board_thickness-17,-26+12-board_thickness,56])cylinder(h = 390, r=2.5);
+}
+
+z_rods();
+mirror([1,0,0])z_rods();
+//--------------------------------------------------------------------------------------------------------------------------------
+
+
+
+
+
+
+
+
+
+
+//--------------------------------------------------------------------------------------------------------------------------------
+// X axis
+//--------------------------------------------------------------------------------------------------------------------------------
+
+// move the x-axis up 20cm (for visualization only)
+x_axis_height=200;
+x_smooth_rod_length=450+board_thickness*2+10;
+
+// X ends
+translate([-board_w/2+4+12-board_thickness,-26+12-board_thickness,140+ x_axis_height])
+rotate([0,0,90])
+//rotate([0,180,0])
+x_end_motor();
+
+translate([board_w/2-4-12+board_thickness,-26+12-board_thickness,140 + x_axis_height])
+rotate(90)
+//rotate([0,180,0])
+x_end_idler();
+
+// bearing guide
+translate([board_w/2-4-12+board_thickness-27,-26+12-board_thickness-9-(10-(7+0.9*2))/2,140 + x_axis_height+27])
+rotate([90,0,0])
+bearing_guide();
+
+// X rods
+for(i=[0:1])
+color("MediumBlue")
+translate([1.5,-12+12-board_thickness-28,-3+149+i*45 + x_axis_height])rotate([0,90,0])cylinder(h=x_smooth_rod_length,r=4,center=true);
+
+// X carriage
+translate([0,-12+12-board_thickness-28,-3+149 + x_axis_height])
+rotate([0,90,0])
+translate([-45,0,75])
+rotate([0,180,0])
+x_carriage();
+
+// small nuts
+translate([0,-12+12-board_thickness-28,-3+149 + x_axis_height])
+rotate([0,90,0])
+translate([-45+20,0+9,75-3])
+rotate([90,0,0])
+M3nut();
+
+translate([0,-12+12-board_thickness-28,-3+149 + x_axis_height])
+rotate([0,90,0])
+translate([-45+20,0+9,75-33])
+rotate([90,0,0])
+M3nut();
+
+translate([0,-12+12-board_thickness-28,-3+149 + x_axis_height])
+rotate([0,90,0])
+translate([-45+20,0+9,75-53])
+rotate([90,0,0])
+M3nut();
+
+translate([0,-12+12-board_thickness-28,-3+149 + x_axis_height])
+rotate([0,90,0])
+translate([-45+20,0+9,75-83])
+rotate([90,0,0])
+M3nut();
+
+// belt clamp
+translate([0-28,-12+12-board_thickness-28-10,-3+149 + x_axis_height-7])
+rotate([0,90,0])
+translate([-45,0,75])
+rotate([0,90,0])
+x_beltclamp();
+
+// belt clamp
+translate([0-28-30,-12+12-board_thickness-28-10,-3+149 + x_axis_height-7])
+rotate([0,90,0])
+translate([-45,0,75])
+rotate([0,90,0])
+x_beltclamp();
+
+//--------------------------------------------------------------------------------------------------------------------------------
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+//--------------------------------------------------------------------------------------------------------------------------------
+// Frame (box style)
+//--------------------------------------------------------------------------------------------------------------------------------
+module pl(x=100,y=100,z=board_thickness){
+       cube([x,y,z]);
+}
+module p3bscorner(){
+       translate([    board_thickness*1.5+3,-0.5-board_thickness,board_thickness/2])rotate([-90,0,0])screw();
+       translate([450-board_thickness*1.5  ,-0.5-board_thickness,board_thickness/2])rotate([-90,0,0])screw();
+       translate([450/2                    ,-0.5-board_thickness,board_thickness/2])rotate([-90,0,0])screw();
+       color([0.5,0.5,0.5,0.8])pl(x=450);
+       color([0.5,0.5,0.6,0.8])rotate([90,0,0])pl(x=450);
+}
+module p3bsgantry(){
+       separation=10;
+       translate([450-separation,-100-separation   ,board_thickness*2+1])mirror([0,0,1])screw();
+       translate([450-separation, 100+separation+50,board_thickness*2+1])mirror([0,0,1])screw();
+       translate([350+separation,-100-separation   ,board_thickness*2+1])mirror([0,0,1])screw();
+       translate([350+separation, 100+separation+50,board_thickness*2+1])mirror([0,0,1])screw();
+
+       translate([350+separation,-200+separation   ,board_thickness*2+1])mirror([0,0,1])screw();
+       translate([350+separation, 200-separation+50,board_thickness*2+1])mirror([0,0,1])screw();
+       color([0.5,0.5,0.6,0.9])translate([450,-200,board_thickness])rotate([0,0,90])pl(x=450);
+       translate([0,-200,0])color([0,0,0,0.3])p3bscorner();
+       translate([0, 250,0])color([0,0,0,0.3])mirror([0,1,0])p3bscorner();
+}
+module boxframe(top=false){
+       translate([300-board_thickness                      ,-200.5-board_thickness,board_thickness/2+3])rotate([-90,0,  0])screw();
+       translate([200+board_thickness+board_thickness/2    ,-200.5-board_thickness,board_thickness/2+3])rotate([-90,0,  0])screw();
+       translate([300-board_thickness                      , 250.5+board_thickness,board_thickness/2+3])rotate([ 90,0,  0])screw();
+       translate([200+board_thickness+board_thickness/2    , 250.5+board_thickness,board_thickness/2+3])rotate([ 90,0,  0])screw();
+       translate([300.5+board_thickness                    ,-200+board_thickness  ,board_thickness/2+3])rotate([ 90,0,-90])screw();
+       translate([300.5+board_thickness                    ,-100-board_thickness  ,board_thickness/2+3])rotate([ 90,0,-90])screw();
+       translate([300.5+board_thickness                    , 250-board_thickness  ,board_thickness/2+3])rotate([ 90,0,-90])screw();
+       translate([300.5+board_thickness                    , 150+board_thickness  ,board_thickness/2+3])rotate([ 90,0,-90])screw();
+
+       // 3mm separation for the screw heads at the bottom of the structure
+       //translate([300,-180,0])rotate([0,0,90])color([1,0,0,0.35])pl(x=400,z=3);
+       translate([300,-200,3])rotate([0,0,90])color([0,0,1,0.55])pl(x=450);
+
+       translate([300+board_thickness,0])rotate([0,-90,0])color([0,0,0,0.4])p3bsgantry();
+       if(top){
+               translate([200+board_thickness+board_thickness/2,-200-board_thickness/2,450+board_thickness+1])mirror([0,0,1])screw();
+               translate([200+board_thickness+board_thickness/2, 250+board_thickness/2,450+board_thickness+1])mirror([0,0,1])screw();
+               translate([300-board_thickness-board_thickness/2,-200-board_thickness/2,450+board_thickness+1])mirror([0,0,1])screw();
+               translate([300-board_thickness-board_thickness/2, 250+board_thickness/2,450+board_thickness+1])mirror([0,0,1])screw();
+               translate([300+board_thickness/2                ,-150                  ,450+board_thickness+1])mirror([0,0,1])screw();
+               translate([300+board_thickness/2                , 200                  ,450+board_thickness+1])mirror([0,0,1])screw();
+               translate([300+board_thickness,-200-board_thickness,450])rotate([0,0,90])color([0,0,1,0.55])pl(x=450+board_thickness*2);
+       }
+}
+
+
+translate([-25,312,0])rotate([0,0,-90])color([0,0,0,0.4])
+boxframe(true);
+// floor
+//color([0.8,0.8,0.2,0.35])translate([0,0,-100])cube([800,800,200],true);
+//--------------------------------------------------------------------------------------------------------------------------------
+
+
+
+
+
+
+
+
+//--------------------------------------------------------------------------------------------------------------------------------
+// Parts to fix Y axis to the frame
+//--------------------------------------------------------------------------------------------------------------------------------
+// y brackets, used to fix the threaded rods of the y axis to the wooden XZ frame.
+translate([-bracket_width(12)/2  +yrodseparation/2,-3+12    ,board_thickness+3])                  yrodbracket(12, 3, 3);
+translate([-bracket_width(12)/2  -yrodseparation/2,-3+12    ,board_thickness+3])                  yrodbracket(12, 3, 3);
+translate([ bracket_width(12)/2  +yrodseparation/2, 3+12+100,board_thickness+3])rotate([0,0,180]) yrodbracket(12, 3, 3);
+translate([ bracket_width(12)/2  -yrodseparation/2, 3+12+100,board_thickness+3])rotate([0,0,180]) yrodbracket(12, 3, 3);
+//--------------------------------------------------------------------------------------------------------------------------------
+translate([-bracket_width(12)/2+6+yrodseparation/2,12+3+3     ,board_thickness+bracket_height(3)+0.5])rotate([180,0,0])screw();
+translate([ bracket_width(12)/2-6+yrodseparation/2,12+3+3     ,board_thickness+bracket_height(3)+0.5])rotate([180,0,0])screw();
+translate([-bracket_width(12)/2+6+yrodseparation/2,12+3+3+12  ,board_thickness+bracket_height(3)+0.5])rotate([180,0,0])screw();
+translate([ bracket_width(12)/2-6+yrodseparation/2,12+3+3+12  ,board_thickness+bracket_height(3)+0.5])rotate([180,0,0])screw();
+
+translate([-bracket_width(12)/2+6-yrodseparation/2,12+3+3     ,board_thickness+bracket_height(3)+0.5])rotate([180,0,0])screw();
+translate([ bracket_width(12)/2-6-yrodseparation/2,12+3+3     ,board_thickness+bracket_height(3)+0.5])rotate([180,0,0])screw();
+translate([-bracket_width(12)/2+6-yrodseparation/2,12+3+3+12  ,board_thickness+bracket_height(3)+0.5])rotate([180,0,0])screw();
+translate([ bracket_width(12)/2-6-yrodseparation/2,12+3+3+12  ,board_thickness+bracket_height(3)+0.5])rotate([180,0,0])screw();
+
+translate([-bracket_width(12)/2+6+yrodseparation/2,-12+3+3+100,board_thickness+bracket_height(3)+0.5])rotate([180,0,0])screw();
+translate([ bracket_width(12)/2-6+yrodseparation/2,-12+3+3+100,board_thickness+bracket_height(3)+0.5])rotate([180,0,0])screw();
+translate([-bracket_width(12)/2+6+yrodseparation/2,    3+3+100,board_thickness+bracket_height(3)+0.5])rotate([180,0,0])screw();
+translate([ bracket_width(12)/2-6+yrodseparation/2,    3+3+100,board_thickness+bracket_height(3)+0.5])rotate([180,0,0])screw();
+
+translate([-bracket_width(12)/2+6-yrodseparation/2,-12+3+3+100,board_thickness+bracket_height(3)+0.5])rotate([180,0,0])screw();
+translate([ bracket_width(12)/2-6-yrodseparation/2,-12+3+3+100,board_thickness+bracket_height(3)+0.5])rotate([180,0,0])screw();
+translate([-bracket_width(12)/2+6-yrodseparation/2,    3+3+100,board_thickness+bracket_height(3)+0.5])rotate([180,0,0])screw();
+translate([ bracket_width(12)/2-6-yrodseparation/2,    3+3+100,board_thickness+bracket_height(3)+0.5])rotate([180,0,0])screw();
+//--------------------------------------------------------------------------------------------------------------------------------