mirror of
https://github.com/nophead/NopSCADlib.git
synced 2025-09-03 12:22:46 +02:00
Compare commits
27 Commits
Author | SHA1 | Date | |
---|---|---|---|
|
3a7fde6c56 | ||
|
c5bb898856 | ||
|
11ebe2225d | ||
|
a1e25bb878 | ||
|
9689683b7e | ||
|
08946e3d70 | ||
|
15c2946e91 | ||
|
34019196cd | ||
|
436fc71cf3 | ||
|
fd67c166f7 | ||
|
634deab911 | ||
|
e2feceb608 | ||
|
d1258e0b0c | ||
|
bd61a1dc55 | ||
|
055e83902f | ||
|
feec1e7ae5 | ||
|
be76af2fc4 | ||
|
9c1a9bf357 | ||
|
9647fb474b | ||
|
49fdfea792 | ||
|
ac0bacfeda | ||
|
6288059d99 | ||
|
0f1dff230a | ||
|
e379fa8ada | ||
|
313d7508df | ||
|
083caca4e8 | ||
|
5fbff060b0 |
34
CHANGELOG.md
34
CHANGELOG.md
@@ -3,6 +3,40 @@
|
||||
This changelog is generated by `changelog.py` using manually added semantic version tags to classify commits as breaking changes, additions or fixes.
|
||||
|
||||
|
||||
#### [v15.13.1](https://github.com/nophead/NopSCADlib/releases/tag/v15.13.1 "show release") Fixes [...](https://github.com/nophead/NopSCADlib/compare/v15.13.0...v15.13.1 "diff with v15.13.0")
|
||||
* 2021-05-18 [`11ebe22`](https://github.com/nophead/NopSCADlib/commit/11ebe2225db09bdd45089e4ebf5c1037243bf45c "show commit") [C.P.](# "Chris Palmer") Removed spurious convexity in difference from `rounded_polygon()`.
|
||||
|
||||
### [v15.13.0](https://github.com/nophead/NopSCADlib/releases/tag/v15.13.0 "show release") Additions [...](https://github.com/nophead/NopSCADlib/compare/v15.12.0...v15.13.0 "diff with v15.12.0")
|
||||
* 2021-05-02 [`3401919`](https://github.com/nophead/NopSCADlib/commit/34019196cdac6b08e57d773e138a22394b609ea5 "show commit") [C.P.](# "Chris Palmer") Updated readme
|
||||
|
||||
* 2021-05-02 [`436fc71`](https://github.com/nophead/NopSCADlib/commit/436fc71cf319c1e71b6cbd240b76d7cad5ecd8ba "show commit") [M.B.](# "Martin Budden") Added `blower_size` function.
|
||||
|
||||
### [v15.12.0](https://github.com/nophead/NopSCADlib/releases/tag/v15.12.0 "show release") Additions [...](https://github.com/nophead/NopSCADlib/compare/v15.11.1...v15.12.0 "diff with v15.11.1")
|
||||
* 2021-04-26 [`e2feceb`](https://github.com/nophead/NopSCADlib/commit/e2feceb608b4491424c0e4c1e7c191f7d8aeceec "show commit") [C.P.](# "Chris Palmer") Updated readme
|
||||
|
||||
* 2021-04-25 [`9c1a9bf`](https://github.com/nophead/NopSCADlib/commit/9c1a9bf3572c07a57b5bd1fde1d9a4aba14e5ea8 "show commit") [M.B.](# "Martin Budden") Add facility to orient `core_xy` with left motor being lower or upper motor.
|
||||
|
||||
#### [v15.11.1](https://github.com/nophead/NopSCADlib/releases/tag/v15.11.1 "show release") Fixes [...](https://github.com/nophead/NopSCADlib/compare/v15.11.0...v15.11.1 "diff with v15.11.0")
|
||||
* 2021-04-25 [`feec1e7`](https://github.com/nophead/NopSCADlib/commit/feec1e7ae5a5217586e0ab9e7b002e8af8f7c749 "show commit") [C.P.](# "Chris Palmer") Updated readme.
|
||||
|
||||
* 2021-04-25 [`be76af2`](https://github.com/nophead/NopSCADlib/commit/be76af2fc490e10e4dd115a56019e33005f87db9 "show commit") [M.B.](# "Martin Budden") Fixed typo in `leadnut.scad`.
|
||||
|
||||
### [v15.11.0](https://github.com/nophead/NopSCADlib/releases/tag/v15.11.0 "show release") Additions [...](https://github.com/nophead/NopSCADlib/compare/v15.10.1...v15.11.0 "diff with v15.10.1")
|
||||
* 2021-04-25 [`49fdfea`](https://github.com/nophead/NopSCADlib/commit/49fdfea7926d677b6e0a9eee2fbd928f2935e1eb "show commit") [C.P.](# "Chris Palmer") Added 35BYGHJ75 geared stepper.
|
||||
|
||||
#### [v15.10.1](https://github.com/nophead/NopSCADlib/releases/tag/v15.10.1 "show release") Fixes [...](https://github.com/nophead/NopSCADlib/compare/v15.10.0...v15.10.1 "diff with v15.10.0")
|
||||
* 2021-04-25 [`ac0bacf`](https://github.com/nophead/NopSCADlib/commit/ac0bacfeda43af62256e7bd3184df695b3e01d37 "show commit") [C.P.](# "Chris Palmer") Removed echo in rails test.
|
||||
|
||||
### [v15.10.0](https://github.com/nophead/NopSCADlib/releases/tag/v15.10.0 "show release") Additions [...](https://github.com/nophead/NopSCADlib/compare/v15.9.0...v15.10.0 "diff with v15.9.0")
|
||||
* 2021-04-13 [`e379fa8`](https://github.com/nophead/NopSCADlib/commit/e379fa8ada4a4089fc24ce5fc2c140a2531e2e95 "show commit") [C.P.](# "Chris Palmer") Updated readme.
|
||||
|
||||
* 2021-04-13 [`5fbff06`](https://github.com/nophead/NopSCADlib/commit/5fbff060b019a983eba93eb8c5b16adfb6a3f7ee "show commit") [M.B.](# "Martin Budden") Added a `pcb_component` function.
|
||||
|
||||
### [v15.9.0](https://github.com/nophead/NopSCADlib/releases/tag/v15.9.0 "show release") Additions [...](https://github.com/nophead/NopSCADlib/compare/v15.8.0...v15.9.0 "diff with v15.8.0")
|
||||
* 2021-04-13 [`edc0b86`](https://github.com/nophead/NopSCADlib/commit/edc0b86bb1cd52e90fe353c4aea9539e95aa5aee "show commit") [C.P.](# "Chris Palmer") Updated images and readme.
|
||||
|
||||
* 2021-03-31 [`b70c2f9`](https://github.com/nophead/NopSCADlib/commit/b70c2f993c351bf71da57cfc169ed02a235cf4f3 "show commit") [M.B.](# "Martin Budden") Added box sections.
|
||||
|
||||
### [v15.8.0](https://github.com/nophead/NopSCADlib/releases/tag/v15.8.0 "show release") Additions [...](https://github.com/nophead/NopSCADlib/compare/v15.7.0...v15.8.0 "diff with v15.7.0")
|
||||
* 2021-04-12 [`145c5d9`](https://github.com/nophead/NopSCADlib/commit/145c5d9b1a7c873940abf266a321edabdff3b7a0 "show commit") [C.P.](# "Chris Palmer") Updated readme.
|
||||
|
||||
|
@@ -30,7 +30,7 @@ rr_green = [0, 146/255, 0]; // Rep
|
||||
|
||||
$_bom = is_undef($bom) ? 0 : $bom; // 0 no bom, 1 assemblies and stls, 2 vitamins as well
|
||||
$exploded = is_undef($explode) ? 0 : $explode; // 1 for exploded view
|
||||
layer_height = is_undef($layer_height) ? 0.25 : $layer_height; // layer heigth when printing
|
||||
layer_height = is_undef($layer_height) ? 0.25 : $layer_height; // layer height when printing
|
||||
extrusion_width = is_undef($extrusion_width) ? 0.5 : $extrusion_width; // filament width when printing
|
||||
nozzle = is_undef($nozzle) ? 0.45 : $nozzle; // 3D printer nozzle
|
||||
cnc_bit_r = is_undef($cnc_bit_r) ? 1.2 : $cnc_bit_r; // minimum tool radius when milling 2D objects
|
||||
|
BIN
libtest.png
BIN
libtest.png
Binary file not shown.
Before Width: | Height: | Size: 892 KiB After Width: | Height: | Size: 894 KiB |
@@ -369,10 +369,10 @@ extrusions_y = panel_meters_y + 80;
|
||||
translate([x3, veroboard_y])
|
||||
veroboard_test();
|
||||
|
||||
translate([x3 + 70, veroboard_y + 30])
|
||||
translate([x3 + 60, veroboard_y + 20])
|
||||
geared_steppers();
|
||||
|
||||
translate([x3 + 140, veroboard_y + 20])
|
||||
translate([x3 + 160, ssrs_y])
|
||||
pcb_mounts();
|
||||
|
||||
translate([x3 + 170, veroboard_y + 16])
|
||||
|
22
readme.md
22
readme.md
@@ -373,6 +373,7 @@ Models of radial blowers.
|
||||
|:--- |:--- |
|
||||
| `blower_casing_is_square(type)` | True for square radial fans, false for spiral shape radial blowers |
|
||||
| `blower_exit_offset(type)` | Offset of exit's centre from the edge |
|
||||
| `blower_size(type)` | Size |
|
||||
|
||||
### Modules
|
||||
| Module | Description |
|
||||
@@ -1091,23 +1092,23 @@ Geared tin can steppers
|
||||
|:--- |:--- |
|
||||
| `gs_boss_d(type)` | Boss around the shaft diameter |
|
||||
| `gs_boss_h(type)` | Boss around the shaft height |
|
||||
| `gs_bulge2_d(type)` | Plastic rear bulge depth from centre |
|
||||
| `gs_bulge2_h(type)` | Plastic rear bulge height |
|
||||
| `gs_bulge2_w(type)` | Plastic rear bulge width |
|
||||
| `gs_bulge_d(type)` | Plastic bulge depth from centre |
|
||||
| `gs_bulge_h(type)` | Plastic bulge height |
|
||||
| `gs_bulge_w(type)` | Plastic bulge width |
|
||||
| `gs_bulge(type)` | Plastic bulge width, depth, height, z offset |
|
||||
| `gs_bulge2(type)` | Plastic rear bulge width, depth, height |
|
||||
| `gs_diameter(type)` | Can diameter |
|
||||
| `gs_flat_length(type)` | Shaft flat length |
|
||||
| `gs_height(type)` | Can height |
|
||||
| `gs_hole_d(type)` | Screw hole diameter |
|
||||
| `gs_lug_t(type)` | Screw lug thickness |
|
||||
| `gs_lug_w(type)` | Screw lug width |
|
||||
| `gs_motor(type)` | Motor diameter and height if separate from gearbox |
|
||||
| `gs_offset(type)` | Offset of the shaft from the centre of the can |
|
||||
| `gs_pitch(type)` | Screw pitch |
|
||||
| `gs_radius(type)` | Top - or bottom + corner radius |
|
||||
| `gs_shaft_d(type)` | Shaft diameter |
|
||||
| `gs_shaft_flat(type)` | Shaft width across the flats |
|
||||
| `gs_shaft_length(type)` | Shaft length |
|
||||
| `gs_wire_d(type)` | Wire diameter |
|
||||
| `gs_wires(type)` | Wire colours and grouping |
|
||||
|
||||
### Modules
|
||||
| Module | Description |
|
||||
@@ -1121,6 +1122,7 @@ Geared tin can steppers
|
||||
| Qty | Module call | BOM entry |
|
||||
| ---:|:--- |:---|
|
||||
| 1 | `geared_stepper(28BYJ_48)` | Geared stepper - 28BYJ-48 5V |
|
||||
| 1 | `geared_stepper(35BYGHJ75)` | Geared stepper - 35BYGHJ75 0.4A |
|
||||
|
||||
|
||||
<a href="#top">Top</a>
|
||||
@@ -1483,7 +1485,7 @@ Nuts for leadscrews.
|
||||
| `leadnut_flange_t(type)` | Flange thickness |
|
||||
| `leadnut_height(type)` | Total height |
|
||||
| `leadnut_hole_dia(type)` | The diameter of the screw holes |
|
||||
| `leadnut_hole_pitch(type)` | The radia pitch of the screw holes |
|
||||
| `leadnut_hole_pitch(type)` | The radial pitch of the screw holes |
|
||||
| `leadnut_holes(type)` | The number of screw holes |
|
||||
| `leadnut_lead(type)` | Screw lead |
|
||||
| `leadnut_od(type)` | Outer diameter of the shank |
|
||||
@@ -2195,6 +2197,7 @@ PCBs and perfboard with optional components. The shape can be a rectangle with o
|
||||
### Functions
|
||||
| Function | Description |
|
||||
|:--- |:--- |
|
||||
| `pcb_component(type, name, index = 0)` | Return the component specified by name and index |
|
||||
| `pcb_component_position(type, name, index = 0)` | Return x y position of specified component |
|
||||
| `pcb_coord(type, p)` | Convert offsets from the edge to coordinates relative to the centre |
|
||||
| `pcb_grid_pos(type, x, y, z = 0)` | Returns a pcb grid position |
|
||||
@@ -2331,6 +2334,7 @@ PCBs and perfboard with optional components. The shape can be a rectangle with o
|
||||
### Functions
|
||||
| Function | Description |
|
||||
|:--- |:--- |
|
||||
| `pcb_component(type, name, index = 0)` | Return the component specified by name and index |
|
||||
| `pcb_component_position(type, name, index = 0)` | Return x y position of specified component |
|
||||
| `pcb_coord(type, p)` | Convert offsets from the edge to coordinates relative to the centre |
|
||||
| `pcb_grid_pos(type, x, y, z = 0)` | Returns a pcb grid position |
|
||||
@@ -5682,8 +5686,8 @@ allows flexible positioning of the motors.
|
||||
### Modules
|
||||
| Module | Description |
|
||||
|:--- |:--- |
|
||||
| `coreXY(type, size, pos, separation, x_gap, plain_idler_offset = 0, upper_drive_pulley_offset, lower_drive_pulley_offset, show_pulleys = false)` | Wrapper module to draw both belts of a coreXY setup |
|
||||
| `coreXY_belts(type, carriagePosition, coreXYPosBL, coreXYPosTR, separation, x_gap = 20, upper_drive_pulley_offset = [0, 0], lower_drive_pulley_offset = [0, 0], show_pulleys = false)` | Draw the coreXY belts |
|
||||
| `coreXY(type, size, pos, separation, x_gap, plain_idler_offset = 0, upper_drive_pulley_offset, lower_drive_pulley_offset, show_pulleys = false, left_lower = false)` | Wrapper module to draw both belts of a coreXY setup |
|
||||
| `coreXY_belts(type, carriagePosition, coreXYPosBL, coreXYPosTR, separation, x_gap = 20, upper_drive_pulley_offset = [0, 0], lower_drive_pulley_offset = [0, 0], show_pulleys = false, left_lower = false)` | Draw the coreXY belts |
|
||||
| `coreXY_half(type, size, pos, separation_y = 0, x_gap = 0, plain_idler_offset = 0, drive_pulley_offset = [0, 0], show_pulleys = false, lower_belt = false, hflip = false)` | Draw one belt of a coreXY setup |
|
||||
|
||||

|
||||
|
@@ -21,7 +21,7 @@ include <../vitamins/geared_steppers.scad>
|
||||
use <../utils/layout.scad>
|
||||
|
||||
module geared_steppers()
|
||||
layout([for(g = geared_steppers) gs_diameter(g)], 5)
|
||||
layout([for(g = geared_steppers) max(gs_diameter(g), gs_pitch(g) + gs_lug_w(g) / 2)], 5)
|
||||
geared_stepper(geared_steppers[$i]);
|
||||
|
||||
geared_steppers();
|
||||
|
Binary file not shown.
Before Width: | Height: | Size: 67 KiB After Width: | Height: | Size: 94 KiB |
@@ -50,8 +50,6 @@ module rails()
|
||||
translate_z(-sheet)
|
||||
vflip()
|
||||
nut_and_washer(nut, true);
|
||||
|
||||
echo(rail[0], (length - (rail_holes(rail, length) - 1) * rail_pitch(rail)) / 2);
|
||||
}
|
||||
|
||||
if($preview)
|
||||
|
@@ -180,24 +180,25 @@ module coreXY_half(type, size, pos, separation_y = 0, x_gap = 0, plain_idler_off
|
||||
tooth_colour = lower_belt ? coreXY_lower_tooth_colour(type) : coreXY_upper_tooth_colour(type));
|
||||
}
|
||||
|
||||
module coreXY(type, size, pos, separation, x_gap, plain_idler_offset = 0, upper_drive_pulley_offset, lower_drive_pulley_offset, show_pulleys = false) { //! Wrapper module to draw both belts of a coreXY setup
|
||||
module coreXY(type, size, pos, separation, x_gap, plain_idler_offset = 0, upper_drive_pulley_offset, lower_drive_pulley_offset, show_pulleys = false, left_lower = false) { //! Wrapper module to draw both belts of a coreXY setup
|
||||
translate([size.x / 2 - separation.x / 2, size.y / 2, -separation.z / 2]) {
|
||||
// lower belt
|
||||
hflip()
|
||||
hflip(!left_lower)
|
||||
explode(25)
|
||||
coreXY_half(type, size, [size.x - pos.x - separation.x, pos.y], separation.y, x_gap, plain_idler_offset, [-lower_drive_pulley_offset.x, lower_drive_pulley_offset.y], show_pulleys, lower_belt = true, hflip = true);
|
||||
coreXY_half(type, size, [size.x - pos.x - separation.x/2 - (left_lower ? x_gap : 0), pos.y], separation.y, x_gap, plain_idler_offset, [-lower_drive_pulley_offset.x, lower_drive_pulley_offset.y], show_pulleys, lower_belt = true, hflip = true);
|
||||
|
||||
// upper belt
|
||||
translate([separation.x, 0, separation.z])
|
||||
explode(25)
|
||||
coreXY_half(type, size, [pos.x, pos.y], separation.y, x_gap, plain_idler_offset, upper_drive_pulley_offset, show_pulleys, lower_belt = false, hflip=false);
|
||||
hflip(left_lower)
|
||||
explode(25)
|
||||
coreXY_half(type, size, [pos.x + separation.x/2 + (left_lower ? x_gap : 0), pos.y], separation.y, x_gap, plain_idler_offset, upper_drive_pulley_offset, show_pulleys, lower_belt = false, hflip = false);
|
||||
}
|
||||
}
|
||||
|
||||
module coreXY_belts(type, carriagePosition, coreXYPosBL, coreXYPosTR, separation, x_gap = 20, upper_drive_pulley_offset = [0, 0], lower_drive_pulley_offset = [0, 0], show_pulleys = false) { //! Draw the coreXY belts
|
||||
module coreXY_belts(type, carriagePosition, coreXYPosBL, coreXYPosTR, separation, x_gap = 20, upper_drive_pulley_offset = [0, 0], lower_drive_pulley_offset = [0, 0], show_pulleys = false, left_lower = false) { //! Draw the coreXY belts
|
||||
assert(coreXYPosBL.z == coreXYPosTR.z);
|
||||
|
||||
coreXYSize = coreXYPosTR - coreXYPosBL;
|
||||
translate(coreXYPosBL)
|
||||
coreXY(type, coreXYSize, [carriagePosition.x - coreXYPosBL.x + separation.x / 2, carriagePosition.y - coreXYPosBL.y], separation = separation, x_gap = x_gap, plain_idler_offset = 0, upper_drive_pulley_offset = upper_drive_pulley_offset, lower_drive_pulley_offset = lower_drive_pulley_offset, show_pulleys = show_pulleys);
|
||||
coreXY(type, coreXYSize, [carriagePosition.x - coreXYPosBL.x, carriagePosition.y - coreXYPosBL.y], separation = separation, x_gap = x_gap, plain_idler_offset = 0, upper_drive_pulley_offset = upper_drive_pulley_offset, lower_drive_pulley_offset = lower_drive_pulley_offset, show_pulleys = show_pulleys, left_lower = left_lower);
|
||||
}
|
||||
|
@@ -77,7 +77,7 @@ module rounded_polygon(points, _tangents = undef) { //! Draw the rounded polygon
|
||||
indices = [0 : len - 1];
|
||||
tangents = [ for (t = _tangents ? _tangents : rounded_polygon_tangents(points)) each [t.x, t.y] ];
|
||||
|
||||
difference(convexity = points) {
|
||||
difference() {
|
||||
union() {
|
||||
for(i = indices)
|
||||
if(points[i][2] > 0)
|
||||
|
@@ -28,6 +28,7 @@ use <screw.scad>
|
||||
function blower_length(type) = type[2]; //! Length of enclosing rectangle
|
||||
function blower_width(type) = type[3]; //! Width of enclosing rectangle
|
||||
function blower_depth(type) = type[4]; //! Height
|
||||
function blower_size(type) = [blower_length(type), blower_width(type), blower_depth(type)]; //! Size
|
||||
function blower_bore(type) = type[5]; //! The air intake hole diameter
|
||||
function blower_screw(type) = type[6]; //! The type of screws needed
|
||||
function blower_hub(type) = type[7]; //! Rotor hub diameter
|
||||
|
@@ -26,89 +26,138 @@ use <../utils/round.scad>
|
||||
|
||||
function gs_diameter(type) = type[2]; //! Can diameter
|
||||
function gs_height(type) = type[3]; //! Can height
|
||||
function gs_pitch(type) = type[4]; //! Screw pitch
|
||||
function gs_lug_w(type) = type[5]; //! Screw lug width
|
||||
function gs_lug_t(type) = type[6]; //! Screw lug thickness
|
||||
function gs_hole_d(type) = type[7]; //! Screw hole diameter
|
||||
function gs_offset(type) = type[8]; //! Offset of the shaft from the centre of the can
|
||||
function gs_boss_d(type) = type[9]; //! Boss around the shaft diameter
|
||||
function gs_boss_h(type) = type[10]; //! Boss around the shaft height
|
||||
function gs_shaft_d(type) = type[11]; //! Shaft diameter
|
||||
function gs_shaft_flat(type) = type[12]; //! Shaft width across the flats
|
||||
function gs_shaft_length(type) = type[13]; //! Shaft length
|
||||
function gs_flat_length(type) = type[14]; //! Shaft flat length
|
||||
function gs_bulge_w(type) = type[15]; //! Plastic bulge width
|
||||
function gs_bulge_d(type) = type[16]; //! Plastic bulge depth from centre
|
||||
function gs_bulge_h(type) = type[17]; //! Plastic bulge height
|
||||
function gs_bulge2_w(type) = type[18]; //! Plastic rear bulge width
|
||||
function gs_bulge2_d(type) = type[19]; //! Plastic rear bulge depth from centre
|
||||
function gs_bulge2_h(type) = type[20]; //! Plastic rear bulge height
|
||||
function gs_radius(type) = type[4]; //! Top - or bottom + corner radius
|
||||
function gs_motor(type) = type[5]; //! Motor diameter and height if separate from gearbox
|
||||
function gs_pitch(type) = type[6]; //! Screw pitch
|
||||
function gs_lug_w(type) = type[7]; //! Screw lug width
|
||||
function gs_lug_t(type) = type[8]; //! Screw lug thickness
|
||||
function gs_hole_d(type) = type[9]; //! Screw hole diameter
|
||||
function gs_offset(type) = type[10]; //! Offset of the shaft from the centre of the can
|
||||
function gs_boss_d(type) = type[11]; //! Boss around the shaft diameter
|
||||
function gs_boss_h(type) = type[12]; //! Boss around the shaft height
|
||||
function gs_shaft_d(type) = type[13]; //! Shaft diameter
|
||||
function gs_shaft_flat(type) = type[14]; //! Shaft width across the flats
|
||||
function gs_shaft_length(type) = type[15]; //! Shaft length
|
||||
function gs_flat_length(type) = type[16]; //! Shaft flat length
|
||||
function gs_bulge(type) = type[17]; //! Plastic bulge width, depth, height, z offset
|
||||
function gs_bulge2(type) = type[18]; //! Plastic rear bulge width, depth, height
|
||||
function gs_wire_d(type) = type[19]; //! Wire diameter
|
||||
function gs_wires(type) = type[20]; //! Wire colours and grouping
|
||||
|
||||
module geared_stepper_screw_positions(type) //! Place children at the screw positions
|
||||
for(side = [-1, 1])
|
||||
translate([side * gs_pitch(type) / 2, -gs_offset(type)])
|
||||
children();
|
||||
|
||||
motor_colour = "#9BA2AC";
|
||||
gearbox_colour = "#FFF7EE";
|
||||
|
||||
module geared_stepper(type) { //! Draw the specified geared stepper
|
||||
vitamin(str("geared_stepper(", type[0], "): Geared stepper - ", type[1]));
|
||||
|
||||
radius = gs_diameter(type) / 2;
|
||||
height = gs_height(type);
|
||||
motor = gs_motor(type);
|
||||
height = gs_height(type) - motor.y;
|
||||
offset = gs_offset(type);
|
||||
color("silver") {
|
||||
translate([0, -offset])
|
||||
rounded_cylinder(r = radius, h = height, r2 = 1);
|
||||
lug_t = gs_lug_t(type);
|
||||
bulge = gs_bulge(type);
|
||||
bulge_z = bulge[3];
|
||||
bulge2 = gs_bulge2(type);
|
||||
wires = gs_wires(type);
|
||||
|
||||
// Gearbox
|
||||
color(motor.y ? gearbox_colour : motor_colour) {
|
||||
difference() {
|
||||
rad = gs_radius(type);
|
||||
translate([0, -offset])
|
||||
if(rad >= 0)
|
||||
rounded_cylinder(r = radius, h = height, r2 = rad);
|
||||
else
|
||||
translate_z(height)
|
||||
vflip()
|
||||
rounded_cylinder(r = radius, h = height, r2 = -rad);
|
||||
|
||||
if(!lug_t)
|
||||
geared_stepper_screw_positions(type)
|
||||
cylinder(d = gs_hole_d(type), h = 10, center = true);
|
||||
}
|
||||
|
||||
cylinder(d = gs_boss_d(type), h = 2 * gs_boss_h(type), center = true);
|
||||
|
||||
linear_extrude(gs_lug_t(type))
|
||||
difference() {
|
||||
hull()
|
||||
if(lug_t)
|
||||
linear_extrude(lug_t)
|
||||
difference() {
|
||||
hull()
|
||||
geared_stepper_screw_positions(type)
|
||||
circle(d = gs_lug_w(type));
|
||||
|
||||
geared_stepper_screw_positions(type)
|
||||
circle(d = gs_lug_w(type));
|
||||
circle(d = gs_hole_d(type));
|
||||
}
|
||||
|
||||
geared_stepper_screw_positions(type)
|
||||
circle(d = gs_hole_d(type));
|
||||
}
|
||||
|
||||
translate([0, -offset - radius, eps])
|
||||
cube([gs_bulge_w(type) - 2, 2 * (gs_bulge_d(type) - radius) - 2, 2 * eps], center = true);
|
||||
if(!bulge_z)
|
||||
translate([0, -offset - radius, eps])
|
||||
cube([bulge.x - 2, 2 * (bulge.y - radius) - 2, 2 * eps], center = true);
|
||||
}
|
||||
|
||||
// Motor
|
||||
if(motor.y)
|
||||
color("#9BA2AC")
|
||||
translate([0, -offset, height])
|
||||
rotate_extrude()
|
||||
union() {
|
||||
r = motor.x / 2;
|
||||
rad = motor[2];
|
||||
square([r - rad, rad]);
|
||||
|
||||
translate([0, motor.y - rad])
|
||||
square([r - rad, rad]);
|
||||
|
||||
hull()
|
||||
for(y = [2 * rad, motor.y - 2 * rad])
|
||||
translate([r - rad, y])
|
||||
circle(rad);
|
||||
}
|
||||
|
||||
// Shaft
|
||||
f = gs_shaft_flat(type);
|
||||
two_flats = f < 0;
|
||||
vflip()
|
||||
color(brass) {
|
||||
color(two_flats ? brass : gearbox_colour) {
|
||||
d = gs_shaft_d(type);
|
||||
h = gs_shaft_length(type);
|
||||
linear_extrude(h)
|
||||
intersection() {
|
||||
circle(d = d);
|
||||
|
||||
square([d + 1, gs_shaft_flat(type)], center = true);
|
||||
translate([0, two_flats ? 0 : (f - d) / 2])
|
||||
square([d + 1, abs(f)], center = true);
|
||||
}
|
||||
|
||||
cylinder(d = d, h = h - gs_flat_length(type));
|
||||
}
|
||||
|
||||
color("skyblue") {
|
||||
h1 = gs_bulge_h(type);
|
||||
translate([0, - offset - radius, eps])
|
||||
rounded_rectangle([gs_bulge_w(type), 2 * (gs_bulge_d(type) - radius), h1], 0.5, center = false);
|
||||
// Wire block
|
||||
color(bulge_z ? "white" : "skyblue") {
|
||||
translate([0, - offset - radius, eps + bulge[3]])
|
||||
rounded_rectangle([bulge.x, 2 * (bulge.y - radius), bulge.z], 0.5, center = false);
|
||||
|
||||
h2 = gs_bulge2_h(type);
|
||||
translate([0, - offset, h1 + 1 - h2])
|
||||
linear_extrude(h2)
|
||||
round(0.5)
|
||||
intersection() {
|
||||
circle(gs_bulge2_d(type));
|
||||
if(bulge2.z)
|
||||
translate([0, - offset, bulge.z + 1 - bulge2.z])
|
||||
linear_extrude(bulge2.z)
|
||||
round(0.5)
|
||||
intersection() {
|
||||
circle(bulge2.y);
|
||||
|
||||
translate([0, -50])
|
||||
square([gs_bulge2_w(type), 100], center = true);
|
||||
}
|
||||
translate([0, -50])
|
||||
square([bulge2.x, 100], center = true);
|
||||
}
|
||||
}
|
||||
|
||||
translate_z(2.5)
|
||||
for(i = [0 : 4])
|
||||
translate([i - 2.5, 0])
|
||||
rotate([90, 0, 0])
|
||||
color(["yellow", "orange", "red", "pink", "blue"][i])
|
||||
cylinder(d = 1, h = radius + offset + 10);
|
||||
wire_d = gs_wire_d(type);
|
||||
for(j = [0 : len(wires) - 1], i = [0 : len(wires[j]) - 1])
|
||||
translate([(i - len(wires[j]) / 2 + 0.5) * wire_d, 0, bulge_z + (j ? bulge.z - 2.5 : 2.5)])
|
||||
rotate([90, 0, 0])
|
||||
color(wires[j][i])
|
||||
cylinder(d = wire_d, h = radius + offset + 10);
|
||||
}
|
||||
|
@@ -20,8 +20,16 @@
|
||||
//
|
||||
//! Geared tin can steppers
|
||||
//
|
||||
28BYJ_48 = ["28BYJ_48", "28BYJ-48 5V", 28, 19, 35, 7, 0.85, 4.2, 8, 9, 1.5, 5, 3, 10, 6, 14.7, 17, 16.5, 17.7, 15.5, 13.8 ];
|
||||
// d h r m p l l h o b b s f s f b b w
|
||||
// i e a o i u u o f o o h l h l u u i
|
||||
// a i d t t g g l f s s a a a a l l r
|
||||
// g i o c e s s s f t f t g g e
|
||||
// h u r h w t e t t e e
|
||||
// t s d t d h w l 2 d
|
||||
// d h r d l w d h z w d h
|
||||
28BYJ_48 = ["28BYJ_48", "28BYJ-48 5V", 28, 19, 1, [ 0, 0, 0], 35, 7, 0.85, 4.2, 8, 9, 1.5, 5,-3.0, 10, 6, [14.7, 17, 16.5, 0], [17.7, 15.5, 13.8], 1, [["yellow", "orange", "red", "pink", "blue"]] ];
|
||||
35BYGHJ75 = ["35BYGHJ75", "35BYGHJ75 0.4A",37, 37, -2, [35, 22, 1], 27, 0, 0, 3.0, 7, 12, 3.0, 5, 4.5, 17, 10, [ 7.7, 20.7, 9.25, 21], [ 0, 0, 0], 1.3,[["brown", "red"], ["yellow", "green"]] ];
|
||||
|
||||
geared_steppers = [28BYJ_48];
|
||||
geared_steppers = [28BYJ_48, 35BYGHJ75];
|
||||
|
||||
use <geared_stepper.scad>
|
||||
|
@@ -32,7 +32,7 @@ function leadnut_flange_t(type) = type[6]; //! Flange thickness
|
||||
function leadnut_flange_offset(type) = type[7]; //! Offset of the flange from the top
|
||||
function leadnut_holes(type) = type[8]; //! The number of screw holes
|
||||
function leadnut_hole_dia(type) = type[9]; //! The diameter of the screw holes
|
||||
function leadnut_hole_pitch(type) = type[10]; //! The radia pitch of the screw holes
|
||||
function leadnut_hole_pitch(type) = type[10]; //! The radial pitch of the screw holes
|
||||
function leadnut_screw(type) = type[11]; //! The type of the fixing screws
|
||||
function leadnut_pitch(type) = type[12]; //! Screw pitch
|
||||
function leadnut_lead(type) = type[13]; //! Screw lead
|
||||
|
@@ -55,6 +55,9 @@ function pcb_polygon(type) = type[14]; //! Optional outline polygon for odd
|
||||
function pcb_screw(type, cap = hs_cap) = Len(type[15]) ? type[15] : find_screw(cap, screw_smaller_than(pcb_hole_d(type))); //! Mounting screw type
|
||||
function pcb_size(type) = [pcb_length(type), pcb_width(type), pcb_thickness(type)]; //! Length, width and thickness in a vector
|
||||
|
||||
function pcb_component(type, name, index = 0) = //! Return the component specified by name and index
|
||||
[for(component = pcb_components(type)) if(component[3] == name) component][index];
|
||||
|
||||
|
||||
function pcb_grid_pos(type, x, y, z = 0) = //! Returns a pcb grid position
|
||||
[-pcb_length(type) / 2 + pcb_grid(type).x + 2.54 * x,
|
||||
|
Reference in New Issue
Block a user