Skip to content
Snippets Groups Projects
Commit 3b438a7d authored by Michael DM Dryden's avatar Michael DM Dryden
Browse files

initial design

parents
Branches
No related merge requests found
[submodule "MCAD"]
path = MCAD
url = https://github.com/SolidCode/MCAD.git
[submodule "gearCreator"]
path = gearCreator
url = https://github.com/VladAlpha/gearCreator.git
Subproject commit 9a958fd11b0a6b5f8becd37c4f8a42f585abfcd8
Subproject commit c1e9da4d2745294f08f41699aee3ca49204904e9
include <rack_herringbone.scad>;
include <MCAD/motors.scad>;
include <MCAD/nuts_and_bolts.scad>;
include <MCAD/involute_gears.scad>;
// gear parameters
innerRadius=3.1;//shaft radius, in mm
borders=2.5;//how thick should the borders around the central "shaft" be, in mm
diametralPitch=12;
numberOfTeeth=14;
pressureAngle=20*pi/180;
centerAngle=25;//angle at center of teeth
// magnet
magnetWidth=25.42;
magnetLength=76.14;
magnetHeight=19.02;
// guide rods
rodRad=3;
linearBearingOD=12;
linearBearingHeight=19;
//rack(innerRadius,borders,diametralPitch,numberOfTeeth,pressureAngle,centerAngle);
union(){
translate([-80,0,0]){
color("blue") magnetPlate();
color("red") pillar(30);
translate([40,0,-15])
motorSide();
color("orange")
translate([40,0, 5])
rotate([0,180,0])
pinion(7);
// color("green")
// translate([40,0,1])
// for (y = [-1,1]){
// translate([0, y*(magnetLength+5+2*(rodRad+3))/2, 0])
// bearingClamp();
// }
}
// color("Purple") endPlate(30);
}
// Magnet plate
module magnetPlate(){
thickness = 10;
$fn=50;
union(){
difference(){// rod holders
for (y = [-1,1]){
translate([-thickness/2, y*(magnetLength+5+2*(rodRad+3))/2, 0])
rotate([0,-90,0])
cube(size = [2*(rodRad+3),2*(rodRad+3), thickness], center = true);
};
for (y = [-1,1]){ // rod insert---halfway through holder + 1mm so face doesn't line up
translate([1, y*(magnetLength+5+2*(rodRad+3))/2, 0])
rotate([0,-90,0])
cylinder(h=thickness/2+1, r=rodRad);
};
}
difference(){ //magnet trough
translate([0, -(magnetLength+5)/2, -(magnetWidth+5)/2])
rotate([0,-90,0])
cube([magnetWidth+5, magnetLength+5, thickness]);
translate([-5, -(magnetLength)/2, -(magnetWidth)/2]) // 5mm under magnet
rotate([0,-90,0])
cube([magnetWidth, magnetLength, magnetHeight]);
}
}
}
module pillar(spacing = 30){
thickness = 10;
width = 50;
length = 80;
cavitySideThickness = 10;
cavityEndThickness = 10; // shouldn't be smaller than 10 or nut hole is too far in
translate([0, -width/2, -thickness/2])
difference(){
cube([length,width,thickness]);
for (y = [width/2-spacing/2, width/2+spacing/2]){ // M3 nut/bolt holes
translate([length-5, y, -1])
rotate([0,0,-90])
linear_extrude(height=thickness/2+3.2+1)
nutHole(size=3, proj=2);
$fn=50;
translate([length-5, y, thickness/2])
rotate([0,90,0])
linear_extrude(height=6) boltHole(size=3, proj=1);
}
translate([cavityEndThickness, cavitySideThickness, -1])
cube([length-cavityEndThickness*2, width-cavitySideThickness*2, thickness+2]);
}
}
module endPlate(spacing = 30){
thickness = 10;
length = magnetLength+5;
$fn=50;
union(){
translate([0, -length/2, -thickness/2])
difference(){
cube([thickness, length, thickness]);
for (y = [length/2-spacing/2, length/2+spacing/2]){
translate([thickness-6, y, thickness/2]) // cap recessed by 6mm
rotate([0,-90,0])
boltHole(size=3, length=thickness, extraCapHeight=10);
}
}
difference(){// rod holders
for (y = [-1,1]){
translate([thickness/2, y*(magnetLength+5+2*(rodRad+3))/2, 0])
rotate([0,90,0])
cube(size = [2*(rodRad+3),2*(rodRad+3), thickness], center = true);
};
for (y = [-1,1]){ // rod insert---halfway through holder + 1mm so face doesn't line up
translate([-1, y*(magnetLength+5+2*(rodRad+3))/2, 0])
rotate([0,90,0])
cylinder(h=thickness/2+1, r=rodRad);
};
}
}
}
module motorSide(){
$fn=50;
thickness = 5;
length = 50;
width = (magnetLength+5)+(2*(rodRad+3))+(linearBearingOD+3);
difference(){
union(){
difference(){ // main platform
translate([0,0,thickness/2])
cube([length, width, thickness], center = true);
linear_extrude(height = thickness+1)
stepper_motor_mount(17);
}
for (y = [-1, 1]){ // bearing blocks
translate([0, y*(magnetLength+5+2*(rodRad+3))/2, 15/2])
cube([linearBearingHeight+5, linearBearingOD+20, 15], center = true);
}
}
for (y = [-1, 1]){ // bolt holes
translate([-linearBearingHeight/2, y*(magnetLength+5+2*(rodRad+3))/2, 15])
union(){
rotate([0,90,0])
cylinder(h = linearBearingHeight, r = linearBearingOD/2); //bearing
translate([-3.5,0,0])
rotate([0,90,0])
cylinder(h = linearBearingHeight+7, r = rodRad+1); //shaft clearance
for (i = [-1, 1]){
translate([linearBearingHeight/2, i*(linearBearingOD/2+4), -16]) // bolts
linear_extrude(height=15+2) boltHole(size = 3, proj = 1);
translate([linearBearingHeight/2, i*(linearBearingOD/2+4), -(15+12)+10]) // nuts
linear_extrude(height=10+2) nutHole(size = 3, proj = 1);
}
}
}
}
}
module bearingClamp(){
$fn=50;
difference(){
translate([0, 0, (linearBearingOD/2+5)/2])
cube([linearBearingHeight+5, linearBearingOD+20, linearBearingOD/2+5], center = true);
translate([-linearBearingHeight/2, 0, 0])
union(){
rotate([0,90,0])
cylinder(h = linearBearingHeight, r = linearBearingOD/2); //bearing
translate([-3.5,0,0])
rotate([0,90,0])
cylinder(h = linearBearingHeight+7, r = rodRad+1); //shaft clearance
for (i = [-1, 1]){
translate([linearBearingHeight/2, i*(linearBearingOD/2+4), (linearBearingOD/2+5)-6]) // bolts
rotate([0,180,0])
boltHole(size = 3, length = 15+2, proj = -1, extraCapHeight = 8);
}
}
}
}
module pinion(teeth){
//double helical gear
{
$fn=50;
twist=200;
height=15;
pressure_angle=30;
gear (number_of_teeth=teeth,
circular_pitch=400,
pressure_angle=pressure_angle,
clearance = 0.2,
gear_thickness = height/4,
rim_thickness = height/2,
rim_width = 10,
hub_thickness = height,
hub_diameter=15,
bore_diameter=5,
circles=4,
twist=twist/teeth);
mirror([0,0,1])
gear (number_of_teeth=teeth,
circular_pitch=400,
pressure_angle=pressure_angle,
clearance = 0.2,
gear_thickness = height/2,
rim_thickness = height/2,
rim_width = 10,
hub_thickness = height/2,
hub_diameter=15,
bore_diameter=5,
circles=4,
twist=twist/teeth);
}
// gear_with_setscrew(
// module_number = 2, //standard metric way of specing a gear
// shaft_diameter = 5,
// trap_width = 6,
// hardware_bore = 3.4,
// number_of_teeth = teeth,
// hub_thickness = 13.5,
// rim_thickness = 8,
// no_bore = false,
// twist=twist/teeth);
}
\ No newline at end of file
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment