1
0
mirror of https://github.com/nophead/NopSCADlib.git synced 2025-09-24 22:21:28 +02:00

Compare commits

..

23 Commits

Author SHA1 Message Date
Chris Palmer
c33876530e Merge branch 'martinbudden-green_terminals' 2021-01-13 21:31:25 +00:00
Chris Palmer
8fea8f437b Updated images and readme for green terminals. 2021-01-13 21:31:14 +00:00
Chris Palmer
bc3ef607af Merge branch 'green_terminals' of https://github.com/martinbudden/NopSCADlib into martinbudden-green_terminals 2021-01-13 21:17:08 +00:00
Chris Palmer
6bcdc24cd3 Updated readme an images for ESP-01. 2021-01-13 21:12:29 +00:00
Chris Palmer
b8b4232882 Merge branch 'ESP8266' of https://github.com/martinbudden/NopSCADlib 2021-01-13 20:21:43 +00:00
Chris Palmer
0394d9981f Merge branch 'martinbudden-tft35' 2021-01-13 20:20:24 +00:00
Chris Palmer
e4e7096e3c Merge branch 'martinbudden-ESP8266' 2021-01-13 20:18:13 +00:00
Chris Palmer
d71bb4bdfa Remove commented out code. 2021-01-13 20:17:43 +00:00
Chris Palmer
89c3767f21 Update image. 2021-01-13 20:09:16 +00:00
Martin Budden
c837de721d Renamed ESP8266 to ESP_01 and rotated. 2021-01-13 18:52:14 +00:00
Martin Budden
f8c87bd8e3 Added ESP8266. 2021-01-13 17:22:46 +00:00
Martin Budden
ef58fe5818 Minor corrections to positions on BigTreeTech_TFT35v3_0_PCB. 2021-01-13 15:57:27 +00:00
Martin Budden
9c0c0c0acf Added green terminals gt_5x11 and gt_5x17. 2021-01-13 15:51:41 +00:00
Chris Palmer
ac6e8e040a Fix for image magick returning non-integer pixels. 2021-01-12 14:51:55 +00:00
Chris Palmer
accf4f7bc1 Added printed pulleys to the big picture. 2021-01-10 22:31:14 +00:00
Chris Palmer
6bd4638e7d Fixed screw hole position of inverted printed_pulley.
Unexploded assembly view shows round screw holes to represent the tapped state.
2021-01-10 21:28:31 +00:00
Chris Palmer
4cca9d5285 Merge branch 'martinbudden-printed_pulleys' 2021-01-10 12:11:29 +00:00
Chris Palmer
c3fc352288 Fixed orientation of inverted pulley.
Added stl and assembly calls.
Same render handling as pulleys.
Updated pics and readme.
2021-01-10 12:11:03 +00:00
Chris Palmer
a8b634de39 Better pose for pulley test so screws can be seen. 2021-01-10 11:49:32 +00:00
Chris Palmer
1a55a08c59 Merge branch 'printed_pulleys' of https://github.com/martinbudden/NopSCADlib into martinbudden-printed_pulleys 2021-01-09 23:38:48 +00:00
Martin Budden
b74cbee151 Rendering changes to match pulleys. 2021-01-09 18:15:19 +00:00
Martin Budden
9f7efd50fb Replaced poly_circle bores with circular bores. 2021-01-09 17:52:24 +00:00
Martin Budden
0b14d3fbc4 Added printable pulleys. 2021-01-09 17:52:24 +00:00
15 changed files with 409 additions and 48 deletions

Binary file not shown.

Before

Width:  |  Height:  |  Size: 862 KiB

After

Width:  |  Height:  |  Size: 870 KiB

View File

@@ -118,6 +118,7 @@ use <tests/foot.scad>
use <tests/handle.scad>
use <tests/PCB_mount.scad>
use <tests/printed_box.scad>
use <tests/printed_pulleys.scad>
use <tests/ribbon_clamp.scad>
use <tests/screw_knob.scad>
use <tests/socket_box.scad>
@@ -170,6 +171,9 @@ translate([x5, cable_grommets_y + 370])
translate([x5 + 60, cable_grommets_y + 200])
strap_handles();
translate([640, cable_grommets_y + 200])
printed_pulley_test();
translate([x5, cable_grommets_y + 250])
handle();

