Add an insert for the slip coupling that allows a swappable, modular connection

This commit is contained in:
Matt McWilliams 2021-11-14 11:25:33 -05:00
parent 3e0132f91c
commit 63577f0492
6 changed files with 26518 additions and 18436 deletions

View File

@ -1,15 +1,17 @@
#!/bin/bash #!/bin/bash
SCAD="./takeup.scad"
PARTS=( PARTS=(
"slip_coupling" "slip_coupling"
"magnetic_coupling" "magnetic_coupling"
"mount_plate" "mount_plate"
"daylight_spool_insert"
) )
for part in "${PARTS[@]}" for part in "${PARTS[@]}"
do do
stl="./stl/takeup_${part}.stl" stl="./stl/takeup_${part}.stl"
openscad -o "${stl}" -D "PART=\"${part}\";" "./takeup.scad" openscad -o "${stl}" -D "PART=\"${part}\";" "${SCAD}"
done done
openscad --preview -o debug.png -D "PART=\"preview\";" "./takeup.scad" openscad --preview -o debug.png -D "PART=\"preview\";" "${SCAD}"

View File

@ -1,7 +1,7 @@
SQUARE_INNER = 8; SQUARE_INNER = 8;
time = 0; time = 0;
module reel_holder (top = true) { module reel_holder (top = true, base = true) {
$fn = 60; $fn = 60;
difference(){ difference(){
translate([0, 0, -1.5]) cube([SQUARE_INNER, SQUARE_INNER, 21.5], center= true); translate([0, 0, -1.5]) cube([SQUARE_INNER, SQUARE_INNER, 21.5], center= true);
@ -18,6 +18,7 @@ module reel_holder (top = true) {
} }
translate ([0, 0, (18.5 / 2) + 7.5]) cube([10, 10, 2], center = true); translate ([0, 0, (18.5 / 2) + 7.5]) cube([10, 10, 2], center = true);
} }
if (base) {
difference () { difference () {
translate([0, 0, -(18.5/ 2) - (3 / 2) - 3]) cylinder(r = 16 /2, h = 3, center = true); translate([0, 0, -(18.5/ 2) - (3 / 2) - 3]) cylinder(r = 16 /2, h = 3, center = true);
//translate([0, 0, -14.3]) cube([4, 4, 2], center = true); //notch //translate([0, 0, -14.3]) cube([4, 4, 2], center = true); //notch
@ -26,6 +27,7 @@ module reel_holder (top = true) {
translate([0, 6, -14.3]) cube([8, 8, 2], center = true); translate([0, 6, -14.3]) cube([8, 8, 2], center = true);
} }
} }
}
} }
//rotate([0, 0, time]) reel_holder(); //rotate([0, 0, time]) reel_holder();

BIN
debug.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 15 KiB

After

