Compare commits
33 Commits
Author | SHA1 | Date | |
---|---|---|---|
|
e4b1b686ff | ||
|
6eba75a41d | ||
|
c484ac2e8d | ||
|
f12ac7b569 | ||
|
cfc3b483e0 | ||
|
6da845215b | ||
|
7fe5aaac22 | ||
|
983511b906 | ||
|
4df5d608a2 | ||
|
4f073f97e8 | ||
|
f03e32cd1e | ||
|
fe3ce88086 | ||
|
37fe83e2e0 | ||
|
c7803ad935 | ||
|
472df8e369 | ||
|
bc7f294f99 | ||
|
e9292d9165 | ||
|
f86dfef919 | ||
|
e97f9fdacc | ||
|
ba45f85580 | ||
|
90fb9eb01f | ||
|
905fc01677 | ||
|
a695974ac5 | ||
|
a974e4fa9d | ||
|
dc1c3f1d5e | ||
|
07866f7284 | ||
|
ad74378e7e | ||
|
53d1ea93cd | ||
|
7eaca85e96 | ||
|
b00709da82 | ||
|
c76be23867 | ||
|
f6f348b76e | ||
|
11a1f65158 |
51
CHANGELOG.md
@@ -3,6 +3,57 @@
|
||||
This changelog is generated by `changelog.py` using manually added semantic version tags to classify commits as breaking changes, additions or fixes.
|
||||
|
||||
|
||||
#### [v21.27.1](https://github.com/nophead/NopSCADlib/releases/tag/v21.27.1 "show release") Fixes [...](https://github.com/nophead/NopSCADlib/compare/v21.27.0...v21.27.1 "diff with v21.27.0")
|
||||
* 2024-09-13 [`c484ac2`](https://github.com/nophead/NopSCADlib/commit/c484ac2e8dbc8e9f9cb5051ce963250839a2705d "show commit") [C.P.](# "Chris Palmer") Updated libtest image with new D-connector.
|
||||
|
||||
### [v21.27.0](https://github.com/nophead/NopSCADlib/releases/tag/v21.27.0 "show release") Additions [...](https://github.com/nophead/NopSCADlib/compare/v21.26.0...v21.27.0 "diff with v21.26.0")
|
||||
* 2024-09-13 [`6da8452`](https://github.com/nophead/NopSCADlib/commit/6da845215bd2a4c3b7dc8a022579947cef27b8b8 "show commit") [C.P.](# "Chris Palmer") Updated readme.
|
||||
|
||||
* 2024-09-10 [`7fe5aaa`](https://github.com/nophead/NopSCADlib/commit/7fe5aaac22283c453b2c2e5a2239b65ddd4320c1 "show commit") [D.T.](# "Daniel Trnka") Added DCONN37 connector
|
||||
|
||||
### [v21.26.0](https://github.com/nophead/NopSCADlib/releases/tag/v21.26.0 "show release") Additions [...](https://github.com/nophead/NopSCADlib/compare/v21.25.0...v21.26.0 "diff with v21.25.0")
|
||||
* 2024-09-02 [`4f073f9`](https://github.com/nophead/NopSCADlib/commit/4f073f97e815e5c0b469a07d20526f7e2b88d79d "show commit") [C.P.](# "Chris Palmer") Added `rod_ends.scad` to `lib.scad` and `lib_test.scad`.
|
||||
Fixed `rod_end` colours.
|
||||
Added new pulleys to the test list and reodered.
|
||||
Printed pulleys nopw shown in two rows.
|
||||
Updated images and readme.
|
||||
|
||||
* 2024-08-23 [`fe3ce88`](https://github.com/nophead/NopSCADlib/commit/fe3ce88086de8480a88b69b7f7d2e6376b03caa6 "show commit") [T.](# "texas") adding test code for weld nuts and rod ends, adding ball bearings to test code list, and updating code for dome screw heads to use an angle to determine inset distance of the lower taper
|
||||
|
||||
* 2024-08-16 [`37fe83e`](https://github.com/nophead/NopSCADlib/commit/37fe83e2e08b6a0bd23042e37fbe89122d78516c "show commit") [T.](# "texas") added chamfer distance variable to taper in the bottom of the dome heads
|
||||
|
||||
* 2024-08-14 [`f86dfef`](https://github.com/nophead/NopSCADlib/commit/f86dfef919731f9731ca39f70ebd07b2c7204dfa "show commit") [T.](# "texas") fixed the calculations for dome screws to now use equations for a scaled sphere cap instead. This allows for larger and smaller sizes than were previously possible, and also eliminates the need for that lift value. Adding M6 and M8 dome screws as a result of this new ability
|
||||
|
||||
* 2024-08-14 [`e97f9fd`](https://github.com/nophead/NopSCADlib/commit/e97f9fdacc87bbc31cb9f0f3474132bc09f5ed91 "show commit") [=.](# "=") adding weld nuts
|
||||
|
||||
* 2024-08-13 [`ba45f85`](https://github.com/nophead/NopSCADlib/commit/ba45f8558007c7efe6bfd17bebacf285293ba4ad "show commit") [A.](# "alex") adding weld nuts, m4 and m6 for now
|
||||
|
||||
* 2024-03-18 [`90fb9eb`](https://github.com/nophead/NopSCADlib/commit/90fb9eb01f8721cb48589e59a14b3770da250cd5 "show commit") [A.](# "alex") adding F625 ball bearing
|
||||
|
||||
* 2024-03-13 [`905fc01`](https://github.com/nophead/NopSCADlib/commit/905fc016778d6a78774c05236425463fa2aa3323 "show commit") [A.](# "alex") adding rod end bearing and a yellow bed spring
|
||||
|
||||
* 2024-03-04 [`a695974`](https://github.com/nophead/NopSCADlib/commit/a695974ac562b88ed08cc3ea54a2a4e07f638c5f "show commit") [T.](# "Tex") updating after maybe breaking debian
|
||||
|
||||
### [v21.25.0](https://github.com/nophead/NopSCADlib/releases/tag/v21.25.0 "show release") Additions [...](https://github.com/nophead/NopSCADlib/compare/v21.24.1...v21.25.0 "diff with v21.24.1")
|
||||
* 2024-08-15 [`bc7f294`](https://github.com/nophead/NopSCADlib/commit/bc7f294f995d8aa8ba500a1ef666c8fb50f94fd3 "show commit") [C.P.](# "Chris Palmer") Added `smd_250V_fuse()` and `rd_box_cap()`.
|
||||
Fixed missing value parameters from a lot of the SMD component instantiation examples.
|
||||
|
||||
#### [v21.24.1](https://github.com/nophead/NopSCADlib/releases/tag/v21.24.1 "show release") Fixes [...](https://github.com/nophead/NopSCADlib/compare/v21.24.0...v21.24.1 "diff with v21.24.0")
|
||||
* 2024-06-30 [`07866f7`](https://github.com/nophead/NopSCADlib/commit/07866f72845c9e08c90e371c92315bab54f003c6 "show commit") [H.](# "Hermann-SW") Add `PT_camera` to examples and gallery
|
||||
|
||||
### [v21.24.0](https://github.com/nophead/NopSCADlib/releases/tag/v21.24.0 "show release") Additions [...](https://github.com/nophead/NopSCADlib/compare/v21.23.2...v21.24.0 "diff with v21.23.2")
|
||||
* 2024-06-30 [`53d1ea9`](https://github.com/nophead/NopSCADlib/commit/53d1ea93cd339d3fb6e085be9314d7ec0b547796 "show commit") [C.P.](# "Chris Palmer") Can now specify a rotation angle for a `geared_stepper's` shaft.
|
||||
|
||||
#### [v21.23.2](https://github.com/nophead/NopSCADlib/releases/tag/v21.23.2 "show release") Fixes [...](https://github.com/nophead/NopSCADlib/compare/v21.23.1...v21.23.2 "diff with v21.23.1")
|
||||
* 2024-06-12 [`b00709d`](https://github.com/nophead/NopSCADlib/commit/b00709da820e1241422b6e156b0c61157c18d63d "show commit") [C.P.](# "Chris Palmer") Image edge pixel changes due to new PC.
|
||||
|
||||
* 2024-06-12 [`c76be23`](https://github.com/nophead/NopSCADlib/commit/c76be2386715b80bbbc9a71c99214df7f3c71bc7 "show commit") [C.P.](# "Chris Palmer") Fixed thread bug on threaded inserts revealed by latest OpenSCAD snapshot.
|
||||
|
||||
* 2024-06-12 [`f6f348b`](https://github.com/nophead/NopSCADlib/commit/f6f348b76e7986927a571e1c07c3f866bcbeeafe "show commit") [C.P.](# "Chris Palmer") Fixed rocker slot height.
|
||||
|
||||
#### [v21.23.1](https://github.com/nophead/NopSCADlib/releases/tag/v21.23.1 "show release") Fixes [...](https://github.com/nophead/NopSCADlib/compare/v21.23.0...v21.23.1 "diff with v21.23.0")
|
||||
* 2024-05-08 [`870b396`](https://github.com/nophead/NopSCADlib/commit/870b396574935603305462f1fea88564c909aad8 "show commit") [C.](# "Chris") Revoved strailing comma in `let()` in `splines.scad`.
|
||||
|
||||
### [v21.23.0](https://github.com/nophead/NopSCADlib/releases/tag/v21.23.0 "show release") Additions [...](https://github.com/nophead/NopSCADlib/compare/v21.22.0...v21.23.0 "diff with v21.22.0")
|
||||
* 2024-04-21 [`c1fdb2e`](https://github.com/nophead/NopSCADlib/commit/c1fdb2e701672b2404e34f224e77f21fb2ff34da "show commit") [C.P.](# "Chris Palmer") Dpdated images and readme.
|
||||
|
||||
|
54
examples/PT_camera/PT_camera.scad
Normal file
@@ -0,0 +1,54 @@
|
||||
include <../../vitamins/geared_steppers.scad>
|
||||
include <../../core.scad>
|
||||
include <../../vitamins/cameras.scad>
|
||||
use <../../vitamins/pcb.scad>
|
||||
|
||||
module ptc(ang2) {
|
||||
rotate([180,0,0])
|
||||
union(){
|
||||
geared_stepper(28BYJ_48,ang2);
|
||||
rotate([90,0,180-ang2])
|
||||
translate([9.8,-16.5,1.7])
|
||||
rotate([0,0,90])
|
||||
camera(cameras[0]);
|
||||
}
|
||||
}
|
||||
|
||||
module pt(ang,ang2) {
|
||||
rotate([180,0,0]) geared_stepper(28BYJ_48,ang);
|
||||
rotate([0,0,ang]) rotate([270,0,0]) translate([0,-29.0,-1.5]) ptc(ang2);
|
||||
}
|
||||
|
||||
deg=90;
|
||||
c=90;
|
||||
|
||||
if($t<0.125){
|
||||
a=180+$t/0.125*deg;
|
||||
pt(a,c);
|
||||
}else if ($t<0.25){
|
||||
a=180+deg-($t-0.125)/0.125*deg;
|
||||
pt(a,c);
|
||||
}else if ($t<0.375){
|
||||
b=c+($t-0.25)/0.125*deg;
|
||||
pt(180,b);
|
||||
}else if ($t<0.5){
|
||||
b=c+deg-($t-0.375)/0.125*deg;
|
||||
pt(180,b);
|
||||
}
|
||||
else if($t<0.625){
|
||||
a=180+($t-0.5)/0.125*deg;
|
||||
b=c+deg-90+($t-0.5)/0.125*deg;
|
||||
pt(a,b);
|
||||
}else if ($t<0.75){
|
||||
a=180+deg-($t-0.625)/0.125*deg;
|
||||
b=c+deg-($t-0.625)/0.125*deg;
|
||||
pt(a,b);
|
||||
}else if ($t<0.875){
|
||||
a=180-($t-0.75)/0.125*deg;
|
||||
b=c-($t-0.75)/0.125*deg;
|
||||
pt(a,b);
|
||||
}else{
|
||||
a=90+($t-0.875)/0.125*deg;
|
||||
b=c+deg-180+($t-0.875)/0.125*deg;
|
||||
pt(a,b);
|
||||
}
|
BIN
gallery/PT_camera.anim.gif
Normal file
After Width: | Height: | Size: 1.5 MiB |
@@ -106,6 +106,10 @@ A base and shroud to make PSU safe to sit on a desk
|
||||
|
||||

|
||||
|
||||
## PT_camera
|
||||
Two 28BYJ_48 geared stepper motors and a Raspberry v1 camera, combined with [4 drops of superglue](https://forums.raspberrypi.com/viewtopic.php?p=1810000#p1810000). Script [PT_camera.scad](../examples/PT_camera/PT_camera.scad) nicely demonstrates new 2nd optional arg (motor shaft angle) of ```geared_stepper()```.
|
||||

|
||||
|
||||
## PotBox
|
||||
Potentiometer box with course and fine controls and three 4mm binding posts
|
||||
|
||||
|
1
lib.scad
@@ -58,6 +58,7 @@ include <vitamins/pulleys.scad>
|
||||
include <vitamins/ring_terminals.scad>
|
||||
include <vitamins/rails.scad>
|
||||
include <vitamins/rod.scad>
|
||||
include <vitamins/rod_ends.scad>
|
||||
include <vitamins/servo_motors.scad>
|
||||
include <vitamins/shaft_couplings.scad>
|
||||
include <vitamins/sheets.scad>
|
||||
|
BIN
libtest.png
Before Width: | Height: | Size: 1002 KiB After Width: | Height: | Size: 1010 KiB |
20
libtest.scad
@@ -98,6 +98,7 @@ use <tests/rails.scad>
|
||||
use <tests/ring_terminals.scad>
|
||||
use <tests/rockers.scad>
|
||||
use <tests/rod.scad>
|
||||
use <tests/rod_ends.scad>
|
||||
use <tests/SBR_rails.scad>
|
||||
use <tests/screws.scad>
|
||||
use <tests/sealing_strip.scad>
|
||||
@@ -178,7 +179,7 @@ translate([x5, screw_knobs_y])
|
||||
screw_knobs();
|
||||
|
||||
knobs_y = screw_knobs_y + 40;
|
||||
translate([640, knobs_y])
|
||||
translate([660, knobs_y])
|
||||
printed_pulley_test();
|
||||
|
||||
translate([x5, knobs_y])
|
||||
@@ -223,7 +224,7 @@ translate([950, box_y])
|
||||
|
||||
inserts_y = 0;
|
||||
nuts_y = inserts_y + 20;
|
||||
washers_y = nuts_y + 140;
|
||||
washers_y = nuts_y + 160;
|
||||
screws_y = washers_y + 120;
|
||||
threaded_inserts_y = screws_y + 180;
|
||||
circlips_y = threaded_inserts_y + 30;
|
||||
@@ -293,6 +294,9 @@ translate([x0, pulleys_y])
|
||||
translate([x0, leadnuts_y])
|
||||
leadnuts();
|
||||
|
||||
translate([x0 + 170, leadnuts_y])
|
||||
rod_ends();
|
||||
|
||||
translate([x0 + 120, leadnuts_y])
|
||||
leadnuthousings();
|
||||
|
||||
@@ -306,7 +310,7 @@ translate([x0, linear_bearings_y]) {
|
||||
translate([x0, steppers_y])
|
||||
stepper_motors();
|
||||
|
||||
translate([x0 + 400, steppers_y])
|
||||
translate([x0 + 450, steppers_y])
|
||||
gear_motors();
|
||||
|
||||
translate([x0, sheets_y])
|
||||
@@ -402,15 +406,15 @@ translate([x2, components_y])
|
||||
components();
|
||||
|
||||
veroboard_y = 0;
|
||||
d_connectors_y = veroboard_y + 110;
|
||||
iecs_y = d_connectors_y + 80;
|
||||
d_connectors_y = veroboard_y + 120;
|
||||
iecs_y = d_connectors_y + 70;
|
||||
modules_y = iecs_y + 60;
|
||||
ssrs_y = modules_y + 80;
|
||||
blowers_y = ssrs_y + 60;
|
||||
hot_ends_y = blowers_y + 100;
|
||||
batteries_y = hot_ends_y + 55;
|
||||
panel_meters_y = batteries_y + 70;
|
||||
extrusions_y = panel_meters_y + 100;
|
||||
extrusions_y = panel_meters_y + 130;
|
||||
|
||||
translate([x3, veroboard_y])
|
||||
veroboard_test();
|
||||
@@ -421,10 +425,10 @@ translate([x3 + 50, veroboard_y + 20])
|
||||
translate([x3 + 160, ssrs_y])
|
||||
pcb_mounts();
|
||||
|
||||
translate([x3 + 145, veroboard_y + 16])
|
||||
translate([x3 + 145, veroboard_y])
|
||||
cameras();
|
||||
|
||||
translate([x3 + 145, d_connectors_y - 10])
|
||||
translate([x3 + 145, veroboard_y + 45])
|
||||
camera_housings();
|
||||
|
||||
translate([x3, d_connectors_y])
|
||||
|
282
readme.md
@@ -26,30 +26,31 @@ A list of changes classified as breaking, additions or fixes is maintained in [C
|
||||
<tr><td> <a href = "#axials">Axials</a> </td><td> <a href = "#jack">Jack</a> </td><td> <a href = "#ring_terminals">Ring_terminals</a> </td><td> <a href = "#cable_clip">Cable_clip</a> </td><td> <a href = "#catenary">Catenary</a> </td><td> <a href = "#global">Global</a> </td></tr>
|
||||
<tr><td> <a href = "#bldc_motors">BLDC_motors</a> </td><td> <a href = "#ldrs">LDRs</a> </td><td> <a href = "#rockers">Rockers</a> </td><td> <a href = "#cable_grommets">Cable_grommets</a> </td><td> <a href = "#core_xy">Core_xy</a> </td><td> <a href = "#polyholes">Polyholes</a> </td></tr>
|
||||
<tr><td> <a href = "#ball_bearings">Ball_bearings</a> </td><td> <a href = "#led_meters">LED_meters</a> </td><td> <a href = "#rod">Rod</a> </td><td> <a href = "#camera_housing">Camera_housing</a> </td><td> <a href = "#dogbones">Dogbones</a> </td><td> <a href = "#rounded_rectangle">Rounded_rectangle</a> </td></tr>
|
||||
<tr><td> <a href = "#batteries">Batteries</a> </td><td> <a href = "#leds">LEDs</a> </td><td> <a href = "#sbr_rails">SBR_rails</a> </td><td> <a href = "#carriers">Carriers</a> </td><td> <a href = "#fillet">Fillet</a> </td><td> <a href = "#sphere">Sphere</a> </td></tr>
|
||||
<tr><td> <a href = "#bearing_blocks">Bearing_blocks</a> </td><td> <a href = "#leadnuts">Leadnuts</a> </td><td> <a href = "#sk_brackets">SK_brackets</a> </td><td> <a href = "#corner_block">Corner_block</a> </td><td> <a href = "#gears">Gears</a> </td><td> <a href = "#teardrops">Teardrops</a> </td></tr>
|
||||
<tr><td> <a href = "#belts">Belts</a> </td><td> <a href = "#light_strips">Light_strips</a> </td><td> <a href = "#smds">SMDs</a> </td><td> <a href = "#door_hinge">Door_hinge</a> </td><td> <a href = "#hanging_hole">Hanging_hole</a> </td><td></td></tr>
|
||||
<tr><td> <a href = "#blowers">Blowers</a> </td><td> <a href = "#linear_bearings">Linear_bearings</a> </td><td> <a href = "#ssrs">SSRs</a> </td><td> <a href = "#door_latch">Door_latch</a> </td><td> <a href = "#horiholes">Horiholes</a> </td><td></td></tr>
|
||||
<tr><td> <a href = "#box_sections">Box_sections</a> </td><td> <a href = "#magnets">Magnets</a> </td><td> <a href = "#screws">Screws</a> </td><td> <a href = "#drag_chain">Drag_chain</a> </td><td> <a href = "#layout">Layout</a> </td><td></td></tr>
|
||||
<tr><td> <a href = "#bulldogs">Bulldogs</a> </td><td> <a href = "#mains_sockets">Mains_sockets</a> </td><td> <a href = "#sealing_strip">Sealing_strip</a> </td><td> <a href = "#fan_guard">Fan_guard</a> </td><td> <a href = "#maths">Maths</a> </td><td></td></tr>
|
||||
<tr><td> <a href = "#buttons">Buttons</a> </td><td> <a href = "#microswitches">Microswitches</a> </td><td> <a href = "#servo_motors">Servo_motors</a> </td><td> <a href = "#fixing_block">Fixing_block</a> </td><td> <a href = "#offset">Offset</a> </td><td></td></tr>
|
||||
<tr><td> <a href = "#cable_strips">Cable_strips</a> </td><td> <a href = "#microview">Microview</a> </td><td> <a href = "#shaft_couplings">Shaft_couplings</a> </td><td> <a href = "#flat_hinge">Flat_hinge</a> </td><td> <a href = "#pcb_utils">PCB_utils</a> </td><td></td></tr>
|
||||
<tr><td> <a href = "#cameras">Cameras</a> </td><td> <a href = "#modules">Modules</a> </td><td> <a href = "#sheets">Sheets</a> </td><td> <a href = "#foot">Foot</a> </td><td> <a href = "#quadrant">Quadrant</a> </td><td></td></tr>
|
||||
<tr><td> <a href = "#circlips">Circlips</a> </td><td> <a href = "#nuts">Nuts</a> </td><td> <a href = "#spades">Spades</a> </td><td> <a href = "#handle">Handle</a> </td><td> <a href = "#round">Round</a> </td><td></td></tr>
|
||||
<tr><td> <a href = "#components">Components</a> </td><td> <a href = "#o_ring">O_ring</a> </td><td> <a href = "#spools">Spools</a> </td><td> <a href = "#knob">Knob</a> </td><td> <a href = "#rounded_cylinder">Rounded_cylinder</a> </td><td></td></tr>
|
||||
<tr><td> <a href = "#dip">DIP</a> </td><td> <a href = "#opengrab">Opengrab</a> </td><td> <a href = "#springs">Springs</a> </td><td> <a href = "#led_bezel">LED_bezel</a> </td><td> <a href = "#rounded_polygon">Rounded_polygon</a> </td><td></td></tr>
|
||||
<tr><td> <a href = "#d_connectors">D_connectors</a> </td><td> <a href = "#pcb">PCB</a> </td><td> <a href = "#stepper_motors">Stepper_motors</a> </td><td> <a href = "#pcb_mount">PCB_mount</a> </td><td> <a href = "#rounded_triangle">Rounded_triangle</a> </td><td></td></tr>
|
||||
<tr><td> <a href = "#displays">Displays</a> </td><td> <a href = "#pcbs">PCBs</a> </td><td> <a href = "#swiss_clips">Swiss_clips</a> </td><td> <a href = "#psu_shroud">PSU_shroud</a> </td><td> <a href = "#sector">Sector</a> </td><td></td></tr>
|
||||
<tr><td> <a href = "#extrusion_brackets">Extrusion_brackets</a> </td><td> <a href = "#psus">PSUs</a> </td><td> <a href = "#terminals">Terminals</a> </td><td> <a href = "#pocket_handle">Pocket_handle</a> </td><td> <a href = "#splines">Splines</a> </td><td></td></tr>
|
||||
<tr><td> <a href = "#extrusions">Extrusions</a> </td><td> <a href = "#panel_meters">Panel_meters</a> </td><td> <a href = "#toggles">Toggles</a> </td><td> <a href = "#press_fit">Press_fit</a> </td><td> <a href = "#sweep">Sweep</a> </td><td></td></tr>
|
||||
<tr><td> <a href = "#fans">Fans</a> </td><td> <a href = "#photo_interrupters">Photo_interrupters</a> </td><td> <a href = "#transformers">Transformers</a> </td><td> <a href = "#printed_box">Printed_box</a> </td><td> <a href = "#thread">Thread</a> </td><td></td></tr>
|
||||
<tr><td> <a href = "#fastons">Fastons</a> </td><td> <a href = "#pillars">Pillars</a> </td><td> <a href = "#ttracks">Ttracks</a> </td><td> <a href = "#printed_pulleys">Printed_pulleys</a> </td><td> <a href = "#tube">Tube</a> </td><td></td></tr>
|
||||
<tr><td> <a href = "#fuseholder">Fuseholder</a> </td><td> <a href = "#pillow_blocks">Pillow_blocks</a> </td><td> <a href = "#tubings">Tubings</a> </td><td> <a href = "#ribbon_clamp">Ribbon_clamp</a> </td><td></td><td></td></tr>
|
||||
<tr><td> <a href = "#gear_motors">Gear_motors</a> </td><td> <a href = "#pin_headers">Pin_headers</a> </td><td> <a href = "#variacs">Variacs</a> </td><td> <a href = "#ssr_shroud">SSR_shroud</a> </td><td></td><td></td></tr>
|
||||
<tr><td> <a href = "#geared_steppers">Geared_steppers</a> </td><td> <a href = "#potentiometers">Potentiometers</a> </td><td> <a href = "#veroboard">Veroboard</a> </td><td> <a href = "#screw_knob">Screw_knob</a> </td><td></td><td></td></tr>
|
||||
<tr><td> <a href = "#green_terminals">Green_terminals</a> </td><td> <a href = "#pulleys">Pulleys</a> </td><td> <a href = "#washers">Washers</a> </td><td> <a href = "#socket_box">Socket_box</a> </td><td></td><td></td></tr>
|
||||
<tr><td> <a href = "#hot_ends">Hot_ends</a> </td><td></td><td> <a href = "#wire">Wire</a> </td><td> <a href = "#strap_handle">Strap_handle</a> </td><td></td><td></td></tr>
|
||||
<tr><td> <a href = "#hygrometer">Hygrometer</a> </td><td></td><td> <a href = "#zipties">Zipties</a> </td><td></td><td></td><td></td></tr>
|
||||
<tr><td> <a href = "#batteries">Batteries</a> </td><td> <a href = "#leds">LEDs</a> </td><td> <a href = "#rod_ends">Rod_ends</a> </td><td> <a href = "#carriers">Carriers</a> </td><td> <a href = "#fillet">Fillet</a> </td><td> <a href = "#sphere">Sphere</a> </td></tr>
|
||||
<tr><td> <a href = "#bearing_blocks">Bearing_blocks</a> </td><td> <a href = "#leadnuts">Leadnuts</a> </td><td> <a href = "#sbr_rails">SBR_rails</a> </td><td> <a href = "#corner_block">Corner_block</a> </td><td> <a href = "#gears">Gears</a> </td><td> <a href = "#teardrops">Teardrops</a> </td></tr>
|
||||
<tr><td> <a href = "#belts">Belts</a> </td><td> <a href = "#light_strips">Light_strips</a> </td><td> <a href = "#sk_brackets">SK_brackets</a> </td><td> <a href = "#door_hinge">Door_hinge</a> </td><td> <a href = "#hanging_hole">Hanging_hole</a> </td><td></td></tr>
|
||||
<tr><td> <a href = "#blowers">Blowers</a> </td><td> <a href = "#linear_bearings">Linear_bearings</a> </td><td> <a href = "#smds">SMDs</a> </td><td> <a href = "#door_latch">Door_latch</a> </td><td> <a href = "#horiholes">Horiholes</a> </td><td></td></tr>
|
||||
<tr><td> <a href = "#box_sections">Box_sections</a> </td><td> <a href = "#magnets">Magnets</a> </td><td> <a href = "#ssrs">SSRs</a> </td><td> <a href = "#drag_chain">Drag_chain</a> </td><td> <a href = "#layout">Layout</a> </td><td></td></tr>
|
||||
<tr><td> <a href = "#bulldogs">Bulldogs</a> </td><td> <a href = "#mains_sockets">Mains_sockets</a> </td><td> <a href = "#screws">Screws</a> </td><td> <a href = "#fan_guard">Fan_guard</a> </td><td> <a href = "#maths">Maths</a> </td><td></td></tr>
|
||||
<tr><td> <a href = "#buttons">Buttons</a> </td><td> <a href = "#microswitches">Microswitches</a> </td><td> <a href = "#sealing_strip">Sealing_strip</a> </td><td> <a href = "#fixing_block">Fixing_block</a> </td><td> <a href = "#offset">Offset</a> </td><td></td></tr>
|
||||
<tr><td> <a href = "#cable_strips">Cable_strips</a> </td><td> <a href = "#microview">Microview</a> </td><td> <a href = "#servo_motors">Servo_motors</a> </td><td> <a href = "#flat_hinge">Flat_hinge</a> </td><td> <a href = "#pcb_utils">PCB_utils</a> </td><td></td></tr>
|
||||
<tr><td> <a href = "#cameras">Cameras</a> </td><td> <a href = "#modules">Modules</a> </td><td> <a href = "#shaft_couplings">Shaft_couplings</a> </td><td> <a href = "#foot">Foot</a> </td><td> <a href = "#quadrant">Quadrant</a> </td><td></td></tr>
|
||||
<tr><td> <a href = "#circlips">Circlips</a> </td><td> <a href = "#nuts">Nuts</a> </td><td> <a href = "#sheets">Sheets</a> </td><td> <a href = "#handle">Handle</a> </td><td> <a href = "#round">Round</a> </td><td></td></tr>
|
||||
<tr><td> <a href = "#components">Components</a> </td><td> <a href = "#o_ring">O_ring</a> </td><td> <a href = "#spades">Spades</a> </td><td> <a href = "#knob">Knob</a> </td><td> <a href = "#rounded_cylinder">Rounded_cylinder</a> </td><td></td></tr>
|
||||
<tr><td> <a href = "#dip">DIP</a> </td><td> <a href = "#opengrab">Opengrab</a> </td><td> <a href = "#spools">Spools</a> </td><td> <a href = "#led_bezel">LED_bezel</a> </td><td> <a href = "#rounded_polygon">Rounded_polygon</a> </td><td></td></tr>
|
||||
<tr><td> <a href = "#d_connectors">D_connectors</a> </td><td> <a href = "#pcb">PCB</a> </td><td> <a href = "#springs">Springs</a> </td><td> <a href = "#pcb_mount">PCB_mount</a> </td><td> <a href = "#rounded_triangle">Rounded_triangle</a> </td><td></td></tr>
|
||||
<tr><td> <a href = "#displays">Displays</a> </td><td> <a href = "#pcbs">PCBs</a> </td><td> <a href = "#stepper_motors">Stepper_motors</a> </td><td> <a href = "#psu_shroud">PSU_shroud</a> </td><td> <a href = "#sector">Sector</a> </td><td></td></tr>
|
||||
<tr><td> <a href = "#extrusion_brackets">Extrusion_brackets</a> </td><td> <a href = "#psus">PSUs</a> </td><td> <a href = "#swiss_clips">Swiss_clips</a> </td><td> <a href = "#pocket_handle">Pocket_handle</a> </td><td> <a href = "#splines">Splines</a> </td><td></td></tr>
|
||||
<tr><td> <a href = "#extrusions">Extrusions</a> </td><td> <a href = "#panel_meters">Panel_meters</a> </td><td> <a href = "#terminals">Terminals</a> </td><td> <a href = "#press_fit">Press_fit</a> </td><td> <a href = "#sweep">Sweep</a> </td><td></td></tr>
|
||||
<tr><td> <a href = "#fans">Fans</a> </td><td> <a href = "#photo_interrupters">Photo_interrupters</a> </td><td> <a href = "#toggles">Toggles</a> </td><td> <a href = "#printed_box">Printed_box</a> </td><td> <a href = "#thread">Thread</a> </td><td></td></tr>
|
||||
<tr><td> <a href = "#fastons">Fastons</a> </td><td> <a href = "#pillars">Pillars</a> </td><td> <a href = "#transformers">Transformers</a> </td><td> <a href = "#printed_pulleys">Printed_pulleys</a> </td><td> <a href = "#tube">Tube</a> </td><td></td></tr>
|
||||
<tr><td> <a href = "#fuseholder">Fuseholder</a> </td><td> <a href = "#pillow_blocks">Pillow_blocks</a> </td><td> <a href = "#ttracks">Ttracks</a> </td><td> <a href = "#ribbon_clamp">Ribbon_clamp</a> </td><td></td><td></td></tr>
|
||||
<tr><td> <a href = "#gear_motors">Gear_motors</a> </td><td> <a href = "#pin_headers">Pin_headers</a> </td><td> <a href = "#tubings">Tubings</a> </td><td> <a href = "#ssr_shroud">SSR_shroud</a> </td><td></td><td></td></tr>
|
||||
<tr><td> <a href = "#geared_steppers">Geared_steppers</a> </td><td> <a href = "#potentiometers">Potentiometers</a> </td><td> <a href = "#variacs">Variacs</a> </td><td> <a href = "#screw_knob">Screw_knob</a> </td><td></td><td></td></tr>
|
||||
<tr><td> <a href = "#green_terminals">Green_terminals</a> </td><td> <a href = "#pulleys">Pulleys</a> </td><td> <a href = "#veroboard">Veroboard</a> </td><td> <a href = "#socket_box">Socket_box</a> </td><td></td><td></td></tr>
|
||||
<tr><td> <a href = "#hot_ends">Hot_ends</a> </td><td></td><td> <a href = "#washers">Washers</a> </td><td> <a href = "#strap_handle">Strap_handle</a> </td><td></td><td></td></tr>
|
||||
<tr><td> <a href = "#hygrometer">Hygrometer</a> </td><td></td><td> <a href = "#wire">Wire</a> </td><td></td><td></td><td></td></tr>
|
||||
<tr><td></td><td></td><td> <a href = "#zipties">Zipties</a> </td><td></td><td></td><td></td></tr>
|
||||
</table>
|
||||
|
||||
---
|
||||
@@ -233,13 +234,16 @@ Also single bearing balls are modelled as just a silver sphere and a BOM entry.
|
||||
| 1 | `ball_bearing(BB686)` | Ball bearing 686ZZ 6mm x 13mm x 5mm |
|
||||
| 1 | `ball_bearing(BB696)` | Ball bearing 696ZZ 6mm x 16mm x 5mm |
|
||||
| 1 | `ball_bearing(BBF623)` | Ball bearing F623-2RS 3mm x 10mm x 4mm |
|
||||
| 1 | `ball_bearing(BBF625)` | Ball bearing F625ZZ 5mm x 16mm x 5mm |
|
||||
| 1 | `ball_bearing(BBF693)` | Ball bearing F693ZZ 3mm x 8mm x 3mm |
|
||||
| 1 | `ball_bearing(BBF695)` | Ball bearing F695ZZ 5mm x 13mm x 4mm |
|
||||
| 1 | `ball_bearing(BBMR63)` | Ball bearing MR63ZZ 3mm x 6mm x 2.5mm |
|
||||
| 1 | `ball_bearing(BBMR83)` | Ball bearing MR83ZZ 3mm x 8mm x 3mm |
|
||||
| 1 | `ball_bearing(BBMR85)` | Ball bearing MR85ZZ 5mm x 8mm x 2.5mm |
|
||||
| 1 | `ball_bearing(BBMR93)` | Ball bearing MR93ZZ 3mm x 9mm x 4mm |
|
||||
| 1 | `ball_bearing(BBMR95)` | Ball bearing MR95ZZ 5mm x 9mm x 3mm |
|
||||
| 1 | `ball_bearing(BBSMR95)` | Ball bearing SMR95ZZ 5mm x 9mm x 2.5mm |
|
||||
| 7 | ` bearing_ball(3)` | Steel ball 3mm |
|
||||
| 8 | ` bearing_ball(3)` | Steel ball 3mm |
|
||||
|
||||
|
||||
<a href="#top">Top</a>
|
||||
@@ -1002,9 +1006,11 @@ D-connectors. Can be any number of ways, male or female, solder buckets, PCB mou
|
||||
| 1 | `d_socket(DCONN15, idc = true)` | D-type 15 way IDC socket |
|
||||
| 1 | `d_plug(DCONN25, pcb = true)` | D-type 25 way PCB mount plug |
|
||||
| 1 | `d_socket(DCONN25, pcb = true)` | D-type 25 way PCB mount socket |
|
||||
| 1 | `d_plug(DCONN37)` | D-type 37 way plug |
|
||||
| 1 | `d_socket(DCONN37)` | D-type 37 way socket |
|
||||
| 1 | `d_plug(DCONN9)` | D-type 9 way plug |
|
||||
| 1 | `d_socket(DCONN9)` | D-type 9 way socket |
|
||||
| 6 | `d_pillar()` | D-type connector pillar |
|
||||
| 8 | `d_pillar()` | D-type connector pillar |
|
||||
|
||||
|
||||
<a href="#top">Top</a>
|
||||
@@ -1459,7 +1465,7 @@ Geared tin can steppers
|
||||
### Modules
|
||||
| Module | Description |
|
||||
|:--- |:--- |
|
||||
| `geared_stepper(type)` | Draw the specified geared stepper |
|
||||
| `geared_stepper(type, angle = 0)` | Draw the specified geared stepper with optional shaft angle. |
|
||||
| `geared_stepper_screw_positions(type)` | Place children at the screw positions |
|
||||
|
||||

|
||||
@@ -2374,6 +2380,8 @@ If a nut is given a child then it gets placed on its top surface.
|
||||
| `nut_square_width(type)` | Width of the square nut |
|
||||
| `nut_trap_depth(type)` | Depth of nut trap |
|
||||
| `nut_washer(type)` | Corresponding washer |
|
||||
| `nut_weld_base_r(type)` | Weld nut base radius |
|
||||
| `nut_weld_base_t(type)` | Weld nut base thickness |
|
||||
|
||||
### Functions
|
||||
| Function | Description |
|
||||
@@ -2393,7 +2401,9 @@ If a nut is given a child then it gets placed on its top surface.
|
||||
| `nut_and_washer(type, nyloc)` | Draw nut with corresponding washer |
|
||||
| `nut_square(type, brass = false, nylon = false)` | Draw specified square nut |
|
||||
| `nut_trap(screw, nut, depth = 0, horizontal = false, supported = false, h = 200)` | Make a nut trap |
|
||||
| `sliding_ball_t_nut(size, w, h, r)` | Draw a sliding ball t nut |
|
||||
| `sliding_t_nut(type)` | Draw a sliding T nut, T nut with a spring loaded ball or a hammer nut. |
|
||||
| `weld_nut(type)` | draw a weld nut |
|
||||
| `wingnut(type)` | Draw a wingnut |
|
||||
|
||||

|
||||
@@ -2436,6 +2446,8 @@ If a nut is given a child then it gets placed on its top surface.
|
||||
| 1 | `nut(M8_nut, nyloc = true)` | Nut M8 x 6.5mm nyloc |
|
||||
| 1 | `nut(M8nS_thin_nut)` | Nut M8nS 13 x 4mm |
|
||||
| 1 | `washer(M6_washer)` | Washer M6 x 12.5mm x 1.5mm |
|
||||
| 1 | `weld nut(M4_weld_nut)` | Weld Nut M4 |
|
||||
| 1 | `weld nut(M6_weld_nut)` | Weld Nut M6 |
|
||||
| 1 | `wingnut(M4_wingnut)` | Wingnut M4 |
|
||||
|
||||
|
||||
@@ -2668,6 +2680,9 @@ PCBs and perfboard with optional components. The shape can be a rectangle with o
|
||||
| 1 | `potentiometer(BTT_encoder)` | BTT_encoder |
|
||||
| 1 | `box_header(2p54header, 4, 2)` | Box header 4 x 2 |
|
||||
| 1 | `box_header(2p54header, 4, 2, right_angle = true)` | Box header 4 x 2 right angle |
|
||||
| 1 | `rd_disc(10mm_disc, "1nF Y2")` | Ceramic capacitor, 10mm_disc 1nF Y2 |
|
||||
| 1 | `rd_disc(6p4mm_disc, "100n")` | Ceramic capacitor, 6p4mm_disc 100n |
|
||||
| 1 | `rd_cm_choke(ATX_CM_CHOKE ,"3.5mH")` | Common mode choke 3.5mH |
|
||||
| 1 | `rd_xtal(ACT1100, "40MHz")` | Crystal ACT1100 40MHz |
|
||||
| 1 | `rd_xtal(ACT1700, "80MHz")` | Crystal ACT1700 80MHz |
|
||||
| 1 | `rd_xtal(C_002RX, "60KHz")` | Crystal C_002RX 60KHz |
|
||||
@@ -2675,14 +2690,15 @@ PCBs and perfboard with optional components. The shape can be a rectangle with o
|
||||
| 1 | `rd_xtal(HC49_4H, "10MHz")` | Crystal HC49_4H 10MHz |
|
||||
| 1 | `d_plug(DCONN9, pcb = true)` | D-type 9 way PCB mount plug |
|
||||
| 1 | `dil_socket(12, 15.24)` | DIL socket 24 x 0.6" |
|
||||
| 1 | `smd_diode(DO214AC)` | DO214AC package SS34 |
|
||||
| 1 | `smd_diode(DO214AC, "SS34")` | DO214AC package SS34 |
|
||||
| 2 | `ax_diode(DO_41, "1N4007")` | Diode 1N4007 |
|
||||
| 2 | `ax_diode(DO_35, "1N4148")` | Diode 1N4148 |
|
||||
| 1 | `rd_electrolytic(ECAP8x12, "220uF35V")` | Electolytic capacitor ECAP8x12 220uF35V |
|
||||
| 1 | `hdmi(hdmi_full)` | HDMI socket |
|
||||
| 1 | `pdip(24, 27C32, w = 15.24)` | IC 27C32 PDIP24 |
|
||||
| 1 | `pdip(8, NE555)` | IC NE555 PDIP8 |
|
||||
| 1 | `idc_transition(2p54header, 5)` | IDC transition header 5 x 2 |
|
||||
| 1 | `smd_inductor(IND2525)` | IND2525 package 4R7 |
|
||||
| 1 | `smd_inductor(IND2525 ,"4R7")` | IND2525 package 4R7 |
|
||||
| 1 | `jst_xh_header(jst_ph_header, 2)` | JST PH connector 2 way |
|
||||
| 1 | `jst_xh_header(jst_xh_header, 2)` | JST XH connector 2 way |
|
||||
| 1 | `jst_xh_header(jst_zh_header, 2)` | JST ZH connector 2 way |
|
||||
@@ -2702,41 +2718,44 @@ PCBs and perfboard with optional components. The shape can be a rectangle with o
|
||||
| 1 | `pin_socket(2p54header, 4, 1)` | Pin socket 4 x 1 |
|
||||
| 1 | `pin_socket(2p54header, 6, 1)` | Pin socket 6 x 1 |
|
||||
| 2 | `pin_socket(2p54header, 8, 1)` | Pin socket 8 x 1 |
|
||||
| 1 | `rd_coil(IND16x10 ,"4.7uH")` | Radial inductor 16x10 4.7uH |
|
||||
| 1 | `rd_transistor(TO92, "78L05")` | Regulator TO92 78L05 |
|
||||
| 1 | `rd_module(HF33F, "012-HSL-3F")` | Relay HF33F / 012-HSL-3F |
|
||||
| 1 | `ax_res(res1_2, 10, tol = 10)` | Resistor 10 Ohms 10% 0.5W |
|
||||
| 1 | `ax_res(res1_4, 100, tol = 2)` | Resistor 100 Ohms 2% 0.25W |
|
||||
| 1 | `ax_res(res1_8, 1000)` | Resistor 1000 Ohms 5% 0.125W |
|
||||
| 1 | `ax_res(res1_4, 10000)` | Resistor 10000 Ohms 5% 0.25W |
|
||||
| 1 | `ax_res(res1_2, 100000)` | Resistor 100000 Ohms 5% 0.5W |
|
||||
| 1 | `ax_res(res1_8, 1e+6, tol = 1)` | Resistor 1e+6 Ohms 1% 0.125W |
|
||||
| 1 | `smd_led(LED0603, orange)` | SMD LED 0603 orange |
|
||||
| 1 | `smd_led(LED0805, red)` | SMD LED 0805 red |
|
||||
| 1 | `smd_led(LED1206, blue)` | SMD LED 1306 blue |
|
||||
| 1 | `smd_tant(TANT_A)` | SMD Tantalum capacitor package A ,1uF, 2.5V |
|
||||
| 1 | `smd_tant(TANT_B)` | SMD Tantalum capacitor package B ,10uF, 10V |
|
||||
| 1 | `smd_tant(TANT_C)` | SMD Tantalum capacitor package C ,100uF, 16V |
|
||||
| 1 | `smd_capacitor(CAP0402)` | SMD capacitor 0402 10nF |
|
||||
| 1 | `smd_capacitor(CAP0502)` | SMD capacitor 0502 10nF |
|
||||
| 1 | `smd_capacitor(CAP0603)` | SMD capacitor 0603 10nF |
|
||||
| 1 | `smd_capacitor(CAP0805)` | SMD capacitor 0805 100nF |
|
||||
| 1 | `smd_capacitor(CAP1206)` | SMD capacitor 1206 1uF |
|
||||
| 1 | `smd_qfp(QFP50P1200X1200X160_64N)` | SMD chip: ATSAM4S4BA, package : QFP50P1200X1200X160_64N |
|
||||
| 1 | `smd_led(LED0603, "orange")` | SMD LED 0603 orange |
|
||||
| 1 | `smd_led(LED0805, "red")` | SMD LED 0805 red |
|
||||
| 1 | `smd_led(LED1206, "blue")` | SMD LED 1306 blue |
|
||||
| 1 | `smd_tant(TANT_A, value = "105e")` | SMD Tantalum capacitor package A ,1uF, 2.5V |
|
||||
| 1 | `smd_tant(TANT_B, value = "106A")` | SMD Tantalum capacitor package B ,10uF, 10V |
|
||||
| 1 | `smd_tant(TANT_C, value = "107C")` | SMD Tantalum capacitor package C ,100uF, 16V |
|
||||
| 1 | `smd_capacitor(CAP0402, value = "10nF")` | SMD capacitor 0402 10nF |
|
||||
| 1 | `smd_capacitor(CAP0502, value = "10nF")` | SMD capacitor 0502 10nF |
|
||||
| 1 | `smd_capacitor(CAP0603, value = "10nF")` | SMD capacitor 0603 10nF |
|
||||
| 1 | `smd_capacitor(CAP0805, value = "100nF")` | SMD capacitor 0805 100nF |
|
||||
| 1 | `smd_capacitor(CAP1206, value = "1uF")` | SMD capacitor 1206 1uF |
|
||||
| 1 | `smd_qfp(QFP50P1200X1200X160_64N, "ATSAM4S4BA")` | SMD chip: ATSAM4S4BA, package : QFP50P1200X1200X160_64N |
|
||||
| 1 | `smd_resistor(L2012C, 1u)` | SMD choke 0805 1u |
|
||||
| 1 | `smd_coax(U_FL_R_SMT_1)` | SMD coax connector type: U_FL_R_SMT_1 |
|
||||
| 1 | `smd_250V_fuse(OMT250, "2A 250V")` | SMD fuse: OMT250 2A 250V |
|
||||
| 1 | `smd_resistor(RES0402, 1)` | SMD resistor 0402 1 0.0625W |
|
||||
| 1 | `smd_resistor(RES0502, 10)` | SMD resistor 0502 10 0.05W |
|
||||
| 1 | `smd_resistor(RES0603, 100)` | SMD resistor 0603 100 0.1W |
|
||||
| 1 | `smd_resistor(RES0805, 1K)` | SMD resistor 0805 1K 0.125W |
|
||||
| 1 | `smd_resistor(RES1206, 1M)` | SMD resistor 1206 1M 0.25W |
|
||||
| 1 | `smd_soic(SOIC14)` | SOIC14 package 74HC00 |
|
||||
| 1 | `smd_soic(SOIC16)` | SOIC16 package ICL323 |
|
||||
| 1 | `smd_soic(SOIC18)` | SOIC18 package PIC18F88 |
|
||||
| 1 | `smd_soic(SOIC8)` | SOIC8 package M34063 |
|
||||
| 1 | `smd_sot(SOT223)` | SOT223 package LM117 |
|
||||
| 1 | `smd_sot(SOT23)` | SOT23 package 2N7000 |
|
||||
| 1 | `smd_soic(SOIC14, "74HC00")` | SOIC14 package 74HC00 |
|
||||
| 1 | `smd_soic(SOIC16, "ICL323")` | SOIC16 package ICL323 |
|
||||
| 1 | `smd_soic(SOIC18, "PIC18F88")` | SOIC18 package PIC18F88 |
|
||||
| 1 | `smd_soic(SOIC8, "M34063")` | SOIC8 package M34063 |
|
||||
| 1 | `smd_sot(SOT223, "LM117")` | SOT223 package LM117 |
|
||||
| 1 | `smd_sot(SOT23, "2N7000")` | SOT23 package 2N7000 |
|
||||
| 1 | `square_button(button_4p5mm)` | Square button 4.5mm |
|
||||
| 1 | `square_button(button_6mm)` | Square button 6mm |
|
||||
| 1 | `smd_pot(TC33X1)` | TC33X1 package 10K |
|
||||
| 1 | `smd_pot(TC33X1, "10K")` | TC33X1 package 10K |
|
||||
| 1 | `pcb(TMC2130)` | TMC2130 |
|
||||
| 1 | `green_terminal(gt_5p08, 2)` | Terminal block 2 way 0.2" |
|
||||
| 2 | `green_terminal(gt_6p35, 2)` | Terminal block 2 way 0.25" |
|
||||
@@ -2749,11 +2768,14 @@ PCBs and perfboard with optional components. The shape can be a rectangle with o
|
||||
| 1 | `terminal_35(4)` | Terminal block 4 way 3.5mm |
|
||||
| 1 | `pcb(test_pcb)` | Test PCB |
|
||||
| 1 | `rd_transistor(E_LINE, "ZTX853")` | Transistor E_LINE ZTX853 |
|
||||
| 1 | `rd_disc(ERZV07D471, "471")` | Varistor, ERZV07D471 471 |
|
||||
| 2 | `vero_pin()` | Vero board pin |
|
||||
| 1 | `wire_link(0.8, 5.08, h = 10.16)` | Wire link 0.8mm x 0.2" |
|
||||
| 1 | `wire_link(0.8, 10.16)` | Wire link 0.8mm x 0.4" |
|
||||
| 1 | `wire_link(0.8, 10.16, h = 0.75, sleeve = [1.5, "red"])` | Wire link 0.8mm x 0.4" with red sleeving |
|
||||
| 1 | `wire_link(0.8, 0, h = 5)` | Wire link 0.8mm x 8mm |
|
||||
| 1 | `rd_boxc(BOXC18x5x11, "X2 rated film capacitor", "0.1uF 250V" )` | X2 rated film capacitor 0.1uF 250V |
|
||||
| 1 | `rd_boxc(BOXC18x10x16, "X2 rated film capacitor", "0.47uF 250V" )` | X2 rated film capacitor 0.47uF 250V |
|
||||
|
||||
|
||||
<a href="#top">Top</a>
|
||||
@@ -3365,9 +3387,14 @@ Timing belt pulleys, both toothed and plain with internal bearings for idlers.
|
||||
### Vitamins
|
||||
| Qty | Module call | BOM entry |
|
||||
| ---:|:--- |:---|
|
||||
| 1 | `pulley(GT2x16_pulley_9)` | Pulley GT2 16 teeth |
|
||||
| 1 | `pulley(GT2x16_pulley)` | Pulley GT2 16 teeth |
|
||||
| 1 | `pulley(GT2x20_pulley_9)` | Pulley GT2 20 teeth |
|
||||
| 1 | `pulley(GT2x80_pulley)` | Pulley GT2 80 teeth |
|
||||
| 1 | `pulley(GT2x16_toothed_idler)` | Pulley GT2 idler 16 teeth |
|
||||
| 1 | `pulley(GT2x16_toothed_idler_9)` | Pulley GT2 idler 16 teeth |
|
||||
| 1 | `pulley(GT2x20_toothed_idler)` | Pulley GT2 idler 20 teeth |
|
||||
| 1 | `pulley(GT2x20_toothed_idler_9)` | Pulley GT2 idler 20 teeth |
|
||||
| 1 | `pulley(GT2x20_plain_idler)` | Pulley GT2 idler smooth 12mm |
|
||||
| 1 | `pulley(GT2x16_plain_idler)` | Pulley GT2 idler smooth 9.63mm |
|
||||
| 1 | `pulley(GT2x16x7_plain_idler)` | Pulley GT2 idler smooth 9.63mm |
|
||||
@@ -3379,8 +3406,9 @@ Timing belt pulleys, both toothed and plain with internal bearings for idlers.
|
||||
| 1 | `screw(M3_grub_screw, 3)` | Screw M3 grub x 3mm |
|
||||
| 2 | `screw(M3_grub_screw, 4.5)` | Screw M3 grub x 4.5mm |
|
||||
| 2 | `screw(M3_grub_screw, 4)` | Screw M3 grub x 4mm |
|
||||
| 4 | `screw(M3_grub_screw, 6)` | Screw M3 grub x 6mm |
|
||||
| 1 | `screw(M4_grub_screw, 6)` | Screw M4 grub x 6mm |
|
||||
| 6 | `screw(M3_grub_screw, 6)` | Screw M3 grub x 6mm |
|
||||
| 3 | `screw(M4_grub_screw, 6)` | Screw M4 grub x 6mm |
|
||||
| 2 | `screw(M5_grub_screw, 6)` | Screw M5 grub x 6mm |
|
||||
|
||||
|
||||
<a href="#top">Top</a>
|
||||
@@ -3399,6 +3427,20 @@ Radial components for PCBs.
|
||||
### Properties
|
||||
| Function | Description |
|
||||
|:--- |:--- |
|
||||
| `rd_boxc_colours(type)` | Case colour and resin fill colour |
|
||||
| `rd_boxc_leads(type)` | Lead pitch, diameter and length |
|
||||
| `rd_boxc_size(type)` | Overall size and corner radius |
|
||||
| `rd_boxc_skirt(type)` | Skirt slot, thickness, height |
|
||||
| `rd_boxc_z(type)` | Height of inner base above PCB. |
|
||||
| `rd_cm_choke_core(type)` | Core OD, ID, width, corner radius |
|
||||
| `rd_cm_choke_csep(type)` | Central separator thickness in slot, total thickness, height |
|
||||
| `rd_cm_choke_seam(type)` | Overlapping semicircular seams to join the two halves of the core width and thickness |
|
||||
| `rd_cm_choke_slot(type)` | Slot to hold central separator width, height, thickness |
|
||||
| `rd_cm_choke_wire(type)` | Wire positions, length and diameter |
|
||||
| `rd_coil_colour(type)` | Core colour |
|
||||
| `rd_coil_size(type)` | OD, ID, height, coil height |
|
||||
| `rd_coil_turns(type)` | Number of turns |
|
||||
| `rd_coil_wire(type)` | Wire pitch, diameter and length |
|
||||
| `rd_disc_colours(type)` | Colours of body and text |
|
||||
| `rd_disc_kind(type)` | Capacitor, etc |
|
||||
| `rd_disc_lead_d(type)` | Lead diameter and sleeve diameter |
|
||||
@@ -3428,6 +3470,9 @@ Radial components for PCBs.
|
||||
### Modules
|
||||
| Module | Description |
|
||||
|:--- |:--- |
|
||||
| `rd_box_cap(type, kind, value)` | Draw radial boxed film capacitor |
|
||||
| `rd_cm_choke(type, value)` | Draw specified common mode choke. |
|
||||
| `rd_coil(type, value, pitch = undef)` | Draw the specified vertical coil |
|
||||
| `rd_disc(type, value, pitch = undef, z = 0, tail = 3)` | Draw a radial disc component |
|
||||
| `rd_electrolytic(type, value, pitch = undef, z = 0, tail = 3)` | Draw a radial electrolytic capcacitor |
|
||||
| `rd_module(type, value)` | Draw a PCB mounted potted module, e.g. PSU or relay |
|
||||
@@ -3439,7 +3484,9 @@ Radial components for PCBs.
|
||||
### Vitamins
|
||||
| Qty | Module call | BOM entry |
|
||||
| ---:|:--- |:---|
|
||||
| 1 | `rd_disc(10mm_disc, "1nF Y2")` | Ceramic capacitor, 10mm_disc 1nF Y2 |
|
||||
| 1 | `rd_disc(6p4mm_disc, "10nF")` | Ceramic capacitor, 6p4mm_disc 10nF |
|
||||
| 1 | `rd_cm_choke(ATX_CM_CHOKE ,"3.5mH")` | Common mode choke 3.5mH |
|
||||
| 1 | `rd_xtal(ACT1100, "ACT1100")` | Crystal ACT1100 ACT1100 |
|
||||
| 1 | `rd_xtal(ACT1700, "ACT1700")` | Crystal ACT1700 ACT1700 |
|
||||
| 1 | `rd_xtal(C_002RX, "C_002RX")` | Crystal C_002RX C_002RX |
|
||||
@@ -3449,10 +3496,13 @@ Radial components for PCBs.
|
||||
| 1 | `rd_module(LDE10_20B, "12V 900ma")` | PSU LDE10_20B / 12V 900ma |
|
||||
| 1 | `rd_module(VCE03, "12V 250ma")` | PSU VCE03 / 12V 250ma |
|
||||
| 2 | `pcb(PERF70x50)` | Perfboard 70 x 50mm |
|
||||
| 1 | `rd_coil(IND16x10 ,"4.7uH")` | Radial inductor 16x10 4.7uH |
|
||||
| 1 | `rd_module(HF33F, "012-HSL3F")` | Relay HF33F / 012-HSL3F |
|
||||
| 1 | `rd_transistor(E_LINE, "ZTX853")` | Transistor E_LINE ZTX853 |
|
||||
| 1 | `rd_transistor(TO92, "BC337")` | Transistor TO92 BC337 |
|
||||
| 1 | `rd_disc(ERZV07D471, "470V")` | Varistor, ERZV07D471 470V |
|
||||
| 1 | `rd_boxc(BOXC18x5x11, "X2 rated film capacitor", "0.1uF 250V" )` | X2 rated film capacitor 0.1uF 250V |
|
||||
| 1 | `rd_boxc(BOXC18x10x16, "X2 rated film capacitor", "0.47uF 250V" )` | X2 rated film capacitor 0.47uF 250V |
|
||||
|
||||
|
||||
<a href="#top">Top</a>
|
||||
@@ -3708,6 +3758,48 @@ These items are symmetrical, so by default the origin is in the centre but it ca
|
||||
| 1 | `studding(8, 80)` | Threaded rod M8 x 80mm |
|
||||
|
||||
|
||||
<a href="#top">Top</a>
|
||||
|
||||
---
|
||||
<a name="rod_ends"></a>
|
||||
## Rod_ends
|
||||
A rod end, sometimes called a spherical bearing or rod-end eye, is a component used in mechanical systems to create a flexible connection between two parts.
|
||||
|
||||
[vitamins/rod_ends.scad](vitamins/rod_ends.scad) Object definitions.
|
||||
|
||||
[vitamins/rod_end.scad](vitamins/rod_end.scad) Implementation.
|
||||
|
||||
[tests/rod_ends.scad](tests/rod_ends.scad) Code for this example.
|
||||
|
||||
### Properties
|
||||
| Function | Description |
|
||||
|:--- |:--- |
|
||||
| `rod_end_bearing_bore(type)` | radius of the bore hole in the bearing |
|
||||
| `rod_end_bearing_od(type)` | Outer diameter of the bearing |
|
||||
| `rod_end_bearing_rim(type)` | Outer rim thickness guesstimate |
|
||||
| `rod_end_bearing_shield_colour(type)` | Shield colour, "silver" for metal |
|
||||
| `rod_end_bearing_width(type)` | Width |
|
||||
| `rod_end_bore_width(type)` | Width |
|
||||
| `rod_end_overall_length(type)` | overall length of the rod end |
|
||||
| `rod_end_screw_length(type)` | length of the screw from eye center, not the bore |
|
||||
| `rod_end_screw_radius(type)` | radius of the screw end, not the bore |
|
||||
| `rod_end_sphere_radius(type)` | radius of the rod end sphere |
|
||||
| `rod_end_sphere_seg_width(type)` | the width of the pivoting part, effectively a (sphere - sphereCaps - center bore) |
|
||||
| `rod_end_thread_length(type)` | length of the threads |
|
||||
|
||||
### Modules
|
||||
| Module | Description |
|
||||
|:--- |:--- |
|
||||
| `rod_end_bearing(type)` | Draw a rod end bearing |
|
||||
|
||||

|
||||
|
||||
### Vitamins
|
||||
| Qty | Module call | BOM entry |
|
||||
| ---:|:--- |:---|
|
||||
| 1 | `Rod End Bearing(RE_m5_bearing, 33)` | Rod End Bearing 5 x 33mm |
|
||||
|
||||
|
||||
<a href="#top">Top</a>
|
||||
|
||||
---
|
||||
@@ -3841,11 +3933,13 @@ For an explanation of `screw_polysink()` see <https://hydraraptor.blogspot.com/2
|
||||
| 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_dome_screw, 30)` | Screw M6 dome 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_dome_screw, 35)` | Screw M8 dome 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 |
|
||||
@@ -4147,6 +4241,10 @@ E.g. 475A is 4.7uF 10V on the parts list.
|
||||
### Properties
|
||||
| Function | Description |
|
||||
|:--- |:--- |
|
||||
| `smd_250V_fuse_base(type)` | Base length |
|
||||
| `smd_250V_fuse_size(type)` | Bounding box of the body |
|
||||
| `smd_250V_fuse_step(type)` | End cutout length, width and height |
|
||||
| `smd_250V_fuse_z(type)` | Height of body above the PCB surface |
|
||||
| `smd_cap_end_cap(type)` | End cap width |
|
||||
| `smd_cap_size(type)` | Body length, width |
|
||||
| `smd_coax_base_r(type)` | Corner radius of the base |
|
||||
@@ -4211,6 +4309,7 @@ E.g. 475A is 4.7uF 10V on the parts list.
|
||||
### Modules
|
||||
| Module | Description |
|
||||
|:--- |:--- |
|
||||
| `smd_250V_fuse(type, value)` | Draw an SMD mains fuse |
|
||||
| `smd_capacitor(type, height, value = undef)` | Draw an SMD capacitor with specified height |
|
||||
| `smd_coax(type)` | Draw an SMD coaxial connector |
|
||||
| `smd_diode(type, value)` | Draw an SMD diode |
|
||||
@@ -4228,38 +4327,39 @@ E.g. 475A is 4.7uF 10V on the parts list.
|
||||
### Vitamins
|
||||
| Qty | Module call | BOM entry |
|
||||
| ---:|:--- |:---|
|
||||
| 1 | `smd_inductor(CDRH104)` | CDRH104 package 10R |
|
||||
| 1 | `smd_diode(DO214AC)` | DO214AC package SS34 |
|
||||
| 1 | `smd_inductor(IND2525)` | IND2525 package 4R7 |
|
||||
| 1 | `smd_led(LED0603, green)` | SMD LED 0603 green |
|
||||
| 1 | `smd_led(LED0805, blue)` | SMD LED 0805 blue |
|
||||
| 1 | `smd_led(LED1206, red)` | SMD LED 1306 red |
|
||||
| 1 | `smd_tant(TANT_A)` | SMD Tantalum capacitor package A ,1uF, 2.5V |
|
||||
| 1 | `smd_tant(TANT_B)` | SMD Tantalum capacitor package B ,10uF, 6.3V |
|
||||
| 1 | `smd_tant(TANT_C)` | SMD Tantalum capacitor package C ,100uF, 10V |
|
||||
| 1 | `smd_inductor(CDRH104 ,"10R")` | CDRH104 package 10R |
|
||||
| 1 | `smd_diode(DO214AC, "SS34")` | DO214AC package SS34 |
|
||||
| 1 | `smd_inductor(IND2525 ,"4R7")` | IND2525 package 4R7 |
|
||||
| 1 | `smd_led(LED0603, "green")` | SMD LED 0603 green |
|
||||
| 1 | `smd_led(LED0805, "blue")` | SMD LED 0805 blue |
|
||||
| 1 | `smd_led(LED1206, "red")` | SMD LED 1306 red |
|
||||
| 1 | `smd_tant(TANT_A, value = "105e")` | SMD Tantalum capacitor package A ,1uF, 2.5V |
|
||||
| 1 | `smd_tant(TANT_B, value = "106J")` | SMD Tantalum capacitor package B ,10uF, 6.3V |
|
||||
| 1 | `smd_tant(TANT_C, value = "107A")` | SMD Tantalum capacitor package C ,100uF, 10V |
|
||||
| 1 | `smd_capacitor(CAP0402)` | SMD capacitor 0402 |
|
||||
| 1 | `smd_capacitor(CAP0502)` | SMD capacitor 0502 |
|
||||
| 1 | `smd_capacitor(CAP0603)` | SMD capacitor 0603 |
|
||||
| 1 | `smd_capacitor(CAP0805)` | SMD capacitor 0805 |
|
||||
| 1 | `smd_capacitor(CAP1206)` | SMD capacitor 1206 |
|
||||
| 1 | `smd_capacitor(CAP1210)` | SMD capacitor 1210 |
|
||||
| 1 | `smd_qfp(QFP50P1200X1200X160_64N)` | SMD chip: ATSAM4S4BA, package : QFP50P1200X1200X160_64N |
|
||||
| 1 | `smd_qfp(QFP50P1200X1200X160_64N, "ATSAM4S4BA")` | SMD chip: ATSAM4S4BA, package : QFP50P1200X1200X160_64N |
|
||||
| 1 | `smd_resistor(L2012C, 10u)` | SMD choke 0805 10u |
|
||||
| 1 | `smd_coax(U_FL_R_SMT_1)` | SMD coax connector type: U_FL_R_SMT_1 |
|
||||
| 1 | `smd_250V_fuse(OMT250, "2A 250V")` | SMD fuse: OMT250 2A 250V |
|
||||
| 1 | `smd_resistor(RES0402, 1R0)` | SMD resistor 0402 1R0 0.0625W |
|
||||
| 1 | `smd_resistor(RES0502, 10)` | SMD resistor 0502 10 0.05W |
|
||||
| 1 | `smd_resistor(RES0603, 100)` | SMD resistor 0603 100 0.1W |
|
||||
| 1 | `smd_resistor(RES0805, 10M)` | SMD resistor 0805 10M 0.125W |
|
||||
| 1 | `smd_resistor(RES1206, 100K)` | SMD resistor 1206 100K 0.25W |
|
||||
| 1 | `smd_soic(SOIC14)` | SOIC14 package SOIC14 |
|
||||
| 1 | `smd_soic(SOIC16)` | SOIC16 package SOIC16 |
|
||||
| 1 | `smd_soic(SOIC18)` | SOIC18 package SOIC18 |
|
||||
| 1 | `smd_soic(SOIC8)` | SOIC8 package SOIC8 |
|
||||
| 1 | `smd_sot(SOT223)` | SOT223 package FZT851 |
|
||||
| 1 | `smd_sot(SOT23)` | SOT23 package 2N7000 |
|
||||
| 1 | `smd_soic(SOT23_6)` | SOT23_6 package SOT23_6 |
|
||||
| 1 | `smd_pot(TC33X1)` | TC33X1 package 10K |
|
||||
| 1 | `smd_soic(TSOT23_8)` | TSOT23_8 package TSOT23_8 |
|
||||
| 1 | `smd_soic(SOIC14, "SOIC14")` | SOIC14 package SOIC14 |
|
||||
| 1 | `smd_soic(SOIC16, "SOIC16")` | SOIC16 package SOIC16 |
|
||||
| 1 | `smd_soic(SOIC18, "SOIC18")` | SOIC18 package SOIC18 |
|
||||
| 1 | `smd_soic(SOIC8, "SOIC8")` | SOIC8 package SOIC8 |
|
||||
| 1 | `smd_sot(SOT223, "FZT851")` | SOT223 package FZT851 |
|
||||
| 1 | `smd_sot(SOT23, "2N7000")` | SOT23 package 2N7000 |
|
||||
| 1 | `smd_soic(SOT23_6, "SOT23_6")` | SOT23_6 package SOT23_6 |
|
||||
| 1 | `smd_pot(TC33X1, "10K")` | TC33X1 package 10K |
|
||||
| 1 | `smd_soic(TSOT23_8, "TSOT23_8")` | TSOT23_8 package TSOT23_8 |
|
||||
|
||||
|
||||
<a href="#top">Top</a>
|
||||
@@ -4384,6 +4484,7 @@ By default springs have their origin at the bottom but can be centered.
|
||||
| ---:|:--- |:---|
|
||||
| 1 | `comp_spring(batt_spring)` | Spring 5 - 6mm spiral OD, 0.5mm gauge x 8mm long, closed end |
|
||||
| 1 | `comp_spring(peg_spring)` | Spring 6.4mm OD, 0.9mm gauge x 15.5mm long, closed end |
|
||||
| 1 | `comp_spring(yellow_bed_spring)` | Spring 8mm OD, 0.9mm gauge x 20mm long, closed end |
|
||||
|
||||
|
||||
<a href="#top">Top</a>
|
||||
@@ -4483,18 +4584,19 @@ NEMA stepper motor model.
|
||||
| Qty | Module call | BOM entry |
|
||||
| ---:|:--- |:---|
|
||||
| 4 | `ring_terminal(M3_ringterm)` | Ring terminal 3mm |
|
||||
| 20 | `screw(M3_pan_screw, 8)` | Screw M3 pan x 8mm |
|
||||
| 1 | `NEMA(NEMA14_36)` | Stepper motor NEMA14 x 36mm |
|
||||
| 1 | `NEMA(NEMA16_19)` | Stepper motor NEMA16 x 19.2mm |
|
||||
| 1 | `NEMA(NEMA17_27)` | Stepper motor NEMA17 x 26.5mm |
|
||||
| 1 | `NEMA(NEMA17_34)` | Stepper motor NEMA17 x 34mm |
|
||||
| 1 | `NEMA(NEMA17_40)` | Stepper motor NEMA17 x 40mm |
|
||||
| 1 | `NEMA(NEMA17_47)` | Stepper motor NEMA17 x 47mm |
|
||||
| 1 | `NEMA(NEMA23_51)` | Stepper motor NEMA22 x 51.2mm |
|
||||
| 1 | `NEMA(NEMA8_30)` | Stepper motor NEMA8 x 30mm |
|
||||
| 1 | `NEMA(NEMA8_30BH)` | 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 |
|
||||
| 25 | `screw(M3_pan_screw, 8)` | Screw M3 pan x 8mm |
|
||||
| 1 | `NEMA(NEMA14_36)` | Stepper motor NEMA14 x 36mm (5x21 shaft) |
|
||||
| 1 | `NEMA(NEMA16_19)` | Stepper motor NEMA16 x 19.2mm (5x12 shaft) |
|
||||
| 1 | `NEMA(NEMA17_27)` | Stepper motor NEMA17 x 26.5mm (5x26.5 shaft) |
|
||||
| 1 | `NEMA(NEMA17_34)` | Stepper motor NEMA17 x 34mm (5x24 shaft) |
|
||||
| 1 | `NEMA(NEMA17_40)` | Stepper motor NEMA17 x 40mm (5x20 shaft) |
|
||||
| 1 | `NEMA(NEMA17_47)` | Stepper motor NEMA17 x 47mm (5x24 shaft) |
|
||||
| 1 | `NEMA(NEMA17_47L80)` | Stepper motor NEMA17 x 47mm (5x80 shaft) |
|
||||
| 1 | `NEMA(NEMA23_51)` | Stepper motor NEMA22 x 51.2mm (6.35x24 shaft) |
|
||||
| 1 | `NEMA(NEMA8_30)` | Stepper motor NEMA8 x 30mm (4x6 shaft) |
|
||||
| 1 | `NEMA(NEMA8_30BH)` | Stepper motor NEMA8 x 30mm (5x12 shaft) |
|
||||
| 21 | `washer(M3_washer)` | Washer M3 x 7mm x 0.5mm |
|
||||
| 25 | `star_washer(M3_washer)` | Washer star M3 x 0.5mm |
|
||||
|
||||
|
||||
<a href="#top">Top</a>
|
||||
@@ -6491,8 +6593,9 @@ Creative Commons - Attribution - Share Alike license (see <https://creativecommo
|
||||
| 1 | `screw(M3_grub_screw, 3)` | Screw M3 grub x 3mm |
|
||||
| 2 | `screw(M3_grub_screw, 4.5)` | Screw M3 grub x 4.5mm |
|
||||
| 2 | `screw(M3_grub_screw, 4)` | Screw M3 grub x 4mm |
|
||||
| 4 | `screw(M3_grub_screw, 6)` | Screw M3 grub x 6mm |
|
||||
| 1 | `screw(M4_grub_screw, 6)` | Screw M4 grub x 6mm |
|
||||
| 6 | `screw(M3_grub_screw, 6)` | Screw M3 grub x 6mm |
|
||||
| 3 | `screw(M4_grub_screw, 6)` | Screw M4 grub x 6mm |
|
||||
| 2 | `screw(M5_grub_screw, 6)` | Screw M5 grub x 6mm |
|
||||
|
||||
### Printed
|
||||
| Qty | Filename |
|
||||
@@ -6500,12 +6603,17 @@ Creative Commons - Attribution - Share Alike license (see <https://creativecommo
|
||||
| 1 | printed_pulley_GT2x12_pulley.stl |
|
||||
| 1 | printed_pulley_GT2x16_plain_idler.stl |
|
||||
| 1 | printed_pulley_GT2x16_pulley.stl |
|
||||
| 1 | printed_pulley_GT2x16_pulley_9.stl |
|
||||
| 1 | printed_pulley_GT2x16_toothed_idler.stl |
|
||||
| 1 | printed_pulley_GT2x16_toothed_idler_9.stl |
|
||||
| 1 | printed_pulley_GT2x16x7_plain_idler.stl |
|
||||
| 1 | printed_pulley_GT2x20_plain_idler.stl |
|
||||
| 1 | printed_pulley_GT2x20_pulley_9.stl |
|
||||
| 1 | printed_pulley_GT2x20_toothed_idler.stl |
|
||||
| 1 | printed_pulley_GT2x20_toothed_idler_9.stl |
|
||||
| 1 | printed_pulley_GT2x20ob_pulley.stl |
|
||||
| 1 | printed_pulley_GT2x20um_pulley.stl |
|
||||
| 1 | printed_pulley_GT2x80_pulley.stl |
|
||||
| 1 | printed_pulley_T2p5x16_pulley.stl |
|
||||
| 1 | printed_pulley_T5x10_pulley.stl |
|
||||
|
||||
@@ -6514,13 +6622,18 @@ Creative Commons - Attribution - Share Alike license (see <https://creativecommo
|
||||
| ---:|:--- |
|
||||
| 1 | printed_pulley_GT2x12_pulley_assembly |
|
||||
| 1 | printed_pulley_GT2x16_plain_idler_assembly |
|
||||
| 1 | printed_pulley_GT2x16_pulley_9_assembly |
|
||||
| 1 | printed_pulley_GT2x16_pulley_assembly |
|
||||
| 1 | printed_pulley_GT2x16_toothed_idler_9_assembly |
|
||||
| 1 | printed_pulley_GT2x16_toothed_idler_assembly |
|
||||
| 1 | printed_pulley_GT2x16x7_plain_idler_assembly |
|
||||
| 1 | printed_pulley_GT2x20_plain_idler_assembly |
|
||||
| 1 | printed_pulley_GT2x20_pulley_9_assembly |
|
||||
| 1 | printed_pulley_GT2x20_toothed_idler_9_assembly |
|
||||
| 1 | printed_pulley_GT2x20_toothed_idler_assembly |
|
||||
| 1 | printed_pulley_GT2x20ob_pulley_assembly |
|
||||
| 1 | printed_pulley_GT2x20um_pulley_assembly |
|
||||
| 1 | printed_pulley_GT2x80_pulley_assembly |
|
||||
| 1 | printed_pulley_T2p5x16_pulley_assembly |
|
||||
| 1 | printed_pulley_T5x10_pulley_assembly |
|
||||
|
||||
@@ -7017,7 +7130,7 @@ allows flexible positioning of the motors.
|
||||
| 2 | `pulley(GT2x20ob_pulley)` | Pulley GT2OB 20 teeth |
|
||||
| 8 | `screw(M3_cap_screw, 20)` | Screw M3 cap x 20mm |
|
||||
| 4 | `screw(M3_grub_screw, 6)` | Screw M3 grub x 6mm |
|
||||
| 2 | `NEMA(NEMA17_40)` | Stepper motor NEMA17 x 40mm |
|
||||
| 2 | `NEMA(NEMA17_40)` | Stepper motor NEMA17 x 40mm (5x20 shaft) |
|
||||
|
||||
|
||||
<a href="#top">Top</a>
|
||||
@@ -7484,6 +7597,7 @@ Each vertex, apart from the first and the last, has an associated radius and the
|
||||
| `segmented_path(path, min_segment)` | Add points to a path to enforce a minimum segment length |
|
||||
| `skin_faces(points, npoints, facets, loop, offset = 0)` | Create the mesh for the swept volume without end caps |
|
||||
| `spiral_paths(path, n, r, twists, start_angle)` | Create a new paths which spiral around the given path. Use for making twisted cables |
|
||||
| `spiral_wrap(path, profile, pitch, turns)` | Create a path that spirals around the specified profile with the given pitch. |
|
||||
| `sweep(path, profile, loop = false, twist = 0)` | Generate the point list and face list of the swept volume |
|
||||
|
||||
### Modules
|
||||
|
@@ -61,7 +61,7 @@ test_pcb = ["test_pcb", "Test PCB",
|
||||
// components
|
||||
[
|
||||
[ 20, -5, 180, "trimpot10"],
|
||||
[ 20, -15, 90, "trimpot10", true],
|
||||
[ 20, -18, 90, "trimpot10", true],
|
||||
[ 19, 2, 90, "smd_led", LED1206, "blue"],
|
||||
[ 16, 2, 90, "smd_led", LED0805, "red"],
|
||||
[ 13, 2, 90, "smd_led", LED0603, "orange"],
|
||||
@@ -82,6 +82,7 @@ test_pcb = ["test_pcb", "Test PCB",
|
||||
[ 32, 3, -90, "smd_diode",DO214AC, "SS34"],
|
||||
[ 26, 2, -90, "smd_pot", TC33X1, "10K"],
|
||||
[ 26, 6, -90, "smd_coax",U_FL_R_SMT_1],
|
||||
[ 8, 23, 0, "smd_250V_fuse", OMT250, "2A 250V"],
|
||||
|
||||
[ 26, 10, -90, "smd_sot", SOT23, "2N7000"],
|
||||
[ 28, 16, -90, "smd_sot", SOT223, "LM117"],
|
||||
@@ -116,8 +117,8 @@ test_pcb = ["test_pcb", "Test PCB",
|
||||
[ 5, 220, 180, "hdmi"],
|
||||
[ 3, 235, 180, "mini_hdmi"],
|
||||
[ 38, 190, -90, "text", 25, 4, "Silkscreen", "Liberation Sans:style=Bold"],
|
||||
[ 25, 200, 0, "buzzer", 4.5, 8.5],
|
||||
[ 25, 218, 0, "buzzer"],
|
||||
[ 25, 205, 0, "buzzer", 4.5, 8.5],
|
||||
[ 25, 220, 0, "buzzer"],
|
||||
|
||||
[ 45, 1, 0, "link", inch(0.4), 0.75, undef, undef, [1.5, "red"]], // Sleeved link
|
||||
[ 45, 3, 0, "link", inch(0.4)], // Flat link
|
||||
@@ -130,6 +131,11 @@ test_pcb = ["test_pcb", "Test PCB",
|
||||
[ 35, 17, 0, "vero_pin", true],
|
||||
[ 35, 8, 180, "rd_transistor", TO92, "78L05", undef, undef, "Regulator"],
|
||||
[ 35, 13, 180, "rd_transistor", E_LINE, "ZTX853"],
|
||||
[ 25, 190, 0, "rd_electrolytic", ECAP8x11, "220uF35V"],
|
||||
[ 25, 180, 90, "rd_disc", ERZV07D471, "471"],
|
||||
[ 25, 170, 90, "rd_disc", 6p4mm_disc, "100n"],
|
||||
[ 30, 170, 90, "rd_disc", 10mm_disc, "1nF Y2"],
|
||||
[ 90, 135, -90, "rd_module", HF33F, "012-HSL-3F"],
|
||||
[ 35, 3, 0, "link", 0, 5], // Vertical wire
|
||||
|
||||
[ 60, 3, 0, "link", inch(0.2), inch(0.4)], // Raised link
|
||||
@@ -147,6 +153,9 @@ test_pcb = ["test_pcb", "Test PCB",
|
||||
[ 30, 130,-90, "rd_xtal", ACT1100, "40MHz", 0.5 ],
|
||||
[ 30, 150,-90, "rd_xtal", ACT1700, "80MHz", 0.5 ],
|
||||
|
||||
[ 93, 230,-90, "rd_box_cap", BOXC18x10x16, "X2 rated film capacitor", "0.47uF 250V" ],
|
||||
[ 93, 210,-90, "rd_box_cap", BOXC18x5x11, "X2 rated film capacitor", "0.1uF 250V" ],
|
||||
|
||||
[ 77, 15, -90, "flex"],
|
||||
[ 95, 15, -90, "flat_flex"],
|
||||
[ 87, 15, -90, "flat_flex", true],
|
||||
@@ -179,9 +188,9 @@ test_pcb = ["test_pcb", "Test PCB",
|
||||
[ 55, 170, 0, "button_4p5mm"],
|
||||
[ 50, 185, 0, "microswitch", small_microswitch],
|
||||
[ 52, 200, 0, "pcb", 11, TMC2130 ],
|
||||
[ 80, 210, 0, "pdip", 24, "27C32", true, inch(0.6) ],
|
||||
[ 76, 210, 0, "pdip", 24, "27C32", true, inch(0.6) ],
|
||||
[ 80, 180, 0, "pdip", 8, "NE555" ],
|
||||
[ 71, 180, 0, "smd_inductor", IND2525, "4R7"],
|
||||
[ 71, 180, 0, "smd_inductor", IND2525, "4R7"],
|
||||
|
||||
[ 87, 166, -90, "smd_soic", SOIC18, "PIC18F88"],
|
||||
[ 78, 166, -90, "smd_soic", SOIC14, "74HC00"],
|
||||
@@ -189,14 +198,16 @@ test_pcb = ["test_pcb", "Test PCB",
|
||||
[ 64, 166, -90, "smd_soic", SOIC8, "M34063"],
|
||||
[ 70, 150, 0, "chip", 10, 5, 1, grey(20)],
|
||||
|
||||
[90, 140, -90, "relay", HF33F, "012-HSL-3F"],
|
||||
[ 90, 140, -90, "relay", HF33F, "012-HSL-3F"],
|
||||
|
||||
|
||||
[ 52, 206, 0, "2p54socket", 8, 1 ],
|
||||
[ 52, 194, 0, "2p54socket", 8, 1, false, 0, false, "red" ],
|
||||
[ 50, 220, 0, "standoff", 5, 4.5, 12.5, 2.54],
|
||||
[ 50, 240, 0, "potentiometer"],
|
||||
[ 55, 220, 0, "standoff", 5, 4.5, 12.5, 2.54],
|
||||
[ 60, 240, 0, "potentiometer"],
|
||||
[ 75, 240, 0, "potentiometer", KY_040_encoder, 8],
|
||||
[ 40, 235, -90, "rd_cm_choke", ATX_CM_CHOKE, "3.5mH"],
|
||||
[ 40, 217, 0, "rd_coil", IND16x10, "4.7uH"],
|
||||
[ 30, 85, -90, "7seg", WT5011BSR, 2],
|
||||
[ 30, 55, -90, "D_plug", DCONN9],
|
||||
],
|
||||
|
@@ -64,7 +64,12 @@ module smds() {
|
||||
let(s = smd_soics[$i])
|
||||
smd_soic(s, s[0]);
|
||||
|
||||
translate([0, 39])
|
||||
translate([0, 36.5])
|
||||
layout([for(i = smd_250V_fuses) smd_250V_fuse_size(i).x], 1)
|
||||
let(i = smd_250V_fuses[$i])
|
||||
smd_250V_fuse(i, "2A 250V");
|
||||
|
||||
translate([0, 45])
|
||||
layout([for(i = smd_inductors) smd_inductor_leads(i).x], 1)
|
||||
let(i = smd_inductors[$i])
|
||||
smd_inductor(i, ["4R7", "10R"][$i % 2]);
|
||||
|
@@ -26,7 +26,7 @@ include <../vitamins/cameras.scad>
|
||||
use <../vitamins/pcb.scad>
|
||||
|
||||
module camera_housings()
|
||||
layout([for(c = cameras) pcb_length(camera_pcb(c))], 10, false) let(c = cameras[$i])
|
||||
layout([for(c = cameras) pcb_length(camera_pcb(c))], 15, false) let(c = cameras[$i])
|
||||
if(pcb_screw(camera_pcb(c)))
|
||||
camera_fastened_assembly(c, 3);
|
||||
|
||||
|
@@ -85,6 +85,13 @@ module nuts() {
|
||||
if(n == M8_nut)
|
||||
nut_square(M8nS_thin_nut);
|
||||
}
|
||||
|
||||
translate([0,140]) {
|
||||
if(n==M4_nut)
|
||||
weld_nut(M4_weld_nut);
|
||||
if(n==M6_nut)
|
||||
weld_nut(M6_weld_nut);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
Before Width: | Height: | Size: 54 KiB After Width: | Height: | Size: 54 KiB |
Before Width: | Height: | Size: 135 KiB After Width: | Height: | Size: 132 KiB |
Before Width: | Height: | Size: 116 KiB After Width: | Height: | Size: 116 KiB |
Before Width: | Height: | Size: 62 KiB After Width: | Height: | Size: 63 KiB |
Before Width: | Height: | Size: 128 KiB After Width: | Height: | Size: 129 KiB |
Before Width: | Height: | Size: 122 KiB After Width: | Height: | Size: 116 KiB |
Before Width: | Height: | Size: 145 KiB After Width: | Height: | Size: 147 KiB |
Before Width: | Height: | Size: 118 KiB After Width: | Height: | Size: 124 KiB |
Before Width: | Height: | Size: 74 KiB After Width: | Height: | Size: 74 KiB |
Before Width: | Height: | Size: 41 KiB After Width: | Height: | Size: 42 KiB |
Before Width: | Height: | Size: 113 KiB After Width: | Height: | Size: 114 KiB |
Before Width: | Height: | Size: 147 KiB After Width: | Height: | Size: 149 KiB |
Before Width: | Height: | Size: 102 KiB After Width: | Height: | Size: 102 KiB |
Before Width: | Height: | Size: 151 KiB After Width: | Height: | Size: 151 KiB |
Before Width: | Height: | Size: 61 KiB After Width: | Height: | Size: 60 KiB |
Before Width: | Height: | Size: 126 KiB After Width: | Height: | Size: 126 KiB |
Before Width: | Height: | Size: 197 KiB After Width: | Height: | Size: 218 KiB |
Before Width: | Height: | Size: 241 KiB After Width: | Height: | Size: 241 KiB |
Before Width: | Height: | Size: 116 KiB After Width: | Height: | Size: 135 KiB |
Before Width: | Height: | Size: 45 KiB After Width: | Height: | Size: 40 KiB |
Before Width: | Height: | Size: 200 KiB After Width: | Height: | Size: 235 KiB |
Before Width: | Height: | Size: 93 KiB After Width: | Height: | Size: 92 KiB |
Before Width: | Height: | Size: 193 KiB After Width: | Height: | Size: 194 KiB |
BIN
tests/png/rod_ends.png
Normal file
After Width: | Height: | Size: 62 KiB |
Before Width: | Height: | Size: 160 KiB After Width: | Height: | Size: 165 KiB |
Before Width: | Height: | Size: 190 KiB After Width: | Height: | Size: 189 KiB |
Before Width: | Height: | Size: 80 KiB After Width: | Height: | Size: 80 KiB |
Before Width: | Height: | Size: 91 KiB After Width: | Height: | Size: 182 KiB |
Before Width: | Height: | Size: 104 KiB After Width: | Height: | Size: 111 KiB |
Before Width: | Height: | Size: 168 KiB After Width: | Height: | Size: 169 KiB |
Before Width: | Height: | Size: 222 KiB After Width: | Height: | Size: 222 KiB |
@@ -22,9 +22,16 @@ include <../vitamins/pulleys.scad>
|
||||
include <../printed/printed_pulleys.scad>
|
||||
use <../utils/layout.scad>
|
||||
|
||||
n = len(pulleys) - 1;
|
||||
half = floor((n - 1) / 2);
|
||||
split = n - half;
|
||||
pulleys1 = [for(i = [0 : split - 1]) pulleys[i]];
|
||||
pulleys2 = [for(i = [split : n - 1]) pulleys[i]];
|
||||
|
||||
module printed_pulley_test(show_metal = false) {
|
||||
layout([for (p = pulleys) pulley_flange_dia(p)]) let(p = pulleys[$i]) {
|
||||
max_d = max([for(p = concat(pulleys1, pulleys2)) pulley_flange_dia(p)]);
|
||||
|
||||
module do_list(list, show_metal) {
|
||||
layout([for (p = list) max_d]) let(p = list[$i]) {
|
||||
rotate(-145)
|
||||
if($preview)
|
||||
printed_pulley_assembly(p);
|
||||
@@ -33,12 +40,23 @@ module printed_pulley_test(show_metal = false) {
|
||||
|
||||
if(show_metal)
|
||||
not_on_bom()
|
||||
translate([0, 20])
|
||||
translate([0, 60])
|
||||
rotate(-145)
|
||||
pulley_assembly(p);
|
||||
}
|
||||
}
|
||||
|
||||
module printed_pulley_test(show_metal = false) {
|
||||
translate([0, 10])
|
||||
do_list(pulleys1, show_metal);
|
||||
|
||||
translate([0, -10])
|
||||
do_list(pulleys2, show_metal);
|
||||
|
||||
translate([split * (max_d + 5), 0])
|
||||
do_list([pulleys[n]], show_metal);
|
||||
}
|
||||
|
||||
if($preview)
|
||||
printed_pulley_test(true);
|
||||
else
|
||||
|
@@ -21,20 +21,34 @@ include <../vitamins/pcbs.scad>
|
||||
|
||||
module radials() {
|
||||
pcb = PERF70x50;
|
||||
$solder = pcb_solder(pcb);
|
||||
pcb(pcb);
|
||||
|
||||
translate([0, pcb_width(pcb) + inch(0.2)]) {
|
||||
pcb(pcb);
|
||||
|
||||
pcb_grid(pcb, 10, 12)
|
||||
rd_module(rd_modules[2], "12V 900ma");
|
||||
|
||||
for(i = [0: len(rd_electrolytics) - 1])
|
||||
for(i = [0 : len(rd_electrolytics) - 1])
|
||||
pcb_grid(pcb, i * 3, 2)
|
||||
rotate(-90)
|
||||
rd_electrolytic(rd_electrolytics[i], "220uF35V", z = 3, pitch = inch(0.2));
|
||||
|
||||
for(i = [0 : len(rd_box_caps) - 1])
|
||||
pcb_grid(pcb, 20, i * 4)
|
||||
rd_box_cap(rd_box_caps[i], "X2 rated film capacitor", ["0.1uF 250V", "0.47uF 250V"][i]);
|
||||
|
||||
|
||||
for(i = [0 : len(rd_cm_chokes) - 1])
|
||||
pcb_grid(pcb, 10.5, 2)
|
||||
rd_cm_choke(rd_cm_chokes[i], "3.5mH");
|
||||
|
||||
pcb_grid(pcb, 4, 2.5)
|
||||
rotate(90)
|
||||
rd_coil(rd_coils[0], "4.7uH");
|
||||
}
|
||||
|
||||
$solder = pcb_solder(pcb);
|
||||
|
||||
for(i = [0 : len(rd_xtals) - 1])
|
||||
pcb_grid(pcb, [0.5, 1, 1.5, 9, 1][i], [4, 6, 10.5, 10.5, 16][i])
|
||||
@@ -47,7 +61,6 @@ module radials() {
|
||||
rotate(-90)
|
||||
rd_module(rd_modules[1], "12V 250ma");
|
||||
|
||||
|
||||
for(i = [0 : len(rd_discs) - 1])
|
||||
pcb_grid(pcb, 1 + 2.5 * i, 1) {
|
||||
disc = rd_discs[i];
|
||||
@@ -56,7 +69,7 @@ module radials() {
|
||||
dy = round(pitch.y / inch(0.1)) * inch(0.1);
|
||||
|
||||
rotate(90 - atan2(dy, dx))
|
||||
rd_disc(disc, pitch = norm([dy, dx]), z = 0.5, value = ["10nF", "470V",][i]);
|
||||
rd_disc(disc, pitch = norm([dy, dx]), z = 0.5, value = ["10nF", "470V", "1nF Y2"][i]);
|
||||
}
|
||||
|
||||
for(i = [0 : len(rd_transistors) - 1])
|
||||
|
34
tests/rod_ends.scad
Normal file
@@ -0,0 +1,34 @@
|
||||
//
|
||||
// NopSCADlib Copyright Chris Palmer 2024
|
||||
// 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 <../utils/core/core.scad>
|
||||
use <../utils/layout.scad>
|
||||
|
||||
include <../vitamins/rod_ends.scad>
|
||||
|
||||
|
||||
module rod_ends(list = rod_ends) {
|
||||
diameters = [for(b = list) rod_end_bearing_od(b)];
|
||||
max = max(diameters);
|
||||
layout(diameters) let(b = list[$i])
|
||||
rod_end_bearing(list[$i]);
|
||||
}
|
||||
|
||||
if($preview)
|
||||
rod_ends();
|
@@ -263,3 +263,29 @@ module show_path(path, r = 0.1) //! Show a path using a chain of hulls for debug
|
||||
translate(path[i])
|
||||
color("red") sphere($fn = 16, r * 4);
|
||||
}
|
||||
|
||||
function move_along(j, z, path_S) =
|
||||
j >= len(path_S) - 1 || z <= path_S[j] ? j : move_along(j + 1, z, path_S);
|
||||
|
||||
function spiral_wrap(path, profile, pitch, turns) = //! Create a path that spirals around the specified profile with the given pitch.
|
||||
let(
|
||||
transforms = sweep_transforms(path, loop = false, twist = 0),
|
||||
plen = len(profile),
|
||||
S = path_length(profile),
|
||||
profile = [
|
||||
for(i = 0, s = 0; i < plen; s = s + norm(profile[(i + 1) % plen] - profile[i]), i = i + 1)
|
||||
let(p = profile[i]) [p.x, p.y, p.z + pitch * s / S, 1]
|
||||
],
|
||||
path_len = len(path),
|
||||
path_S = [for(i = 0, s = 0; i < path_len; s = s + norm(path[(i + 1) % path_len] - path[i]), i = i + 1) s],
|
||||
n = turns * plen,
|
||||
|
||||
) [
|
||||
for(i = 0, j = 0, k = 0, zstep = 0;
|
||||
i < n;
|
||||
i = i + 1,
|
||||
k = i % plen,
|
||||
zstep = floor(i / plen) * pitch,
|
||||
j = move_along(j, zstep + profile[k].z, path_S))
|
||||
if(!i || k) (profile[k] + [0, 0, zstep - path_S[j], 0]) * transforms[j]
|
||||
];
|
||||
|
@@ -47,7 +47,7 @@ thread_colour_factor = 0.8; // 60 degree threads appear too bright due to the an
|
||||
|
||||
function thread_profile(h, crest, angle, overlap = 0.1) = //! Create thread profile path
|
||||
let(base = crest + 2 * (h + overlap) * tan(angle / 2))
|
||||
[[-base / 2, -overlap, 0], [-crest / 2, h, 0], [crest / 2, h, 0], [base / 2, -overlap, 0]];
|
||||
[[-base / 2, -overlap, 0], [-crest / 2, h, 0], if(crest) [crest / 2, h, 0], [base / 2, -overlap, 0]];
|
||||
|
||||
module thread(dia, pitch, length, profile, center = true, top = -1, bot = -1, starts = 1, solid = true, female = false, colour = undef) { //! Create male or female thread, ends can be tapered, chamfered or square
|
||||
assert(is_undef(colour) || is_list(colour), "Thread colour must be in [r, g, b] form");
|
||||
|
@@ -34,8 +34,9 @@ BBMR93 = ["MR93", 3, 9, 4, "silver", 0.5, 0.5, 0, 0];
|
||||
BBMR95 = ["MR95", 5, 9, 3, "silver", 0.5, 0.5, 0, 0];
|
||||
BBF623 = ["F623", 3, 10, 4, "black", 0.6, 0.7, 11.5, 1];
|
||||
BBF693 = ["F693", 3, 8, 3, "silver", 0.5, 0.7, 9.5, 0.7];
|
||||
BBF625 = ["F625", 5, 16, 5, "silver", 1.0, 1.0, 18, 1];
|
||||
BBF695 = ["F695", 5, 13, 4, "silver", 1.0, 1.0, 15, 1];
|
||||
|
||||
ball_bearings = [BBF693, BBF623, BBF695, BBMR63, BBMR83, BBMR93, BBSMR95, BB624, BB686, BB696, BB608, BB6200, BB6201, BB6808];
|
||||
ball_bearings = [BBF625, BBF693, BBF623, BBF695, BBMR63, BBMR83, BBMR85, BBMR93, BBMR95, BBSMR95, BB624, BB686, BB696, BB608, BB6200, BB6201, BB6808];
|
||||
|
||||
use <ball_bearing.scad>
|
||||
|
@@ -23,7 +23,8 @@
|
||||
DCONN9 = ["DCONN9", 30.81, [18, 16.92], 24.99, [9.26, 8.38], 12.55, 10.72, 6.693, 1.12, 9];
|
||||
DCONN15 = ["DCONN15", 39.14, [26.25, 25.25], 33.32, [9.26, 8.38], 12.55, 10.72, 6.693, 1.12, 15];
|
||||
DCONN25 = ["DCONN25", 53.04, [40, 38.96], 47.04, [9.26, 8.38], 12.55, 10.72, 6.693, 1.12, 25];
|
||||
DCONN37 = ["DCONN37", 69.50, [56.42, 55.42], 63.50, [9.26, 8.38], 12.55, 10.72, 6.693, 1.12, 37];
|
||||
|
||||
d_connectors = [DCONN9, DCONN15, DCONN25];
|
||||
d_connectors = [DCONN9, DCONN15, DCONN25, DCONN37];
|
||||
|
||||
use <d_connector.scad>
|
||||
|
@@ -52,7 +52,7 @@ module geared_stepper_screw_positions(type) //! Place children at the screw posi
|
||||
motor_colour = "#9BA2AC";
|
||||
gearbox_colour = "#FFF7EE";
|
||||
|
||||
module geared_stepper(type) { //! Draw the specified geared stepper
|
||||
module geared_stepper(type, angle = 0) { //! Draw the specified geared stepper with optional shaft angle.
|
||||
vitamin(str("geared_stepper(", type[0], "): Geared stepper - ", type[1]));
|
||||
|
||||
radius = gs_diameter(type) / 2;
|
||||
@@ -125,19 +125,20 @@ module geared_stepper(type) { //! Draw the specified geared stepper
|
||||
f = gs_shaft_flat(type);
|
||||
two_flats = f < 0;
|
||||
vflip()
|
||||
color(two_flats ? brass : gearbox_colour) {
|
||||
d = gs_shaft_d(type);
|
||||
h = gs_shaft_length(type);
|
||||
linear_extrude(h)
|
||||
intersection() {
|
||||
circle(d = d);
|
||||
rotate(angle)
|
||||
color(two_flats ? brass : gearbox_colour) {
|
||||
d = gs_shaft_d(type);
|
||||
h = gs_shaft_length(type);
|
||||
linear_extrude(h)
|
||||
intersection() {
|
||||
circle(d = d);
|
||||
|
||||
translate([0, two_flats ? 0 : (f - d) / 2])
|
||||
square([d + 1, abs(f)], 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));
|
||||
}
|
||||
cylinder(d = d, h = h - gs_flat_length(type));
|
||||
}
|
||||
|
||||
// Wire block
|
||||
color(bulge_z ? "white" : "skyblue") {
|
||||
|
@@ -212,13 +212,10 @@ module threaded_insert(type) { //! Draw specified threaded insert, for use in wo
|
||||
|
||||
thread_l = insert_length(type) - z; // - insert_ring1_h(type);
|
||||
|
||||
|
||||
|
||||
|
||||
vitamin(str("threaded_insert(", type[0], "): Threaded insert M", insert_screw_diameter(type), " x ", length, "mm"));
|
||||
union() {
|
||||
color(silver)
|
||||
difference() {
|
||||
render() difference() {
|
||||
base_insert(type);
|
||||
translate_z(-socket/2 + 0.01)
|
||||
cylinder(r=socket, $fn = 6, h=socket/2);
|
||||
@@ -245,5 +242,4 @@ module threaded_insert(type) { //! Draw specified threaded insert, for use in wo
|
||||
female = false,
|
||||
colour = silver);
|
||||
}
|
||||
|
||||
}
|
||||
|
@@ -41,9 +41,12 @@ function nut_dome(type) = type[8]; //! Dome height and max thread d
|
||||
|
||||
function nut_flat_radius(type) = nut_radius(type) * cos(30); //! Radius across the flats
|
||||
|
||||
function nut_square_size(type) = type[1]; //! Diameter of the corresponding screw
|
||||
function nut_square_width(type) = type[2]; //! Width of the square nut
|
||||
function nut_square_thickness(type) = type[3]; //! Thickness of the square nut
|
||||
function nut_square_size(type) = type[1]; //! Diameter of the corresponding screw
|
||||
function nut_square_width(type) = type[2]; //! Width of the square nut
|
||||
function nut_square_thickness(type) = type[3]; //! Thickness of the square nut
|
||||
|
||||
function nut_weld_base_r(type) = type[7] / 2; //! Weld nut base radius
|
||||
function nut_weld_base_t(type) = type[8]; //! Weld nut base thickness
|
||||
|
||||
function nut_dome_height(type) = let(d = nut_dome(type)) d ? d[0] : nut_thickness(type); //! Height of the domed version
|
||||
function nut_thread_depth(type) = let(d = nut_dome(type)) d ? d[1] : nut_thickness(type); //! Max thread depth in domed version
|
||||
@@ -190,7 +193,7 @@ module wingnut(type) { //! Draw a wingnut
|
||||
|
||||
function t_nut_tab(type) = [type[8], type[9]]; //! Sliding t-nut T dimensions
|
||||
|
||||
module sliding_ball_t_nut(size, w, h, r) {
|
||||
module sliding_ball_t_nut(size, w, h, r) { //! Draw a sliding ball t nut
|
||||
rad = 0.5;
|
||||
stem = size.z - h;
|
||||
ball_d = 4;
|
||||
@@ -245,6 +248,38 @@ module sliding_t_nut(type) { //! Draw a sliding T nut, T nut with a spring loade
|
||||
extrusionSlidingNut(size, tab[0], tab[1], tabSizeZ, holeRadius, 0, hammerNut);
|
||||
}
|
||||
|
||||
module weld_nut(type) { //! draw a weld nut
|
||||
thread_d = nut_size(type);
|
||||
hole_rad = thread_d / 2;
|
||||
nut_neck_rad = nut_radius(type);
|
||||
thickness = nut_thickness(type);
|
||||
base_rad = nut_weld_base_r(type);
|
||||
base_thickness = nut_weld_base_t(type);
|
||||
|
||||
|
||||
vitamin(str("weld nut(", type[0], "): Weld Nut M", nut_size(type)));
|
||||
colour = silver;
|
||||
explode(-20) {
|
||||
color(colour) {
|
||||
|
||||
rotate_extrude()
|
||||
polygon([
|
||||
[hole_rad, -base_thickness],
|
||||
[base_rad, -base_thickness],
|
||||
[base_rad, 0],
|
||||
[hole_rad, 0],
|
||||
[nut_neck_rad, 0],
|
||||
[nut_neck_rad, thickness],
|
||||
[hole_rad, thickness]
|
||||
]);
|
||||
}
|
||||
|
||||
if(show_threads)
|
||||
female_metric_thread(thread_d, metric_coarse_pitch(thread_d), thickness, center = false, colour = colour);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
module extrusionSlidingNut(size, tabSizeY1, tabSizeY2, tabSizeZ, holeRadius, holeOffset = 0, hammerNut = false) {
|
||||
// center section
|
||||
stem_h = size.z - tabSizeZ;
|
||||
|
@@ -49,7 +49,11 @@ M6_half_nut = ["M6_half_nut", 6, 11.5, 3, 8, M6_washer, 3,
|
||||
M8_nut = ["M8_nut", 8, 15, 6.5, 8, M8_washer, M8_nut_depth, 0, [15, 11.35]];
|
||||
toggle_nut = ["toggle_nut", 6.1, 9.2, 1.5, 1.5, M6_washer, 1.5, inch(1/40)];
|
||||
|
||||
M4_wingnut = ["M4_wingnut", 4, 10, 3.75,8, M4_washer, 0, 22, 10, 6, 3];
|
||||
M4_wingnut = ["M4_wingnut", 4, 10, 3.75,8, M4_washer, 0, 22, 10, 6, 3];
|
||||
|
||||
M4_weld_nut = ["M4_weld_nut", 4, 5.3, 6.3, 8, M4_washer, 0, 18, 0.8,]; // Base diameter and thickness
|
||||
M6_weld_nut = ["M6_weld_nut", 6, 7.7, 7.9, 8, M6_washer, 0, 19.1, 1.2,];
|
||||
|
||||
// sx ty1 ty2 hammer
|
||||
M3_sliding_t_nut = ["M3_sliding_t_nut", 3, 6, 3.0, 4.0, false, 0, 10, 10, 6, false];
|
||||
M4_sliding_t_nut = ["M4_sliding_t_nut", 4, 6, 3.7, 4.7, false, 0, 11, 10, 6, false];
|
||||
|
@@ -1169,6 +1169,9 @@ module pcb_component(comp, cutouts = false, angle = undef) { //! Draw pcb compon
|
||||
if(show(comp, "rd_module")) rd_module(type = comp[4], value = comp[5]);
|
||||
if(show(comp, "rd_transistor")) rd_transistor(type = comp[4], value = comp[5], lead_positions = param(6, undef), z = param(7, 5), kind = param(8,"Transistor"));
|
||||
// type, value, lead positions, z, kind
|
||||
if(show(comp, "rd_box_cap")) rd_box_cap(type = comp[4], kind = comp[5], value = comp[6]);
|
||||
if(show(comp, "rd_cm_choke")) rd_cm_choke(type = comp[4], value = comp[5]);
|
||||
if(show(comp, "rd_coil")) rd_coil(type = comp[4], value = comp[5], pitch = param(6, undef));
|
||||
if(show(comp, "link")) wire_link(l = comp[4], h = param(5, 1), d = param(6, 0.8), tail = param(7, 3), sleeve = param(8, false));
|
||||
if(show(comp, "D_plug")) translate_z(d_pcb_offset(comp[4])) d_plug(comp[4], pcb = true);
|
||||
if(show(comp, "molex_hdr")) molex_254(comp[4], param(5, 0), param(6, undef));
|
||||
@@ -1177,6 +1180,7 @@ module pcb_component(comp, cutouts = false, angle = undef) { //! Draw pcb compon
|
||||
if(show(comp, "jst_zh")) jst_xh_header(jst_zh_header, comp[4], param(5, false), param(6, false), param(7, undef));
|
||||
if(show(comp, "potentiometer")) let(pot = param(4, BTT_encoder)) translate_z(pot_size(pot).z) vflip() potentiometer(pot, shaft_length = param(5, undef));
|
||||
if(show(comp, "buzzer")) buzzer(param(4, 9), param(5, 12), param(6, grey(20)));
|
||||
if(show(comp, "smd_250V_fuse")) smd_250V_fuse(comp[4], comp[5]);
|
||||
if(show(comp, "smd_res")) smd_resistor(comp[4], comp[5]);
|
||||
if(show(comp, "smd_cap")) smd_capacitor(comp[4], comp[5], param(6, undef));
|
||||
if(show(comp, "smd_tant")) smd_tant(comp[4], param(5, undef));
|
||||
|
@@ -18,37 +18,54 @@
|
||||
//
|
||||
include <belts.scad>
|
||||
//
|
||||
// n t o b w h h b f f s s s s
|
||||
// a e d e i u u o l l c c c c
|
||||
// m e l d b b r a a r r r r
|
||||
// e t t t e n n e e e e
|
||||
// h h d l g g w w w w
|
||||
// e e s
|
||||
// l z
|
||||
// d t
|
||||
// n t o b w h h b f f s s s s
|
||||
// a e d e i u u o l l c c c c
|
||||
// m e l d b b r a a r r r r
|
||||
// e t t t e n n e e e e
|
||||
// h h d l g g w w w w
|
||||
// e e s
|
||||
// l z
|
||||
// d t
|
||||
//
|
||||
T5x10_pulley = ["T5x10_pulley", "T5", 10, 15, T5x6, 11.6, 7.9, 7, 5, 19.3, 1.7, 3, 10.7, M3_grub_screw, 1];
|
||||
T2p5x16_pulley = ["T2p5x16_pulley", "T2.5", 16, 12.16, T2p5x6, 8, 16, 5.7, 5, 16.0, 1.0, 6, 3.75, M4_grub_screw, 1];
|
||||
GT2x20um_pulley = ["GT2x20um_pulley", "GT2UM", 20, 12.22, GT2x6, 7.5, 18, 6.5, 5, 18.0, 1.0, 6, 3.75, M3_grub_screw, 2]; //Ultimaker
|
||||
GT2x20ob_pulley = ["GT2x20ob_pulley", "GT2OB", 20, 12.22, GT2x6, 7.5, 16, 5.5, 5, 16.0, 1.0, 6, 3.25, M3_grub_screw, 2]; //Openbuilds
|
||||
GT2x16_pulley = ["GT2x16_pulley", "GT2", 16, 9.75, GT2x6, 7.0, 13, 5, 5, 13.0, 1.0,4.5,3.0, M3_grub_screw, 2];
|
||||
GT2x12_pulley = ["GT2x12_pulley", "GT2RD", 12, 7.15, GT2x6, 6.5, 12, 5.5, 4, 12.0, 1.0, 4, 3.0, M3_grub_screw, 2]; //Robotdigg
|
||||
GT2x20_toothed_idler = ["GT2x20_toothed_idler", "GT2", 20, 12.22, GT2x6, 6.5, 18, 0, 4, 18.0, 1.0, 0, 0, false, 0];
|
||||
GT2x20_plain_idler = ["GT2x20_plain_idler", "GT2", 0, 12.0, GT2x6, 6.5, 18, 0, 4, 18.0, 1.0, 0, 0, false, 0];
|
||||
GT2x16_toothed_idler = ["GT2x16_toothed_idler", "GT2", 16, 9.75, GT2x6, 6.5, 14, 0, 3, 14.0, 1.0, 0, 0, false, 0];
|
||||
GT2x16_plain_idler = ["GT2x16_plain_idler", "GT2", 0, 9.63, GT2x6, 6.5, 13, 0, 3, 13.0, 1.0, 0, 0, false, 0];
|
||||
GT2x16x7_plain_idler = ["GT2x16x7_plain_idler", "GT2", 0, 9.63, GT2x6, 7.0, 13, 0, 3, 13.0, 1.0, 0, 0, false, 0];
|
||||
T5x10_pulley = ["T5x10_pulley", "T5", 10, 15, T5x6, 11.6, 7.9, 7, 5, 19.3, 1.7, 3, 10.7, M3_grub_screw, 1];
|
||||
T2p5x16_pulley = ["T2p5x16_pulley", "T2.5", 16, 12.16, T2p5x6, 8, 16, 5.7, 5, 16.0, 1.0, 6, 3.75, M4_grub_screw, 1];
|
||||
GT2x20um_pulley = ["GT2x20um_pulley", "GT2UM", 20, 12.22, GT2x6, 7.5, 18, 6.5, 5, 18.0, 1.0, 6, 3.75, M3_grub_screw, 2]; //Ultimaker
|
||||
GT2x20ob_pulley = ["GT2x20ob_pulley", "GT2OB", 20, 12.22, GT2x6, 7.5, 16, 5.5, 5, 16.0, 1.0, 6, 3.25, M3_grub_screw, 2]; //Openbuilds
|
||||
GT2x16_pulley = ["GT2x16_pulley", "GT2", 16, 9.75, GT2x6, 7.0, 13, 5, 5, 13.0, 1.0,4.5,3.0, M3_grub_screw, 2];
|
||||
GT2x12_pulley = ["GT2x12_pulley", "GT2RD", 12, 7.15, GT2x6, 6.5, 12, 5.5, 4, 12.0, 1.0, 4, 3.0, M3_grub_screw, 2]; //Robotdigg
|
||||
GT2x20_toothed_idler = ["GT2x20_toothed_idler", "GT2", 20, 12.22, GT2x6, 6.5, 18, 0, 4, 18.0, 1.0, 0, 0, false, 0];
|
||||
GT2x20_plain_idler = ["GT2x20_plain_idler", "GT2", 0, 12.0, GT2x6, 6.5, 18, 0, 4, 18.0, 1.0, 0, 0, false, 0];
|
||||
GT2x16_toothed_idler = ["GT2x16_toothed_idler", "GT2", 16, 9.75, GT2x6, 6.5, 14, 0, 3, 14.0, 1.0, 0, 0, false, 0];
|
||||
GT2x16_plain_idler = ["GT2x16_plain_idler", "GT2", 0, 9.63, GT2x6, 6.5, 13, 0, 3, 13.0, 1.0, 0, 0, false, 0];
|
||||
GT2x16x7_plain_idler = ["GT2x16x7_plain_idler", "GT2", 0, 9.63, GT2x6, 7.0, 13, 0, 3, 13.0, 1.0, 0, 0, false, 0];
|
||||
|
||||
pulleys = [T5x10_pulley,
|
||||
T2p5x16_pulley,
|
||||
GT2x20um_pulley,
|
||||
GT2x20ob_pulley,
|
||||
GT2x16_pulley,
|
||||
GT2x12_pulley,
|
||||
GT2x20_toothed_idler,
|
||||
GT2x20_plain_idler,
|
||||
GT2x16_toothed_idler,
|
||||
GT2x16_plain_idler,
|
||||
GT2x16x7_plain_idler];
|
||||
GT2x80_pulley = ["GT2x80_pulley", "GT2", 80, 50.42, GT2x6, 7, 35, 9, 5, 55, 1.0, 6, 4.5, M5_grub_screw, 2]; // Powge branded from West3D
|
||||
GT2x16_toothed_idler_9 = ["GT2x16_toothed_idler_9", "GT2", 16, 9.75, GT2x9, 10, 14, 0, 3, 14.0, 1.0, 0, 0, false, 0];//Robotdigg
|
||||
GT2x16_pulley_9 = ["GT2x16_pulley_9", "GT2", 16, 9.65, GT2x9, 9.5, 14, 6.5, 5, 14.0, 1.0, 6, 3.5, M3_grub_screw, 2];
|
||||
GT2x20_pulley_9 = ["GT2x20_pulley_9", "GT2", 20, 12.22, GT2x9, 11, 16, 7, 5, 16.0, 1.0, 6, 3.25, M4_grub_screw, 2];//Powge
|
||||
GT2x20_toothed_idler_9 = ["GT2x20_toothed_idler_9", "GT2", 20, 12.22, GT2x9, 10, 18, 0, 5, 18.0, 1.0, 0, 0, false, 0];
|
||||
|
||||
|
||||
|
||||
pulleys = [
|
||||
T5x10_pulley,
|
||||
T2p5x16_pulley,
|
||||
GT2x20_pulley_9,
|
||||
GT2x20um_pulley,
|
||||
GT2x20ob_pulley,
|
||||
GT2x16_pulley_9,
|
||||
GT2x16_pulley,
|
||||
GT2x12_pulley,
|
||||
|
||||
GT2x16_plain_idler,
|
||||
GT2x16x7_plain_idler,
|
||||
GT2x20_plain_idler,
|
||||
GT2x16_toothed_idler,
|
||||
GT2x16_toothed_idler_9,
|
||||
GT2x20_toothed_idler,
|
||||
GT2x20_toothed_idler_9,
|
||||
|
||||
GT2x80_pulley,
|
||||
];
|
||||
|
||||
use <pulley.scad>
|
||||
|
@@ -158,6 +158,7 @@ module rd_module(type, value) { //! Draw a PCB mounted potted module, e.g. PSU o
|
||||
r = rd_module_radius(type);
|
||||
size = rd_module_size(type);
|
||||
pin = rd_module_pin_size(type);
|
||||
|
||||
color(rd_module_colour(type))
|
||||
rounded_top_rectangle(size, r, r);
|
||||
|
||||
@@ -393,3 +394,236 @@ module rd_electrolytic(type, value, pitch = undef, z = 0, tail = 3) { //! Draw a
|
||||
cylinder(r = jacket_ir, h = eps);
|
||||
}
|
||||
}
|
||||
|
||||
function rd_boxc_size(type) = type[1]; //! Overall size and corner radius
|
||||
function rd_boxc_z(type) = type[2]; //! Height of inner base above PCB.
|
||||
function rd_boxc_skirt(type) = type[3]; //! Skirt slot, thickness, height
|
||||
function rd_boxc_leads(type) = type[4]; //! Lead pitch, diameter and length
|
||||
function rd_boxc_colours(type) = type[5]; //! Case colour and resin fill colour
|
||||
|
||||
module rd_box_cap(type, kind, value) { //! Draw radial boxed film capacitor
|
||||
vitamin(str("rd_boxc(", type[0], ", \"", kind, "\", \"", value, "\" ): ", kind, " ", value));
|
||||
|
||||
size = rd_boxc_size(type);
|
||||
r = size[3];
|
||||
skirt = rd_boxc_skirt(type);
|
||||
inset = skirt.y * 2;
|
||||
leads = rd_boxc_leads(type);
|
||||
c = rd_boxc_colours(type);
|
||||
z = rd_boxc_z(type);
|
||||
$fn = fn;
|
||||
|
||||
color(c[0]) {
|
||||
translate_z(z)
|
||||
rounded_top_rectangle([size.x, size.y, size.z - z], r, r);
|
||||
|
||||
for(i = [0, 1])
|
||||
translate_z(i * skirt.z)
|
||||
linear_extrude(z)
|
||||
difference() {
|
||||
rounded_square([size.x, size.y], r);
|
||||
|
||||
square([size.x - inset, size.y - inset], center = true);
|
||||
|
||||
if(!i)
|
||||
square([skirt.x, size.y], center = true);
|
||||
}
|
||||
}
|
||||
|
||||
color(c[1])
|
||||
translate_z(z)
|
||||
cube([size.x - inset, size.y - inset, 2 * eps], center = true);
|
||||
|
||||
color(silver)
|
||||
for(end = [-1, 1])
|
||||
translate([end * leads.x / 2, 0]) {
|
||||
translate_z(- leads.z)
|
||||
cylinder(d = leads.y, h = leads.z + z);
|
||||
|
||||
solder(leads.y / 2);
|
||||
}
|
||||
|
||||
color("black")
|
||||
translate([0, -size.y / 2])
|
||||
rotate([90, 0, 0])
|
||||
linear_extrude(eps)
|
||||
translate([-size.x * 0.45, size.z * 0.75])
|
||||
resize([size.x * 0.9, size.z / 6])
|
||||
text(value, halign = "left", valign = "top");
|
||||
}
|
||||
|
||||
function rd_cm_choke_core(type) = type[1]; //! Core OD, ID, width, corner radius
|
||||
function rd_cm_choke_seam(type) = type[2]; //! Overlapping semicircular seams to join the two halves of the core width and thickness
|
||||
function rd_cm_choke_slot(type) = type[3]; //! Slot to hold central separator width, height, thickness
|
||||
function rd_cm_choke_csep(type) = type[4]; //! Central separator thickness in slot, total thickness, height
|
||||
function rd_cm_choke_wire(type) = type[5]; //! Wire positions, length and diameter
|
||||
|
||||
module rd_cm_choke(type, value) { //! Draw specified common mode choke.
|
||||
vitamin(str("rd_cm_choke(", type[0], " ,\"", value, "\"): Common mode choke ", value));
|
||||
core = rd_cm_choke_core(type);
|
||||
seam = rd_cm_choke_seam(type);
|
||||
slot = rd_cm_choke_slot(type);
|
||||
csep = rd_cm_choke_csep(type);
|
||||
wire = rd_cm_choke_wire(type);
|
||||
or = core.x / 2;
|
||||
ir = core.y / 2;
|
||||
core_w = core.z;
|
||||
core_r = core[3];
|
||||
z = seam.y + or;
|
||||
wire_r = wire[3] / 2;
|
||||
w = or - ir;
|
||||
$fs = fs; $fa = fa;
|
||||
|
||||
color(grey(90))
|
||||
translate_z(z) {
|
||||
rotate([90, 0, 0]) {
|
||||
rotate_extrude()
|
||||
translate([(ir + or) / 2, 0])
|
||||
rounded_square([w, core_w], core_r, center = true);
|
||||
|
||||
for(h = [true, false])
|
||||
hflip(h)
|
||||
rotate(-90)
|
||||
rotate_extrude(angle = 180)
|
||||
translate([or, 0])
|
||||
square([seam.y, seam.x]);
|
||||
}
|
||||
r = sqrt(sqr(or * cos(180 / r2sides(or))) - sqr(slot.z + csep.x / 2));
|
||||
for(x = [-1, 1], z = [-1, 1])
|
||||
translate([x * (csep.x / 2 + slot.z / 2), 0, z * (r - slot.y / 2)])
|
||||
rotate([0, 90, 0])
|
||||
rounded_rectangle([slot.y, slot.x, slot.z], core_r, center = true);
|
||||
|
||||
rotate([0, 90, 0]) {
|
||||
rounded_rectangle([2 * ir, slot.x, csep.x], core_r, center = true);
|
||||
|
||||
rounded_rectangle([csep.z, slot.x, csep.y], core_r, center = true);
|
||||
}
|
||||
}
|
||||
|
||||
color(silver)
|
||||
for(x = [-1, 1], y = [-1, 1])
|
||||
translate([x * wire.x / 2, y * wire.y / 2]) {
|
||||
solder(wire_r);
|
||||
|
||||
vflip()
|
||||
cylinder(r = wire_r, h = wire.z, $fn = fn);
|
||||
}
|
||||
|
||||
color(copper) {
|
||||
wire_d = 2 * wire_r;
|
||||
r = ir - wire_r;
|
||||
cr = core_r + wire_r;
|
||||
points = [
|
||||
[-core_w / 2 + core_r, 0, 0],
|
||||
[ core_w / 2 + wire_r, 0, 0], cr,
|
||||
[ core_w / 2 + wire_r, w + wire_r, 0], cr,
|
||||
[ 0, w + wire_d + seam.y * 2, 0], 7,
|
||||
[-core_w / 2 - wire_r, w + wire_r, 0], cr,
|
||||
[-core_w / 2 - wire_r, 0, 0], cr - eps,
|
||||
[-core_w / 2 + core_r, 0, 0],
|
||||
];
|
||||
profile = segmented_path(rounded_path(points, $fn = fn), fs);
|
||||
min_gap_angle = 2 * asin((slot.z + csep.x / 2 + wire_r) / r);
|
||||
turns = floor((r * PI * (180 - min_gap_angle) / 180) / wire_d);
|
||||
turn_angle = wire_d / (r * PI) * 180;
|
||||
//turns = floor(((or + wire_r) * PI * (180 - min_gap_angle) / 180) / wire_d / 2);
|
||||
//turn_angle = 2 * asin(wire_d / (or + wire_r));
|
||||
gap_angle = 180 - turns * turn_angle;
|
||||
path = arc_points(r, a = [90, 180 + gap_angle / 2, 180], al = 180 - gap_angle, $fn = turns * len(profile));
|
||||
spiral = spiral_wrap(path, profile, path_length(path) / turns, turns);
|
||||
tail = bezier_join([[wire.x / 2, wire.y / 2, -z - eps], [wire.x / 2, wire.y / 2, -z]], spiral, 1.5);
|
||||
tilt = turn_angle * (or + wire_r) / 120;
|
||||
|
||||
outer_points = [
|
||||
[ core_w / 2 - core_r - wire_d, -wire_d, 0],
|
||||
[-core_w / 2 - wire_r - wire_d, -wire_d, 0], cr + wire_d,
|
||||
[-core_w / 2 - wire_r, w + wire_r, tilt / 2], cr,
|
||||
[ 0, w + wire_d + seam.y * 2, -tilt / 4], 7, // No idea why -tilt / 2.5 and not zero.
|
||||
[ core_w / 2 + wire_r, w + wire_r, -tilt / 1.5], cr,
|
||||
[ core_w / 2 + wire_r + wire_d, -wire_d, 0], cr + wire_d,
|
||||
[ core_w / 2 - core_r - wire_d, -wire_d, 0],
|
||||
];
|
||||
|
||||
outer_profile = segmented_path(rounded_path(outer_points, $fn = fn), fs);
|
||||
outer_path = arc_points(r, a = [90, 180 + gap_angle / 2 + turn_angle / 2, 180], al = 180 - gap_angle, $fn = (turns - 1) * len(outer_profile));
|
||||
outer_spiral = concat(spiral_wrap(outer_path, outer_profile, path_length(outer_path) / turns, turns), [spiral[len(spiral) - 1]]);
|
||||
outer_tail = bezier_join([[wire.x / 2, -wire.y / 2, -z - eps], [wire.x / 2, -wire.y / 2, -z]], outer_spiral, 3);
|
||||
|
||||
wire_points = circle_points(wire_r, $fn = fn);
|
||||
translate_z(z)
|
||||
for(side = [-1, 1]) mirror([side < 0 ? 1 : 0, 0]){
|
||||
color(copper)sweep(tail, wire_points);
|
||||
|
||||
sweep(outer_tail, wire_points);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function rd_coil_size(type) = type[1]; //! OD, ID, height, coil height
|
||||
function rd_coil_wire(type) = type[2]; //! Wire pitch, diameter and length
|
||||
function rd_coil_colour(type) = type[3]; //! Core colour
|
||||
function rd_coil_turns(type) = type[4]; //! Number of turns
|
||||
|
||||
module rd_coil(type, value, pitch = undef) { //! Draw the specified vertical coil
|
||||
size = rd_coil_size(type);
|
||||
wire = rd_coil_wire(type);
|
||||
pitch = is_undef(pitch) ? wire.x : pitch;
|
||||
wire_d = wire.y;
|
||||
wire_r = wire_d / 2;
|
||||
vitamin(str("rd_coil(", type[0], " ,\"", value, "\"): Radial inductor ", size.z, "x", size.x, " ", value));
|
||||
$fs = fs; $fa = fa;
|
||||
end = (size.z - size[3]) / 2;
|
||||
function sigmoid(x) = 1 / (1 + exp(-x));
|
||||
z = end + size[3] / 2;
|
||||
h = size[3] - wire_d;
|
||||
|
||||
color(rd_coil_colour(type)) {
|
||||
cylinder(d = size.y, h = size.z);
|
||||
|
||||
for(z = [0, size.z - end])
|
||||
translate_z(z)
|
||||
cylinder(d = size.x, h = end);
|
||||
}
|
||||
turns = rd_coil_turns(type);
|
||||
|
||||
color(silver)
|
||||
for(side = [-1, 1])
|
||||
translate([side * pitch / 2, 0]) {
|
||||
vflip()
|
||||
cylinder(d = wire_d, h = wire.z, $fn = fn);
|
||||
|
||||
solder(wire.y / 2);
|
||||
}
|
||||
|
||||
color(copper) {
|
||||
r = size.y / 2 + wire_r;
|
||||
sides = r2sides4n(r);
|
||||
leadin = sides / 4;
|
||||
total = sides * turns;
|
||||
shortcut = 3;
|
||||
spiral = [
|
||||
for(i = [shortcut: total - shortcut])
|
||||
let(a = 360 * i / sides,
|
||||
j = i <= leadin ? leadin - i : i >= total - leadin ? i - (total - leadin) : 0,
|
||||
R = r + j * wire_r / leadin
|
||||
)
|
||||
[R * cos(a), R * sin(a), (size[3] - wire.y) * i / total + end + wire_r]
|
||||
];
|
||||
half_spiral = [
|
||||
for(i = [sides / 2 - shortcut : -1 : shortcut * 2])
|
||||
let(a = 360 * i / sides, R = r + wire_d)
|
||||
[R * cos(a), R * -sin(a), h * sigmoid((i - sides / 4) / 2) + end + wire_r]
|
||||
|
||||
];
|
||||
path = bezier_join([[-pitch / 2, 0, -eps], [-pitch / 2, 0, 0]], bezier_join(bezier_join(half_spiral, spiral, 1), [[pitch / 2, 0, 0], [pitch / 2, 0, -eps]], 3), 3);
|
||||
sweep(path, circle_points(wire_r, $fn = fn));
|
||||
}
|
||||
|
||||
color("white")
|
||||
translate_z(size.z)
|
||||
linear_extrude(eps)
|
||||
resize([size.x * 0.9, 0], auto = true)
|
||||
text(value, halign = "center", valign = "center");
|
||||
|
||||
}
|
||||
|
@@ -38,10 +38,11 @@ LDE10_20B = ["LDE10_20B","PSU", [53.8, 28.8, 19.0], 0.5, grey(20), [1.0, 0,
|
||||
rd_modules = [HF33F, VCE03, LDE10_20B];
|
||||
|
||||
// Disks
|
||||
ERZV07D471 = ["ERZV07D471", "Varistor", [6.5, 5.0, 8.0], [4.75, 3.1], [0.6, 1.4], [grey(20), grey(80)]];
|
||||
6p4mm_disc = ["6p4mm_disc","Ceramic capacitor", [6.5, 2.1, 7.8], [5.0, 0.9], [0.6, 0.8], ["#C5702D", grey(20)]];
|
||||
ERZV07D471 = ["ERZV07D471", "Varistor", [6.5, 5.0, 8.0], [4.75, 3.1], [0.6, 1.4], [grey(20), grey(80)]];
|
||||
6p4mm_disc = ["6p4mm_disc", "Ceramic capacitor", [6.5, 2.1, 7.8], [5.0, 0.9], [0.6, 0.8], ["#C5702D", grey(20)]];
|
||||
10mm_disc = ["10mm_disc", "Ceramic capacitor", [10, 4.25, 12], [7.72, 0], [0.64, 2.0], ["#BA9C16", grey(20)]];
|
||||
|
||||
rd_discs = [6p4mm_disc, ERZV07D471];
|
||||
rd_discs = [6p4mm_disc, ERZV07D471, 10mm_disc];
|
||||
|
||||
// Transistors
|
||||
TO92 = ["TO92", [5.0, 3.9, 4.5], [grey(20), grey(80)], [0.48, 0.48], [[-1,0], [0,0], [1,0]] ];
|
||||
@@ -54,4 +55,18 @@ ECAP8x11 = ["ECAP8x12", [8.2, 7.5, 12.5], 0.5, [2.4, 2.5], 0.5, inch(0.1), [grey
|
||||
|
||||
rd_electrolytics = [ECAP8x11];
|
||||
|
||||
// Boxed plastic film capacitors
|
||||
BOXC18x5x11 = ["BOXC18x5x11", [18, 5, 11, 0.25], 1.2, [8, 0.6, 0.4], [15, 0.6, 4.4], [grey(40), "LightYellow"]];
|
||||
BOXC18x10x16 = ["BOXC18x10x16", [18, 10, 16, 0.25], 1.7, [12, 0.8, 0.4], [15, 0.8, 4.4], [grey(40), "LightYellow"]];
|
||||
|
||||
rd_box_caps = [BOXC18x5x11, BOXC18x10x16];
|
||||
|
||||
ATX_CM_CHOKE = ["ATX_CM_CHOKE", [17.4, 11.4, 9, 0.5], [2, 0.8], [11, 4.7, 0.8], [1, 2.4, 6.8], [inch(0.3), inch(0.4), 3, 0.65]];
|
||||
|
||||
rd_cm_chokes = [ATX_CM_CHOKE];
|
||||
|
||||
IND16x10 = ["IND16x10", [10, 6.7, 16, 10], [inch(0.5), 0.9, 3], grey(20), 10];
|
||||
|
||||
rd_coils = [IND16x10];
|
||||
|
||||
use <radial.scad>
|
||||
|
@@ -35,8 +35,8 @@ neon_spades = [[spade4p8, 7.3, 0, -7, 0],
|
||||
//
|
||||
// w h t
|
||||
//
|
||||
small_rocker = ["small_rocker", "Rocker Switch PRASA1-16F-BB0BW", 13, 19.8, 15, 21, 2, 12.8, 18.5, 11.8, 2.5, -1, 3.8, small_spades];
|
||||
neon_indicator = ["neon_indicator", "Neon Indicator H8630FBNAL", 13, 19.8, 15, 21, 2, 12.8, 18.5, 12.5, 2.5, 0, 0.3, neon_spades];
|
||||
small_rocker = ["small_rocker", "Rocker Switch PRASA1-16F-BB0BW", 13, 19.25, 15, 21, 2, 12.8, 18.5, 11.8, 2.5, -1, 3.8, small_spades];
|
||||
neon_indicator = ["neon_indicator", "Neon Indicator H8630FBNAL", 13, 19.25, 15, 21, 2, 12.8, 18.5, 12.5, 2.5, 0, 0.3, neon_spades];
|
||||
|
||||
rockers = [small_rocker, neon_indicator];
|
||||
|
||||
|
134
vitamins/rod_end.scad
Normal file
@@ -0,0 +1,134 @@
|
||||
//
|
||||
// NopSCADlib Copyright Chris Palmer 2024
|
||||
// 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/>.
|
||||
//
|
||||
|
||||
//
|
||||
//! A rod end, sometimes called a spherical bearing or rod-end eye, is a component used in mechanical systems to create a flexible connection between two parts.
|
||||
//
|
||||
include <NopSCADlib/utils/core/core.scad>
|
||||
include <NopSCADlib/utils/thread.scad>
|
||||
|
||||
function rod_end_bearing_bore(type) = type[1]; //! radius of the bore hole in the bearing
|
||||
function rod_end_bearing_od(type) = type[2]; //! Outer diameter of the bearing
|
||||
function rod_end_bore_width(type) = type[3]; //! Width
|
||||
function rod_end_bearing_width(type) = type[4]; //! Width
|
||||
function rod_end_bearing_shield_colour(type) = type[5]; //! Shield colour, "silver" for metal
|
||||
function rod_end_screw_radius(type) = type[6] / 2;//! radius of the screw end, not the bore
|
||||
function rod_end_sphere_seg_width(type) = type[7]; //! the width of the pivoting part, effectively a (sphere - sphereCaps - center bore)
|
||||
function rod_end_sphere_radius(type) = type[8]; //!radius of the rod end sphere
|
||||
function rod_end_screw_length(type) = type[9]; //! length of the screw from eye center, not the bore
|
||||
function rod_end_thread_length(type) = type[10]; //! length of the threads
|
||||
function rod_end_overall_length(type) = type[11]; //! overall length of the rod end
|
||||
function rod_end_bearing_rim(type) = type[12]; //! Outer rim thickness guesstimate
|
||||
|
||||
module rod_end_bearing(type) { //! Draw a rod end bearing
|
||||
|
||||
bb_bore = rod_end_bearing_bore(type);
|
||||
bb_od = rod_end_bearing_od(type);
|
||||
bb_rim = rod_end_bearing_rim(type);
|
||||
|
||||
bb_width = rod_end_bearing_width(type);
|
||||
bb_shield_colour = rod_end_bearing_shield_colour(type);
|
||||
length = rod_end_screw_length(type);
|
||||
sphere_rad = rod_end_sphere_radius(type) / 2;
|
||||
rod_end_sphere_seg_width= rod_end_sphere_seg_width(type);
|
||||
shaft_rad = rod_end_screw_radius(type) - eps;
|
||||
thread_rad = rod_end_screw_radius(type);
|
||||
thread = rod_end_thread_length(type); //length - bb_od/2;
|
||||
thread_offset = 0;
|
||||
thread_d = 2 * thread_rad;
|
||||
pitch = metric_coarse_pitch(thread_d);
|
||||
colour = grey(80);
|
||||
shield_width=bb_width - (bb_width < 5 ? 0.5 : 1);
|
||||
chamfer = bb_rim / 6;
|
||||
|
||||
description = str("Rod End Bearing ", type[1], length < 10 ? " x " : " x ", length, "mm");
|
||||
vitamin(str("Rod End Bearing(", type[0], ", ", length, "): ", description));
|
||||
|
||||
module shaft(socket = 0, headless = false) {
|
||||
shank = length;
|
||||
|
||||
if(show_threads && pitch)
|
||||
translate_z(-length - thread_offset)
|
||||
male_metric_thread(thread_d, pitch, thread, false, top = headless ? -1 : 0, solid = !headless, colour = colour);
|
||||
else
|
||||
color(colour * 0.9)
|
||||
rotate_extrude() {
|
||||
translate([0, -length - thread_offset])
|
||||
square([thread_rad - eps, thread ]);
|
||||
}
|
||||
}
|
||||
|
||||
module bearingEye() {
|
||||
color(colour)
|
||||
rotate_extrude()
|
||||
difference() {
|
||||
circle(r = sphere_rad);
|
||||
|
||||
translate(v = [0, -sphere_rad])
|
||||
square(size = sphere_rad * 2);
|
||||
|
||||
for(i=[0, 1])
|
||||
mirror(v = [0, i])
|
||||
translate(v = [-sphere_rad,rod_end_sphere_seg_width / 2])
|
||||
square(size = sphere_rad * 2);
|
||||
|
||||
square([bb_bore, rod_end_sphere_seg_width + 1], center = true);
|
||||
}
|
||||
|
||||
color(bb_shield_colour)
|
||||
rotate_extrude()
|
||||
difference() {
|
||||
translate([0, -shield_width / 2])
|
||||
square([bb_od / 2 - bb_rim,shield_width]);
|
||||
|
||||
circle(r = sphere_rad);
|
||||
}
|
||||
|
||||
color(colour) {
|
||||
rotate_extrude()
|
||||
hull() {
|
||||
or = bb_od / 2;
|
||||
h = bb_width;
|
||||
translate([or - bb_rim, -h / 2 + chamfer])
|
||||
square([bb_rim, h - 2 * chamfer]);
|
||||
|
||||
translate([or - bb_rim, -h / 2])
|
||||
square([bb_rim - chamfer, h]);
|
||||
}
|
||||
|
||||
translate_z(-bb_width/2+chamfer)
|
||||
linear_extrude(bb_width-chamfer*2)
|
||||
difference() {
|
||||
hull() {
|
||||
circle(r = bb_od/2);
|
||||
translate([length-thread,-shaft_rad])
|
||||
square([0.5,shaft_rad*2]);
|
||||
}
|
||||
circle(r = bb_od/2-bb_rim);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
shaft();
|
||||
|
||||
rotate([0,90,0])
|
||||
bearingEye();
|
||||
}
|
23
vitamins/rod_ends.scad
Normal file
@@ -0,0 +1,23 @@
|
||||
//
|
||||
// NopSCADlib Copyright Chris Palmer 2024
|
||||
// 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/>.
|
||||
//
|
||||
RE_m5_bearing = ["RE_m5_bearing", 5, 16, 8, 6, brass, 5, 8, 11.11, 33, 21, 41, 2.0, 2.0, 0, 0]; // uxcell M5x0.8 Right Hand Thread, Self-Lubricating Joint Rod Ends
|
||||
|
||||
rod_ends= [ RE_m5_bearing];
|
||||
|
||||
use<rod_end.scad>
|
@@ -235,20 +235,32 @@ module screw(type, length, hob_point = 0, nylon = false) { //! Draw specified sc
|
||||
cylinder(h=2 * eps, r=socket_rad + eps);
|
||||
shaft();
|
||||
}
|
||||
|
||||
if(head_type == hs_dome) {
|
||||
lift = 0.38;
|
||||
h = head_height - lift;
|
||||
r = min(2 * head_height, (sqr(head_rad) + sqr(h)) / 2 * h); // Special case for M2
|
||||
y = sqrt(sqr(r) - sqr(head_rad));
|
||||
edge_height = head_rad / 7.5;
|
||||
head_chamfer_angle= 15; // degrees
|
||||
head_chamfer_x=edge_height*tan(head_chamfer_angle);
|
||||
head_fillet_radius= 0.3;
|
||||
p0 = [head_rad, edge_height]; // Lowest point on the arc
|
||||
p1 = [1.3 * socket_rad / cos(30), head_height]; // Highest point on the arc
|
||||
p = (p0 + p1) / 2; // Start of bisector
|
||||
gradient = (p0.x - p1.x) / (p1.y - p0.y); // Gradient of perpendicular bisector = -1 / gradient of the line between p10 and p1
|
||||
c = p.y - gradient * p.x; // Y ordinate of the centre of the dome
|
||||
r = norm(p1 - [0, c]); // Dome radius is distance from centre
|
||||
color(colour) {
|
||||
rotate_extrude() {
|
||||
difference() {
|
||||
intersection() {
|
||||
translate([0, -y + lift])
|
||||
translate([0, c])
|
||||
circle(r);
|
||||
|
||||
square([head_rad, head_height]);
|
||||
// offset(head_fillet_radius) offset(-head_fillet_radius)
|
||||
polygon(points = [
|
||||
[0,0],
|
||||
[head_rad-head_chamfer_x,0],
|
||||
[head_rad, edge_height],
|
||||
[head_rad,head_height],
|
||||
[0,head_height],
|
||||
]);
|
||||
}
|
||||
translate([0, head_height - socket_depth])
|
||||
square([socket_rad, 10]);
|
||||
|
@@ -87,6 +87,8 @@ M2p5_dome_screw = ["M2p5_dome", "M2.5 dome", hs_dome,2.5, 5.35,1.6, 0.8, 2.0
|
||||
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];
|
||||
M6_dome_screw = ["M6_dome", "M6 dome", hs_dome, 6, 10.5, 3.3, 2.5,4.0, 24, M6_washer, M6_nut, M6_tap_radius, M6_clearance_radius];
|
||||
M8_dome_screw = ["M8_dome", "M8 dome", hs_dome, 8, 14, 4.4, 3, 5.0, 30, M8_washer, M8_nut, M8_tap_radius, M8_clearance_radius];
|
||||
|
||||
M2p5_pan_screw = ["M2p5_pan", "M2.5 pan", hs_pan, 2.5, 4.7, 1.7, 0, 0, 0, M2p5_washer, M2p5_nut, M2p5_tap_radius, M2p5_clearance_radius];
|
||||
M3_pan_screw = ["M3_pan", "M3 pan", hs_pan, 3, 5.4, 2.0, 0, 0, 0, M3_washer, M3_nut, M3_tap_radius, M3_clearance_radius];
|
||||
@@ -122,7 +124,7 @@ screw_lists = [
|
||||
[ 0, 0, M3_low_cap_screw],
|
||||
[ 0, 0, M3_shoulder_screw, M4_shoulder_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],
|
||||
[ M2_dome_screw, M2p5_dome_screw,M3_dome_screw, M4_dome_screw, M5_dome_screw, M6_dome_screw, M8_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],
|
||||
|
@@ -55,7 +55,7 @@ function smd_size(size) = //! Convert size to 1/100" notation
|
||||
|
||||
module smd_led(type, colour, cutout) { //! Draw an SMD LED with specified `colour`
|
||||
size = smd_led_size(type);
|
||||
vitamin(str("smd_led(", type[0], ", ", colour, "): SMD LED ", smd_size(size), " ", colour));
|
||||
vitamin(str("smd_led(", type[0], ", \"", colour, "\"): SMD LED ", smd_size(size), " ", colour));
|
||||
|
||||
lens = smd_led_lens(type);
|
||||
r = size.y * 0.32;
|
||||
@@ -137,7 +137,7 @@ function smd_cap_end_cap(type) = type[2]; //! End cap width
|
||||
|
||||
module smd_capacitor(type, height, value = undef) { //! Draw an SMD capacitor with specified height
|
||||
size = smd_cap_size(type);
|
||||
vitamin(str("smd_capacitor(", type[0], "): SMD capacitor ", smd_size(size), !is_undef(value) ? str(" ", value) : ""));
|
||||
vitamin(str("smd_capacitor(", type[0], arg(value, undef, "value"), "): SMD capacitor ", smd_size(size), !is_undef(value) ? str(" ", value) : ""));
|
||||
|
||||
cap = smd_cap_end_cap(type);
|
||||
|
||||
@@ -161,7 +161,7 @@ function smd_sot_lead_size(type) = type[6]; //! Lead width, foot depth, lead
|
||||
function smd_sot_tab_width(type) = type[7]; //! The wide lead at the top
|
||||
|
||||
module smd_sot(type, value) { //! Draw an SMD transistor
|
||||
vitamin(str("smd_sot(", type[0], "): ", type[0], " package ", value));
|
||||
vitamin(str("smd_sot(", type[0], ", \"", value, "\"): ", type[0], " package ", value));
|
||||
|
||||
size = smd_sot_size(type);
|
||||
z0 = smd_sot_z(type);
|
||||
@@ -197,7 +197,6 @@ module smd_sot(type, value) { //! Draw an SMD transistor
|
||||
linear_extrude(eps)
|
||||
resize([size.x - 4 * (z2 - z1) * tan(slant), size.y / 2])
|
||||
text(value, halign = "center", valign = "center");
|
||||
|
||||
}
|
||||
|
||||
function smd_soic_size(type) = type[1]; //! Body length, width and height
|
||||
@@ -208,7 +207,7 @@ function smd_soic_lead_span(type) = type[5]; //! Total span of leads
|
||||
function smd_soic_lead_size(type) = type[6]; //! Lead width, foot depth, lead thickness
|
||||
|
||||
module smd_soic(type, value) { //! Draw an SMD SOIC
|
||||
vitamin(str("smd_soic(", type[0], "): ", type[0], " package ", value));
|
||||
vitamin(str("smd_soic(", type[0], ", \"", value, "\"): ", type[0], " package ", value));
|
||||
|
||||
size = smd_soic_size(type);
|
||||
z0 = smd_soic_z(type);
|
||||
@@ -261,7 +260,7 @@ function smd_diode_leads(type) = type[4]; //! Lead extent in x, width, thicknes
|
||||
function smd_diode_colour(type) = type[5]; //! Body colour
|
||||
|
||||
module smd_diode(type, value) { //! Draw an SMD diode
|
||||
vitamin(str("smd_diode(", type[0], "): ", type[0], " package ", value));
|
||||
vitamin(str("smd_diode(", type[0], ", \"", value, "\"): ", type[0], " package ", value));
|
||||
|
||||
slant = 5; //! 5 degree body draft angle
|
||||
size = smd_diode_size(type);
|
||||
@@ -326,7 +325,7 @@ module smd_tant(type, value) { //! Draw an SMD tantalum capacitor
|
||||
volts = is_undef(value) ? "" : let(c = value[3])
|
||||
assert(in(codes, c), str("expected the 4th character of value to be a voltage code: ", codes, ", got ", c))
|
||||
str(", ", voltages[search(c, codes)[0]], "V");
|
||||
vitamin(str("smd_tant(", type[0], "): SMD Tantalum capacitor package ", type[0][len(type[0]) -1], uF, volts));
|
||||
vitamin(str("smd_tant(", type[0], arg(value, undef, "value"), "): SMD Tantalum capacitor package ", type[0][len(type[0]) -1], uF, volts));
|
||||
|
||||
size = smd_tant_size(type);
|
||||
slant = 5; //! 5 degree body draft angle
|
||||
@@ -388,7 +387,7 @@ function smd_inductor_leads(type) = type[4]; //! Lead extent in x, width, thick
|
||||
function smd_inductor_colour(type) = type[5]; //! Body colour
|
||||
|
||||
module smd_inductor(type, value) { //! Draw an SMD inductor
|
||||
vitamin(str("smd_inductor(", type[0], "): ", type[0], " package ", value));
|
||||
vitamin(str("smd_inductor(", type[0], " ,\"", value, "\"): ", type[0], " package ", value));
|
||||
|
||||
size = smd_inductor_size(type);
|
||||
z0 = smd_inductor_z(type);
|
||||
@@ -437,7 +436,7 @@ function smd_pot_cross(type) = type[4]; //! Cross head slot for screwdriver
|
||||
function smd_pot_flat(type) = type[5]; //! Flat at the back of the wiper
|
||||
|
||||
module smd_pot(type, value) { //! Draw an SMD pot
|
||||
vitamin(str("smd_pot(", type[0], "): ", type[0], " package ", value));
|
||||
vitamin(str("smd_pot(", type[0], ", \"", value, "\"): ", type[0], " package ", value));
|
||||
|
||||
size = smd_pot_size(type);
|
||||
contacts = smd_pot_contacts(type);
|
||||
@@ -601,7 +600,7 @@ function smd_qfp_pin_size(type) = type[5]; //! Pins dimensions
|
||||
function smd_qfp_gullwing(type) = type[6]; //! Gullwing S, L, R1, R2
|
||||
|
||||
module smd_qfp(type, value) { //! Draw and SMD QFP package
|
||||
vitamin(str("smd_qfp(", type[0], "): SMD chip: ", value, ", package : ", type[0]));
|
||||
vitamin(str("smd_qfp(", type[0], ", \"", value, "\"): SMD chip: ", value, ", package : ", type[0]));
|
||||
|
||||
size = smd_qfp_body_size(type);
|
||||
offset = size.z / 2 * tan(smd_qfp_slant(type));
|
||||
@@ -652,3 +651,66 @@ module smd_qfp(type, value) { //! Draw and SMD QFP package
|
||||
circle(r = pin.y, $fn = fn);
|
||||
}
|
||||
}
|
||||
|
||||
function smd_250V_fuse_size(type) = type[1]; //! Bounding box of the body
|
||||
function smd_250V_fuse_z(type) = type[2]; //! Height of body above the PCB surface
|
||||
function smd_250V_fuse_step(type) = type[3]; //! End cutout length, width and height
|
||||
function smd_250V_fuse_base(type) = type[4]; //! Base length
|
||||
|
||||
module gcube(s) translate_z(s.z / 2) cube(s, center = true);
|
||||
|
||||
module smd_250V_fuse(type, value) { //! Draw an SMD mains fuse
|
||||
size = smd_250V_fuse_size(type);
|
||||
step = smd_250V_fuse_step(type);
|
||||
base = smd_250V_fuse_base(type);
|
||||
z = smd_250V_fuse_z(type);
|
||||
|
||||
vitamin(str("smd_250V_fuse(", type[0], ", \"", value, "\"): SMD fuse: ", type[0], " ", value));
|
||||
|
||||
color("LightYellow")
|
||||
translate_z(z) {
|
||||
gcube(base);
|
||||
|
||||
translate_z(base.z)
|
||||
gcube([size.x - step.x * 2, size.y, size.z - base.z]);
|
||||
|
||||
for(end = [-1, 1], side = [-1,1]) {
|
||||
translate([end * (size.x / 2 - step.x / 2), side * (size.y / 2 - step.y / 2)])
|
||||
gcube(step);
|
||||
|
||||
translate([end * (size.x / 2 - step.x / 2 - eps), 0])
|
||||
gcube([step.x, size.y, base.z]);
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
color(silver) {
|
||||
contact_h = step.z - 0.2;
|
||||
fuse_d = size.y - 2 * step.y;
|
||||
|
||||
for(end = [-1, 1])
|
||||
translate([end * (size.x / 2 - step.x), 0, contact_h / 2])
|
||||
rotate([90, 0, 0])
|
||||
linear_extrude(size.y - 2 * step.y, center = true)
|
||||
difference() {
|
||||
rounded_square([step.x * 2, contact_h], 0.2, $fn = fn);
|
||||
|
||||
translate([-step.x * end, 0])
|
||||
square([step.x * 2, contact_h], center = true);
|
||||
}
|
||||
|
||||
translate_z(step.z - fuse_d / 2)
|
||||
rotate([0, 90, 0])
|
||||
linear_extrude(size.x - (2 * step.x - eps), center = true)
|
||||
scale([1, size.y / fuse_d - eps])
|
||||
rotate(90)
|
||||
semi_circle(fuse_d / 2);
|
||||
|
||||
}
|
||||
|
||||
color("black")
|
||||
translate_z(z + size.z)
|
||||
linear_extrude(eps)
|
||||
resize([(size.x - 2 * step.x) * 0.9, size.y / 2])
|
||||
text(value, halign = "center", valign = "center");
|
||||
}
|
||||
|
@@ -87,4 +87,8 @@ QFP50P1200X1200X160_64N = ["QFP50P1200X1200X160_64N", [10, 10, 1.6], 12, 64, 0.5
|
||||
|
||||
smd_qfps = [ QFP50P1200X1200X160_64N ];
|
||||
|
||||
OMT250 = ["OMT250", [11, 4.6, 3.3], 0.15, [1.9,0.5, 2.7], [5.5, 4.6, 0.5]];
|
||||
|
||||
smd_250V_fuses = [OMT250];
|
||||
|
||||
use <smd.scad>
|
||||
|
@@ -17,9 +17,11 @@
|
||||
// If not, see <https://www.gnu.org/licenses/>.
|
||||
//
|
||||
|
||||
peg_spring = ["peg_spring", 6.4, 0.9, 15.5, 8, 1, false, 0, "silver"];
|
||||
batt_spring = ["batt_spring", 5, 0.5, 8, 5, 1, false, 6, "silver"];
|
||||
// name OD wireG len #trns clsd flat OD2 color
|
||||
peg_spring = ["peg_spring", 6.4, 0.9, 15.5, 8, 1, false, 0, "silver"];
|
||||
yellow_bed_spring = ["yellow_bed_spring", 8, 0.9, 20, 10, 1, false, 0, "yellow"];
|
||||
batt_spring = ["batt_spring", 5, 0.5, 8, 5, 1, false, 6, "silver"];
|
||||
|
||||
springs = [peg_spring, batt_spring];
|
||||
springs = [peg_spring, batt_spring, yellow_bed_spring];
|
||||
|
||||
use <spring.scad>
|
||||
|
@@ -80,7 +80,7 @@ module NEMA(type, shaft_angle = 0, jst_connector = false) { //! Draw specified N
|
||||
shaft_rad = NEMA_shaft_dia(type) / 2;
|
||||
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"));
|
||||
vitamin(str("NEMA(", type[0], "): Stepper motor NEMA", round(NEMA_width(type) / 2.54), " x ", length, "mm (", type[7],"x",type[8], " shaft)"));
|
||||
thread_d = NEMA_thread_d(type);
|
||||
corner_r = 0.9;
|
||||
bore = NEMA_shaft_bore(type);
|
||||
|
@@ -26,6 +26,7 @@
|
||||
NEMA8_30 = ["NEMA8_30", 20, 30, 30/2, 20, 7.5, 1.6, 4, 6, 16, [8, 8], 2, true, true, 0, 0];
|
||||
NEMA8_30BH = ["NEMA8_30BH", 20, 30, 30/2, 20, 7.5, 1.6, 5, 12, 16, [8, 8], 2, true, true, 7, 2.8];
|
||||
NEMA17_47 = ["NEMA17_47", 42.3, 47, 53.6/2, 25, 11, 2, 5, 24, 31, [11.5, 9], 3, false, false, 0, 0];
|
||||
NEMA17_47L80 = ["NEMA17_47L80", 42.3, 47, 53.6/2, 25, 11, 2, 5, 80, 31, [11.5, 9], 3, false, true, 0, 0];
|
||||
NEMA17_40 = ["NEMA17_40", 42.3, 40, 53.6/2, 25, 11, 2, 5, 20, 31, [12.5, 11], 3, false, false, 0, 0];
|
||||
NEMA17_40L280 = ["NEMA17_40L280", 42.3, 40, 53.6/2, 25, 11, 2, 8, [280, 8, 4], 31, [12.5, 11], 3, false, false, 0, 0];
|
||||
NEMA17_34 = ["NEMA17_34", 42.3, 34, 53.6/2, 25, 11, 2, 5, 24, 31, [8, 8], 3, false, false, 0, 0];
|
||||
@@ -34,7 +35,7 @@ NEMA16_19 = ["NEMA16_19", 39.5, 19.2, 50.6/2, 50.6/2, 11, 2, 5
|
||||
NEMA14_36 = ["NEMA14_36", 35.2, 36, 46.4/2, 21, 11, 2, 5, 21, 26, [8, 8], 3, false, false, 0, 0];
|
||||
NEMA23_51 = ["NEMA23_51", 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 = [NEMA8_30, NEMA8_30BH, NEMA14_36, NEMA16_19, NEMA17_27, NEMA17_34, NEMA17_40, NEMA17_47, NEMA23_51];
|
||||
stepper_motors = [NEMA8_30, NEMA8_30BH, NEMA14_36, NEMA16_19, NEMA17_27, NEMA17_34, NEMA17_40, NEMA17_47,NEMA17_47L80, NEMA23_51];
|
||||
small_steppers = [];
|
||||
|
||||
use <stepper_motor.scad>
|
||||
|