Compare commits
25 Commits
Author | SHA1 | Date | |
---|---|---|---|
|
d9af5b7f70 | ||
|
c30d7f1ad9 | ||
|
a5382cbe04 | ||
|
00c5c90a5e | ||
|
01c26d8a34 | ||
|
ef2102420b | ||
|
540f841163 | ||
|
1045502efb | ||
|
485184f092 | ||
|
b893c9069a | ||
|
69f4ced29d | ||
|
5c1aa849fe | ||
|
9d65f69bf3 | ||
|
515b99fdc0 | ||
|
631d052c68 | ||
|
1247303cb9 | ||
|
290be4beb6 | ||
|
24e941799d | ||
|
6a556c5879 | ||
|
14ab1bb8b6 | ||
|
be53547728 | ||
|
ba7d7d32ad | ||
|
d3049bc81b | ||
|
df35e14fc7 | ||
|
21c2aa5d62 |
37
CHANGELOG.md
@@ -3,6 +3,43 @@
|
||||
This changelog is generated by `changelog.py` using manually added semantic version tags to classify commits as breaking changes, additions or fixes.
|
||||
|
||||
|
||||
### [v15.23.0](https://github.com/nophead/NopSCADlib/releases/tag/v15.23.0 "show release") Additions [...](https://github.com/nophead/NopSCADlib/compare/v15.22.0...v15.23.0 "diff with v15.22.0")
|
||||
* 2021-08-31 [`00c5c90`](https://github.com/nophead/NopSCADlib/commit/00c5c90a5e74f47f0e6f5e3a7996f70fa34f0833 "show commit") [C.P.](# "Chris Palmer") Updated big picture
|
||||
|
||||
* 2021-08-31 [`01c26d8`](https://github.com/nophead/NopSCADlib/commit/01c26d8a349e802738a8b0d06575a3e6915bf070 "show commit") [C.P.](# "Chris Palmer") Added Lichuan servo motors contributed by Niclas Hedhman.
|
||||
|
||||
* 2021-08-31 [`ef21024`](https://github.com/nophead/NopSCADlib/commit/ef2102420b15e5be4008a6a3cecf5416857265f9 "show commit") [C.P.](# "Chris Palmer") Added NEMA8 and NEMA8BH stepper motors.
|
||||
Steppers can now have dual shafts, hollow shafts and black end caps.
|
||||
|
||||
* 2021-08-31 [`540f841`](https://github.com/nophead/NopSCADlib/commit/540f84116355e7f44a9b5796816d1e3422128ff3 "show commit") [C.P.](# "Chris Palmer") Added crude representation of JST ZH connectors.
|
||||
|
||||
* 2021-08-31 [`1045502`](https://github.com/nophead/NopSCADlib/commit/1045502efb1cb94fb7bcc11fd4483b425a880926 "show commit") [C.P.](# "Chris Palmer") Added more aluminium sheet thickness
|
||||
|
||||
* 2021-08-31 [`485184f`](https://github.com/nophead/NopSCADlib/commit/485184f09213ff0b191d5c8339471cd24ba3cc90 "show commit") [C.P.](# "Chris Palmer") Added HGH15CA and HGH20CA rails.
|
||||
|
||||
* 2021-08-31 [`b893c90`](https://github.com/nophead/NopSCADlib/commit/b893c9069a6bae762733cf1e139d49bab28ad792 "show commit") [C.P.](# "Chris Palmer") Added SFU1610 ballscrew nut
|
||||
|
||||
* 2021-08-31 [`69f4ced`](https://github.com/nophead/NopSCADlib/commit/69f4ced29da7e37c88ca24b924c6430144eec849 "show commit") [C.P.](# "Chris Palmer") Added `M8_cs_cap_screw,` `M5_grub_screw` and `M6_grub_screw`.
|
||||
Fixed `M6_cs_cap_screw` and `M4_grub_screw` socket sizes.
|
||||
|
||||
* 2021-08-31 [`5c1aa84`](https://github.com/nophead/NopSCADlib/commit/5c1aa849fe5992617c3128c47dfc969504cbfd2f "show commit") [C.P.](# "Chris Palmer") New layout for big picture.
|
||||
|
||||
### [v15.22.0](https://github.com/nophead/NopSCADlib/releases/tag/v15.22.0 "show release") Additions [...](https://github.com/nophead/NopSCADlib/compare/v15.21.1...v15.22.0 "diff with v15.21.1")
|
||||
* 2021-08-27 [`1247303`](https://github.com/nophead/NopSCADlib/commit/1247303cb9dc2694994993b5dc046683becb7fde "show commit") [C.P.](# "Chris Palmer") Updated images and readme.
|
||||
|
||||
* 2021-08-13 [`14ab1bb`](https://github.com/nophead/NopSCADlib/commit/14ab1bb8b614055e0bf4ad33799276b0017ca13e "show commit") [M.B.](# "Martin Budden") Added Raspberry Pi Pico.
|
||||
|
||||
#### [v15.21.1](https://github.com/nophead/NopSCADlib/releases/tag/v15.21.1 "show release") Fixes [...](https://github.com/nophead/NopSCADlib/compare/v15.21.0...v15.21.1 "diff with v15.21.0")
|
||||
* 2021-08-09 [`be53547`](https://github.com/nophead/NopSCADlib/commit/be53547728834d8e786ad4cb5637c768320a3105 "show commit") [M.B.](# "Martin Budden") Fixed display of BLDC prop shaft when thread length `=` 0.
|
||||
|
||||
* 2021-07-04 [`ba7d7d3`](https://github.com/nophead/NopSCADlib/commit/ba7d7d32adf554d163143c0ae1707565340bb35b "show commit") [C.P.](# "Chris Palmer") Updated chnagelog.
|
||||
|
||||
### [v15.21.0](https://github.com/nophead/NopSCADlib/releases/tag/v15.21.0 "show release") Additions [...](https://github.com/nophead/NopSCADlib/compare/v15.20.0...v15.21.0 "diff with v15.20.0")
|
||||
* 2021-07-01 [`df35e14`](https://github.com/nophead/NopSCADlib/commit/df35e14fc71794c3826d6c99ce3cab93a4cfa5fe "show commit") [M.B.](# "Martin Budden") Improved handling of pcb plating colour.
|
||||
|
||||
### [v15.20.0](https://github.com/nophead/NopSCADlib/releases/tag/v15.20.0 "show release") Additions [...](https://github.com/nophead/NopSCADlib/compare/v15.19.3...v15.20.0 "diff with v15.19.3")
|
||||
* 2021-06-29 [`c982876`](https://github.com/nophead/NopSCADlib/commit/c982876ebc0f95b466de1af3c80642dfd88800e6 "show commit") [C.P.](# "Chris Palmer") Can now specify the screw used for PSU shrouds and get the wall thickness.
|
||||
|
||||
#### [v15.19.3](https://github.com/nophead/NopSCADlib/releases/tag/v15.19.3 "show release") Fixes [...](https://github.com/nophead/NopSCADlib/compare/v15.19.2...v15.19.3 "diff with v15.19.2")
|
||||
* 2021-06-17 [`92d0444`](https://github.com/nophead/NopSCADlib/commit/92d0444e5f96c8f4768afb3d014044d7e66c6e69 "show commit") [C.P.](# "Chris Palmer") Changelog now runs codespell to fix the spellings in the commit comments.
|
||||
|
||||
|
1
lib.scad
@@ -55,6 +55,7 @@ include <vitamins/pulleys.scad>
|
||||
include <vitamins/ring_terminals.scad>
|
||||
include <vitamins/rails.scad>
|
||||
include <vitamins/rod.scad>
|
||||
include <vitamins/servo_motors.scad>
|
||||
include <vitamins/shaft_couplings.scad>
|
||||
include <vitamins/sheets.scad>
|
||||
include <vitamins/sk_brackets.scad>
|
||||
|
BIN
libtest.png
Before Width: | Height: | Size: 911 KiB After Width: | Height: | Size: 924 KiB |
61
libtest.scad
@@ -92,6 +92,7 @@ use <tests/rockers.scad>
|
||||
use <tests/rod.scad>
|
||||
use <tests/screws.scad>
|
||||
use <tests/sealing_strip.scad>
|
||||
use <tests/servo_motors.scad>
|
||||
use <tests/shaft_couplings.scad>
|
||||
use <tests/sheets.scad>
|
||||
use <tests/SK_brackets.scad>
|
||||
@@ -185,16 +186,15 @@ translate([x5, cable_grommets_y + 250])
|
||||
translate([950, 600])
|
||||
box_test();
|
||||
|
||||
translate([830, 770])
|
||||
translate([900, 750])
|
||||
pocket_handles();
|
||||
|
||||
translate([950, 750])
|
||||
translate([900, 850])
|
||||
printed_boxes();
|
||||
|
||||
translate([850, 1330])
|
||||
translate([850, 1330 + 85])
|
||||
bbox_test();
|
||||
|
||||
|
||||
inserts_y = 0;
|
||||
nuts_y = inserts_y + 20;
|
||||
washers_y = nuts_y + 120;
|
||||
@@ -206,10 +206,11 @@ sealing_strip_y = springs_y + 20;
|
||||
tubings_y = sealing_strip_y + 20;
|
||||
pillars_y = tubings_y + 20;
|
||||
ball_bearings_y = pillars_y + 40;
|
||||
pulleys_y = ball_bearings_y +40;
|
||||
hot_ends_y = pulleys_y + 60;
|
||||
linear_bearings_y = hot_ends_y + 50;
|
||||
sheets_y = linear_bearings_y + 90;
|
||||
pulleys_y = ball_bearings_y + 40;
|
||||
leadnuts_y = pulleys_y + 60;
|
||||
linear_bearings_y = leadnuts_y + 50;
|
||||
steppers_y = linear_bearings_y + 110;
|
||||
sheets_y = steppers_y + 55;
|
||||
pcbs_y = sheets_y + 60;
|
||||
displays_y = pcbs_y + 170;
|
||||
fans_y = displays_y + 80;
|
||||
@@ -255,13 +256,16 @@ translate([x0, ball_bearings_y])
|
||||
translate([x0, pulleys_y])
|
||||
pulleys();
|
||||
|
||||
translate([x0, leadnuts_y])
|
||||
leadnuts();
|
||||
|
||||
translate([x0, linear_bearings_y]) {
|
||||
linear_bearings();
|
||||
rods();
|
||||
}
|
||||
|
||||
translate([x0 + 10, hot_ends_y])
|
||||
hot_ends();
|
||||
translate([x0, steppers_y])
|
||||
stepper_motors();
|
||||
|
||||
translate([x0, sheets_y])
|
||||
sheets();
|
||||
@@ -279,7 +283,7 @@ translate([x0, fans_y]) {
|
||||
fan_guards();
|
||||
}
|
||||
|
||||
translate([x0, transformers_y])
|
||||
translate([760, fans_y])
|
||||
variacs();
|
||||
|
||||
translate([x0, psus_y]) {
|
||||
@@ -291,7 +295,6 @@ translate([x0, psus_y]) {
|
||||
zipties_y = 0;
|
||||
bulldogs_y = zipties_y + 30;
|
||||
swiss_clips_y = bulldogs_y + 35;
|
||||
leadnuts_y = swiss_clips_y + 50;
|
||||
|
||||
translate([x1, zipties_y])
|
||||
zipties();
|
||||
@@ -302,10 +305,6 @@ translate([x1, bulldogs_y])
|
||||
translate([x1, swiss_clips_y])
|
||||
swiss_clips();
|
||||
|
||||
translate([x1, leadnuts_y])
|
||||
leadnuts();
|
||||
|
||||
|
||||
leds_y = 0;
|
||||
carriers_y = leds_y + 40;
|
||||
magnets_y = carriers_y + 40;
|
||||
@@ -362,9 +361,9 @@ iecs_y = d_connectors_y + 80;
|
||||
modules_y = iecs_y + 60;
|
||||
ssrs_y = modules_y + 80;
|
||||
blowers_y = ssrs_y + 60;
|
||||
batteries_y = blowers_y + 100;
|
||||
steppers_y = batteries_y + 55;
|
||||
panel_meters_y = steppers_y + 70;
|
||||
hot_ends_y = blowers_y + 100;
|
||||
batteries_y = hot_ends_y + 55;
|
||||
panel_meters_y = batteries_y + 70;
|
||||
extrusions_y = panel_meters_y + 80;
|
||||
|
||||
translate([x3, veroboard_y])
|
||||
@@ -409,8 +408,8 @@ translate([x3, blowers_y])
|
||||
translate([x3, batteries_y])
|
||||
batteries();
|
||||
|
||||
translate([x2, steppers_y]) // interloper
|
||||
stepper_motors();
|
||||
translate([x3 + 10, hot_ends_y])
|
||||
hot_ends();
|
||||
|
||||
translate([x2, panel_meters_y])
|
||||
panel_meters();
|
||||
@@ -418,7 +417,7 @@ translate([x2, panel_meters_y])
|
||||
translate([x2, extrusions_y])
|
||||
extrusions();
|
||||
|
||||
translate([x3, transformers_y])
|
||||
translate([400, transformers_y])
|
||||
transformers();
|
||||
|
||||
|
||||
@@ -426,18 +425,20 @@ belts_y = 0;
|
||||
rails_y = belts_y + 200;
|
||||
extrusion_brackets_y = rails_y + 250;
|
||||
sk_brackets_y = extrusion_brackets_y + 80;
|
||||
kp_pillow_blocks_y = sk_brackets_y + 50;
|
||||
kp_pillow_blocks_y = sk_brackets_y + 60;
|
||||
scs_bearing_blocks_y = kp_pillow_blocks_y + 60;
|
||||
cable_strip_y = fans_y + 50;
|
||||
box_sections_y = cable_strip_y;
|
||||
BLDC_y = sheets_y;
|
||||
cable_strip_y = sheets_y;
|
||||
box_sections_y = batteries_y;
|
||||
BLDC_y = steppers_y;
|
||||
|
||||
translate([0, transformers_y])
|
||||
servo_motors();
|
||||
|
||||
translate([x4 + 200, belts_y + 58]) {
|
||||
belt_test();
|
||||
|
||||
translate([0, 60])
|
||||
opengrab_test();
|
||||
|
||||
}
|
||||
|
||||
translate([x4 + 175, belts_y, -20])
|
||||
@@ -446,7 +447,7 @@ translate([x4 + 175, belts_y, -20])
|
||||
translate([x4, rails_y + 130])
|
||||
rails();
|
||||
|
||||
translate([770, cable_strip_y])
|
||||
translate([x4, cable_strip_y])
|
||||
cable_strips();
|
||||
|
||||
translate([x4, kp_pillow_blocks_y])
|
||||
@@ -458,7 +459,7 @@ translate([x4, sk_brackets_y])
|
||||
translate([x4, extrusion_brackets_y])
|
||||
extrusion_brackets();
|
||||
|
||||
translate([x4 + 120, extrusion_brackets_y])
|
||||
translate([x1, swiss_clips_y + 50])
|
||||
shaft_couplings();
|
||||
|
||||
translate([x4, scs_bearing_blocks_y])
|
||||
@@ -467,7 +468,7 @@ translate([x4, scs_bearing_blocks_y])
|
||||
translate([x4, BLDC_y])
|
||||
bldc_motors();
|
||||
|
||||
translate([x6, box_sections_y])
|
||||
translate([x2, box_sections_y])
|
||||
box_sections();
|
||||
|
||||
translate([x6, 125])
|
||||
|
148
readme.md
@@ -30,22 +30,22 @@ A list of changes classified as breaking, additions or fixes is maintained in [C
|
||||
<tr><td> <a href = "#Blowers">Blowers</a> </td><td> <a href = "#Leadnuts">Leadnuts</a> </td><td> <a href = "#SSRs">SSRs</a> </td><td> <a href = "#Door_hinge">Door_hinge</a> </td><td> <a href = "#Gears">Gears</a> </td><td> <a href = "#Teardrops">Teardrops</a> </td></tr>
|
||||
<tr><td> <a href = "#Box_sections">Box_sections</a> </td><td> <a href = "#Light_strips">Light_strips</a> </td><td> <a href = "#Screws">Screws</a> </td><td> <a href = "#Door_latch">Door_latch</a> </td><td> <a href = "#Hanging_hole">Hanging_hole</a> </td><td></td></tr>
|
||||
<tr><td> <a href = "#Bulldogs">Bulldogs</a> </td><td> <a href = "#Linear_bearings">Linear_bearings</a> </td><td> <a href = "#Sealing_strip">Sealing_strip</a> </td><td> <a href = "#Drag_chain">Drag_chain</a> </td><td> <a href = "#Horiholes">Horiholes</a> </td><td></td></tr>
|
||||
<tr><td> <a href = "#Buttons">Buttons</a> </td><td> <a href = "#Magnets">Magnets</a> </td><td> <a href = "#Shaft_couplings">Shaft_couplings</a> </td><td> <a href = "#Fan_guard">Fan_guard</a> </td><td> <a href = "#Layout">Layout</a> </td><td></td></tr>
|
||||
<tr><td> <a href = "#Cable_strips">Cable_strips</a> </td><td> <a href = "#Mains_sockets">Mains_sockets</a> </td><td> <a href = "#Sheets">Sheets</a> </td><td> <a href = "#Fixing_block">Fixing_block</a> </td><td> <a href = "#Maths">Maths</a> </td><td></td></tr>
|
||||
<tr><td> <a href = "#Cameras">Cameras</a> </td><td> <a href = "#Microswitches">Microswitches</a> </td><td> <a href = "#Spades">Spades</a> </td><td> <a href = "#Flat_hinge">Flat_hinge</a> </td><td> <a href = "#Offset">Offset</a> </td><td></td></tr>
|
||||
<tr><td> <a href = "#Circlips">Circlips</a> </td><td> <a href = "#Microview">Microview</a> </td><td> <a href = "#Spools">Spools</a> </td><td> <a href = "#Foot">Foot</a> </td><td> <a href = "#Quadrant">Quadrant</a> </td><td></td></tr>
|
||||
<tr><td> <a href = "#Components">Components</a> </td><td> <a href = "#Modules">Modules</a> </td><td> <a href = "#Springs">Springs</a> </td><td> <a href = "#Handle">Handle</a> </td><td> <a href = "#Round">Round</a> </td><td></td></tr>
|
||||
<tr><td> <a href = "#DIP">DIP</a> </td><td> <a href = "#Nuts">Nuts</a> </td><td> <a href = "#Stepper_motors">Stepper_motors</a> </td><td> <a href = "#PCB_mount">PCB_mount</a> </td><td> <a href = "#Rounded_cylinder">Rounded_cylinder</a> </td><td></td></tr>
|
||||
<tr><td> <a href = "#D_connectors">D_connectors</a> </td><td> <a href = "#O_ring">O_ring</a> </td><td> <a href = "#Swiss_clips">Swiss_clips</a> </td><td> <a href = "#PSU_shroud">PSU_shroud</a> </td><td> <a href = "#Rounded_polygon">Rounded_polygon</a> </td><td></td></tr>
|
||||
<tr><td> <a href = "#Displays">Displays</a> </td><td> <a href = "#Opengrab">Opengrab</a> </td><td> <a href = "#Toggles">Toggles</a> </td><td> <a href = "#Pocket_handle">Pocket_handle</a> </td><td> <a href = "#Rounded_triangle">Rounded_triangle</a> </td><td></td></tr>
|
||||
<tr><td> <a href = "#Extrusion_brackets">Extrusion_brackets</a> </td><td> <a href = "#PCB">PCB</a> </td><td> <a href = "#Transformers">Transformers</a> </td><td> <a href = "#Press_fit">Press_fit</a> </td><td> <a href = "#Sector">Sector</a> </td><td></td></tr>
|
||||
<tr><td> <a href = "#Extrusions">Extrusions</a> </td><td> <a href = "#PCBs">PCBs</a> </td><td> <a href = "#Tubings">Tubings</a> </td><td> <a href = "#Printed_box">Printed_box</a> </td><td> <a href = "#Sweep">Sweep</a> </td><td></td></tr>
|
||||
<tr><td> <a href = "#Fans">Fans</a> </td><td> <a href = "#PSUs">PSUs</a> </td><td> <a href = "#Variacs">Variacs</a> </td><td> <a href = "#Printed_pulleys">Printed_pulleys</a> </td><td> <a href = "#Thread">Thread</a> </td><td></td></tr>
|
||||
<tr><td> <a href = "#Fuseholder">Fuseholder</a> </td><td> <a href = "#Panel_meters">Panel_meters</a> </td><td> <a href = "#Veroboard">Veroboard</a> </td><td> <a href = "#Ribbon_clamp">Ribbon_clamp</a> </td><td> <a href = "#Tube">Tube</a> </td><td></td></tr>
|
||||
<tr><td> <a href = "#Geared_steppers">Geared_steppers</a> </td><td> <a href = "#Pillars">Pillars</a> </td><td> <a href = "#Washers">Washers</a> </td><td> <a href = "#SSR_shroud">SSR_shroud</a> </td><td></td><td></td></tr>
|
||||
<tr><td> <a href = "#Green_terminals">Green_terminals</a> </td><td> <a href = "#Pillow_blocks">Pillow_blocks</a> </td><td> <a href = "#Wire">Wire</a> </td><td> <a href = "#Screw_knob">Screw_knob</a> </td><td></td><td></td></tr>
|
||||
<tr><td> <a href = "#Hot_ends">Hot_ends</a> </td><td> <a href = "#Pin_headers">Pin_headers</a> </td><td> <a href = "#Zipties">Zipties</a> </td><td> <a href = "#Socket_box">Socket_box</a> </td><td></td><td></td></tr>
|
||||
<tr><td> <a href = "#Hygrometer">Hygrometer</a> </td><td> <a href = "#Pulleys">Pulleys</a> </td><td></td><td> <a href = "#Strap_handle">Strap_handle</a> </td><td></td><td></td></tr>
|
||||
<tr><td> <a href = "#Buttons">Buttons</a> </td><td> <a href = "#Magnets">Magnets</a> </td><td> <a href = "#Servo_motors">Servo_motors</a> </td><td> <a href = "#Fan_guard">Fan_guard</a> </td><td> <a href = "#Layout">Layout</a> </td><td></td></tr>
|
||||
<tr><td> <a href = "#Cable_strips">Cable_strips</a> </td><td> <a href = "#Mains_sockets">Mains_sockets</a> </td><td> <a href = "#Shaft_couplings">Shaft_couplings</a> </td><td> <a href = "#Fixing_block">Fixing_block</a> </td><td> <a href = "#Maths">Maths</a> </td><td></td></tr>
|
||||
<tr><td> <a href = "#Cameras">Cameras</a> </td><td> <a href = "#Microswitches">Microswitches</a> </td><td> <a href = "#Sheets">Sheets</a> </td><td> <a href = "#Flat_hinge">Flat_hinge</a> </td><td> <a href = "#Offset">Offset</a> </td><td></td></tr>
|
||||
<tr><td> <a href = "#Circlips">Circlips</a> </td><td> <a href = "#Microview">Microview</a> </td><td> <a href = "#Spades">Spades</a> </td><td> <a href = "#Foot">Foot</a> </td><td> <a href = "#Quadrant">Quadrant</a> </td><td></td></tr>
|
||||
<tr><td> <a href = "#Components">Components</a> </td><td> <a href = "#Modules">Modules</a> </td><td> <a href = "#Spools">Spools</a> </td><td> <a href = "#Handle">Handle</a> </td><td> <a href = "#Round">Round</a> </td><td></td></tr>
|
||||
<tr><td> <a href = "#DIP">DIP</a> </td><td> <a href = "#Nuts">Nuts</a> </td><td> <a href = "#Springs">Springs</a> </td><td> <a href = "#PCB_mount">PCB_mount</a> </td><td> <a href = "#Rounded_cylinder">Rounded_cylinder</a> </td><td></td></tr>
|
||||
<tr><td> <a href = "#D_connectors">D_connectors</a> </td><td> <a href = "#O_ring">O_ring</a> </td><td> <a href = "#Stepper_motors">Stepper_motors</a> </td><td> <a href = "#PSU_shroud">PSU_shroud</a> </td><td> <a href = "#Rounded_polygon">Rounded_polygon</a> </td><td></td></tr>
|
||||
<tr><td> <a href = "#Displays">Displays</a> </td><td> <a href = "#Opengrab">Opengrab</a> </td><td> <a href = "#Swiss_clips">Swiss_clips</a> </td><td> <a href = "#Pocket_handle">Pocket_handle</a> </td><td> <a href = "#Rounded_triangle">Rounded_triangle</a> </td><td></td></tr>
|
||||
<tr><td> <a href = "#Extrusion_brackets">Extrusion_brackets</a> </td><td> <a href = "#PCB">PCB</a> </td><td> <a href = "#Toggles">Toggles</a> </td><td> <a href = "#Press_fit">Press_fit</a> </td><td> <a href = "#Sector">Sector</a> </td><td></td></tr>
|
||||
<tr><td> <a href = "#Extrusions">Extrusions</a> </td><td> <a href = "#PCBs">PCBs</a> </td><td> <a href = "#Transformers">Transformers</a> </td><td> <a href = "#Printed_box">Printed_box</a> </td><td> <a href = "#Sweep">Sweep</a> </td><td></td></tr>
|
||||
<tr><td> <a href = "#Fans">Fans</a> </td><td> <a href = "#PSUs">PSUs</a> </td><td> <a href = "#Tubings">Tubings</a> </td><td> <a href = "#Printed_pulleys">Printed_pulleys</a> </td><td> <a href = "#Thread">Thread</a> </td><td></td></tr>
|
||||
<tr><td> <a href = "#Fuseholder">Fuseholder</a> </td><td> <a href = "#Panel_meters">Panel_meters</a> </td><td> <a href = "#Variacs">Variacs</a> </td><td> <a href = "#Ribbon_clamp">Ribbon_clamp</a> </td><td> <a href = "#Tube">Tube</a> </td><td></td></tr>
|
||||
<tr><td> <a href = "#Geared_steppers">Geared_steppers</a> </td><td> <a href = "#Pillars">Pillars</a> </td><td> <a href = "#Veroboard">Veroboard</a> </td><td> <a href = "#SSR_shroud">SSR_shroud</a> </td><td></td><td></td></tr>
|
||||
<tr><td> <a href = "#Green_terminals">Green_terminals</a> </td><td> <a href = "#Pillow_blocks">Pillow_blocks</a> </td><td> <a href = "#Washers">Washers</a> </td><td> <a href = "#Screw_knob">Screw_knob</a> </td><td></td><td></td></tr>
|
||||
<tr><td> <a href = "#Hot_ends">Hot_ends</a> </td><td> <a href = "#Pin_headers">Pin_headers</a> </td><td> <a href = "#Wire">Wire</a> </td><td> <a href = "#Socket_box">Socket_box</a> </td><td></td><td></td></tr>
|
||||
<tr><td> <a href = "#Hygrometer">Hygrometer</a> </td><td> <a href = "#Pulleys">Pulleys</a> </td><td> <a href = "#Zipties">Zipties</a> </td><td> <a href = "#Strap_handle">Strap_handle</a> </td><td></td><td></td></tr>
|
||||
</table>
|
||||
|
||||
---
|
||||
@@ -1547,9 +1547,11 @@ Nuts for leadscrews.
|
||||
| Function | Description |
|
||||
|:--- |:--- |
|
||||
| `leadnut_bore(type)` | Thread size |
|
||||
| `leadnut_colour(type)` | The colour |
|
||||
| `leadnut_flange_dia(type)` | Flange diameter |
|
||||
| `leadnut_flange_offset(type)` | Offset of the flange from the top |
|
||||
| `leadnut_flange_t(type)` | Flange thickness |
|
||||
| `leadnut_flat(type)` | Flat section width |
|
||||
| `leadnut_height(type)` | Total height |
|
||||
| `leadnut_hole_dia(type)` | The diameter of the screw holes |
|
||||
| `leadnut_hole_pitch(type)` | The radial pitch of the screw holes |
|
||||
@@ -1577,6 +1579,7 @@ Nuts for leadscrews.
|
||||
| ---:|:--- |:---|
|
||||
| 1 | `leadnut(LSN8x2)` | Leadscrew nut 8 x 2 |
|
||||
| 1 | `leadnut(LSN8x8)` | Leadscrew nut 8 x 8 RobotDigg |
|
||||
| 1 | `leadnut(SFU1610)` | Leadscrew nut for SFU1610 |
|
||||
|
||||
|
||||
<a href="#top">Top</a>
|
||||
@@ -2474,7 +2477,7 @@ PCBs and perfboard with optional components. The shape can be a rectangle with o
|
||||
| 1 | | Micro SD card - not shown |
|
||||
| 1 | `molex_254(2)` | Molex KK header 2 way |
|
||||
| 1 | `molex_254(3)` | Molex KK header 3 way |
|
||||
| 16 | `nut(M2_nut, nyloc = true)` | Nut M2 x 1.6mm nyloc |
|
||||
| 20 | `nut(M2_nut, nyloc = true)` | Nut M2 x 1.6mm nyloc |
|
||||
| 30 | `nut(M2p5_nut, nyloc = true)` | Nut M2.5 x 2.2mm nyloc |
|
||||
| 26 | `nut(M3_nut, nyloc = true)` | Nut M3 x 2.4mm nyloc |
|
||||
| 8 | `nut(M4_nut, nyloc = true)` | Nut M4 x 3.2mm nyloc |
|
||||
@@ -2490,12 +2493,14 @@ PCBs and perfboard with optional components. The shape can be a rectangle with o
|
||||
| 1 | `pcb(RAMPSEndstop)` | RAMPS Endstop Switch |
|
||||
| 1 | `pcb(RPI3)` | Raspberry Pi 3 |
|
||||
| 1 | `pcb(RPI4)` | Raspberry Pi 4 |
|
||||
| 1 | `pcb(RPI_Pico)` | Raspberry Pi Pico |
|
||||
| 1 | `pcb(RPI0)` | Raspberry Pi Zero |
|
||||
| 8 | `screw(M2_cap_screw, 16)` | Screw M2 cap x 16mm |
|
||||
| 8 | `screw(M2_cap_screw, 20)` | Screw M2 cap x 20mm |
|
||||
| 12 | `screw(M2_cap_screw, 20)` | Screw M2 cap x 20mm |
|
||||
| 2 | `screw(M2p5_cap_screw, 16)` | Screw M2.5 cap x 16mm |
|
||||
| 8 | `screw(M2p5_cap_screw, 20)` | Screw M2.5 cap x 20mm |
|
||||
| 4 | `screw(M2p5_cap_screw, 20)` | Screw M2.5 cap x 20mm |
|
||||
| 8 | `screw(M2p5_cap_screw, 25)` | Screw M2.5 cap x 25mm |
|
||||
| 4 | `screw(M2p5_cap_screw, 30)` | Screw M2.5 cap x 30mm |
|
||||
| 4 | `screw(M2p5_pan_screw, 20)` | Screw M2.5 pan x 20mm |
|
||||
| 8 | `screw(M2p5_pan_screw, 25)` | Screw M2.5 pan x 25mm |
|
||||
| 8 | `screw(M3_cap_screw, 16)` | Screw M3 cap x 16mm |
|
||||
@@ -2508,7 +2513,7 @@ PCBs and perfboard with optional components. The shape can be a rectangle with o
|
||||
| 2 | `green_terminal(gt_2p54, 4)` | Terminal block 4 way 0.1" |
|
||||
| 1 | | USB A to Mini B lead - not shown |
|
||||
| 1 | `pcb(WD2002SJ)` | WD2002SJ Buck Boost DC-DC converter |
|
||||
| 16 | `washer(M2_washer)` | Washer M2 x 5mm x 0.3mm |
|
||||
| 20 | `washer(M2_washer)` | Washer M2 x 5mm x 0.3mm |
|
||||
| 30 | `washer(M2p5_washer)` | Washer M2.5 x 5.9mm x 0.5mm |
|
||||
| 26 | `washer(M3_washer)` | Washer M3 x 7mm x 0.5mm |
|
||||
| 8 | `washer(M4_washer)` | Washer M4 x 9mm x 0.8mm |
|
||||
@@ -2517,26 +2522,26 @@ PCBs and perfboard with optional components. The shape can be a rectangle with o
|
||||
### Printed
|
||||
| Qty | Filename |
|
||||
| ---:|:--- |
|
||||
| 4 | pcb_spacer20100.stl |
|
||||
| 8 | pcb_spacer20100.stl |
|
||||
| 4 | pcb_spacer2070.stl |
|
||||
| 4 | pcb_spacer2080.stl |
|
||||
| 4 | pcb_spacer2090.stl |
|
||||
| 4 | pcb_spacer25100.stl |
|
||||
| 4 | pcb_spacer25110.stl |
|
||||
| 4 | pcb_spacer25120_2.stl |
|
||||
| 4 | pcb_spacer25120.stl |
|
||||
| 4 | pcb_spacer25130_2.stl |
|
||||
| 4 | pcb_spacer25150.stl |
|
||||
| 4 | pcb_spacer25140_2.stl |
|
||||
| 4 | pcb_spacer25160.stl |
|
||||
| 4 | pcb_spacer25170.stl |
|
||||
| 2 | pcb_spacer2550.stl |
|
||||
| 4 | pcb_spacer2590.stl |
|
||||
| 4 | pcb_spacer30140.stl |
|
||||
| 5 | pcb_spacer30170.stl |
|
||||
| 4 | pcb_spacer30150.stl |
|
||||
| 5 | pcb_spacer30180.stl |
|
||||
| 4 | pcb_spacer30190.stl |
|
||||
| 5 | pcb_spacer30190.stl |
|
||||
| 4 | pcb_spacer30200.stl |
|
||||
| 4 | pcb_spacer3050.stl |
|
||||
| 4 | pcb_spacer3060.stl |
|
||||
| 4 | pcb_spacer40200.stl |
|
||||
| 4 | pcb_spacer40210.stl |
|
||||
| 4 | pcb_spacer40220.stl |
|
||||
|
||||
|
||||
<a href="#top">Top</a>
|
||||
@@ -2672,7 +2677,7 @@ Pin headers and sockets, etc.
|
||||
|:--- |:--- |
|
||||
| `box_header(type, cols = 1, rows = 1, smt = false, cutout = false)` | Draw box header |
|
||||
| `idc_transition(type, cols = 5, skip = [], cutout = false)` | Draw IDC transition header |
|
||||
| `jst_xh_header(type, pin_count, right_angle = false, colour = false, pin_colour = false)` | Draw JST XH connector |
|
||||
| `jst_xh_header(type, pin_count, right_angle = false, colour = false, pin_colour = false, smt = false)` | Draw JST XH connector |
|
||||
| `pin(type, length = undef)` | Draw a header pin |
|
||||
| `pin_header(type, cols = 1, rows = 1, smt = false, right_angle = false, cutout = false, colour)` | Draw pin header |
|
||||
| `pin_socket(type, cols = 1, rows = 1, right_angle = false, height = 0, smt = false, cutout = false, colour)` | Draw pin socket |
|
||||
@@ -2906,12 +2911,16 @@ Linear rails with carriages.
|
||||
### Vitamins
|
||||
| Qty | Module call | BOM entry |
|
||||
| ---:|:--- |:---|
|
||||
| 1 | `rail(HGH15CA, 200)` | Linear rail HGH15CA x 200mm |
|
||||
| 1 | `rail(HGH20CA, 200)` | Linear rail HGH20CA x 200mm |
|
||||
| 1 | `rail(MGN12, 200)` | Linear rail MGN12 x 200mm |
|
||||
| 1 | `rail(MGN15, 200)` | Linear rail MGN15 x 200mm |
|
||||
| 1 | `rail(MGN5, 200)` | Linear rail MGN5 x 200mm |
|
||||
| 1 | `rail(MGN7, 200)` | Linear rail MGN7 x 200mm |
|
||||
| 1 | `rail(MGN9, 200)` | Linear rail MGN9 x 200mm |
|
||||
| 1 | `rail(SSR15, 200)` | Linear rail SSR15 x 200mm |
|
||||
| 1 | `carriage(HGH15CA_carriage)` | Linear rail carriage HGH15CA |
|
||||
| 1 | `carriage(HGH20CA_carriage)` | Linear rail carriage HGH20CA |
|
||||
| 1 | `carriage(MGN12C_carriage)` | Linear rail carriage MGN12C |
|
||||
| 1 | `carriage(MGN12H_carriage)` | Linear rail carriage MGN12H |
|
||||
| 1 | `carriage(MGN15C_carriage)` | Linear rail carriage MGN15C |
|
||||
@@ -2923,7 +2932,8 @@ Linear rails with carriages.
|
||||
| 1 | `carriage(SSR15_carriage)` | Linear rail carriage SSR15 |
|
||||
| 26 | `nut(M2_nut, nyloc = true)` | Nut M2 x 1.6mm nyloc |
|
||||
| 23 | `nut(M3_nut, nyloc = true)` | Nut M3 x 2.4mm nyloc |
|
||||
| 4 | `nut(M4_nut, nyloc = true)` | Nut M4 x 3.2mm nyloc |
|
||||
| 7 | `nut(M4_nut, nyloc = true)` | Nut M4 x 3.2mm nyloc |
|
||||
| 3 | `nut(M5_nut, nyloc = true)` | Nut M5 x 4mm nyloc |
|
||||
| 11 | `screw(M2_cap_screw, 10)` | Screw M2 cap x 10mm |
|
||||
| 15 | `screw(M2_cs_cap_screw, 10)` | Screw M2 cs cap x 10mm |
|
||||
| 8 | `screw(M3_cap_screw, 10)` | Screw M3 cap x 10mm |
|
||||
@@ -2932,10 +2942,15 @@ Linear rails with carriages.
|
||||
| 2 | `screw(M3_cs_cap_screw, 12)` | Screw M3 cs cap x 12mm |
|
||||
| 4 | `screw(M3_cs_cap_screw, 16)` | Screw M3 cs cap x 16mm |
|
||||
| 2 | `screw(M4_cap_screw, 16)` | Screw M4 cap x 16mm |
|
||||
| 2 | `screw(M4_cap_screw, 20)` | Screw M4 cap x 20mm |
|
||||
| 2 | `screw(M4_cs_cap_screw, 20)` | Screw M4 cs cap x 20mm |
|
||||
| 2 | `screw(M4_cs_cap_screw, 25)` | Screw M4 cs cap x 25mm |
|
||||
| 2 | `screw(M5_cap_screw, 20)` | Screw M5 cap x 20mm |
|
||||
| 2 | `screw(M5_cs_cap_screw, 25)` | Screw M5 cs cap x 25mm |
|
||||
| 26 | `washer(M2_washer)` | Washer M2 x 5mm x 0.3mm |
|
||||
| 23 | `washer(M3_washer)` | Washer M3 x 7mm x 0.5mm |
|
||||
| 4 | `washer(M4_washer)` | Washer M4 x 9mm x 0.8mm |
|
||||
| 7 | `washer(M4_washer)` | Washer M4 x 9mm x 0.8mm |
|
||||
| 3 | `washer(M5_washer)` | Washer M5 x 10mm x 1mm |
|
||||
|
||||
|
||||
<a href="#top">Top</a>
|
||||
@@ -3147,6 +3162,7 @@ For an explanation of `screw_polysink()` see <https://hydraraptor.blogspot.com/2
|
||||
| 1 | `screw(M2_cs_cap_screw, 10)` | Screw M2 cs cap x 10mm |
|
||||
| 1 | `screw(M2_dome_screw, 10)` | Screw M2 dome x 10mm |
|
||||
| 1 | `screw(M2p5_cap_screw, 10)` | Screw M2.5 cap x 10mm |
|
||||
| 1 | `screw(M2p5_dome_screw, 10)` | Screw M2.5 dome x 10mm |
|
||||
| 1 | `screw(M2p5_pan_screw, 10)` | Screw M2.5 pan x 10mm |
|
||||
| 1 | `screw(M3_cap_screw, 10)` | Screw M3 cap x 10mm |
|
||||
| 1 | `screw(M3_cs_cap_screw, 10)` | Screw M3 cs cap x 10mm |
|
||||
@@ -3158,19 +3174,22 @@ For an explanation of `screw_polysink()` see <https://hydraraptor.blogspot.com/2
|
||||
| 1 | `screw(M4_cap_screw, 25)` | Screw M4 cap x 25mm |
|
||||
| 1 | `screw(M4_cs_cap_screw, 25)` | Screw M4 cs cap x 25mm |
|
||||
| 1 | `screw(M4_dome_screw, 25)` | Screw M4 dome x 25mm |
|
||||
| 1 | `screw(M4_grub_screw, 6)` | Screw M4 grub x 6mm |
|
||||
| 1 | `screw(M4_grub_screw, 8)` | Screw M4 grub x 8mm |
|
||||
| 1 | `screw(M4_hex_screw, 30)` | Screw M4 hex x 30mm |
|
||||
| 1 | `screw(M4_pan_screw, 30)` | Screw M4 pan x 30mm |
|
||||
| 1 | `screw(M5_cap_screw, 30)` | Screw M5 cap x 30mm |
|
||||
| 1 | `screw(M5_cs_cap_screw, 30)` | Screw M5 cs cap x 30mm |
|
||||
| 1 | `screw(M5_dome_screw, 30)` | Screw M5 dome x 30mm |
|
||||
| 1 | `screw(M5_grub_screw, 10)` | Screw M5 grub x 10mm |
|
||||
| 1 | `screw(M5_hex_screw, 30)` | Screw M5 hex x 30mm |
|
||||
| 1 | `screw(M5_pan_screw, 30)` | Screw M5 pan x 30mm |
|
||||
| 1 | `screw(M6_cap_screw, 30)` | Screw M6 cap x 30mm |
|
||||
| 1 | `screw(M6_cs_cap_screw, 30)` | Screw M6 cs cap x 30mm |
|
||||
| 1 | `screw(M6_grub_screw, 12)` | Screw M6 grub x 12mm |
|
||||
| 1 | `screw(M6_hex_screw, 30)` | Screw M6 hex x 30mm |
|
||||
| 1 | `screw(M6_pan_screw, 30)` | Screw M6 pan x 30mm |
|
||||
| 1 | `screw(M8_cap_screw, 35)` | Screw M8 cap x 35mm |
|
||||
| 1 | `screw(M8_cs_cap_screw, 35)` | Screw M8 cs cap x 35mm |
|
||||
| 1 | `screw(M8_hex_screw, 30)` | Screw M8 hex x 30mm |
|
||||
| 1 | `screw(No2_screw, 10)` | Screw No2 pan wood x 10mm |
|
||||
| 1 | `screw(No4_screw, 10)` | Screw No4 pan wood x 10mm |
|
||||
@@ -3208,6 +3227,61 @@ Sealing strip from B&Q used to seal around the door of 3D printers.
|
||||
| 1 | `sealing_strip(100)` | Sealing strip 10mm x 4mm x 100mm |
|
||||
|
||||
|
||||
<a href="#top">Top</a>
|
||||
|
||||
---
|
||||
<a name="Servo_motors"></a>
|
||||
## Servo_motors
|
||||
BLDC servos for CNC machines
|
||||
|
||||
[vitamins/servo_motors.scad](vitamins/servo_motors.scad) Object definitions.
|
||||
|
||||
[vitamins/servo_motor.scad](vitamins/servo_motor.scad) Implementation.
|
||||
|
||||
[tests/servo_motors.scad](tests/servo_motors.scad) Code for this example.
|
||||
|
||||
### Properties
|
||||
| Function | Description |
|
||||
|:--- |:--- |
|
||||
| `faceplate_boss_size(type)` | Centre boss outer d, inner d and height |
|
||||
| `faceplate_hole_dia(type)` | Screw hole size |
|
||||
| `faceplate_hole_pitch(type)` | Screw hole pitch |
|
||||
| `faceplate_thickness(type)` | Thickness of the faceplate |
|
||||
| `faceplate_width(type)` | Width of faceplate |
|
||||
| `servo_motor_cap(type)` | Diameter height and corner radius of encoder cover |
|
||||
| `servo_motor_faceplate(type)` | Face plate type |
|
||||
| `servo_motor_length(type)` | Total length from the faceplate |
|
||||
| `servo_motor_shaft(type)` | Shaft type |
|
||||
| `shaft_diameter(type)` | Shaft diameter |
|
||||
| `shaft_key_size(type)` | None |
|
||||
| `shaft_length(type)` | Shaft length |
|
||||
| `shaft_type(type)` | String to indicate the shaft type |
|
||||
|
||||
### Functions
|
||||
| Function | Description |
|
||||
|:--- |:--- |
|
||||
| `servo_motor_width(type)` | Width of the motor body |
|
||||
|
||||
### Modules
|
||||
| Module | Description |
|
||||
|:--- |:--- |
|
||||
| `faceplate_screw_positions(type)` | Position children at faceplate screw positions |
|
||||
| `motor_faceplate(type)` | Draw specified motor faceplate |
|
||||
| `motor_shaft(type)` | Draw the specified motor shaft |
|
||||
| `servo_motor(type)` | Draw the specified servo |
|
||||
| `servo_screw_positions(type)` | Position children at screw positions |
|
||||
|
||||

|
||||
|
||||
### Vitamins
|
||||
| Qty | Module call | BOM entry |
|
||||
| ---:|:--- |:---|
|
||||
| 1 | `servo_motor(Lichuan_M01330_80ST) ` | Servo Lichuan LCMT07L02NB-80M01330B 80ST mount 80 x 123mm |
|
||||
| 1 | `servo_motor(Lichuan_M02430_80ST) ` | Servo Lichuan LCMT07L02NB-80M02430B 80ST mount 80 x 150mm |
|
||||
| 1 | `servo_motor(Lichuan_M03530_80ST) ` | Servo Lichuan LCMT07L02NB-80M03530B 80ST mount 80 x 178mm |
|
||||
| 1 | `servo_motor(Lichuan_M04030_80ST) ` | Servo Lichuan LCMT07L02NB-80M04030B 80ST mount 80 x 190mm |
|
||||
|
||||
|
||||
<a href="#top">Top</a>
|
||||
|
||||
---
|
||||
@@ -3298,6 +3372,9 @@ When woven sheets (e.g. carbon fibre) are rendered it is necessary to specify th
|
||||
| Qty | Module call | BOM entry |
|
||||
| ---:|:--- |:---|
|
||||
| 1 | `sheet(FoilTape, 30, 30, 2)` | Aluminium foil tape 30mm x 30mm x 0.05mm |
|
||||
| 1 | `sheet(AL1_6, 30, 30, 2)` | Aluminium tooling plate 30mm x 30mm x 1.6mm |
|
||||
| 1 | `sheet(AL2, 30, 30, 2)` | Aluminium tooling plate 30mm x 30mm x 2mm |
|
||||
| 1 | `sheet(AL3, 30, 30, 2)` | Aluminium tooling plate 30mm x 30mm x 3mm |
|
||||
| 1 | `sheet(AL6, 30, 30, 2)` | Aluminium tooling plate 30mm x 30mm x 6mm |
|
||||
| 1 | `sheet(AL8, 30, 30, 2)` | Aluminium tooling plate 30mm x 30mm x 8mm |
|
||||
| 1 | `sheet(Spring05, 30, 30, 2)` | Bi-metal saw blade 30mm x 30mm x 0.5mm |
|
||||
@@ -3614,15 +3691,20 @@ NEMA stepper motor model.
|
||||
### Properties
|
||||
| Function | Description |
|
||||
|:--- |:--- |
|
||||
| `NEMA_black_caps(type)` | End caps are black |
|
||||
| `NEMA_body_radius(type)` | Body radius |
|
||||
| `NEMA_boss_height(type)` | Boss height |
|
||||
| `NEMA_boss_radius(type)` | Boss around the spindle radius |
|
||||
| `NEMA_cap_heights(type)` | Height of the end cap at the corner and the side |
|
||||
| `NEMA_end_connector(type)` | If has a connector then plug goes in the end rather than the side |
|
||||
| `NEMA_hole_pitch(type)` | Screw hole pitch |
|
||||
| `NEMA_length(type)` | Body length |
|
||||
| `NEMA_radius(type)` | End cap radius |
|
||||
| `NEMA_shaft_bore(type)` | Hollow shaft in non-zero |
|
||||
| `NEMA_shaft_dia(type)` | Shaft diameter |
|
||||
| `NEMA_shaft_length(type)` | Shaft length above the face, if a list then a leadscrew: length, lead, starts |
|
||||
| `NEMA_shaft_length2(type)` | Rear shaft length if non-zero |
|
||||
| `NEMA_thread_d(type)` | Screw hole diameter |
|
||||
| `NEMA_width(type)` | Width of the square face |
|
||||
|
||||
### Functions
|
||||
@@ -3653,6 +3735,8 @@ NEMA stepper motor model.
|
||||
| 1 | `NEMA(NEMA17M)` | Stepper motor NEMA17 x 40mm |
|
||||
| 1 | `NEMA(NEMA17)` | Stepper motor NEMA17 x 47mm |
|
||||
| 1 | `NEMA(NEMA23)` | Stepper motor NEMA22 x 51.2mm |
|
||||
| 1 | `NEMA(NEMA8)` | Stepper motor NEMA8 x 30mm |
|
||||
| 1 | `NEMA(NEMA8BH)` | Stepper motor NEMA8 x 30mm |
|
||||
| 16 | `washer(M3_washer)` | Washer M3 x 7mm x 0.5mm |
|
||||
| 20 | `star_washer(M3_washer)` | Washer star M3 x 0.5mm |
|
||||
|
||||
|
@@ -22,18 +22,20 @@ include <../vitamins/extrusions.scad>
|
||||
|
||||
use <../utils/layout.scad>
|
||||
|
||||
module sk_brackets() {
|
||||
module sk_brackets(examples = false) {
|
||||
screws = [M4_dome_screw, M4_cap_screw, M5_cap_screw, M5_cap_screw];
|
||||
nuts = [M4_hammer_nut, M4_sliding_t_nut, M5_sliding_t_nut, undef];
|
||||
// channel depth = 6 for 2020 extrusion, 9 for 3030 extrusion
|
||||
depths = [6, 6, 9, 0];
|
||||
layout([for(s = sk_brackets) 1.5 * sk_size(s)[1]]) {
|
||||
sk_bracket_assembly(sk_brackets[$i], screw_type = screws[$i], nut_type = nuts[$i], max_screw_depth = depths[$i]);
|
||||
translate([0, -sk_hole_offset(sk_brackets[$i]) - extrusion_width($i < 2 ? E2020 : E3030) / 2, 0])
|
||||
rotate([0, 90, 0])
|
||||
extrusion($i < 2 ? E2020 : E3030, 20, false);
|
||||
|
||||
if(examples)
|
||||
translate([0, -sk_hole_offset(sk_brackets[$i]) - extrusion_width($i < 2 ? E2020 : E3030) / 2, 0])
|
||||
rotate([0, 90, 0])
|
||||
extrusion($i < 2 ? E2020 : E3030, 20, false);
|
||||
}
|
||||
}
|
||||
|
||||
if($preview)
|
||||
sk_brackets();
|
||||
sk_brackets(true);
|
||||
|
@@ -24,7 +24,8 @@ use <../vitamins/pcb.scad>
|
||||
|
||||
module displays()
|
||||
layout([for(d = displays) pcb_length(display_pcb(d))], 10)
|
||||
display(displays[$i]);
|
||||
vflip()
|
||||
display(displays[$i]);
|
||||
|
||||
if($preview)
|
||||
displays();
|
||||
|
@@ -64,8 +64,9 @@ module pin_headers() {
|
||||
pin_socket(pin_headers[$i], 3, 3, right_angle = true);
|
||||
}
|
||||
|
||||
for(i = [0, 1], p = [5, 2][i], j = [0 , 1]) {
|
||||
h = [jst_ph_header, jst_xh_header][j];
|
||||
headers = [jst_zh_header, jst_ph_header, jst_xh_header];
|
||||
for(i = [0, 1], p = [5, 2][i], j = [0 : len(headers) - 1]) {
|
||||
h = headers[j];
|
||||
translate([-20 * (i + 1), 0 + j * 40])
|
||||
jst_xh_header(h, p);
|
||||
|
||||
|
Before Width: | Height: | Size: 125 KiB After Width: | Height: | Size: 126 KiB |
Before Width: | Height: | Size: 77 KiB After Width: | Height: | Size: 76 KiB |
Before Width: | Height: | Size: 34 KiB After Width: | Height: | Size: 77 KiB |
Before Width: | Height: | Size: 165 KiB After Width: | Height: | Size: 165 KiB |
Before Width: | Height: | Size: 166 KiB After Width: | Height: | Size: 146 KiB |
Before Width: | Height: | Size: 116 KiB After Width: | Height: | Size: 116 KiB |
Before Width: | Height: | Size: 152 KiB After Width: | Height: | Size: 165 KiB |
Before Width: | Height: | Size: 160 KiB After Width: | Height: | Size: 176 KiB |
BIN
tests/png/servo_motors.png
Normal file
After Width: | Height: | Size: 47 KiB |
Before Width: | Height: | Size: 73 KiB After Width: | Height: | Size: 73 KiB |
Before Width: | Height: | Size: 107 KiB After Width: | Height: | Size: 103 KiB |
@@ -29,7 +29,7 @@ pos = 1; //[-1 : 0.1 : 1]
|
||||
function rail_carriages(rail) = [for(c = carriages) if(carriage_rail(c) == rail) c];
|
||||
|
||||
module rails()
|
||||
layout([for(r = rails) carriage_width(rail_carriages(r)[0])], 20)
|
||||
layout([for(r = rails) carriage_width(rail_carriages(r)[0])], 10)
|
||||
rotate(-90) {
|
||||
rail = rails[$i];
|
||||
carriages = rail_carriages(rail);
|
||||
|
@@ -48,7 +48,7 @@ module screws() {
|
||||
for(x = [0 : len(screw_lists[y]) -1]) {
|
||||
screw = screw_lists[y][x];
|
||||
if(screw) {
|
||||
length = screw_head_type(screw) == hs_grub ? 6
|
||||
length = screw_head_type(screw) == hs_grub ? screw_radius(screw) * 4
|
||||
: screw_radius(screw) <= 1.5 ? 10
|
||||
: screw_max_thread(screw) ? screw_longer_than(screw_max_thread(screw) + 5)
|
||||
: 30;
|
||||
|
31
tests/servo_motors.scad
Normal file
@@ -0,0 +1,31 @@
|
||||
//
|
||||
// NopSCADlib Copyright Chris Palmer 2021
|
||||
// nop.head@gmail.com
|
||||
// hydraraptor.blogspot.com
|
||||
//
|
||||
// This file is part of NopSCADlib.
|
||||
//
|
||||
// NopSCADlib is free software: you can redistribute it and/or modify it under the terms of the
|
||||
// GNU General Public License as published by the Free Software Foundation, either version 3 of
|
||||
// the License, or (at your option) any later version.
|
||||
//
|
||||
// NopSCADlib is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
|
||||
// without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
||||
// See the GNU General Public License for more details.
|
||||
//
|
||||
// You should have received a copy of the GNU General Public License along with NopSCADlib.
|
||||
// If not, see <https://www.gnu.org/licenses/>.
|
||||
//
|
||||
include <../core.scad>
|
||||
use <../utils/layout.scad>
|
||||
|
||||
include <../vitamins/servo_motors.scad>
|
||||
|
||||
module servo_motors()
|
||||
layout([for(s = servo_motors) servo_motor_width(s)], 10) let(s = servo_motors[$i]) {
|
||||
rotate(-90) // Show the keyway
|
||||
servo_motor(s);
|
||||
}
|
||||
|
||||
if($preview)
|
||||
servo_motors();
|
@@ -22,12 +22,12 @@ include <../vitamins/stepper_motors.scad>
|
||||
use <../utils/layout.scad>
|
||||
|
||||
module stepper_motors()
|
||||
layout([for(s = stepper_motors) NEMA_width(s)], 5, no_offset = true) let(m = stepper_motors[$i]) {
|
||||
layout([for(s = stepper_motors) NEMA_width(s)], 5, no_offset = false) let(m = stepper_motors[$i]) {
|
||||
rotate(180)
|
||||
NEMA(m, 0, m == NEMA17P || m == NEMA17M || m == NEMA17M8);
|
||||
NEMA(m, 0, in([NEMA17P, NEMA17M, NEMA17M8, NEMA8, NEMA8BH], m));
|
||||
|
||||
translate_z(4)
|
||||
NEMA_screws(m, M3_pan_screw, n = $i, earth = $i > 4 ? undef : $i - 1);
|
||||
NEMA_screws(m, M3_pan_screw, n = $i - 2, earth = $i > 6 ? undef : $i - 3);
|
||||
}
|
||||
|
||||
if($preview)
|
||||
|
@@ -25,7 +25,9 @@ include <../utils/core/core.scad>
|
||||
module ring(or, ir) //! Create a ring with specified external and internal radii
|
||||
difference() {
|
||||
circle4n(or);
|
||||
circle4n(ir);
|
||||
|
||||
if(ir > 0)
|
||||
circle4n(ir);
|
||||
}
|
||||
|
||||
module tube(or, ir, h, center = true) //! Create a tube with specified external and internal radii and height `h`
|
||||
|
@@ -226,19 +226,21 @@ module BLDC(type) { //! Draw specified BLDC motor
|
||||
translate_z(height)
|
||||
tube(or = BLDC_boss_diameter(type)/2, ir = BLDC_shaft_diameter(type)/2, h = BLDC_boss_height(type), center = false);
|
||||
|
||||
} // end colour
|
||||
|
||||
color(BLDC_prop_shaft_thread_length(type) == 0 ? bldc_shaft_colour : body_colour)
|
||||
if (BLDC_prop_shaft_diameter(type))
|
||||
translate_z(height + BLDC_boss_height(type)) {
|
||||
thread_diameter = BLDC_prop_shaft_thread_diameter(type);
|
||||
unthreaded_length = BLDC_prop_shaft_length(type) - BLDC_prop_shaft_thread_length(type);
|
||||
cylinder(d=BLDC_prop_shaft_diameter(type), h = unthreaded_length);
|
||||
translate_z(unthreaded_length)
|
||||
if (show_threads)
|
||||
male_metric_thread(thread_diameter, metric_coarse_pitch(thread_diameter), BLDC_prop_shaft_thread_length(type), center = false);
|
||||
else
|
||||
cylinder(d = thread_diameter, h = BLDC_prop_shaft_thread_length(type));
|
||||
if (BLDC_prop_shaft_thread_length(type) > 0)
|
||||
translate_z(unthreaded_length)
|
||||
if (show_threads)
|
||||
male_metric_thread(thread_diameter, metric_coarse_pitch(thread_diameter), BLDC_prop_shaft_thread_length(type), center = false);
|
||||
else
|
||||
cylinder(d = thread_diameter, h = BLDC_prop_shaft_thread_length(type));
|
||||
}
|
||||
} // end colour
|
||||
|
||||
color(side_colour)
|
||||
translate_z(height - h2 - h1 -side_length)
|
||||
tube(body_diameter/2, body_diameter/2 - wall_thickness, side_length, center = false);
|
||||
|
@@ -36,12 +36,17 @@ function leadnut_hole_pitch(type) = type[10]; //! The radial pitch of the
|
||||
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
|
||||
function leadnut_flat(type) = type[14]; //! Flat section width
|
||||
function leadnut_colour(type) = type[15]; //! The colour
|
||||
|
||||
function leadnut_shank(type) = leadnut_height(type) - leadnut_flange_t(type) - leadnut_flange_offset(type); //! The length of the shank below the flange
|
||||
|
||||
module leadnut_screw_positions(type) { //! Position children at the screw holes
|
||||
holes = leadnut_holes(type);
|
||||
for(i = [0 : holes - 1], a = i * 360 / holes + 180)
|
||||
flat = leadnut_flat(type);
|
||||
angles = flat ? [let(h = holes / 2, a = 90 / (h - 1)) for(i = [0 : h - 1], side = [-1, 1]) side * (45 + i * a)]
|
||||
: [for(i = [0 : holes - 1]) i * 360 / holes + 180];
|
||||
for(a = angles)
|
||||
rotate(a)
|
||||
translate([leadnut_hole_pitch(type), 0, leadnut_flange_t(type)])
|
||||
rotate(45)
|
||||
@@ -55,8 +60,10 @@ module leadnut(type) { //! Draw specified leadnut
|
||||
h = leadnut_height(type);
|
||||
pitch = leadnut_pitch(type);
|
||||
lead = leadnut_lead(type);
|
||||
flat = leadnut_flat(type);
|
||||
flange_d = leadnut_flange_dia(type);
|
||||
|
||||
color("dimgrey") vflip()
|
||||
color(leadnut_colour(type)) vflip()
|
||||
translate_z(-leadnut_flange_offset(type) - leadnut_flange_t(type)) {
|
||||
tube(or = leadnut_od(type) / 2, ir = bore_r, h = h, center = false);
|
||||
|
||||
@@ -66,12 +73,17 @@ module leadnut(type) { //! Draw specified leadnut
|
||||
translate_z(leadnut_flange_offset(type))
|
||||
linear_extrude(leadnut_flange_t(type))
|
||||
difference() {
|
||||
circle(d = leadnut_flange_dia(type));
|
||||
circle(d = flange_d);
|
||||
|
||||
circle(bore_r);
|
||||
|
||||
leadnut_screw_positions(type)
|
||||
circle(d = leadnut_hole_dia(type));
|
||||
|
||||
if(flat)
|
||||
for(side = [-1, 1])
|
||||
translate([side * flange_d / 2, 0])
|
||||
square([flange_d - flat, flange_d], center = true);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@@ -16,10 +16,18 @@
|
||||
// You should have received a copy of the GNU General Public License along with NopSCADlib.
|
||||
// If not, see <https://www.gnu.org/licenses/>.
|
||||
//
|
||||
// b s h f f f h h h s p l f c
|
||||
// o h e l l l o o o c i e l o
|
||||
// r a i a a a l l l r t a a l
|
||||
// e n g n n n e e e e c d t o
|
||||
// k h g g g s w h u
|
||||
// t e e e d p r
|
||||
//
|
||||
// d t o
|
||||
LSN8x2 = ["LSN8x2", "Leadscrew nut 8 x 2", 8, 10.2, 15, 22, 3.5, 1.5, 4, 3.5, 8, M3_cap_screw, 2, 2, 0, "dimgrey"];
|
||||
LSN8x8 = ["LSN8x8", "Leadscrew nut 8 x 8 RobotDigg", 8, 12.75,19, 25.4, 4.1, 0, 3, 3.5, 19.05/2, M3_cap_screw, 2, 8, 0, "dimgrey"];
|
||||
SFU1610 = ["SFU1610", "Leadscrew nut for SFU1610", 16, 28, 42.5, 48, 10, 0, 6, 6, 38/2, M6_cap_screw, 5, 10, 40, "#DFDAC5"];
|
||||
|
||||
LSN8x2 = ["LSN8x2", "Leadscrew nut 8 x 2", 8, 10.2, 15, 22, 3.5, 1.5, 4, 3.5, 8, M3_cap_screw, 2, 2];
|
||||
LSN8x8 = ["LSN8x8", "Leadscrew nut 8 x 8 RobotDigg",8, 12.75,19, 25.4, 4.1, 0, 3, 3.5, 19.05/2, M3_cap_screw, 2, 8];
|
||||
|
||||
leadnuts = [LSN8x2, LSN8x8];
|
||||
leadnuts = [LSN8x2, LSN8x8, SFU1610];
|
||||
|
||||
use <leadnut.scad>
|
||||
|
@@ -60,8 +60,10 @@ function pcb_component(type, name, index = 0) = //! Return the component specifi
|
||||
|
||||
|
||||
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,
|
||||
-pcb_width(type) / 2 + pcb_grid(type).y + 2.54 * y, pcb_thickness(type) + z];
|
||||
let(grid = pcb_grid(type))
|
||||
[-pcb_size(type).x / 2 + grid.x + x * (is_undef(grid[5]) ? 2.54 : grid[5]),
|
||||
-pcb_size(type).y / 2 + grid.y + y * (is_undef(grid[6]) ? 2.54 : grid[6]),
|
||||
pcb_size(type).z + z];
|
||||
|
||||
module pcb_grid(type, x, y, z = 0) //! Positions children at specified grid position
|
||||
translate(pcb_grid_pos(type, x, y, z))
|
||||
@@ -1136,7 +1138,8 @@ module pcb(type) { //! Draw specified PCB
|
||||
|
||||
fr4 = pcb_colour(type) != "sienna";
|
||||
pcb_colour = pcb_colour(type);
|
||||
color(pcb_colour == "green" ? silver : pcb_colour == "sienna" ? copper : gold)
|
||||
plating_colour = is_undef(grid[4]) ? ((pcb_colour == "green" || pcb_colour == "#2140BE") ? silver : pcb_colour == "sienna" ? copper : gold) : grid[4];
|
||||
color(plating_colour)
|
||||
translate_z(-plating)
|
||||
linear_extrude(fr4 ? t + 2 * plating : plating)
|
||||
if(Len(grid)) {
|
||||
|
@@ -555,6 +555,28 @@ RPI0 = ["RPI0", "Raspberry Pi Zero", 65, 30, 1.4, 3, 2.75, 6, "gre
|
||||
[": Micro SD card"],
|
||||
[32.5 - 9.5 * 2.54, 26.5 - 1.27, 20, 2]];
|
||||
|
||||
RPI_Pico = [
|
||||
"RPI_Pico", "Raspberry Pi Pico",
|
||||
51, 21, 1.6, // size
|
||||
0.5, // corner radius
|
||||
2.1, // mounting hole diameter
|
||||
0, // pad around mounting hole, pad is actually 3.8, but unplated
|
||||
"green", // colour
|
||||
false, // true if parts should be separate BOM items
|
||||
[ // hole positions
|
||||
[-2, 4.8], [-2, -4.8], [2, -4.8], [2, 4.8]
|
||||
],
|
||||
[ // components
|
||||
[ 1.75, 21/2, 180, "usb_uA" ],
|
||||
[ 25, 21/2, 0, "chip", 7, 7, 0.8],
|
||||
// mock up the reset button
|
||||
[ 12.75, 7.5, 0, "block", 4.5, 3.35, 2, "DarkGray"],
|
||||
[ 12.75, 7.5, 0, "block", 3, 2.25, 2.75, "LightGray"],
|
||||
],
|
||||
[], // accessories
|
||||
[1.37, 1.61, 20, 2, gold, 2.54, 17.78], // 20x2 grid of holes
|
||||
];
|
||||
|
||||
EnviroPlus = ["EnviroPlus", "Enviro+", 65, 30.6, 1.6, 3, 2.75, 6, "white", false, [[3.5, 3.8], [-3.5, 3.8], [-3.5, -3.8], [3.5, -3.8]],
|
||||
[[32.5, -3.8, 0, "-2p54socket", 20, 2, false, 5, true],
|
||||
[-15.5, 2.5, 0, "-chip", 15, 5, 3, "white"],
|
||||
@@ -798,7 +820,7 @@ LIPO_fuel_gauge = [
|
||||
|
||||
tiny_pcbs = [XIAO, MP1584EN, TP4056, ESP_01, LIPO_fuel_gauge];
|
||||
|
||||
pcbs = [RAMPSEndstop, MT3608, PI_IO, ExtruderPCB, ZC_A0591, RPI0, EnviroPlus, ArduinoUno3, ArduinoLeonardo, WD2002SJ, RPI3, RPI4, BTT_SKR_MINI_E3_V2_0, BTT_SKR_E3_TURBO, BTT_SKR_V1_4_TURBO, DuetE, Duex5];
|
||||
pcbs = [RAMPSEndstop, MT3608, PI_IO, ExtruderPCB, ZC_A0591, RPI_Pico, RPI0, EnviroPlus, ArduinoUno3, ArduinoLeonardo, WD2002SJ, RPI3, RPI4, BTT_SKR_MINI_E3_V2_0, BTT_SKR_E3_TURBO, BTT_SKR_V1_4_TURBO, DuetE, Duex5];
|
||||
|
||||
pcbs_not_shown = [Melzi, Duex2, PSU12V1A, Keyes5p1];
|
||||
|
||||
|
@@ -229,7 +229,7 @@ module pin_socket(type, cols = 1, rows = 1, right_angle = false, height = 0, smt
|
||||
}
|
||||
}
|
||||
|
||||
module jst_xh_header(type, pin_count, right_angle = false, colour = false, pin_colour = false) { //! Draw JST XH connector
|
||||
module jst_xh_header(type, pin_count, right_angle = false, colour = false, pin_colour = false, smt = false) { //! Draw JST XH connector
|
||||
colour = colour ? colour : hdr_base_colour(type);
|
||||
pin_colour = pin_colour ? pin_colour : hdr_pin_colour(type);
|
||||
pitch = hdr_pitch(type);
|
||||
@@ -306,10 +306,12 @@ module jst_xh_header(type, pin_count, right_angle = false, colour = false, pin_c
|
||||
|
||||
color(pin_colour)
|
||||
for(x = [0 : pin_count - 1]) {
|
||||
below = !smt ? 0 : hdr_pin_below(type);
|
||||
verticalPinLength = right_angle ? hdr_pin_below(type) + ra_z + y_offset : hdr_pin_length(type);
|
||||
horizontalPinLength = hdr_pin_length(type) - hdr_pin_below(type) + ra_box_offset;
|
||||
translate([pitch * (x - (pin_count - 1) / 2), 0]) {
|
||||
pin(type, verticalPinLength);
|
||||
translate_z(below)
|
||||
pin(type, verticalPinLength - below);
|
||||
|
||||
if(right_angle) {
|
||||
translate([0, -pinWidth / 2, ra_z - pinWidth / 2 + y_offset])
|
||||
|
@@ -29,6 +29,7 @@
|
||||
|
||||
jst_xh_header = ["jst_xh_header",2.5, 10, 3.4, 0.64, gold, grey(90), 0, [4.9, 5.75, 7], 0.8, 0.525, 0.6, 6.1];
|
||||
jst_ph_header = ["jst_ph_header",2.0, 9, 3.4, 0.64, silver, grey(90), 0, [3.9, 4.5, 6], 0.6, 0.55, 0.25, 4.8];
|
||||
jst_zh_header = ["jst_zh_header",1.5, 7.4, 3.4, 0.5 , silver, grey(90), 0, [3.0, 3.5,4.5], 0.5, 0.45, 0.25, 3.7];
|
||||
|
||||
pin_headers = [ 2p54header ];
|
||||
|
||||
|
@@ -16,33 +16,41 @@
|
||||
// You should have received a copy of the GNU General Public License along with NopSCADlib.
|
||||
// If not, see <https://www.gnu.org/licenses/>.
|
||||
//
|
||||
include <../core.scad>
|
||||
|
||||
//
|
||||
// Rails
|
||||
//
|
||||
// Wr Hr Emin P D d h go gw
|
||||
MGN5 = [ "MGN5", 5, 3.6, 5, 15, 3.6, 2.4, 0.8, M2_cs_cap_screw, M2_cs_cap_screw, 1, 1 ]; // Screw holes too small for M2 heads
|
||||
MGN7 = [ "MGN7", 7, 5, 5, 15, 4.3, 2.4, 2.6, M2_cap_screw, M2_cs_cap_screw, 1.5, 1.5 ];
|
||||
MGN9 = [ "MGN9", 9, 6, 5, 20, 6.0, 3.5, 3.5, M3_cap_screw, M3_cs_cap_screw, 1.5, 1.5 ];
|
||||
MGN12 =[ "MGN12", 12, 8, 7.5, 25, 6.0, 3.5, 4.5, M3_cap_screw, M3_cs_cap_screw, 2.25, 2.75];
|
||||
MGN15 =[ "MGN15", 15, 10, 10, 40, 6.0, 3.5, 5.0, M3_cap_screw, M3_cs_cap_screw, 2.5, 2.75 ];
|
||||
SSR15= [ "SSR15", 15, 12.5, 10, 60, 7.5, 4.5, 5.3, M4_cap_screw, M4_cs_cap_screw, 2.5, 2.75 ];
|
||||
// Wr Hr Emin P D d h go gw
|
||||
MGN5 = [ "MGN5", 5, 3.6, 5, 15, 3.6, 2.4, 0.8, M2_cs_cap_screw, M2_cs_cap_screw, 1, 1 ]; // Screw holes too small for M2 heads
|
||||
MGN7 = [ "MGN7", 7, 5, 5, 15, 4.3, 2.4, 2.6, M2_cap_screw, M2_cs_cap_screw, 1.5, 1.5 ];
|
||||
MGN9 = [ "MGN9", 9, 6, 5, 20, 6.0, 3.5, 3.5, M3_cap_screw, M3_cs_cap_screw, 1.5, 1.5 ];
|
||||
MGN12 = [ "MGN12", 12, 8, 7.5, 25, 6.0, 3.5, 4.5, M3_cap_screw, M3_cs_cap_screw, 2.25, 2.75 ];
|
||||
MGN15 = [ "MGN15", 15, 10, 10, 40, 6.0, 3.5, 5.0, M3_cap_screw, M3_cs_cap_screw, 2.5, 2.75 ];
|
||||
SSR15 = [ "SSR15", 15, 12.5, 10, 60, 7.5, 4.5, 5.3, M4_cap_screw, M4_cs_cap_screw, 2.5, 2.75 ];
|
||||
HGH15CA= [ "HGH15CA", 15, 15, 20, 60, 7.5, 4.5, 5.3, M4_cap_screw, M4_cs_cap_screw, 2.5, 2.75 ];
|
||||
HGH20CA= [ "HGH20CA", 20, 17.5, 20, 60, 9.5, 6.0, 8.5, M5_cap_screw, M5_cs_cap_screw, 2.5, 2.75 ];
|
||||
//
|
||||
// Carriages
|
||||
//
|
||||
// L L1 W H H1 C B
|
||||
MGN5C_carriage = ["MGN5C", 16, 9.6, 12, 6, 1.5, 0, 8, M2_cap_screw, MGN5 ];
|
||||
MGN7C_carriage = ["MGN7C", 23, 14.3, 17, 8, 1.5, 8, 12, M2_cap_screw, MGN7 ];
|
||||
MGN7H_carriage = ["MGN7H", 30.8, 21.8, 17, 8, 1.5,13, 12, M2_cap_screw, MGN7 ];
|
||||
MGN9C_carriage = ["MGN9C", 29.7, 20.8, 20, 10, 2, 10, 15, M3_cap_screw, MGN9 ];
|
||||
MGN9H_carriage = ["MGN9H", 39.9, 29.9, 20, 10, 2, 16, 15, M3_cap_screw, MGN9 ];
|
||||
MGN12C_carriage = ["MGN12C", 34.7, 21.7, 27, 13, 3, 15, 20, M3_cap_screw, MGN12 ];
|
||||
MGN12H_carriage = ["MGN12H", 45.4, 32.4, 27, 13, 3, 20, 20, M3_cap_screw, MGN12 ];
|
||||
MGN15C_carriage = ["MGN15C", 43.3, 27.7, 32, 16, 4, 20, 25, M3_cap_screw, MGN15 ];
|
||||
SSR15_carriage = ["SSR15", 40.3, 23.3, 34, 24, 4.5, 0, 26, M4_cap_screw, SSR15 ];
|
||||
// L L1 W H H1 C B
|
||||
MGN5C_carriage = [ "MGN5C", 16, 9.6, 12, 6, 1.5, 0, 8, M2_cap_screw, MGN5 ];
|
||||
MGN7C_carriage = [ "MGN7C", 23, 14.3, 17, 8, 1.5, 8, 12, M2_cap_screw, MGN7 ];
|
||||
MGN7H_carriage = [ "MGN7H", 30.8, 21.8, 17, 8, 1.5, 13, 12, M2_cap_screw, MGN7 ];
|
||||
MGN9C_carriage = [ "MGN9C", 29.7, 20.8, 20, 10, 2, 10, 15, M3_cap_screw, MGN9 ];
|
||||
MGN9H_carriage = [ "MGN9H", 39.9, 29.9, 20, 10, 2, 16, 15, M3_cap_screw, MGN9 ];
|
||||
MGN12C_carriage = [ "MGN12C", 34.7, 21.7, 27, 13, 3, 15, 20, M3_cap_screw, MGN12 ];
|
||||
MGN12H_carriage = [ "MGN12H", 45.4, 32.4, 27, 13, 3, 20, 20, M3_cap_screw, MGN12 ];
|
||||
MGN15C_carriage = [ "MGN15C", 43.3, 27.7, 32, 16, 4, 20, 25, M3_cap_screw, MGN15 ];
|
||||
HGH15CA_carriage= [ "HGH15CA", 61.4, 39.4, 34, 28, 4, 26, 26, M4_cap_screw, HGH15CA ];
|
||||
HGH20CA_carriage= [ "HGH20CA", 77.5, 50.5, 44, 30, 4.6, 35, 32, M5_cap_screw, HGH20CA ];
|
||||
SSR15_carriage = [ "SSR15", 40.3, 23.3, 34, 24, 4.5, 0, 26, M4_cap_screw, SSR15 ];
|
||||
|
||||
rails = [MGN5, MGN7, MGN9, MGN12, MGN15, SSR15];
|
||||
rails = [MGN5, MGN7, MGN9, MGN12, MGN15, SSR15, HGH15CA, HGH20CA];
|
||||
|
||||
carriages = [MGN5C_carriage, MGN7C_carriage, MGN7H_carriage, MGN9C_carriage, MGN9H_carriage, MGN12C_carriage, MGN12H_carriage, MGN12H_carriage, MGN15C_carriage, SSR15_carriage];
|
||||
carriages = [MGN5C_carriage, MGN7C_carriage, MGN7H_carriage, MGN9C_carriage, MGN9H_carriage,
|
||||
MGN12C_carriage, MGN12H_carriage, MGN12H_carriage, MGN15C_carriage, SSR15_carriage,
|
||||
HGH15CA_carriage, HGH20CA_carriage
|
||||
];
|
||||
|
||||
use <rail.scad>
|
||||
|
@@ -79,9 +79,11 @@ M2_cs_cap_screw = ["M2_cs_cap","M2 cs cap", hs_cs_cap,2, 3.8, 0, 0.65,1.3
|
||||
M3_cs_cap_screw = ["M3_cs_cap","M3 cs cap", hs_cs_cap,3, 6.0, 0, 1.05,2.0, 18, M3_washer, M3_nut, M3_tap_radius, M3_clearance_radius];
|
||||
M4_cs_cap_screw = ["M4_cs_cap","M4 cs cap", hs_cs_cap,4, 8.0, 0, 1.49,2.5, 20, M4_washer, M4_nut, M4_tap_radius, M4_clearance_radius];
|
||||
M5_cs_cap_screw = ["M5_cs_cap","M5 cs cap", hs_cs_cap,5,10.0, 0, 3.00,3.0, 22, M5_washer, M5_nut, M5_tap_radius, M5_clearance_radius];
|
||||
M6_cs_cap_screw = ["M6_cs_cap","M6 cs cap", hs_cs_cap,6,12.0, 0, 3.00,4.0, 24, M6_washer, M6_nut, M6_tap_radius, M6_clearance_radius];
|
||||
M6_cs_cap_screw = ["M6_cs_cap","M6 cs cap", hs_cs_cap,6,12.0, 0, 2.50,4.0, 24, M6_washer, M6_nut, M6_tap_radius, M6_clearance_radius];
|
||||
M8_cs_cap_screw = ["M8_cs_cap","M8 cs cap", hs_cs_cap,8,16.0, 0, 3.50,5.0, 28, M8_washer, M8_nut, M8_tap_radius, M8_clearance_radius];
|
||||
|
||||
M2_dome_screw = ["M2_dome", "M2 dome", hs_dome, 2, 3.5, 1.3, 0.6, 1.3, 16, M2_washer, M2_nut, M2_tap_radius, M2_clearance_radius];
|
||||
M2p5_dome_screw = ["M2p5_dome", "M2.5 dome", hs_dome,2.5, 5.35,1.6, 0.8, 2.0, 17,M2p5_washer, M2p5_nut, M2p5_tap_radius, M2p5_clearance_radius];
|
||||
M3_dome_screw = ["M3_dome", "M3 dome", hs_dome, 3, 5.7, 1.65, 1.04,2.0, 18, M3_washer, M3_nut, M3_tap_radius, M3_clearance_radius];
|
||||
M4_dome_screw = ["M4_dome", "M4 dome", hs_dome, 4, 7.6, 2.2, 1.3, 2.5, 20, M4_washer, M4_nut, M4_tap_radius, M4_clearance_radius];
|
||||
M5_dome_screw = ["M5_dome", "M5 dome", hs_dome, 5, 9.5, 2.75, 1.56,3.0, 22, M5_washer, M5_nut, M5_tap_radius, M5_clearance_radius];
|
||||
@@ -102,7 +104,9 @@ M8_hex_screw = ["M8_hex", "M8 hex", hs_hex, 8, 15, 5.65, 0, 0
|
||||
M3_low_cap_screw = ["M3_low_cap", "M3 low cap", hs_cap, 3, 5.5, 2, 1.5, 2.0, 18, M3_washer, M3_nut, M3_tap_radius, M3_clearance_radius];
|
||||
|
||||
M3_grub_screw = ["M3_grub", "M3 grub", hs_grub, 3, 0, 0, 2.5, 1.5, 0, M3_washer, M3_nut, M3_tap_radius, M3_clearance_radius];
|
||||
M4_grub_screw = ["M4_grub", "M4 grub", hs_grub, 4, 0, 0, 2.4, 2.5, 0, M4_washer, M4_nut, M4_tap_radius, M4_clearance_radius];
|
||||
M4_grub_screw = ["M4_grub", "M4 grub", hs_grub, 4, 0, 0, 2.4, 2.0, 0, M4_washer, M4_nut, M4_tap_radius, M4_clearance_radius];
|
||||
M5_grub_screw = ["M5_grub", "M5 grub", hs_grub, 5, 0, 0, 2.4, 2.5, 0, M5_washer, M5_nut, M5_tap_radius, M5_clearance_radius];
|
||||
M6_grub_screw = ["M6_grub", "M6 grub", hs_grub, 6, 0, 0, 2.4, 3.0, 0, M6_washer, M6_nut, M6_tap_radius, M6_clearance_radius];
|
||||
|
||||
No2_screw = ["No2", "No2 pan wood", hs_pan, 2.2, 4.2, 1.7, 0, 0, 0, M2p5_washer, false, No2_pilot_radius, No2_clearance_radius];
|
||||
No4_screw = ["No4", "No4 pan wood", hs_pan, 3.0, 5.5, 2.0, 0, 0, 0 ,M3p5_washer, false, No4_pilot_radius, No4_clearance_radius];
|
||||
@@ -113,12 +117,12 @@ No8_screw = ["No8", "No8 pan wood", hs_pan, 4.2, 8.2, 3.05, 0, 0
|
||||
screw_lists = [
|
||||
[ M2_cap_screw, M2p5_cap_screw, M3_cap_screw, M4_cap_screw, M5_cap_screw, M6_cap_screw, M8_cap_screw],
|
||||
[ 0, 0, M3_low_cap_screw],
|
||||
[ M2_cs_cap_screw, 0, M3_cs_cap_screw, M4_cs_cap_screw, M5_cs_cap_screw, M6_cs_cap_screw],
|
||||
[ M2_dome_screw, 0, M3_dome_screw, M4_dome_screw, M5_dome_screw],
|
||||
[ M2_cs_cap_screw, 0, M3_cs_cap_screw, M4_cs_cap_screw, M5_cs_cap_screw, M6_cs_cap_screw, M8_cs_cap_screw],
|
||||
[ M2_dome_screw, M2p5_dome_screw,M3_dome_screw, M4_dome_screw, M5_dome_screw],
|
||||
[ 0, 0, M3_hex_screw, M4_hex_screw, M5_hex_screw, M6_hex_screw, M8_hex_screw],
|
||||
[ 0, M2p5_pan_screw, M3_pan_screw, M4_pan_screw, M5_pan_screw, M6_pan_screw, No632_pan_screw],
|
||||
[ No2_screw, 0, No4_screw, No6_screw, No8_screw, No6_cs_screw],
|
||||
[ 0, 0, M3_grub_screw, M4_grub_screw]
|
||||
[ 0, 0, M3_grub_screw, M4_grub_screw, M5_grub_screw, M6_grub_screw]
|
||||
];
|
||||
|
||||
use <screw.scad>
|
||||
|
140
vitamins/servo_motor.scad
Normal file
@@ -0,0 +1,140 @@
|
||||
//
|
||||
// NopSCADlib Copyright Niclas Hedhman 2018
|
||||
// niclas@hedhman.org
|
||||
//
|
||||
// This file is part of NopSCADlib.
|
||||
//
|
||||
// NopSCADlib is free software: you can redistribute it and/or modify it under the terms of the
|
||||
// GNU General Public License as published by the Free Software Foundation, either version 3 of
|
||||
// the License, or (at your option) any later version.
|
||||
//
|
||||
// NopSCADlib is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
|
||||
// without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
||||
// See the GNU General Public License for more details.
|
||||
//
|
||||
// You should have received a copy of the GNU General Public License along with NopSCADlib.
|
||||
// If not, see <https://www.gnu.org/licenses/>.
|
||||
|
||||
//
|
||||
//! BLDC servos for CNC machines
|
||||
//
|
||||
|
||||
include <../core.scad>
|
||||
include <../utils/tube.scad>
|
||||
include <../utils/round.scad>
|
||||
include <../utils/quadrant.scad>
|
||||
include <../utils/rounded_cylinder.scad>
|
||||
|
||||
function servo_motor_cap(type) = type[2]; //! Diameter height and corner radius of encoder cover
|
||||
function servo_motor_length(type) = type[3]; //! Total length from the faceplate
|
||||
function servo_motor_shaft(type) = type[4]; //! Shaft type
|
||||
function servo_motor_faceplate(type) = type[5]; //! Face plate type
|
||||
|
||||
function faceplate_width(type) = type[1]; //! Width of faceplate
|
||||
function faceplate_thickness(type) = type[2]; //! Thickness of the faceplate
|
||||
function faceplate_boss_size(type) = type[3]; //! Centre boss outer d, inner d and height
|
||||
function faceplate_hole_pitch(type) = type[4]; //! Screw hole pitch
|
||||
function faceplate_hole_dia(type) = type[5]; //! Screw hole size
|
||||
|
||||
function servo_motor_width(type) = faceplate_width(servo_motor_faceplate(type)); //! Width of the motor body
|
||||
|
||||
function shaft_type(type) = type[0]; //! String to indicate the shaft type
|
||||
function shaft_diameter(type) = type[1]; //! Shaft diameter
|
||||
function shaft_length(type) = type[2]; //! Shaft length
|
||||
function shaft_key_size(type) = type[3]; //! Keyway [length, width, depth]
|
||||
|
||||
module servo_motor(type) { //! Draw the specified servo
|
||||
fplate = servo_motor_faceplate(type);
|
||||
t = faceplate_thickness(fplate);
|
||||
w = servo_motor_width(type);
|
||||
inset = (w - faceplate_hole_pitch(fplate)) / 2;
|
||||
cap = servo_motor_cap(type);
|
||||
l = servo_motor_length(type);
|
||||
|
||||
vitamin(str("servo_motor(", type[0], ") : Servo ", type[1], " ", fplate[0], " mount ", servo_motor_width(type), " x ", servo_motor_length(type), "mm"));
|
||||
|
||||
color(grey(20))
|
||||
translate_z(-l + cap.z) {
|
||||
linear_extrude(l - t - cap.z)
|
||||
round(2)
|
||||
difference() {
|
||||
square([w, w], center = true);
|
||||
|
||||
faceplate_screw_positions(fplate)
|
||||
rotate($i * 90 + 180)
|
||||
quadrant(w = 2 * inset, r = inset, center = true);
|
||||
}
|
||||
|
||||
vflip()
|
||||
rounded_cylinder(r = cap.x / 2, r2 = cap.y, h = cap.z);
|
||||
}
|
||||
|
||||
motor_shaft(servo_motor_shaft(type));
|
||||
|
||||
motor_faceplate(fplate);
|
||||
}
|
||||
|
||||
module motor_shaft(type) { //! Draw the specified motor shaft
|
||||
diameter = shaft_diameter(type);
|
||||
length = shaft_length(type);
|
||||
key_size = shaft_key_size(type);
|
||||
key_r = key_size.y / 2;
|
||||
|
||||
color("silver")
|
||||
if( shaft_type(type) == "keyed" ) {
|
||||
render() difference() {
|
||||
cylinder(h = length, d = diameter);
|
||||
|
||||
translate([diameter / 2, 0, length])
|
||||
rotate([0, 90, 0])
|
||||
slot(r = key_r, l = 2 * (key_size.x - key_r), h = 2 * key_size.z);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
module servo_screw_positions(type) //! Position children at screw positions
|
||||
faceplate_screw_positions(servo_motor_faceplate(type))
|
||||
children();
|
||||
|
||||
module faceplate_screw_positions(type) //! Position children at faceplate screw positions
|
||||
for($i = [0 : 3])
|
||||
let(corner = [[1, 1], [-1, 1], [-1,-1], [1, -1]][$i], pitch = faceplate_hole_pitch(type))
|
||||
translate(corner * pitch / 2)
|
||||
children();
|
||||
|
||||
module motor_faceplate(type) { //! Draw specified motor faceplate
|
||||
w = faceplate_width(type);
|
||||
t = faceplate_thickness(type);
|
||||
boss = faceplate_boss_size(type);
|
||||
boss_r = boss[0] / 2;
|
||||
boss_ir = boss[1] / 2;
|
||||
boss_t = boss.z;
|
||||
rad = 5; // corner radius
|
||||
|
||||
translate_z(-t) {
|
||||
color(silver)
|
||||
linear_extrude(t)
|
||||
difference() {
|
||||
rounded_square([w - eps, w - eps], rad);
|
||||
|
||||
faceplate_screw_positions(type)
|
||||
circle(d = faceplate_hole_dia(type));
|
||||
}
|
||||
|
||||
color(grey(10))
|
||||
translate_z(eps)
|
||||
linear_extrude(t - 2 * eps)
|
||||
difference() {
|
||||
rounded_square([w, w], rad);
|
||||
|
||||
faceplate_screw_positions(type)
|
||||
circle(d = faceplate_hole_dia(type) + eps);
|
||||
}
|
||||
}
|
||||
|
||||
color(grey(10))
|
||||
tube(h = boss_t, or = boss_r - eps, ir = boss_ir + eps, center = false);
|
||||
|
||||
color(silver)
|
||||
tube(h = boss_t - eps, or = boss_r, ir = boss_ir, center = false);
|
||||
}
|
33
vitamins/servo_motors.scad
Normal file
@@ -0,0 +1,33 @@
|
||||
//
|
||||
// NopSCADlib Copyright Niclas Hedhman 2018
|
||||
// niclas@hedhman.org
|
||||
//
|
||||
// This file is part of NopSCADlib.
|
||||
//
|
||||
// NopSCADlib is free software: you can redistribute it and/or modify it under the terms of the
|
||||
// GNU General Public License as published by the Free Software Foundation, either version 3 of
|
||||
// the License, or (at your option) any later version.
|
||||
//
|
||||
// NopSCADlib is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
|
||||
// without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
||||
// See the GNU General Public License for more details.
|
||||
//
|
||||
// You should have received a copy of the GNU General Public License along with NopSCADlib.
|
||||
// If not, see <https://www.gnu.org/licenses/>.
|
||||
|
||||
|
||||
// type w, t, boss, pitch, screw dia
|
||||
80ST_faceplate = [ "80ST", 80, 8, [70, 34, 3], 63.63, 6 ];
|
||||
|
||||
// type, dia, len, key length, width, depth
|
||||
Shaft_19mm_keyed = [ "keyed", 19, 35, [25, 6, 3.5] ];
|
||||
|
||||
// Code, Description, Cap, Length, Shaft, Faceplate
|
||||
Lichuan_M01330_80ST = [ "Lichuan_M01330_80ST", "Lichuan LCMT07L02NB-80M01330B", [70, 3, 38], 123, Shaft_19mm_keyed, 80ST_faceplate ];
|
||||
Lichuan_M02430_80ST = [ "Lichuan_M02430_80ST", "Lichuan LCMT07L02NB-80M02430B", [70, 3, 38], 150, Shaft_19mm_keyed, 80ST_faceplate ];
|
||||
Lichuan_M03530_80ST = [ "Lichuan_M03530_80ST", "Lichuan LCMT07L02NB-80M03530B", [70, 3, 38], 178, Shaft_19mm_keyed, 80ST_faceplate ];
|
||||
Lichuan_M04030_80ST = [ "Lichuan_M04030_80ST", "Lichuan LCMT07L02NB-80M04030B", [70, 3, 38], 190, Shaft_19mm_keyed, 80ST_faceplate ];
|
||||
|
||||
servo_motors = [Lichuan_M01330_80ST, Lichuan_M02430_80ST, Lichuan_M03530_80ST, Lichuan_M04030_80ST];
|
||||
|
||||
use <servo_motor.scad>
|
@@ -42,6 +42,9 @@ DiBond6 = [ "DiBond6", "Sheet DiBond", 6, [0.2, 0.2, 0.2, 1 ],
|
||||
Cardboard = [ "Cardboard", "Corrugated cardboard", 5, [0.8, 0.6, 0.3, 1 ], false];
|
||||
FoilTape = [ "FoilTape", "Aluminium foil tape", 0.05,[0.9, 0.9, 0.9, 1 ], false];
|
||||
Foam20 = [ "Foam20", "Foam sponge", 20,[0.3, 0.3, 0.3, 1 ], true];
|
||||
AL1_6 = [ "AL1_6", "Aluminium tooling plate", 1.6, [0.5, 0.5, 0.5, 0.5], false];
|
||||
AL2 = [ "AL2", "Aluminium tooling plate", 2, [0.9, 0.9, 0.9, 1 ], false];
|
||||
AL3 = [ "AL3", "Aluminium tooling plate", 3, [0.9, 0.9, 0.9, 1 ], false];
|
||||
AL6 = [ "AL6", "Aluminium tooling plate", 6, [0.9, 0.9, 0.9, 1 ], false];
|
||||
AL8 = [ "AL8", "Aluminium tooling plate", 8, [0.9, 0.9, 0.9, 1 ], false];
|
||||
Steel06 = [ "Steel06", "Sheet mild steel", 0.6,"silver" , false];
|
||||
@@ -53,6 +56,6 @@ CF3 = [ "CF3", "Sheet carbon fiber", 3, grey(35),
|
||||
|
||||
|
||||
sheets = [CF1, CF2, CF3, MDF6, MDF10, MDF12, MDF19, PMMA2, PMMA3, PMMA6, PMMA8, PMMA10,
|
||||
glass2, DiBond, DiBond6, Cardboard, FoilTape, AL6, AL8, Steel06, Spring05, Silicone3, Foam20];
|
||||
glass2, DiBond, DiBond6, Cardboard, FoilTape, AL1_6, AL2, AL3, AL6, AL8, Steel06, Spring05, Silicone3, Foam20];
|
||||
|
||||
use <sheet.scad>
|
||||
|
@@ -30,20 +30,25 @@ use <../utils/round.scad>
|
||||
use <washer.scad>
|
||||
use <rod.scad>
|
||||
|
||||
function NEMA_width(type) = type[1]; //! Width of the square face
|
||||
function NEMA_length(type) = type[2]; //! Body length
|
||||
function NEMA_radius(type) = type[3]; //! End cap radius
|
||||
function NEMA_body_radius(type) = type[4]; //! Body radius
|
||||
function NEMA_boss_radius(type) = type[5]; //! Boss around the spindle radius
|
||||
function NEMA_boss_height(type) = type[6]; //! Boss height
|
||||
function NEMA_shaft_dia(type) = type[7]; //! Shaft diameter
|
||||
function NEMA_shaft_length(type)= type[8]; //! Shaft length above the face, if a list then a leadscrew: length, lead, starts
|
||||
function NEMA_hole_pitch(type) = type[9]; //! Screw hole pitch
|
||||
function NEMA_cap_heights(type) = type[10]; //! Height of the end cap at the corner and the side
|
||||
function NEMA_width(type) = type[1]; //! Width of the square face
|
||||
function NEMA_length(type) = type[2]; //! Body length
|
||||
function NEMA_radius(type) = type[3]; //! End cap radius
|
||||
function NEMA_body_radius(type) = type[4]; //! Body radius
|
||||
function NEMA_boss_radius(type) = type[5]; //! Boss around the spindle radius
|
||||
function NEMA_boss_height(type) = type[6]; //! Boss height
|
||||
function NEMA_shaft_dia(type) = type[7]; //! Shaft diameter
|
||||
function NEMA_shaft_length(type) = type[8]; //! Shaft length above the face, if a list then a leadscrew: length, lead, starts
|
||||
function NEMA_hole_pitch(type) = type[9]; //! Screw hole pitch
|
||||
function NEMA_cap_heights(type) = type[10]; //! Height of the end cap at the corner and the side
|
||||
function NEMA_thread_d(type) = type[11]; //! Screw hole diameter
|
||||
function NEMA_black_caps(type) = type[12]; //! End caps are black
|
||||
function NEMA_end_connector(type)= type[13]; //! If has a connector then plug goes in the end rather than the side
|
||||
function NEMA_shaft_length2(type)= type[14]; //! Rear shaft length if non-zero
|
||||
function NEMA_shaft_bore(type) = type[15]; //! Hollow shaft in non-zero
|
||||
|
||||
function NEMA_holes(type) = [-NEMA_hole_pitch(type) / 2, NEMA_hole_pitch(type) / 2]; //! Screw positions for for loop
|
||||
function NEMA_big_hole(type) = NEMA_boss_radius(type) + 0.2; //! Clearance hole for the big boss
|
||||
stepper_body_colour = "black";
|
||||
stepper_body_colour = grey(20);
|
||||
stepper_cap_colour = grey(50);
|
||||
stepper_machined_colour = grey(90);
|
||||
|
||||
@@ -65,11 +70,21 @@ module NEMA(type, shaft_angle = 0, jst_connector = false) { //! Draw specified N
|
||||
cap = NEMA_cap_heights(type)[1];
|
||||
cap2 = NEMA_cap_heights(type)[0];
|
||||
vitamin(str("NEMA(", type[0], "): Stepper motor NEMA", round(NEMA_width(type) / 2.54), " x ", length, "mm"));
|
||||
thread_d = 3; // Is this always the case?
|
||||
thread_d = NEMA_thread_d(type);
|
||||
corner_r = 0.9;
|
||||
bore = NEMA_shaft_bore(type);
|
||||
end_connector = NEMA_end_connector(type) && jst_connector;
|
||||
header = end_connector ? jst_zh_header : jst_ph_header;
|
||||
socket_size = hdr_box_size(header);
|
||||
pcb_thickness = 1.6;
|
||||
tabSize = [16, 4, cap - hdr_ra_height(header) - pcb_thickness];
|
||||
pins = 6;
|
||||
end_conn_w = socket_size.x + hdr_pitch(header) * (pins - 1);
|
||||
end_conn_inset = socket_size.y - 2;
|
||||
|
||||
module cap_shape(end)
|
||||
round(0.5, $fn = 32) difference() {
|
||||
intersection() {
|
||||
difference() {
|
||||
round(corner_r, $fn = 32) intersection() {
|
||||
square([side, side], center = true);
|
||||
|
||||
circle(NEMA_radius(type), $fn = 360);
|
||||
@@ -78,15 +93,26 @@ module NEMA(type, shaft_angle = 0, jst_connector = false) { //! Draw specified N
|
||||
for(x = NEMA_holes(type), y = NEMA_holes(type))
|
||||
translate([x, y])
|
||||
circle(d = thread_d);
|
||||
|
||||
if(bore)
|
||||
circle(d = bore + eps);
|
||||
|
||||
if(end_connector && end < 0)
|
||||
translate([0, side / 2])
|
||||
square([end_conn_w, end_conn_inset * 2], true);
|
||||
}
|
||||
|
||||
color(stepper_body_colour) // black laminations
|
||||
translate_z(-length / 2)
|
||||
linear_extrude(length - cap * 2, center = true)
|
||||
intersection() {
|
||||
square([side, side], center = true);
|
||||
difference() {
|
||||
round(corner_r, $fn = 32)
|
||||
intersection() {
|
||||
square([side, side], center = true);
|
||||
|
||||
circle(body_rad);
|
||||
circle(body_rad);
|
||||
}
|
||||
circle(d = bore + eps);
|
||||
}
|
||||
|
||||
color(stepper_machined_colour) {
|
||||
@@ -96,11 +122,8 @@ module NEMA(type, shaft_angle = 0, jst_connector = false) { //! Draw specified N
|
||||
cap_shape(1);
|
||||
}
|
||||
|
||||
pcb_thickness = 1.6;
|
||||
header = jst_ph_header;
|
||||
socket_size = hdr_box_size(header);
|
||||
tabSize = [16, 4, cap - hdr_ra_height(header) - pcb_thickness];
|
||||
color(stepper_cap_colour) { // aluminium end caps
|
||||
wing_t = 0.5; // end connector side wings
|
||||
color(NEMA_black_caps(type) ? "black" : stepper_cap_colour) { // aluminium end caps
|
||||
for(end = [-1, 1]) {
|
||||
translate_z(-length / 2 + end * (length - cap) / 2)
|
||||
linear_extrude(cap, center = true)
|
||||
@@ -116,20 +139,36 @@ module NEMA(type, shaft_angle = 0, jst_connector = false) { //! Draw specified N
|
||||
}
|
||||
|
||||
if(jst_connector)
|
||||
translate([-tabSize.x / 2, side / 2, -length])
|
||||
cube(tabSize);
|
||||
if(end_connector)
|
||||
for(x = [-1, 1])
|
||||
translate([x * (end_conn_w / 2 + wing_t / 2), side / 2 - end_conn_inset, -length + cap / 2])
|
||||
cube([wing_t, socket_size.y * 2, cap], center = true);
|
||||
else
|
||||
translate([-tabSize.x / 2, side / 2, -length])
|
||||
cube(tabSize);
|
||||
}
|
||||
|
||||
if(jst_connector)
|
||||
translate([0, side / 2, -length + cap - hdr_ra_height(header)]) {
|
||||
rotate(180)
|
||||
not_on_bom()
|
||||
jst_xh_header(header, 6, true);
|
||||
if(jst_connector) not_on_bom()
|
||||
if(end_connector) {
|
||||
translate([0, side / 2 + hdr_y_offset(header) + socket_size.y / 2 - end_conn_inset, -length + socket_size.z])
|
||||
rotate([180, 0, 0])
|
||||
jst_xh_header(header, pins, false, smt = true);
|
||||
|
||||
translate_z(-pcb_thickness / 2)
|
||||
color("green")
|
||||
cube([socket_size.x + 5 * 2, tabSize.y * 2, pcb_thickness], true);
|
||||
}
|
||||
h = cap - socket_size.z;
|
||||
translate([0, side / 2 + socket_size.y / 2 - end_conn_inset, -length + socket_size.z + h / 2])
|
||||
color(grey(70))
|
||||
cube([end_conn_w, socket_size.y, h], center = true);
|
||||
|
||||
}
|
||||
else
|
||||
translate([0, side / 2, -length + cap - hdr_ra_height(header)]) {
|
||||
rotate(180)
|
||||
jst_xh_header(header, pins, true, smt = true);
|
||||
|
||||
translate_z(-pcb_thickness / 2)
|
||||
color("green")
|
||||
cube([socket_size.x + 5 * 2, tabSize.y * 2, pcb_thickness], true);
|
||||
}
|
||||
|
||||
if(show_threads)
|
||||
for(x = NEMA_holes(type), y = NEMA_holes(type))
|
||||
@@ -137,14 +176,15 @@ module NEMA(type, shaft_angle = 0, jst_connector = false) { //! Draw specified N
|
||||
female_metric_thread(thread_d, metric_coarse_pitch(thread_d), cap, colour = stepper_cap_colour);
|
||||
|
||||
shaft = NEMA_shaft_length(type);
|
||||
translate_z(-5)
|
||||
shaft2 = NEMA_shaft_length2(type);
|
||||
translate_z(-length + eps - shaft2)
|
||||
rotate(shaft_angle)
|
||||
if(!is_list(shaft))
|
||||
color(stepper_machined_colour)
|
||||
cylinder(r = shaft_rad, h = shaft + 5); // shaft
|
||||
tube(or = shaft_rad, ir = bore / 2, h = shaft + length + shaft2, center = false); // shaft
|
||||
else
|
||||
not_on_bom()
|
||||
leadscrew(shaft_rad * 2, shaft.x + 5, shaft.y, shaft.z, center = false);
|
||||
leadscrew(shaft_rad * 2, shaft.x + length + shaft2, shaft.y, shaft.z, center = false);
|
||||
|
||||
if(!jst_connector)
|
||||
translate([0, side / 2, -length + cap / 2])
|
||||
|
@@ -21,17 +21,20 @@
|
||||
// NEMA stepper motor model
|
||||
//
|
||||
|
||||
// corner body boss boss shaft
|
||||
// side, length, radius, radius, radius, depth, shaft, length, holes, cap heights
|
||||
NEMA17 = ["NEMA17", 42.3, 47, 53.6/2, 25, 11, 2, 5, 24, 31, [11.5, 9]];
|
||||
NEMA17M = ["NEMA17M", 42.3, 40, 53.6/2, 25, 11, 2, 5, 20, 31, [12.5, 11]];
|
||||
NEMA17M8= ["NEMA17M8", 42.3, 40, 53.6/2, 25, 11, 2, 8, [280, 8, 4], 31, [12.5, 11]];
|
||||
NEMA17S = ["NEMA17S", 42.3, 34, 53.6/2, 25, 11, 2, 5, 24, 31, [8, 8]];
|
||||
NEMA17P = ["NEMA17P", 42.3, 26.5, 53.6/2, 25, 11, 2, 5, 26.5, 31, [10, 8]];
|
||||
NEMA16 = ["NEMA16", 39.5, 19.2, 50.6/2, 50.6/2, 11, 2, 5, 12, 31, [8, 8]];
|
||||
NEMA14 = ["NEMA14", 35.2, 36, 46.4/2, 21, 11, 2, 5, 21, 26, [8, 8]];
|
||||
NEMA23 = ["NEMA23", 56.4, 51.2, 75.7/2, 35, 38.1/2, 1.6, 6.35, 24, 47.1, [8, 8]];
|
||||
// corner body boss boss shaft cap thread black end shaft shaft
|
||||
// side, length, radius, radius, radius, depth, shaft, length, holes, heights, dia, caps, conn, length2, bore
|
||||
NEMA8 = ["NEMA8", 20, 30, 30/2, 20, 7.5, 1.6, 4, 6, 16, [8, 8], 2, true, true, 0, 0];
|
||||
NEMA8BH = ["NEMA8BH", 20, 30, 30/2, 20, 7.5, 1.6, 5, 12, 16, [8, 8], 2, true, true, 7, 2.8];
|
||||
NEMA17 = ["NEMA17", 42.3, 47, 53.6/2, 25, 11, 2, 5, 24, 31, [11.5, 9], 3, false, false, 0, 0];
|
||||
NEMA17M = ["NEMA17M", 42.3, 40, 53.6/2, 25, 11, 2, 5, 20, 31, [12.5, 11], 3, false, false, 0, 0];
|
||||
NEMA17M8= ["NEMA17M8", 42.3, 40, 53.6/2, 25, 11, 2, 8, [280, 8, 4], 31, [12.5, 11], 3, false, false, 0, 0];
|
||||
NEMA17S = ["NEMA17S", 42.3, 34, 53.6/2, 25, 11, 2, 5, 24, 31, [8, 8], 3, false, false, 0, 0];
|
||||
NEMA17P = ["NEMA17P", 42.3, 26.5, 53.6/2, 25, 11, 2, 5, 26.5, 31, [10, 8], 3, false, false, 0, 0];
|
||||
NEMA16 = ["NEMA16", 39.5, 19.2, 50.6/2, 50.6/2, 11, 2, 5, 12, 31, [8, 8], 3, false, false, 0, 0];
|
||||
NEMA14 = ["NEMA14", 35.2, 36, 46.4/2, 21, 11, 2, 5, 21, 26, [8, 8], 3, false, false, 0, 0];
|
||||
NEMA23 = ["NEMA23", 56.4, 51.2, 75.7/2, 35, 38.1/2, 1.6, 6.35, 24, 47.1, [8, 8], 3, false, false, 0, 0];
|
||||
|
||||
stepper_motors = [NEMA14, NEMA16, NEMA17P, NEMA17S, NEMA17M, NEMA17, NEMA23];
|
||||
stepper_motors = [NEMA8, NEMA8BH, NEMA14, NEMA16, NEMA17P, NEMA17S, NEMA17M, NEMA17, NEMA23];
|
||||
small_steppers = [];
|
||||
|
||||
use <stepper_motor.scad>
|
||||
|