View File

@@ -0,0 +1,200 @@
//
// NopSCADlib Copyright Chris Palmer 2020
// 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/>.
//
//! Printed pulleys are a remix of droftarts's (see <https://www.thingiverse.com/droftarts/designs>) Parametric Pulleys
//! on Thingiverse (see <https://www.thingiverse.com/thing:16627>) and are licensed under the
//! Creative Commons - Attribution - Share Alike license (see <https://creativecommons.org/licenses/by-sa/3.0/>)
//
include <NopSCADlib/core.scad>
include <NopSCADlib/vitamins/pulleys.scad>
printed_pulley_GT2_profile = [[0.747183,-0.5],[0.747183,0],[0.647876,0.037218],[0.598311,0.130528],[0.578556,0.238423],[0.547158,0.343077],[0.504649,0.443762],[0.451556,0.53975],[0.358229,0.636924],[0.2484,0.707276],[0.127259,0.750044],[0,0.76447],[-0.127259,0.750044],[-0.2484,0.707276],[-0.358229,0.636924],[-0.451556,0.53975],[-0.504797,0.443762],[-0.547291,0.343077],[-0.578605,0.238423],[-0.598311,0.130528],[-0.648009,0.037218],[-0.747183,0],[-0.747183,-0.5]];
function printed_pulley_inverted(type) = pulley_hub_dia(type) < pulley_flange_dia(type); //! Need to print upside down to prevent overhang
function printed_pulley_od(tooth_count, tooth_pitch, pitch_line_offset)
= tooth_count * tooth_pitch / PI - 2 * pitch_line_offset;
module printed_pulley_teeth_from_profile(tooth_count, tooth_depth, tooth_width, tooth_profile) {
pulley_od = printed_pulley_od(tooth_count, 2, 0.254);
difference() {
rotate (90 / tooth_count)
circle(r = pulley_od / 2, $fn = tooth_count * 4);
tooth_distance_from_centre = sqrt(pulley_od * pulley_od - (tooth_width + 0.2) * (tooth_width + 0.2)) / 2;
for(i = [1 : tooth_count])
rotate(i * 360 / tooth_count)
translate([0, -tooth_distance_from_centre])
scale([(tooth_width + 0.2) / tooth_width, 1])
polygon(tooth_profile);
}
}
module printed_pulley_GT2_teeth(type) {
tooth_count = pulley_teeth(type);
if (tooth_count == 0)
circle(r = pulley_od(type) / 2);
else
printed_pulley_teeth_from_profile(tooth_count, 0.764, 1.494, printed_pulley_GT2_profile);
}
module printed_pulley_teeth(type) { //! Draw the pulley's teeth
tooth_count = pulley_teeth(type);
tw = pulley_od(type) * PI / (tooth_count * 2);
ir = pulley_ir(type);
or = pulley_od(type) / 2;
T_angle = 40;
GT_r = 0.555;
for (i = [0 : 1 : tooth_count - 1])
rotate(i * 360 / tooth_count)
if (pulley_type(type)[0] == "G")
translate([0, ir + GT_r])
hull() {
circle(GT_r);
translate([0, GT_r])
square(2 * GT_r, center = true);
}
else
translate([0, (ir + or) / 2])
hull() {
for(side = [-1, 1])
translate([side * tw / 2, 0])
rotate(-side * T_angle / 2)
square([eps, (or - ir)], center = true);
translate([0, 1])
square([tw, eps], center = true);
}
}
module printed_pulley(type) { //! Draw a printable pulley
ft = pulley_flange_thickness(type);
hl = pulley_hub_length(type);
w = pulley_width(type);
r1 = pulley_bore(type) / 2;
or = pulley_od(type) / 2;
screw_z = pulley_screw_z(type);
stl(str("printed_pulley_", type[0]));
module core() {
translate_z(pulley_hub_length(type) + ft)
linear_extrude(w + 1) let($fa = 1, $fs = 0.1)
if ("GT2" == str(pulley_type(type)[0], pulley_type(type)[1], pulley_type(type)[2]))
difference() {
printed_pulley_GT2_teeth(type);
circle(d = pulley_bore(type));
}
else
difference() {
circle(or);
printed_pulley_teeth(type);
circle(d = pulley_bore(type));
}
}
module screw_holes() {
if(pulley_screws(type))
translate_z(screw_z)
for(i = [0 : pulley_screws(type) - 1])
rotate([-90, 180, i * -90])
if(show_supports())
teardrop(r = screw_pilot_hole(pulley_screw(type)), h = pulley_flange_dia(type) / 2 + 1, center = false);
else
cylinder(r = screw_radius(pulley_screw(type)), h = pulley_flange_dia(type) / 2 + 1);
}
module hub()
linear_extrude(hl)
difference() {
circle(d= pulley_hub_dia(type));
circle(d = pulley_bore(type));
}
translate_z(printed_pulley_inverted(type) ? - hl : 0) {
// hub
if(hl)
translate_z(printed_pulley_inverted(type) ? hl + w + 2 * ft : 0)
if(screw_z && screw_z < hl)
render()
difference() {
hub();
screw_holes();
}
else
hub();
// bottom flange
translate_z(hl)
linear_extrude(ft)
difference() {
circle(d = pulley_flange_dia(type));
circle(d = pulley_bore(type));
}
// top flange
translate_z(hl + ft + w) {
// inner part, supported by core
linear_extrude(ft)
difference() {
circle(r = or);
circle(d = pulley_bore(type));
}
// outer part at 45 degrees for printing
rotate_extrude()
translate([or - eps, ft])
vflip()
right_triangle(ft, ft);
}
if(screw_z && screw_z > hl)
render()
difference() { // T5 pulleys have screws through the teeth
core();
translate_z(printed_pulley_inverted(type) ? pulley_height(type) + hl - 2 * screw_z : 0)
screw_holes();
}
else
core();
}
}
module printed_pulley_assembly(type, colour = pp1_colour) //! Draw a printed pulley with its grub screws in place
assembly(str("printed_pulley_", type[0])) {
translate_z(pulley_offset(type)) {
stl_colour(colour)
if(printed_pulley_inverted(type))
translate_z(pulley_height(type))
hflip()
printed_pulley(type);
else
printed_pulley(type);
if(pulley_screws(type))
translate_z(pulley_screw_z(type))
for(i = [0 : pulley_screws(type) - 1])
rotate([-90, 0, i * -90])
translate_z(pulley_bore(type) / 2 + pulley_screw_length(type))
screw(pulley_screw(type), pulley_screw_length(type));
}
}

