Fill the repository
This commit is contained in:
@@ -0,0 +1,176 @@
|
||||
// A small collection of parts for the 28BYJ-48 stepper motor:
|
||||
// - A housing for the stepper motor
|
||||
// - A coupler to combine the axle of the stepper with an ft clip axle
|
||||
/* [Stepper options] */
|
||||
// Type
|
||||
type = 0; // [0 : no output, 1:Stepper housing, 2:Shaft coupler, 3:Gear coupler, 4:Bevel gears coupler]
|
||||
|
||||
/* [Hidden] */
|
||||
|
||||
// **********************
|
||||
// ** Static Settings: **
|
||||
// **********************
|
||||
include<ft_util.scad>
|
||||
use<ft_gears.scad>
|
||||
|
||||
shaft_diameter = 5.1;
|
||||
shaft_thickness = 3.1;
|
||||
|
||||
// --------------------------------------------------------------------
|
||||
// A coupler to combine the axle of the stepper with an ft clip axle
|
||||
// --------------------------------------------------------------------
|
||||
module shaft_coupler() {
|
||||
// All dimensions are defined here, no parameters for the shaft
|
||||
// coupler module. Depending on the printer's tolerance, the values
|
||||
// might need some correction.
|
||||
length = BASIC_BLOCK_SIZE;
|
||||
diameter = 8.0;
|
||||
ft_axis_diameter = 4.25;
|
||||
ft_axis_thickness = 2.75;
|
||||
|
||||
difference() {
|
||||
cylinder(d = diameter, h = length, center = true);
|
||||
union() {
|
||||
// cut out the motor axle hole
|
||||
translate([0,0,length / 4 + MANIFOLD_CORRECTION / 2])
|
||||
clip_axle_hole(length / 2, diameter = shaft_diameter, thickness = shaft_thickness);
|
||||
// cut out the clip axle hole
|
||||
translate([0,0,-length / 4 - MANIFOLD_CORRECTION / 2])
|
||||
clip_axle_hole(length / 2, diameter = ft_axis_diameter, thickness = ft_axis_thickness, hor_cutout = diameter + MANIFOLD_CORRECTION);
|
||||
// cut out the horizontal hole of the axle coupler
|
||||
//cube([diameter + MANIFOLD_CORRECTION, ft_axis_thickness, ft_axis_diameter], center = true);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// --------------------------------------------------------------------
|
||||
// A gear for the stepper
|
||||
// --------------------------------------------------------------------
|
||||
module gear_wheel() {
|
||||
difference() {
|
||||
union() {
|
||||
translate([0,0,-4])
|
||||
cylinder(h = 4, d = 8, center = true);
|
||||
normalgear (modulus=1.5, teeth=15, height=5, hole=0.0, clipaxle=false, optimize=false);
|
||||
}
|
||||
translate([0,0,-3])
|
||||
clip_axle_hole(diameter = shaft_diameter, thickness = shaft_thickness);
|
||||
}
|
||||
}
|
||||
|
||||
// --------------------------------------------------------------------
|
||||
// Build a pair of bevel gears.
|
||||
// Both gears have the same size. The hole in one gear is for the
|
||||
// stepper and the other hole is for a clip axle.
|
||||
// --------------------------------------------------------------------
|
||||
module bevelgears(modulus=1.5, teeth=15, hole=4.2) {
|
||||
shaft_diameter = 5.1;
|
||||
shaft_thickness = 3.1;
|
||||
ft_axis_diameter = 4.25;
|
||||
ft_axis_thickness = 2.75;
|
||||
shaft_length = 7.5;
|
||||
diameter = 8.0;
|
||||
|
||||
// Calculation for the distance of the bevel gears taken from gears.scad,
|
||||
// eleminated the intermediate steps. Simplify more?
|
||||
rkf = (modulus*teeth/2)/sin(45)*sin(((PI*((modulus*teeth/2)/sin(45))*45/90 - 2 * (modulus + modulus / 6)) / 2)/(PI*((modulus*teeth/2)/sin(45))) * 180);
|
||||
|
||||
difference() {
|
||||
union() {
|
||||
translate([0,0,-shaft_length/2+MANIFOLD_CORRECTION])
|
||||
cylinder(h = shaft_length, d = diameter, center = true);
|
||||
translate([rkf*3+modulus,0,-shaft_length/2+MANIFOLD_CORRECTION])
|
||||
cylinder(h = shaft_length, d = diameter, center = true);
|
||||
|
||||
bevel_gear_pair(modul = modulus,
|
||||
gear_teeth = teeth, pinion_teeth = teeth,
|
||||
axis_angle=90, tooth_width = 5,
|
||||
gear_bore = 0, pinion_bore = 0,
|
||||
pressure_angle=20, helix_angle=0,
|
||||
together_built=false);
|
||||
}
|
||||
translate([0,0,-shaft_length/2])
|
||||
#clip_axle_hole(shaft_length+MANIFOLD_CORRECTION, diameter = shaft_diameter, thickness = shaft_thickness);
|
||||
|
||||
translate([rkf*3+modulus,0,-shaft_length/2])
|
||||
#clip_axle_hole(shaft_length+MANIFOLD_CORRECTION, diameter = ft_axis_diameter, thickness = ft_axis_thickness, hor_cutout = diameter + MANIFOLD_CORRECTION);
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// --------------------------------------------------------------------
|
||||
// A housing for the 28BYJ-48. No back becuse the stepper gets quite
|
||||
// warm and the heat has to go somewhere ...
|
||||
// --------------------------------------------------------------------
|
||||
module stepper_housing(width = 60, length = 45, height = 30) {
|
||||
wallthickness = 4;
|
||||
frontthickness = 4;
|
||||
screwdistance = 35;
|
||||
shaftdistance = 8;
|
||||
|
||||
difference() {
|
||||
// The housing
|
||||
cube([width, length, height], center = true);
|
||||
// minus the inner cut out
|
||||
translate([0, 0, frontthickness])
|
||||
cube([width - 2 * wallthickness, length - 2 * wallthickness, height], center = true);
|
||||
// and the grooves
|
||||
grooves(width, length, height);
|
||||
|
||||
// remove the cut outs for the screws and the axle
|
||||
translate([-(screwdistance / 2),0, -(height / 2 + 0.1)])
|
||||
cylinder(d = 3, h = 10);
|
||||
translate([-(screwdistance / 2),0, -(height / 2 + 0.1)])
|
||||
cylinder(d = 5.75, h = 2.5);
|
||||
|
||||
translate([(screwdistance / 2),0, -(height / 2 + 0.1)])
|
||||
cylinder(d = 3, h = 10);
|
||||
translate([(screwdistance / 2),0, -(height / 2 + 0.1)])
|
||||
cylinder(d = 5.75, h = 2.5);
|
||||
|
||||
translate([0,shaftdistance, -(height / 2 + 0.1)])
|
||||
cylinder(d = 9.5, h = 10);
|
||||
}
|
||||
}
|
||||
|
||||
// --------------------------------------------------------------------
|
||||
// The grooves around the housing for the cut out
|
||||
// --------------------------------------------------------------------
|
||||
module grooves(width = 60, length = 45, height = 30) {
|
||||
for(i = [0, 180]) {
|
||||
rotate([0,0,i])
|
||||
for (j = [0 : BASIC_BLOCK_SIZE : (width / BASIC_BLOCK_SIZE - 1) * BASIC_BLOCK_SIZE])
|
||||
translate([j - (width / 2) + BASIC_BLOCK_HALF, -(length / 2), 0])
|
||||
flat_groove(len = height);
|
||||
}
|
||||
for(i = [90, 270]) {
|
||||
rotate([0,0,i])
|
||||
for (j = [0 : 15 : (length / BASIC_BLOCK_SIZE - 1) * BASIC_BLOCK_SIZE])
|
||||
translate([j - (length / 2) + BASIC_BLOCK_HALF, -(width / 2), 0])
|
||||
flat_groove(len = height);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
// ********************
|
||||
// ** Build section: **
|
||||
// ********************
|
||||
module main() {
|
||||
if (type == 1) {
|
||||
stepper_housing();
|
||||
}
|
||||
else if (type == 2) {
|
||||
shaft_coupler();
|
||||
}
|
||||
else if (type == 3) {
|
||||
gear_wheel();
|
||||
}
|
||||
else if (type == 4) {
|
||||
bevelgears(teeth=10);
|
||||
}
|
||||
}
|
||||
|
||||
main();
|
||||
Reference in New Issue
Block a user