Created a new branch to explore creating a method of stacking 4 or more spirals. In theory. Potentially.

First attempt misused the single spiral diameter thread. The number of parts means two things: improve the documentation and potentially add identifying features to the different parts.
This commit is contained in:
Matt McWilliams 2021-10-15 12:12:36 -04:00
parent 89c8f32b3b
commit ba2b701a7a
3 changed files with 164 additions and 45 deletions

View File

@ -182,7 +182,7 @@ If your prints are warping, there are a few things to look at:
3. Slicer settings 3. Slicer settings
The first thing to consider when your prints are coming out warped off the print bed is whether or not your **material** is appropriate for this model. The first thing to consider when your prints are coming out warped off the print bed is whether or not your **material** is appropriate for this model.
Check the [material](#material) section of this README for more information, but theres a chance if you are using PLA or ABS that large flat prints of this size are warping due to limitations with the material you are using. PETG has proven to warp far less in my own anecdotal experience and is the recommended material for this project. Check the [material](#material) section of this README for more information, but there's a chance if you are using PLA or ABS that large flat prints of this size are warping due to limitations with the material you are using. PETG has proven to warp far less in my own anecdotal experience and is the recommended material for this project.
The thermal properties of the material you're printing with are what causes warping, so check if your printer is being set to the recommended **temperatures** on both the bed and extruder for the material and printer you are using. The thermal properties of the material you're printing with are what causes warping, so check if your printer is being set to the recommended **temperatures** on both the bed and extruder for the material and printer you are using.
Warping occurs consistently when a section of a part cools too quickly and contracts while the rest of it is still being printed. Warping occurs consistently when a section of a part cools too quickly and contracts while the rest of it is still being printed.
@ -222,7 +222,7 @@ Had issues or success printing this? Interested in getting in contact?
MIT License MIT License
Copyright (c) 2020 Matt McWilliams Copyright (c) 2021 Matt McWilliams
Permission is hereby granted, free of charge, to any person obtaining a copy of this hardware, software, and associated documentation files (the "Product"), to deal in the Product without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Product, and to permit persons to whom the Product is furnished to do so, subject to the following conditions: Permission is hereby granted, free of charge, to any person obtaining a copy of this hardware, software, and associated documentation files (the "Product"), to deal in the Product without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Product, and to permit persons to whom the Product is furnished to do so, subject to the following conditions:

View File

@ -187,10 +187,92 @@ module film_guide (rotations = 40, id = 45.55 - .5, spacing = 2.075, bottom = -2
spiral(rotations, id, spacing, bottom, $fn); spiral(rotations, id, spacing, bottom, $fn);
} }
PART="quarter_a"; module gnal_stacking_spindle () {
IN_LEN = 21;
LEN = 17.1;
ALT_LEN = 27.1;
difference () {
union () {
gnal_spindle_base();
translate([0, 0, -23.75]) gnal_spacer_solid();
}
//inner screw negative
translate([0, 0, -30]) union() {
if (DEBUG) {
cylinder(r = OD / 2, h = IN_LEN);
} else {
metric_thread (diameter=OD, pitch=PITCH, thread_size = THREAD, length = IN_LEN);
}
translate([0, 0, 0.2]) {
if (DEBUG) {
cylinder(r = OD / 2, h = IN_LEN);
} else {
metric_thread (diameter=OD, pitch=PITCH, thread_size = THREAD, length = IN_LEN);
}
}
}
}
difference () {
outer_screw(LEN - 2);
}
}
module stacking () {
translate([0, 0, 72 + 72 + 36]) {
color("blue") gnal_spindle_top();
}
translate([0, 0, 72 + 72]) rotate([0, 180, 0]) intersection () {
gnal_50ft_top();
cylinder(r = 50 / 2, h = 50, center = true);
}
translate([0, 0, 72 + 30]) {
color("blue") rotate([0, 180, 0]) gnal_spindle_bottom();
}
translate([0, 0, 72 + 36]) difference () {
cylinder(r = 50 / 2, h = 16, center = true);
cylinder(r = 22.5 / 2, h = 16 + 1, center = true);
}
translate([0, 0, 36 + 30]) {
color("green") rotate([0, 180, 0]) gnal_stacking_spindle();
}
translate([0, 0, 72]) difference () {
cylinder(r = 50 / 2, h = 16, center = true);
cylinder(r = 22.5 / 2, h = 16 + 1, center = true);
}
translate([0, 0, 30]) {
color("green") rotate([0, 180, 0]) gnal_stacking_spindle();
}
translate([0, 0, 36]) difference () {
cylinder(r = 50 / 2, h = 16, center = true);
cylinder(r = 22.5 / 2, h = 16 + 1, center = true);
}
color("blue") translate([0, 0, 12 + 3]) gnal_spacer_16();
//#1 - bottom spiral
difference () {
cylinder(r = 50 / 2, h = 16, center = true);
cylinder(r = 22.5 / 2, h = 16 + 1, center = true);
translate([0, 0, -8]) spiral_insert_void();
}
color("blue") translate([0, 0, -12]) gnal_spiral_bottom_insert_16();
}
PART="stacking";
if (PART == "spiral") { if (PART == "spiral") {
gnal_50ft_spiral(); gnal_50ft_spiral();
} else if (PART == "tank") {
gnal_50ft_tank();
} else if (PART == "quarter_a") { } else if (PART == "quarter_a") {
gnal_50ft_spiral_quarter("a"); gnal_50ft_spiral_quarter("a");
} else if (PART == "quarter_b") { } else if (PART == "quarter_b") {
@ -201,8 +283,6 @@ if (PART == "spiral") {
gnal_50ft_spiral_quarter("d"); gnal_50ft_spiral_quarter("d");
} else if (PART == "top") { } else if (PART == "top") {
gnal_50ft_top(); gnal_50ft_top();
} else if (PART == "spacer") {
gnal_spacer();
} else if (PART == "insert_s8") { } else if (PART == "insert_s8") {
gnal_spiral_bottom_insert_s8(); gnal_spiral_bottom_insert_s8();
} else if (PART == "insert_16") { } else if (PART == "insert_16") {
@ -217,6 +297,9 @@ if (PART == "spiral") {
gnal_spindle_bottom(); gnal_spindle_bottom();
} else if (PART == "spindle_single") { } else if (PART == "spindle_single") {
gnal_spindle_top(); gnal_spindle_top();
} else if (PART == "stacking") {
//stacking();
rotate([0, 180, 0]) gnal_stacking_spindle();
} else if (PART == "spiral_test") { } else if (PART == "spiral_test") {
difference () { difference () {
gnal_50ft_spiral(); gnal_50ft_spiral();
@ -224,3 +307,11 @@ if (PART == "spiral") {
rotate([0, 0, 30]) translate([-125, 0, 0]) cube([250, 250, 100], center = true); rotate([0, 0, 30]) translate([-125, 0, 0]) cube([250, 250, 100], center = true);
} }
} }
if (DEBUG) {
echo("WARNING: DEBUG is enabled");
}
echo($vpt);
echo($vpr);
echo($vpd);

View File

@ -17,6 +17,8 @@ include <./Triangles.scad>;
* *
*/ */
DEBUG = false;
FINE = 200; FINE = 200;
OD = 10 + .5; OD = 10 + .5;
@ -266,7 +268,13 @@ module gnal_spiral_bottom_insert_16 () {
} }
} }
} }
translate([0, 0, -(H / 2) - 2]) metric_thread (diameter=OD, pitch=PITCH, thread_size = THREAD, length=LEN + 8); translate([0, 0, -(H / 2) - 2]) {
if (DEBUG) {
cylinder(r = OD / 2, h = LEN + 8);
} else {
metric_thread (diameter=OD, pitch=PITCH, thread_size = THREAD, length=LEN + 8);
}
}
translate([0, 0, 8.5]) { translate([0, 0, 8.5]) {
for (i = [0: RIDGES - 1]) { for (i = [0: RIDGES - 1]) {
rotate([0, 0, i * (360 / RIDGES)]) translate([void_d / 2, 0, 0]) cylinder(r = RIDGE_D / 2, h = 8.1, center = true); rotate([0, 0, i * (360 / RIDGES)]) translate([void_d / 2, 0, 0]) cylinder(r = RIDGE_D / 2, h = 8.1, center = true);
@ -310,7 +318,13 @@ module gnal_spiral_bottom_insert_single () {
} }
} }
} }
translate([0, 0, -LEN / 2]) metric_thread (diameter=SINGLE_THREAD_D, pitch=PITCH, thread_size = THREAD, length = LEN); translate([0, 0, -LEN / 2]) {
if (DEBUG) {
cylinder(r = SINGLE_THREAD_D / 2, h = LEN);
} else {
metric_thread (diameter=SINGLE_THREAD_D, pitch=PITCH, thread_size = THREAD, length = LEN);
}
}
} }
} }
@ -351,33 +365,8 @@ module spacer_outer_ridges () {
} }
} }
} }
module gnal_spacer () {
add = 3.25;
core_d = 29.5;
core_bottom_d = 26.2 + .2;
void_d = 22.5;
h = 8 + add;
translate([0, 0, (add / 2) - 1]) difference () {
union () {
difference () {
cylinder(r = core_d / 2, h = h, center = true, $fn = 200);
translate([0, 0, 8]) cylinder(r = core_bottom_d / 2, h = h, center = true, $fn = 200);
cylinder(r = void_d / 2, h = h + 1, center = true, $fn = 200);
}
translate([0, 0, 0]) spacer_ridges_loose();
spacer_outer_ridges();
}
//trim top
translate([0, 0, h - 0.1]) cylinder(r = (core_d + 1) / 2, h = h, center = true, $fn = 200);
//trim bottom
translate([0, 0, -h + 0.9]) cylinder(r = (core_d + 1) / 2, h = h, center = true, $fn = 200);
//finger grips
//translate([0, 24, 0]) rotate([-6, 0, 0]) cylinder(r = 10, h = 6, center = true, $fn = 100);
//translate([0, -24, 0]) rotate([6, 0, 0]) cylinder(r = 10, h = 6, center = true, $fn = 100);
}
}
module gnal_spacer_16 () { module gnal_spacer_solid () {
core_d = 29.5; core_d = 29.5;
core_bottom_d = 26.2 + .2; core_bottom_d = 26.2 + .2;
void_d = 18; void_d = 18;
@ -389,11 +378,24 @@ module gnal_spacer_16 () {
union () { union () {
difference () { difference () {
cylinder(r = core_d / 2, h = h, center = true, $fn = 200); cylinder(r = core_d / 2, h = h, center = true, $fn = 200);
cylinder(r = void_d / 2, h = h + 1, center = true, $fn = 200);
} }
translate([0, 0, -.75]) rotate([0, 180, 0]) spacer_outer_ridges(); translate([0, 0, -.75]) rotate([0, 180, 0]) spacer_outer_ridges();
} }
} }
}
module gnal_spacer_16 () {
core_d = 29.5;
core_bottom_d = 26.2 + .2;
void_d = 18.3;
h = 8;
RIDGES = 8;
RIDGE_D = 3;
difference () {
gnal_spacer_solid();
cylinder(r = void_d / 2, h = h + 1, center = true, $fn = 200);
}
translate([0, 0, 0]) { translate([0, 0, 0]) {
for (i = [0: RIDGES - 1]) { for (i = [0: RIDGES - 1]) {
rotate([0, 0, i * (360 / RIDGES)]) translate([void_d / 2, 0, 0]) cylinder(r = RIDGE_D / 2, h = 8, center = true); rotate([0, 0, i * (360 / RIDGES)]) translate([void_d / 2, 0, 0]) cylinder(r = RIDGE_D / 2, h = 8, center = true);
@ -405,9 +407,17 @@ module gnal_spacer_16 () {
* Spindles * Spindles
**/ **/
module gnal_spindle_bottom_base ( HEX = false) { module gnal_spindle_base ( ) {
D = 8.45 * 2; D = 8.45 * 2;
H = 20; H = 20;
union() {
translate([0, 0, -15]) {
cylinder(r = D / 2, h = H, center = true, $fn = FINE);
}
}
}
module gnal_spindle_bottom_base ( HEX = false) {
//for grip //for grip
BUMP = 2; //diameter BUMP = 2; //diameter
BUMPS = 6; BUMPS = 6;
@ -416,9 +426,7 @@ module gnal_spindle_bottom_base ( HEX = false) {
TOP_OFFSET = -24.5; TOP_OFFSET = -24.5;
union() { union() {
translate([0, 0, -15]) { gnal_spindle_base();
cylinder(r = D / 2, h = H, center = true, $fn = FINE);
}
//hex version //hex version
if (HEX) { if (HEX) {
translate([0, 0, TOP_OFFSET]) { translate([0, 0, TOP_OFFSET]) {
@ -445,7 +453,13 @@ module outer_screw (LEN) {
THREAD = 1.6; THREAD = 1.6;
difference () { difference () {
translate([0, 0, -7.1]) metric_thread (diameter=OD, pitch=PITCH, thread_size = THREAD, length=LEN); translate([0, 0, -7.1]) {
if (DEBUG) {
cylinder(r = OD / 2, h = LEN);
} else {
metric_thread (diameter=OD, pitch=PITCH, thread_size = THREAD, length=LEN);
}
}
//bevel top of screw //bevel top of screw
translate([0, 0, LEN - 8]) difference() { translate([0, 0, LEN - 8]) difference() {
cylinder(r = 8, h = 3, center = true, $fn = FINE); cylinder(r = 8, h = 3, center = true, $fn = FINE);
@ -466,12 +480,20 @@ module gnal_spindle_bottom (ALT = false, HEX = false) {
gnal_spindle_bottom_base(HEX); gnal_spindle_bottom_base(HEX);
//inner screw negative //inner screw negative
translate([0, 0, -30]) union() { translate([0, 0, -30]) union() {
if (DEBUG) {
cylinder(r = OD / 2, h = IN_LEN);
} else {
metric_thread (diameter=OD, pitch=PITCH, thread_size = THREAD, length = IN_LEN); metric_thread (diameter=OD, pitch=PITCH, thread_size = THREAD, length = IN_LEN);
}
translate([0, 0, 0.2]) { translate([0, 0, 0.2]) {
if (DEBUG) {
cylinder(r = OD / 2, h = IN_LEN);
} else {
metric_thread (diameter=OD, pitch=PITCH, thread_size = THREAD, length = IN_LEN); metric_thread (diameter=OD, pitch=PITCH, thread_size = THREAD, length = IN_LEN);
} }
} }
} }
}
difference () { difference () {
//outer screw //outer screw
@ -480,8 +502,6 @@ module gnal_spindle_bottom (ALT = false, HEX = false) {
} else { } else {
outer_screw(LEN); outer_screw(LEN);
} }
//hollow center
cylinder(r = 3.8 / 2, h = 100, center = true, $fn = 60);
} }
} }
@ -583,8 +603,12 @@ module gnal_spindle_top () {
} }
//screw //screw
translate([0, 0, -37.5]) { translate([0, 0, -37.5]) {
if (DEBUG) {
cylinder(r = 13.6 / 2, h = 21);
} else {
metric_thread (diameter=13.6, pitch = PITCH, thread_size = THREAD, length = 21); metric_thread (diameter=13.6, pitch = PITCH, thread_size = THREAD, length = 21);
} }
}
//cylinder plug //cylinder plug
translate([0, 0, -37.5 + (21 / 2) - 1]) { translate([0, 0, -37.5 + (21 / 2) - 1]) {
cylinder(r = 12 / 2, h = 21, center = true, $fn = FINE); cylinder(r = 12 / 2, h = 21, center = true, $fn = FINE);
@ -689,8 +713,12 @@ module gnal_spindle_single () {
} }
//screw //screw
translate([0, 0, -37.5 - SINGLE_INSERT]) { translate([0, 0, -37.5 - SINGLE_INSERT]) {
if (DEBUG) {
cylinder(r = SINGLE_THREAD_D / 2, h = 21);
} else {
metric_thread (diameter=SINGLE_THREAD_D, pitch = PITCH, thread_size = THREAD, length = 21); metric_thread (diameter=SINGLE_THREAD_D, pitch = PITCH, thread_size = THREAD, length = 21);
} }
}
//cylinder plug //cylinder plug
translate([0, 0, -37.5 - SINGLE_INSERT + (21 / 2) - 1]) { translate([0, 0, -37.5 - SINGLE_INSERT + (21 / 2) - 1]) {
cylinder(r = 10 / 2, h = 21, center = true, $fn = FINE); cylinder(r = 10 / 2, h = 21, center = true, $fn = FINE);