////////////////////////////////////////////////////////////////////////////////////// /// /// Collar Bracket for sideway mounting of Nema14/Nema17 stepper motors /// /// This project addresses the need to mount Nema14/Nema17 stepper motors /// on a side wall, without using the motor's four screws holes on top (or bottom). /// This is useful when the top of the motor is equipped with some other /// mechanism (such as e.g. a direct extruder). The motor assembly can be inserted /// and removed quickly from the mounting bracket without the need to remove /// the top assembly. /// /// The position of the mounting screws is configurable, so the screws can either /// be hidden inside the bracket (saving space) or be accessible outside from the /// outside. For outside screws, normal or countersunk versions are available. /// /// The rear wall of the bracket has a configurable cutout for the motor wires. /// The bracket has holes and air channels to allow better air cooling when /// the motor get warm. /// /// The motor is hold securely in place by means of two M3 clamp screws at the /// front edges of the bracket. Two M3 screw nuts hidden in the front corners /// provide the corresponding mating threads. When using grub screws, the clamping /// mechanism remains almost invisible from the outside. /// /// The motor brackets are printed upside down, so no supports are needed for /// printing. /// /// The OpenScad source is fully parametrized and commented, so that it can /// easily be adapted to special needs. Predefined ready-to-print versions /// are provided for Nema14 and Nema17 motors, with the mounting screw variants: /// inside countersunk, outside countersunk and outside normal screws. /// /// ////////////////////////////////////////////////////////////////////////////////////// /// /// 2017-02-25 Heinz Spiess, Switzerland /// /// released under Creative Commons - Attribution - Share Alike licence (CC BY-SA) ////////////////////////////////////////////////////////////////////////////////////// eh=0.24; // extrusion height ew=0.56; // extrusion width $fn=24; // build a cube with chamfered edges module chamfered_cube(size, d=1, //default edge deltas for all sides D=0, //optional array for specific edge deltas D[lower_x,lower_y,lower_z,upper_x,upper_y,upper_z] ){ function d(i)=(len(D)>i)?D[i]:d; hull(){ translate([d(0),d(1),0])cube(size-[d(0)+d(3),d(1)+d(4),0]); translate([0,d(1),d(2)])cube(size-[0,d(1)+d(4),d(2)+d(5)]); translate([d(0),0,d(2)])cube(size-[d(0)+d(3),0,d(2)+d(5)]); } } // build a cube with chamfered edges module chamfered_cylinder(r=0,r1=0,r2=0,h=0, d=1, //default edge deltas for all sides D=0, //optional array for specific edge deltas D[lower_axial, upper_axial, lower_radial, upper_radial] ){ function d(i)=(len(D)>i)?D[i]:d; hull(){ translate([0,0,d(0)])cylinder(r1=(r?r:r1),r2=(r>0?r:r2),h=h-d(0)-d(1)); cylinder(r1=(r?r:r1)-d(2),r2=(r>0?r:r2)-d(3),h=h); } } //////////////////////////////////////////////////////////////////////////////////////////////// module steppercollar( motor=[32,42,3.2,55.5],// motor [side, screw distance,screw diameter,diagonal] // Nema17 wires=[26.5,6.5,25], // cutout size for motor wires wall=4.5, // wall thickness wb=6, // back wall thickness height=[25,10], // mount height [back, front] gap=0.3, // extra gap to match holes mscrew=[3.7,3.7,0], // mount screw [diameter,sink,distance(0=inside)] cscrew=[3.2,5.5,2.7], // clamp screw dimensions [diameter, nut width, nut height] print=true, // generate in print position ){ S=motor[1]+2*gap; chf=S-motor[3]/sqrt(2); wp=(wb-wall<=2 || mscrew[2]==0)?wb:wall; echo("chamfer=",chf); echo("sd=",mscrew[2]?mscrew[2]:(motor[1]+wires[0])/2); difference(){ // main body union(){ hull()translate([-S/2-wall,-S/2-wb,0]){ // rear part is higher cube([S+2*wall,S/5+wb,height[0]]); // front part is lower chamfered_cube([S+2*wall,S+wb+wall,height[1]],D=chf*[1,0,0,1,1,0]); } // rear plate for mounting screws hull(){ // rear wall translate([-S/2-wall,-S/2-wb,0])cube([S+2*wall,wp,height[0]]); // lateral disks around mounting screws for(sx=[-1,1])scale([sx,1,1])translate([mscrew[2]/2,-S/2-wb,height[0]/2]) rotate([-90,0,0])rotate(30)cylinder(r=mscrew[0]+wall/2,h=wp,$fn=6); } } // motor cavity translate([-S/2,-S/2,-1]) chamfered_cube([S,S,height[0]+2],D=chf*[1,0,0,1,1,0]); // wire passing cavity translate([-wires[0]/2,-S/2-wb-0.01,height[0]-wires[2]-0.01])cube(wires+[0,0.02,0.02]); // screw holes for(sx=[-1,1])scale([sx,1,1]){ // mount screws translate([mscrew[2]?mscrew[2]/2:(motor[1]+wires[0])/4,-S/2-wb+wp+0.01,height[0]/2])rotate([90,0,0]){ cylinder(r=mscrew[0]/2,h=wb+2,$fn=6); if(mscrew[2]&&wp!=wb)translate([0,0,wp-wb])cylinder(r=height[0]/4/cos(30),h=wb-wp+0.01,$fn=6); if(mscrew[1]>0)cylinder(r1=mscrew[1]/2+mscrew[0]/2,r2=mscrew[0]/2,h=mscrew[1]/2); if(mscrew[2]>0)rotate([0,179,0])translate([0,0,1])cylinder(r1=mscrew[0],r2=1,h=S); } // clamp screws translate([S/2-chf/2-1,S/2-chf/2-1,height[1]/2])rotate(-45)rotate([-90,0,0]){ // screw holes cylinder(r=cscrew[0]/2,h=2*wall+sqrt(2),$fn=6); // screw nut cavities cylinder(r1=cscrew[1]/cos(30)/2+gap/2,r2=cscrew[1]/cos(30)/2,h=cscrew[2]+sqrt(2),$fn=6); } } // side holes and channels to improve cooling hull(){ // side holes translate([-S,-S/2,height[0]/4])cube([2*S,S/2,0.1]); translate([-S,-S/2,0.75*height[0]-1])cube([2*S,S/2-height[0]/2,1]); } // left and right air channels translate([-S/2-wall/4,height[0]/8,-1])cube([S+wall/2,height[0]/2,height[0]]); // rear and front air channels translate([-S/4,-S/2-wall/4,-1])cube([S/2,S+wall/2,height[0]+2]); } } /////////////////////////////////////////////////////////////////////////////////////////////// /// modules for predefined objects automatically constructed via Makefile /////////////////////////////////////////////////////////////////////////////////////////////// // Nema 14, outside mountings screws at 48mm distance module Nema14_48mm() { // AUTO_MAKE_STL steppercollar(motor=[26,35.5,3.2,49],height=[20,8],wires=[19,7,25],wb=6.5,mscrew=[3.5,0,48]); } // Nema 14, outside countersunk mountings screws at 48mm distance module Nema14_48mm_CS() { // AUTO_MAKE_STL steppercollar(motor=[26,35.5,3.2,49],height=[20,8],wires=[19,7,25],wb=6.5,mscrew=[3.5,3.5,48]); } // Nema 14, inner countersunk mountings screws at 25mm distance module Nema14_25mm_CS() { // AUTO_MAKE_STL steppercollar(motor=[26,35.5,3.2,49],height=[20,8],wires=[19,7,25],wb=6.5,mscrew=[3.5,3.5,0]); } // Nema 17, inner countersunk mountings screws at 34mm distance module Nema17_34mm_CS() { // AUTO_MAKE_STL steppercollar(wb=6.5,mscrew=[3.7,3.7,0]); } // Nema 17, outside mountings screws at 54mm distance module Nema17_54mm() { // AUTO_MAKE_STL steppercollar(wires=[26.5,7,26],wb=6.5,mscrew=[3.5,0,54]); } // Nema 17, outside countersunk mountings screws at 54mm distance module Nema17_54mm_CS() { // AUTO_MAKE_STL steppercollar(wires=[26.5,7,26],wb=6.5,mscrew=[3.7,3.7,54]); } // Nema 17, inner countersunk mountings screws at 34mm distance, 3mm extra wire room module Nema17_34mm_CS_ew() { // AUTO_MAKE_STL steppercollar(wb=9.5,wires=[26.5,10,25],mscrew=[3.7,3.7,0]); } // Nema 17, outside mountings screws at 54mm distance, 3mm extra wire room module Nema17_54mm_ew() { // AUTO_MAKE_STL steppercollar(wires=[26.5,10,26],wb=9.5,mscrew=[3.5,0,54]); } // Nema 17, outside countersunk mountings screws at 54mm distance, 3mm extra wire room module Nema17_54mm_CS_ew() { // AUTO_MAKE_STL steppercollar(wires=[26.5,10,26],wb=9.5,mscrew=[3.7,3.7,54]); } /////////////////////////////////////////////////////////////////////////////////////////////// // comment or uncomment for direct construction of desired objects /////////////////////////////////////////////////////////////////////////////////////////////// Nema17_34mm_CS_ew(); translate([-65,0,0])Nema17_54mm_ew(); translate([65,0,0])Nema17_54mm_CS_ew(); translate([0,75,0])Nema14_25mm_CS(); translate([65,75,0])Nema14_48mm_CS(); translate([-65,75,0])Nema14_48mm();