diff --git a/libtest.png b/libtest.png index f03046c..5e77bd4 100644 Binary files a/libtest.png and b/libtest.png differ diff --git a/readme.md b/readme.md index a53fed4..2f72c65 100644 --- a/readme.md +++ b/readme.md @@ -523,6 +523,8 @@ Various electronic components used in hot ends and heated beds. | Function | Description | |:--- |:--- | | ```TO220_thickness()``` | Thickness of the tab of a TO220 | +| ```fack2spm_bezel_size()``` | FACK2SPM Bezel dimensions | +| ```fack2spm_screw()``` | Screw type for FACK2SPM | ### Modules | Module | Description | @@ -531,6 +533,9 @@ Various electronic components used in hot ends and heated beds. | ```al_clad_resistor(type, value, leads = true)``` | Draw an aluminium clad resistor | | ```al_clad_resistor_hole_positions(type)``` | Position children at the screw holes of an aluminium clad resistor | | ```al_clad_resistor_holes(type, h = 100)``` | Drill screw holes for an aluminium clad resistor | +| ```fack2spm()``` | Draw a FACK2SPM Cat5E RJ45 shielded panel mount coupler | +| ```fack2spm_hole_positions()``` | Place children at the FACK2SPM mounting hole positions | +| ```fack2spm_holes(h = 0)``` | Cut the holes for a FACK2SPM | | ```panel_USBA()``` | Draw a panel mount USBA connector | | ```panel_USBA_hole_positions()``` | Place children at hole positions | | ```panel_USBA_holes(h = 100)``` | Make holes for USBA connector | @@ -555,6 +560,7 @@ Various electronic components used in hot ends and heated beds. | 4 | ```screw(M2p5_pan_screw, 16)``` | Screw M2.5 pan x 16mm | | 4 | ```screw(M3_pan_screw, 16)``` | Screw M3 pan x 16mm | | 1 | ```panel_USBA()``` | Socket USB A panel mount | +| 1 | ```tuk_fack2spm()``` | TUK FACK2SPM Cat5E RJ45 shielded panel mount coupler | | 1 | ```thermal_cutout(TC)``` | Thermal cutout TC | | 1 | ```resistor(Epcos)``` | Thermistor Epcos B57560G104F 100K 1% | | 1 | ```resistor(EpcosBlue)``` | Thermistor Epcos B57861S104F40 100K 1% | diff --git a/tests/components.scad b/tests/components.scad index 3c67338..87e3403 100644 --- a/tests/components.scad +++ b/tests/components.scad @@ -41,9 +41,12 @@ module components() { translate([0, 50]) TO220("Generic TO220 package"); - translate([50, 50]) + translate([40, 50]) panel_USBA(); + translate([80, 50]) + fack2spm(); + translate([0,80]) thermal_cutouts(); diff --git a/tests/png/components.png b/tests/png/components.png index 3f5dd85..05efd67 100644 Binary files a/tests/png/components.png and b/tests/png/components.png differ diff --git a/vitamins/component.scad b/vitamins/component.scad index 14de14c..c2cd96d 100644 --- a/vitamins/component.scad +++ b/vitamins/component.scad @@ -28,6 +28,7 @@ include <../core.scad> include include use <../utils/rounded_cylinder.scad> +use <../utils/dogbones.scad> function resistor_length(type) = type[2]; //! Body length function resistor_diameter(type) = type[3]; //! Body diameter @@ -447,3 +448,75 @@ module thermal_cutout(type) { //! Draw specified thermal cutout thermal_cutout_hole_positions(type) children(); } + +function fack2spm_bezel_size() = [19.2, 35.5, 2.6, 2]; //! FACK2SPM Bezel dimensions + +module fack2spm_hole_positions() //! Place children at the FACK2SPM mounting hole positions + for(end = [-1, 1]) + translate([0, end * 28.96 / 2]) + children(); + +function fack2spm_screw() = M3_dome_screw; //! Screw type for FACK2SPM + +module fack2spm_holes(h = 0) { //! Cut the holes for a FACK2SPM + fack2spm_hole_positions() + drill(screw_clearance_radius(fack2spm_screw()), h); + + dogbone_rectangle([17.15, 22.86, h]); +} + +module fack2spm() { //! Draw a FACK2SPM Cat5E RJ45 shielded panel mount coupler + vitamin("tuk_fack2spm(): TUK FACK2SPM Cat5E RJ45 shielded panel mount coupler"); + + bezel = fack2spm_bezel_size(); + body = [16.8, 22.8, 9.8]; + socket = [14.5, 16.1, 29.6]; + y_offset = -(19.45 - 16.3) / 2; + plug = [12, 6.8, 10]; + plug_y = y_offset - socket.y / 2 + 4 + plug.y / 2; + tab1 = [4, 3]; + tab2 = [6.3, 1.6]; + + module socket() + translate([0, y_offset]) + square([socket.x, socket.y], center = true); + + color("silver") { + linear_extrude(bezel.z) + difference() { + rounded_square([bezel.x, bezel.y], bezel[3]); + + fack2spm_hole_positions() + circle(d = 3.15); + + socket(); + } + + translate_z(bezel.z - body.z) + linear_extrude(body.z - eps) + difference() { + square([body.x, body.y], center = true); + + socket(); + } + + translate_z(bezel.z - socket.z) + linear_extrude(socket.z - 0.1) + difference() { + offset(-0.1) socket(); + + translate([0, plug_y]) { + square([plug.x, plug.y], center = true); + + translate([0, -plug.y / 2]) { + square([tab1.x, 2 * tab1.y], center = true); + + square([tab2.x, 2 * tab2.y], center = true); + } + } + } + + translate([0, plug_y, -socket.z / 2]) + cube([plug.x, plug.y, socket.z - 2 * plug.z], center = true); + } +}