Width:  |  Height:  |  Size: 1.9 KiB

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -2,7 +2,7 @@ include <daylight_spool_mount.scad>;
COUPLING_D = 37; COUPLING_D = 37;
WASHER_D = 35.; WASHER_D = 35.7;
WASHER_H = 2.4; WASHER_H = 2.4;
MOTOR_SHAFT_D = 6; MOTOR_SHAFT_D = 6;
@ -12,6 +12,10 @@ MOTOR_SHAFT_HOBBLE = 1;
MOTOR_MOUNT_X = 32.5; MOTOR_MOUNT_X = 32.5;
MOTOR_MOUNT_Y = 17.5; MOTOR_MOUNT_Y = 17.5;
module hex (diag = 10, h = 1) {
cylinder(r = diag / 2, h = h, center = true, $fn = 6);
}
//Geartisan Worm Gear Motor - JSX40-370 //Geartisan Worm Gear Motor - JSX40-370
module motor () { module motor () {
cube([46, 32, 21], center = true); cube([46, 32, 21], center = true);
@ -66,13 +70,43 @@ module magnetic_coupling (MAGNETS = 4, MAGNET_D = 8.1, MAGNET_H = 2.5) {
} }
module slip_coupling (MAGNET_H = 2.5) { module slip_coupling (MAGNET_H = 2.5) {
H = 12; H = 16;
difference () { difference () {
cylinder(r = 45 / 2, h = H, center = true, $fn = 100); translate([0, 0, 2]) cylinder(r = 45 / 2, h = H, center = true, $fn = 100);
translate([0, 0, -(H / 2) + (MAGNET_H + 3) / 2]) cylinder(r = (COUPLING_D + 0.7) / 2, h = MAGNET_H + 3.01, center = true, $fn = 160); translate([0, 0, 2 -(H / 2) + (MAGNET_H + 3) / 2]) cylinder(r = (COUPLING_D + 0.7) / 2, h = MAGNET_H + 3.01, center = true, $fn = 160);
translate([0, 0, -(H / 2) + (MAGNET_H + 3) + (WASHER_H / 2)]) cylinder(r = WASHER_D / 2, h = WASHER_H, center = true, $fn = 160); translate([0, 0, 2 -(H / 2) + (MAGNET_H + 3) + (WASHER_H / 2)]) cylinder(r = WASHER_D / 2, h = WASHER_H, center = true, $fn = 160);
translate([0, 0, 2 + (H / 2) - (5 / 2)]) cube([25, 10, 5.01], center = true);
translate([0, 0, 2 + (H / 2) - (5 / 2)]) cube([10, 25, 5.01], center = true);
//corners with voids for M3
translate([-8.75, -8.75, 2 + (H / 2) - (5 / 2)]) {
translate([0, 0, 1]) cube([(25 - 10) / 2, (25 - 10) / 2, 5.01], center = true);
cylinder(r = 3.25 / 2, h = 20, center = true, $fn = 40);
translate([0, 0, -4.25]) hex(6, 2.75);
}
translate([8.75, 8.75, 2 + (H / 2) - (5 / 2)]) {
translate([0, 0, 1]) cube([(25 - 10) / 2, (25 - 10) / 2, 5.01], center = true);
cylinder(r = 3.25 / 2, h = 20, center = true, $fn = 40);
translate([0, 0, -4.25]) hex(6, 2.75);
}
}
}
module daylight_spool_insert () {
translate([0, 0, 14]) reel_holder(true, false);
union () {
cube([25 - .4, 10 - .4, 5], center = true);
cube([10 - .4, 25 - .4, 5], center = true);
translate([-8.75, -8.75, 0]) difference () {
translate([.2, .2, 1/2]) cube([(25 - 10) / 2, (25 - 10) / 2, 4], center = true);
cylinder(r = 3.25 / 2, h = 20, center = true, $fn = 40);
translate([0, 0, 2]) cylinder(r = 5.75 / 2, h = 3.5, center = true, $fn = 40);
}
translate([8.75, 8.75, 0]) difference () {
translate([ -.2, -.2, 1/2]) cube([(25 - 10) / 2, (25 - 10) / 2, 4], center = true);
cylinder(r = 3.25 / 2, h = 20, center = true, $fn = 40);
translate([0, 0, 2]) cylinder(r = 5.75 / 2, h = 3.5, center = true, $fn = 40);
}
} }
translate([0, 0, 18.25]) reel_holder();
} }
module motor_mount_void (D, Z) { module motor_mount_void (D, Z) {
@ -123,9 +157,13 @@ module mount_plate () {
module debug_assembled () { module debug_assembled () {
translate([(46 / 2) - 14.5, 0, 0]) rotate([180, 0, 0]) motor(); translate([(46 / 2) - 14.5, 0, 0]) rotate([180, 0, 0]) motor();
color("blue") translate([0, 0, 23]) rotate([0, 0, -90]) magnetic_coupling();
color("green") translate([8, 0, 11]) mount_plate(); color("green") translate([8, 0, 11]) mount_plate();
color("blue") translate([0, 0, 23]) rotate([0, 0, -90]) magnetic_coupling();
difference () {
translate([0, 0, 26.5]) slip_coupling(); translate([0, 0, 26.5]) slip_coupling();
translate([-50, 0, 0]) cube([100, 100, 150], center = true);
}
color("red") translate([0, 0, 34]) daylight_spool_insert();
} }
// //
@ -138,6 +176,8 @@ if (PART == "slip_coupling") {
magnetic_coupling(); magnetic_coupling();
} else if (PART == "mount_plate") { } else if (PART == "mount_plate") {
mount_plate(); mount_plate();
} else if (PART == "daylight_spool_insert") {
daylight_spool_insert();
} else if (PART == "debug") { } else if (PART == "debug") {
debug_assembled(); debug_assembled();
} }