diff --git a/libtest.png b/libtest.png index d3ae1fe..7f74b33 100644 Binary files a/libtest.png and b/libtest.png differ diff --git a/readme.md b/readme.md index 76c9332..40a6cb2 100644 --- a/readme.md +++ b/readme.md @@ -208,7 +208,7 @@ exposing enough information to make a battery box. ## Belts Models timing belt running over toothed or smooth pulleys and calculates an accurate length. -Only models 2D paths, so not core XY! +Only models 2D paths, so not crossed belt core XY! To make the back of the belt run against a smooth pulley on the outside of the loop specify a negative pitch radius. @@ -250,15 +250,16 @@ Individual teeth are not drawn, instead they are represented by a lighter colour | Qty | Module call | BOM entry | | ---:|:--- |:---| | 1 | ```belt(GT2x6, [ ... ])``` | Belt GT2 x 6mm x 128mm | -| 1 | ```belt(GT2x6, [ ... ], 80, [0, 0])``` | Belt GT2 x 6mm x 696mm | +| 2 | ```belt(GT2x6, [ ... ], 80, [0, 0])``` | Belt GT2 x 6mm x 572mm | | 1 | ```belt(T2p5x6, [ ... ])``` | Belt T2.5 x 6mm x 130mm | | 1 | ```belt(T5x10, [ ... ])``` | Belt T5 x 10mm x 130mm | | 1 | ```belt(T5x6, [ ... ])``` | Belt T5 x 6mm x 130mm | -| 1 | ```insert(F1BM3)``` | Heatfit insert M3 | -| 2 | ```pulley(GT2x20_toothed_idler)``` | Pulley GT2 idler 20 teeth | +| 2 | ```insert(F1BM3)``` | Heatfit insert M3 | +| 2 | ```pulley(GT2x16_toothed_idler)``` | Pulley GT2 idler 16 teeth | +| 4 | ```pulley(GT2x20_toothed_idler)``` | Pulley GT2 idler 20 teeth | | 2 | ```pulley(GT2x16_plain_idler)``` | Pulley GT2 idler smooth 9.63mm | | 2 | ```pulley(GT2x20ob_pulley)``` | Pulley GT2OB 20 teeth | -| 1 | ```screw(M3_cs_cap_screw, 20)``` | Screw M3 cs cap x 20mm | +| 2 | ```screw(M3_cs_cap_screw, 20)``` | Screw M3 cs cap x 20mm | | 4 | ```screw(M3_grub_screw, 6)``` | Screw M3 grub x 6mm | @@ -757,6 +758,7 @@ LCD dispays. ### Vitamins | Qty | Module call | BOM entry | | ---:|:--- |:---| +| 1 | ```display(BigTreeTech_TFT35v3_0)``` | BigTreeTech TFT35 v3.0 | | 1 | ```display(HDMI5)``` | HDMI display 5" | | 1 | ```display(LCD1602A)``` | LCD display 1602A | | 1 | ```display(LCDS7282B)``` | LCD display S-7282B | diff --git a/tests/belts.scad b/tests/belts.scad index 22bfeaf..a76d2c1 100644 --- a/tests/belts.scad +++ b/tests/belts.scad @@ -23,46 +23,52 @@ use <../vitamins/insert.scad> use <../utils/layout.scad> module belt_test() { - p1 = [75, -50]; p2 = [-75, -50]; p3 = [-75, 100]; p4 = [75, 100]; - p5 = [75 - pulley_pr(GT2x20ob_pulley) - pulley_pr(GT2x16_plain_idler), -pulley_pr(GT2x16_plain_idler)]; - p6 = [-75 + pulley_pr(GT2x20ob_pulley) + pulley_pr(GT2x16_plain_idler), -pulley_pr(GT2x16_plain_idler)]; + p5 = [75 + pulley_pr(GT2x20ob_pulley) - pulley_pr(GT2x16_plain_idler), +pulley_pr(GT2x16_plain_idler)]; + p6 = [-75 + pulley_pr(GT2x20ob_pulley) + pulley_pr(GT2x16_plain_idler), -pulley_pr(GT2x16_plain_idler)]; - translate(p1) pulley_assembly(GT2x20ob_pulley); - translate(p2) pulley_assembly(GT2x20ob_pulley); - translate(p3) pulley_assembly(GT2x20_toothed_idler); - translate(p4) pulley_assembly(GT2x20_toothed_idler); + module pulleys(flip = false) { + translate(p2) rotate([0, flip ? 180 : 0, 0]) pulley_assembly(GT2x20ob_pulley); + translate(p3) pulley_assembly(GT2x20_toothed_idler); + translate(p4) pulley_assembly(GT2x20_toothed_idler); + translate(p5) { + pulley = GT2x16_toothed_idler; + screw = find_screw(hs_cs_cap, pulley_bore(pulley)); + insert = screw_insert(screw); - translate(p5) { - pulley = GT2x16_plain_idler; - screw = find_screw(hs_cs_cap, pulley_bore(pulley)); - insert = screw_insert(screw); - - pulley_assembly(pulley); - translate_z(pulley_height(pulley) + pulley_offset(pulley) + screw_head_depth(screw, pulley_bore(pulley))) - screw(screw, 20); - - translate_z(pulley_offset(pulley) - insert_length(insert)) - vflip() - insert(insert); + rotate([0, flip ? 180 : 0, 0]) { + pulley_assembly(pulley); + translate_z(pulley_height(pulley) + pulley_offset(pulley) + screw_head_depth(screw, pulley_bore(pulley))) + screw(screw, 20); + translate_z(pulley_offset(pulley) - insert_length(insert)) + vflip() + insert(insert); + } + } + translate(p6) pulley_assembly(GT2x16_plain_idler); } - translate(p6) pulley_assembly(GT2x16_plain_idler); - path = [ [p1.x, p1.y, pulley_pr(GT2x20ob_pulley)], - [p5.x, p5.y, -pulley_pr(GT2x16_plain_idler)], + path = [ [p5.x, p5.y, pulley_pr(GT2x16_plain_idler)], [p6.x, p6.y, -pulley_pr(GT2x16_plain_idler)], [p2.x, p2.y, pulley_pr(GT2x20ob_pulley)], [p3.x, p3.y, pulley_pr(GT2x20ob_pulley)], [p4.x, p4.y, pulley_pr(GT2x20ob_pulley)] ]; + belt = GT2x6; belt(belt, path, 80, [0, 0]); + pulleys(); + translate_z(20) + hflip() { + belt(belt, path, 80, [0, 0], belt_colour = grey(90), tooth_colour = grey(50)); + pulleys(flip=true); + } - translate([-25, 0]) + translate([-25, 0, 10]) layout([for(b = belts) belt_width(b)], 10) rotate([0, 90, 0]) belt(belts[$i], [[0, 0, 20], [0, 1, 20]], belt_colour = $i%2==0 ? grey(90) : grey(20), tooth_colour = $i%2==0 ? grey(70) : grey(50)); diff --git a/tests/png/belts.png b/tests/png/belts.png index 52743d0..a2b1296 100644 Binary files a/tests/png/belts.png and b/tests/png/belts.png differ diff --git a/tests/png/displays.png b/tests/png/displays.png index 17ee39b..45507e0 100644 Binary files a/tests/png/displays.png and b/tests/png/displays.png differ diff --git a/vitamins/belt.scad b/vitamins/belt.scad index 01d3890..2142920 100644 --- a/vitamins/belt.scad +++ b/vitamins/belt.scad @@ -19,7 +19,7 @@ // //! Models timing belt running over toothed or smooth pulleys and calculates an accurate length. -//! Only models 2D paths, so not core XY! +//! Only models 2D paths, so not crossed belt core XY! //! //! To make the back of the belt run against a smooth pulley on the outside of the loop specify a negative pitch radius. //! diff --git a/vitamins/displays.scad b/vitamins/displays.scad index 391a45e..22144c9 100644 --- a/vitamins/displays.scad +++ b/vitamins/displays.scad @@ -73,6 +73,42 @@ SSD1963_4p3 = ["SSD1963_4p3", "LCD display SSD1963 4.3\"", 105.5, 67.2, 3.4, SSD [[0, -34.5], [12, -31.5]], ]; -displays = [HDMI5, SSD1963_4p3, LCD1602A, LCDS7282B]; +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 ], + ], + [] +]; + +BigTreeTech_TFT35v3_0 = ["BigTreeTech_TFT35v3_0", "BigTreeTech TFT35 v3.0", + 84.5, 54.5, 4, BigTreeTech_TFT35v3_0_PCB, + [-6, 0, 0], // pcb offset + [[-40, -26.5], [41.5, 26.5, 0.5]], // aperture + [], // touch screen + 0, // thread length + [], // clearance need for the ts ribbon +]; + + +displays = [HDMI5, SSD1963_4p3, BigTreeTech_TFT35v3_0, LCD1602A, LCDS7282B]; use