104
readme.md
View File

@@ -37,12 +37,12 @@ See [usage](docs/usage.md) for requirements, installation instructions and a usa
<tr><td> <a href = "#Extrusions">Extrusions</a> </td><td> <a href = "#Opengrab">Opengrab</a> </td><td> <a href = "#Stepper_motors">Stepper_motors</a> </td><td> <a href = "#PSU_shroud">PSU_shroud</a> </td><td> <a href = "#Rounded_right_triangle">Rounded_right_triangle</a> </td><td></td></tr>
<tr><td> <a href = "#Fans">Fans</a> </td><td> <a href = "#PCB">PCB</a> </td><td> <a href = "#Swiss_clips">Swiss_clips</a> </td><td> <a href = "#Press_fit">Press_fit</a> </td><td> <a href = "#Sector">Sector</a> </td><td></td></tr>
<tr><td> <a href = "#Fuseholder">Fuseholder</a> </td><td> <a href = "#PCBs">PCBs</a> </td><td> <a href = "#Toggles">Toggles</a> </td><td> <a href = "#Printed_box">Printed_box</a> </td><td> <a href = "#Sweep">Sweep</a> </td><td></td></tr>
<tr><td> <a href = "#Geared_steppers">Geared_steppers</a> </td><td> <a href = "#PSUs">PSUs</a> </td><td> <a href = "#Transformers">Transformers</a> </td><td> <a href = "#Ribbon_clamp">Ribbon_clamp</a> </td><td> <a href = "#Thread">Thread</a> </td><td></td></tr>
<tr><td> <a href = "#Green_terminals">Green_terminals</a> </td><td> <a href = "#Panel_meters">Panel_meters</a> </td><td> <a href = "#Tubings">Tubings</a> </td><td> <a href = "#SSR_shroud">SSR_shroud</a> </td><td> <a href = "#Tube">Tube</a> </td><td></td></tr>
<tr><td> <a href = "#Hot_ends">Hot_ends</a> </td><td> <a href = "#Pillars">Pillars</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 = "#Hygrometer">Hygrometer</a> </td><td> <a href = "#Pin_headers">Pin_headers</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 = "#IECs">IECs</a> </td><td> <a href = "#Pulleys">Pulleys</a> </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 = "#Inserts">Inserts</a> </td><td></td><td> <a href = "#Wire">Wire</a> </td><td></td><td></td><td></td></tr>
<tr><td> <a href = "#Geared_steppers">Geared_steppers</a> </td><td> <a href = "#PSUs">PSUs</a> </td><td> <a href = "#Transformers">Transformers</a> </td><td> <a href = "#Printed_pulleys">Printed_pulleys</a> </td><td> <a href = "#Thread">Thread</a> </td><td></td></tr>
<tr><td> <a href = "#Green_terminals">Green_terminals</a> </td><td> <a href = "#Panel_meters">Panel_meters</a> </td><td> <a href = "#Tubings">Tubings</a> </td><td> <a href = "#Ribbon_clamp">Ribbon_clamp</a> </td><td> <a href = "#Tube">Tube</a> </td><td></td></tr>
<tr><td> <a href = "#Hot_ends">Hot_ends</a> </td><td> <a href = "#Pillars">Pillars</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 = "#Hygrometer">Hygrometer</a> </td><td> <a href = "#Pin_headers">Pin_headers</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 = "#IECs">IECs</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 = "#Inserts">Inserts</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></td><td></td><td> <a href = "#Zipties">Zipties</a> </td><td></td><td></td><td></td></tr>
</table>
@@ -1048,10 +1048,12 @@ Parametric green terminal blocks
### Vitamins
| Qty | Module call | BOM entry |
| ---:|:--- |:---|
| 1 | `green_terminal(gt_6p35, 2)` | Terminal block 2 way 0.25" |
| 1 | `green_terminal(gt_5p08, 3)` | Terminal block 3 way 0.2" |
| 1 | `green_terminal(gt_3p5, 4)` | Terminal block 4 way 3.5mm |
| 1 | `green_terminal(gt_2p54, 5)` | Terminal block 5 way 0.1" |
| 1 | `green_terminal(gt_5x17, 2)` | Terminal block 2 way 5mm |
| 1 | `green_terminal(gt_5x11, 3)` | Terminal block 3 way 5mm |
| 1 | `green_terminal(gt_6p35, 4)` | Terminal block 4 way 0.25" |
| 1 | `green_terminal(gt_5p08, 5)` | Terminal block 5 way 0.2" |
| 1 | `green_terminal(gt_3p5, 6)` | Terminal block 6 way 3.5mm |
| 1 | `green_terminal(gt_2p54, 7)` | Terminal block 7 way 0.1" |
<a href="#top">Top</a>
@@ -2308,6 +2310,7 @@ PCBs and perfboard with optional components. The shape can be a rectangle with o
| 1 | `pcb(DuetE)` | Duet 2 Ethernet electronics |
| 1 | `pcb(Duex2)` | Duex2 expansion board |
| 1 | `pcb(Duex5)` | Duex5 expansion board |
| 1 | `pcb(ESP-01)` | ESP-01 |
| 1 | `pcb(EnviroPlus)` | Enviro+ |
| 1 | `pcb(ExtruderPCB)` | Extruder connection PCB |
| 1 | `pcb(Keyes5p1)` | Keyes5.1 Arduino Uno expansion board |
@@ -2337,8 +2340,8 @@ PCBs and perfboard with optional components. The shape can be a rectangle with o
| 2 | `screw(M2p5_cap_screw, 20)` | Screw M2.5 cap x 20mm |
| 8 | `screw(M2p5_cap_screw, 25)` | Screw M2.5 cap x 25mm |
| 8 | `screw(M2p5_cap_screw, 30)` | Screw M2.5 cap x 30mm |
| 4 | `screw(M2p5_pan_screw, 20)` | Screw M2.5 pan x 20mm |
| 12 | `screw(M2p5_pan_screw, 25)` | Screw M2.5 pan x 25mm |
| 4 | `screw(M2p5_pan_screw, 30)` | Screw M2.5 pan x 30mm |
| 4 | `screw(M3_cap_screw, 16)` | Screw M3 cap x 16mm |
| 8 | `screw(M3_cap_screw, 30)` | Screw M3 cap x 30mm |
| 12 | `screw(M4_cap_screw, 35)` | Screw M4 cap x 35mm |
@@ -2359,21 +2362,21 @@ PCBs and perfboard with optional components. The shape can be a rectangle with o
| 4 | pcb_spacer2070.stl |
| 4 | pcb_spacer2080.stl |
| 4 | pcb_spacer2090.stl |
| 4 | pcb_spacer25110.stl |
| 4 | pcb_spacer25120.stl |
| 4 | pcb_spacer25130.stl |
| 4 | pcb_spacer25140_2.stl |
| 4 | pcb_spacer25140.stl |
| 4 | pcb_spacer25150_2.stl |
| 4 | pcb_spacer25160_2.stl |
| 4 | pcb_spacer25190.stl |
| 4 | pcb_spacer25170_2.stl |
| 4 | pcb_spacer25200.stl |
| 2 | pcb_spacer2580.stl |
| 4 | pcb_spacer30170.stl |
| 4 | pcb_spacer25210.stl |
| 2 | pcb_spacer2590.stl |
| 4 | pcb_spacer30180.stl |
| 4 | pcb_spacer30190.stl |
| 4 | pcb_spacer3050.stl |
| 4 | pcb_spacer40210.stl |
| 4 | pcb_spacer40220.stl |
| 4 | pcb_spacer40230.stl |
| 4 | pcb_spacer40240.stl |
<a href="#top">Top</a>
@@ -5041,6 +5044,73 @@ It can also have printed feet on the base with the screws doubling up to hold th
| 1 | box2_assembly |
<a href="#top">Top</a>
---
<a name="Printed_pulleys"></a>
## Printed_pulleys
Printed pulleys are a remix of droftarts's (see <https://www.thingiverse.com/droftarts/designs>) Parametric Pulleys
on Thingiverse (see <https://www.thingiverse.com/thing:16627>) and are licensed under the
Creative Commons - Attribution - Share Alike license (see <https://creativecommons.org/licenses/by-sa/3.0/>)
[printed/printed_pulleys.scad](printed/printed_pulleys.scad) Implementation.
[tests/printed_pulleys.scad](tests/printed_pulleys.scad) Code for this example.
### Functions
| Function | Description |
|:--- |:--- |
| `printed_pulley_inverted(type)` | Need to print upside down to prevent overhang |
### Modules
| Module | Description |
|:--- |:--- |
| `printed_pulley(type)` | Draw a printable pulley |
| `printed_pulley_assembly(type, colour = pp1_colour)` | Draw a printed pulley with its grub screws in place |
| `printed_pulley_teeth(type)` | Draw the pulley's teeth |
![printed_pulleys](tests/png/printed_pulleys.png)
### Vitamins
| Qty | Module call | BOM entry |
| ---:|:--- |:---|
| 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 |
### Printed
| Qty | Filename |
| ---:|:--- |
| 1 | printed_pulley_GT2x12_pulley.stl |
| 1 | printed_pulley_GT2x16_plain_idler.stl |
| 1 | printed_pulley_GT2x16_pulley.stl |
| 1 | printed_pulley_GT2x16_toothed_idler.stl |
| 1 | printed_pulley_GT2x16x7_plain_idler.stl |
| 1 | printed_pulley_GT2x20_plain_idler.stl |
| 1 | printed_pulley_GT2x20_toothed_idler.stl |
| 1 | printed_pulley_GT2x20ob_pulley.stl |
| 1 | printed_pulley_GT2x20um_pulley.stl |
| 1 | printed_pulley_T2p5x16_pulley.stl |
| 1 | printed_pulley_T5x10_pulley.stl |
### Assemblies
| Qty | Name |
| ---:|:--- |
| 1 | printed_pulley_GT2x12_pulley_assembly |
| 1 | printed_pulley_GT2x16_plain_idler_assembly |
| 1 | printed_pulley_GT2x16_pulley_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_toothed_idler_assembly |
| 1 | printed_pulley_GT2x20ob_pulley_assembly |
| 1 | printed_pulley_GT2x20um_pulley_assembly |
| 1 | printed_pulley_T2p5x16_pulley_assembly |
| 1 | printed_pulley_T5x10_pulley_assembly |
<a href="#top">Top</a>
---

View File

@@ -56,7 +56,7 @@ def compare_images(a, b, c):
with open(log_name, 'w') as output:
do_cmd(("magick compare -metric AE -fuzz %d%% %s %s %s" % (fuzz, a, b, c)).split(), output = output)
with open(log_name, 'r') as f:
pixels = int(f.read().strip())
pixels = int(float(f.read().strip()))
os.remove(log_name)
return pixels

Binary file not shown.

Before

Width:  |  Height:  |  Size: 76 KiB

After

Width:  |  Height:  |  Size: 77 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 82 KiB

After

Width:  |  Height:  |  Size: 102 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 152 KiB

After

Width:  |  Height:  |  Size: 150 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 116 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 43 KiB

After

Width:  |  Height:  |  Size: 45 KiB

View File

@@ -0,0 +1,45 @@
//
// NopSCADlib Copyright Chris Palmer 2020
// nop.head@gmail.com
// hydraraptor.blogspot.com
//
// This file is part of NopSCADlib.
//
// NopSCADlib is free software: you can redistribute it and/or modify it under the terms of the
// GNU General Public License as published by the Free Software Foundation, either version 3 of
// the License, or (at your option) any later version.
//
// NopSCADlib is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
// without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
// See the GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License along with NopSCADlib.
// If not, see <https://www.gnu.org/licenses/>.
//
include <../core.scad>
include <../vitamins/pulleys.scad>
include <../printed/printed_pulleys.scad>
use <../utils/layout.scad>
module printed_pulley_test(show_metal = false) {
layout([for (p = pulleys) pulley_flange_dia(p)]) let(p = pulleys[$i]) {
rotate(-145)
if($preview)
printed_pulley_assembly(p);
else
printed_pulley(p);
if(show_metal)
not_on_bom()
translate([0, 20])
rotate(-145)
pulley_assembly(p);
}
}
if($preview)
printed_pulley_test(true);
else
printed_pulley_test();

View File

@@ -23,7 +23,7 @@ include <../vitamins/pulleys.scad>
module pulleys()
layout([for(p = pulleys) pulley_flange_dia(p)])
rotate(-45)
rotate(-145)
pulley_assembly(pulleys[$i]);
if($preview)

View File

@@ -73,39 +73,54 @@ SSD1963_4p3 = ["SSD1963_4p3", "LCD display SSD1963 4.3\"", 105.5, 67.2, 3.4, SSD
[[0, -34.5], [12, -31.5]],
];
/* Dimensions taken from:
https://github.com/bigtreetech/BIGTREETECH-TFT35-V3.0/blob/master/Hardware/TFT35%20V3.0-SIZE-TOP.pdf
and
https://github.com/bigtreetech/BIGTREETECH-TFT35-V3.0/blob/master/Hardware/TFT35%20V3.0-SIZE-BOT.pdf
*/
BigTreeTech_TFT35v3_0_PCB = ["", "",
110, 55.77, 1.6, 0, 3, 0, "green", false,
[ [-3.12, 3.17], [-3.12, -3.17], [3.12, -3.17], [3.12, 3.17] ],
[
[ 10, 7.5, 0, "-button_6mm" ],
[ 9, 43, 0, "-buzzer", 5, 9 ],
[ 9, 27, 0, "-potentiometer" ],
[ 102,28.82, 0, "uSD", [26.5, 16, 3] ],
[16.5, 5.9, 0, "2p54boxhdr", 5, 2 ],
[36.5, 5.9, 0, "2p54boxhdr", 5, 2 ],
[56.5, 5.9, 0, "2p54boxhdr", 5, 2 ],
[82.5, 4, 0, "jst_xh", 5 ],
[26.5, 52.8, 180, "jst_xh", 2 ],
[39.5, 52.8, 180, "jst_xh", 3 ],
[52.5, 52.8, 180, "jst_xh", 3 ],
[65.5, 52.8, 180, "jst_xh", 3 ],
[78.5, 52.8, 180, "jst_xh", 3 ],
[94.5, 52.8, 180, "jst_xh", 5 ],
[ 8, 43, 180, "usb_A" ],
[ 97, 4, 0, "chip", 9, 3.5, 1, grey(20) ],
// ESP-8266
[ 23, 28, 90, "2p54socket", 4, 2 ],
110, 55.77, 1.6, // size
0, // corner radius
3, // mounting hole diameter
0, // pad around mounting hole
"green", // color
false, // true if parts should be separate BOM items
[ // hole positions
[-3.12, 3.17], [-3.12, -3.17], [3.12, -3.17], [3.12, 3.17]
],
[]
[ // components
[ 9, -( 8.46 + 17.45)/2, 0, "-buzzer", 5, 9 ],
[ 9, -(23.76 + 34.94)/2, 0, "-potentiometer" ],
[ (6.84 + 12.85)/2, -(45.73 + 51.73)/2, 0, "-button_6mm" ],
[ 102, (15.57 + 42.07)/2, 0, "uSD", [26.5, 16, 3] ],
[ 8, -( 6.76 + 18.76)/2, 180, "usb_A" ],
[ 23, (23.32 + 33.64)/2, 90, "2p54socket", 4, 2 ], // ESP-8266
[ 16.5, 5.9, 0, "2p54boxhdr", 5, 2 ],
[ 36.5, 5.9, 0, "2p54boxhdr", 5, 2 ],
[ 56.5, 5.9, 0, "2p54boxhdr", 5, 2 ],
[ 82.5, 4, 0, "jst_xh", 5 ],
[ 26.5, 52.8, 180, "jst_xh", 2 ],
[ 39.5, 52.8, 180, "jst_xh", 3 ],
[ 52.5, 52.8, 180, "jst_xh", 3 ],
[ 65.5, 52.8, 180, "jst_xh", 3 ],
[ 78.5, 52.8, 180, "jst_xh", 3 ],
[ 94.5, 52.8, 180, "jst_xh", 5 ],
[ 97, 4, 0, "chip", 9, 3.5, 1, grey(20) ],
],
[] // accessories
];
BigTreeTech_TFT35v3_0 = ["BigTreeTech_TFT35v3_0", "BigTreeTech TFT35 v3.0",
84.5, 54.5, 4, BigTreeTech_TFT35v3_0_PCB,
[-6, 0, 0], // pcb offset
84.5, 54.5, 4, // size
BigTreeTech_TFT35v3_0_PCB, // pcb
[7 - (110 - 84.5)/2, 0, 0], // pcb offset from center
[[-40, -26.5], [41.5, 26.5, 0.5]], // aperture
[], // touch screen
0, // thread length
[], // clearance need for the ts ribbon
[], // touch screen position and size
0, // length that studs protrude from the PCB holes
[], // keep out region for ribbon cable
];

View File

@@ -31,7 +31,9 @@ gt_2p54 = ["gt_2p54", 2.54, 6.6, 10, 3, 6, 0.4, 6.4, 1, 1, 0.2, 2,
gt_3p5 = ["gt_3p5", 3.5, 7.3, 8.5, 4, 5, 0.4, 4, 0, 1.35, 0.4, 1.8, 2, 2, 0, 0, 0];
gt_5p08 = ["gt_5p08", 5.08, 7.9, 10, 5.0, 7, 0.0, 6.8, 1.45, 1.95, 0.5, 4.0, 5.4, 0.5, 0, 0, 0];
gt_6p35 = ["gt_6p35", 6.35, 12.6, 17.4, 6.8, 12, 0.4, 11, 2, 2.7, 0.8, 3.4, 4.2, 2, 1.8, 1.1, 21.4];
gt_5x11 = ["gt_5x11", 5, 8, 11, 5, 7, 0.4, 7, 1.5, 1.5, 1, 2.5, 6, 0, 0, 0, 0];
gt_5x17 = ["gt_5x17", 5, 10, 17, 5, 11, 0.4, 9, 2, 1.5, 1, 3, 6, 0, 0, 0, 0];
green_terminals = [gt_2p54, gt_3p5, gt_5p08, gt_6p35];
green_terminals = [gt_2p54, gt_3p5, gt_5p08, gt_6p35, gt_5x11, gt_5x17];
use <green_terminal.scad>

View File

@@ -414,8 +414,33 @@ RAMPSEndstop = ["RAMPSEndstop", "RAMPS Endstop Switch",
],
[]];
ESP_01 = [
"ESP-01", "ESP-01",
24.8, 14.6, 1, // size
0, // corner radius
0, // mounting hole diameter
0, // pad around mounting hole
grey(25), // color
false, // true if parts should be separate BOM items
[], // hole positions
[ // components
[ 2.8, -7.25, 0, "-2p54header", 2, 4 ],
[ -14.55, -11.3, 0, "chip", 5.25, 5.25, 2.25, grey(15) ],
[ -14, -5.2, 0, "chip", 4.5, 4.75, 1.1, grey(15) ],
// antenna
for (y = [ 2.8 : 2.3 : 7.4 ]) [ -0.7, -y, 0, "block", 0.7, 1.75, 0.1, gold ],
for (y = [ 4 : 2.3 : 10.6 ]) [ -4.3, -y, 0, "block", 0.7, 1.75, 0.1, gold ],
for (y = [ 3.4 : 2.3 : 10.1 ]) [ -2.5, -y, 0, "block", 4.3, 0.7, 0.1, gold ],
for (y = [ 4.55 : 2.3 : 11.2 ]) [ -2.5, -y, 0, "block", 4.3, 0.7, 0.1, gold ],
pcbs = [MP1584EN, TP4056, MT3608, RAMPSEndstop, ExtruderPCB, PI_IO, ZC_A0591, RPI0, EnviroPlus, ArduinoUno3, ArduinoLeonardo, Keyes5p1, PSU12V1A, WD2002SJ, RPI3, RPI4, DuetE, Duex2, Duex5];
[ -0.7, -10.85, 0, "block", 0.7,3.75, 0.1, gold ],
[ -6.6, -5.8, 0, "block", 0.7, 7.5, 0.1, gold ],
[ -4.8, -2.3, 0, "block", 8.8, 0.7, 0.1, gold ],
],
[] // accessories
];
pcbs = [MP1584EN, TP4056, ESP_01, MT3608, RAMPSEndstop, ExtruderPCB, PI_IO, ZC_A0591, RPI0, EnviroPlus, ArduinoUno3, ArduinoLeonardo, Keyes5p1, PSU12V1A, WD2002SJ, RPI3, RPI4, DuetE, Duex2, Duex5];
perfboards = [PERF74x51, PERF70x50, PERF60x40, PERF70x30, PERF80x20];