Compare commits
14 Commits
Author | SHA1 | Date | |
---|---|---|---|
|
26b2b63b6e | ||
|
611772d960 | ||
|
b6e648b485 | ||
|
e224ee0ad2 | ||
|
10c3df466b | ||
|
029265e1b9 | ||
|
49f6da767a | ||
|
171dff723f | ||
|
85a7494813 | ||
|
46937e403e | ||
|
8f2532d61b | ||
|
84fa528ff7 | ||
|
807850aac5 | ||
|
103ad1827e |
Before Width: | Height: | Size: 166 KiB After Width: | Height: | Size: 166 KiB |
Before Width: | Height: | Size: 290 KiB After Width: | Height: | Size: 290 KiB |
Before Width: | Height: | Size: 293 KiB After Width: | Height: | Size: 293 KiB |
Before Width: | Height: | Size: 286 KiB After Width: | Height: | Size: 287 KiB |
Before Width: | Height: | Size: 121 KiB After Width: | Height: | Size: 121 KiB |
Before Width: | Height: | Size: 236 KiB After Width: | Height: | Size: 235 KiB |
Before Width: | Height: | Size: 178 KiB After Width: | Height: | Size: 180 KiB |
Before Width: | Height: | Size: 215 KiB After Width: | Height: | Size: 252 KiB |
Before Width: | Height: | Size: 202 KiB After Width: | Height: | Size: 202 KiB |
@@ -43,11 +43,11 @@ Bench power supply built around an ATX PSU.
|
|||||||
* The green LED shows the power good signal.
|
* The green LED shows the power good signal.
|
||||||
* Dummy loads keep the outputs in range.
|
* Dummy loads keep the outputs in range.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<a name="TOP"></a>
|
<a name="TOP"></a>
|
||||||
## Laser Load
|
## Laser Load
|
||||||
15kV dummy load for testing CO2 laser PSUs
|
15kV dummy load for testing CO2 laser PSUs
|
||||||
@@ -77,11 +77,11 @@ Earth leakage can be measured Canadian CSA style by disconnected the neutral lin
|
|||||||
## Mains Box
|
## Mains Box
|
||||||
Mains isolated and variable supply with metering.
|
Mains isolated and variable supply with metering.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<a name="TOP"></a>
|
<a name="TOP"></a>
|
||||||
## SunBot
|
## SunBot
|
||||||
A solar tracker to keep a solar panel pointing at the sun.
|
A solar tracker to keep a solar panel pointing at the sun.
|
||||||
@@ -95,13 +95,15 @@ WiFi enabled remote control turntable for photography
|
|||||||
|
|
||||||

|

|
||||||
|
|
||||||
|
Was actually made from DiBond but shown made with carbon fibre here.
|
||||||
|
|
||||||
|
|
||||||
<a name="TOP"></a>
|
<a name="TOP"></a>
|
||||||
## Variac
|
## Variac
|
||||||
Motorised variac with WiFi control, see [hydraraptor.blogspot.com/2018/04/esp8266-spi-spy](https://hydraraptor.blogspot.com/2018/04/esp8266-spi-spy.html)
|
Motorised variac with WiFi control, see [hydraraptor.blogspot.com/2018/04/esp8266-spi-spy](https://hydraraptor.blogspot.com/2018/04/esp8266-spi-spy.html)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@@ -26,7 +26,7 @@
|
|||||||
// Setting $bom after including lib overrides bom in the libs but not in the local file.
|
// Setting $bom after including lib overrides bom in the libs but not in the local file.
|
||||||
// Setting $_bom in the local file overrides it in the local file but not in the libs.
|
// Setting $_bom in the local file overrides it in the local file but not in the libs.
|
||||||
//
|
//
|
||||||
//function is_undef(x) = x == undef;
|
rr_green = [0, 146/255, 0]; // RepRap logo colour
|
||||||
|
|
||||||
$_bom = is_undef($bom) ? 0 : $bom; // 0 no bom, 1 assemblies and stls, 2 vitamins as well
|
$_bom = is_undef($bom) ? 0 : $bom; // 0 no bom, 1 assemblies and stls, 2 vitamins as well
|
||||||
$exploded = is_undef($explode) ? 0 : $explode; // 1 for exploded view
|
$exploded = is_undef($explode) ? 0 : $explode; // 1 for exploded view
|
||||||
@@ -34,7 +34,7 @@ layer_height = is_undef($layer_height) ? 0.25 : $layer_height; // lay
|
|||||||
extrusion_width = is_undef($extrusion_width) ? 0.5 : $extrusion_width; // filament width when printing
|
extrusion_width = is_undef($extrusion_width) ? 0.5 : $extrusion_width; // filament width when printing
|
||||||
nozzle = is_undef($nozzle) ? 0.45 : $nozzle; // 3D printer nozzle
|
nozzle = is_undef($nozzle) ? 0.45 : $nozzle; // 3D printer nozzle
|
||||||
cnc_bit_r = is_undef($cnc_bit_r) ? 1.2 : $cnc_bit_r; // minimum tool radius when milling 2D objects
|
cnc_bit_r = is_undef($cnc_bit_r) ? 1.2 : $cnc_bit_r; // minimum tool radius when milling 2D objects
|
||||||
pp1_colour = is_undef($pp1_colour) ? [0, 146/255, 0] : $pp1_colour; // printed part colour 1, RepRap logo colour
|
pp1_colour = is_undef($pp1_colour) ? rr_green : $pp1_colour; // printed part colour 1, RepRap logo colour
|
||||||
pp2_colour = is_undef($pp2_colour) ? "Crimson" : $pp2_colour; // printed part colour 2
|
pp2_colour = is_undef($pp2_colour) ? "Crimson" : $pp2_colour; // printed part colour 2
|
||||||
pp3_colour = is_undef($pp3_colour) ? "SteelBlue" : $pp3_colour; // printed part colour 3
|
pp3_colour = is_undef($pp3_colour) ? "SteelBlue" : $pp3_colour; // printed part colour 3
|
||||||
pp4_colour = is_undef($pp4_colour) ? "darkorange" : $pp4_colour;// printed part colour 4
|
pp4_colour = is_undef($pp4_colour) ? "darkorange" : $pp4_colour;// printed part colour 4
|
||||||
|
BIN
libtest.png
Before Width: | Height: | Size: 859 KiB After Width: | Height: | Size: 860 KiB |
10
readme.md
@@ -2603,6 +2603,7 @@ Timing belt pulleys, both toothed and plain with internal bearings for idlers.
|
|||||||
### Vitamins
|
### Vitamins
|
||||||
| Qty | Module call | BOM entry |
|
| Qty | Module call | BOM entry |
|
||||||
| ---:|:--- |:---|
|
| ---:|:--- |:---|
|
||||||
|
| 1 | `pulley(GT2x16_pulley)` | Pulley GT2 16 teeth |
|
||||||
| 1 | `pulley(GT2x16_toothed_idler)` | Pulley GT2 idler 16 teeth |
|
| 1 | `pulley(GT2x16_toothed_idler)` | Pulley GT2 idler 16 teeth |
|
||||||
| 1 | `pulley(GT2x20_toothed_idler)` | Pulley GT2 idler 20 teeth |
|
| 1 | `pulley(GT2x20_toothed_idler)` | Pulley GT2 idler 20 teeth |
|
||||||
| 1 | `pulley(GT2x20_plain_idler)` | Pulley GT2 idler smooth 12mm |
|
| 1 | `pulley(GT2x20_plain_idler)` | Pulley GT2 idler smooth 12mm |
|
||||||
@@ -2614,6 +2615,7 @@ Timing belt pulleys, both toothed and plain with internal bearings for idlers.
|
|||||||
| 1 | `pulley(T2p5x16_pulley)` | Pulley T2.5 16 teeth |
|
| 1 | `pulley(T2p5x16_pulley)` | Pulley T2.5 16 teeth |
|
||||||
| 1 | `pulley(T5x10_pulley)` | Pulley T5 10 teeth |
|
| 1 | `pulley(T5x10_pulley)` | Pulley T5 10 teeth |
|
||||||
| 1 | `screw(M3_grub_screw, 3)` | Screw M3 grub x 3mm |
|
| 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 |
|
| 2 | `screw(M3_grub_screw, 4)` | Screw M3 grub x 4mm |
|
||||||
| 4 | `screw(M3_grub_screw, 6)` | Screw M3 grub x 6mm |
|
| 4 | `screw(M3_grub_screw, 6)` | Screw M3 grub x 6mm |
|
||||||
| 1 | `screw(M4_grub_screw, 6)` | Screw M4 grub x 6mm |
|
| 1 | `screw(M4_grub_screw, 6)` | Screw M4 grub x 6mm |
|
||||||
@@ -2783,11 +2785,17 @@ Rocker switch. Also used for neon indicator in the same form factor.
|
|||||||
| `rocker_spades(type)` | Spade types and positions |
|
| `rocker_spades(type)` | Spade types and positions |
|
||||||
| `rocker_width(type)` | Body width |
|
| `rocker_width(type)` | Body width |
|
||||||
|
|
||||||
|
### Functions
|
||||||
|
| Function | Description |
|
||||||
|
|:--- |:--- |
|
||||||
|
| `rocker_size(type)` | Width, height, and depth in a vector |
|
||||||
|
| `rocker_slot(type)` | Rocker slot in a vector |
|
||||||
|
|
||||||
### Modules
|
### Modules
|
||||||
| Module | Description |
|
| Module | Description |
|
||||||
|:--- |:--- |
|
|:--- |:--- |
|
||||||
| `rocker(type, colour)` | Draw the specified rocker switch |
|
| `rocker(type, colour)` | Draw the specified rocker switch |
|
||||||
| `rocker_hole(type, h = 0)` | Make a hole to accept a rocker switch, by default 2D, set h for 3D |
|
| `rocker_hole(type, h = 0, rounded = true)` | Make a hole to accept a rocker switch, by default 2D, set h for 3D |
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
|
@@ -51,7 +51,7 @@ def split_blurb(lines):
|
|||||||
""" Split blurb on horizontal rules."""
|
""" Split blurb on horizontal rules."""
|
||||||
blurbs = [""]
|
blurbs = [""]
|
||||||
for line in lines.split('\n')[:-1]:
|
for line in lines.split('\n')[:-1]:
|
||||||
if re.match(r'\*\*\*\**',line):
|
if re.match(r'\*{3,}',line):
|
||||||
blurbs.append("")
|
blurbs.append("")
|
||||||
else:
|
else:
|
||||||
blurbs[-1] += line + '\n'
|
blurbs[-1] += line + '\n'
|
||||||
|
@@ -52,7 +52,7 @@ def gallery(force):
|
|||||||
if os.path.isfile(document):
|
if os.path.isfile(document):
|
||||||
with open(document, 'rt') as readme:
|
with open(document, 'rt') as readme:
|
||||||
for line in readme.readlines():
|
for line in readme.readlines():
|
||||||
match = re.match(r"^.*!(\[.*\]\(.*\)).*$", line)
|
match = re.search(r"!(\[.*\]\(.*\))", line)
|
||||||
if match:
|
if match:
|
||||||
image = match.group(0)
|
image = match.group(0)
|
||||||
if image.startswith(':
|
if image.startswith(':
|
||||||
|
@@ -227,11 +227,7 @@ def views(target, do_assemblies = None):
|
|||||||
#
|
#
|
||||||
# Only add the image if the first blurb section doesn't contain one.
|
# Only add the image if the first blurb section doesn't contain one.
|
||||||
#
|
#
|
||||||
got_image = False
|
if not re.search(r'\!\[.*\]\(.*\)', blurbs[0], re.MULTILINE):
|
||||||
for line in blurbs[0].split('\n'):
|
|
||||||
if re.match(r'.*\!\[.*\]\(.*\).*', line):
|
|
||||||
got_image = True
|
|
||||||
if not got_image:
|
|
||||||
print('\n' % flat_bom[-1]["name"].replace('_assembly', '_assembled'), file = doc_file)
|
print('\n' % flat_bom[-1]["name"].replace('_assembly', '_assembled'), file = doc_file)
|
||||||
eop(print_mode, doc_file, first = True)
|
eop(print_mode, doc_file, first = True)
|
||||||
#
|
#
|
||||||
|
Before Width: | Height: | Size: 137 KiB After Width: | Height: | Size: 137 KiB |
Before Width: | Height: | Size: 42 KiB After Width: | Height: | Size: 43 KiB |
@@ -107,7 +107,7 @@ assembly("box1") {
|
|||||||
screw_and_washer(foot_screw(foot), 6);
|
screw_and_washer(foot_screw(foot), 6);
|
||||||
}
|
}
|
||||||
|
|
||||||
translate_z(height + top_thickness + base_thickness + eps) vflip()
|
translate_z(height + top_thickness + base_thickness + 2 * eps) vflip()
|
||||||
%render() box1_base_stl();
|
%render() box1_base_stl();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -29,9 +29,10 @@ include <belts.scad>
|
|||||||
//
|
//
|
||||||
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];
|
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];
|
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];
|
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];
|
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
|
||||||
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];
|
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_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];
|
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_toothed_idler = ["GT2x16_toothed_idler", "GT2", 16, 9.75, GT2x6, 6.5, 14, 0, 3, 14.0, 1.0, 0, 0, false, 0];
|
||||||
@@ -42,6 +43,7 @@ pulleys = [T5x10_pulley,
|
|||||||
T2p5x16_pulley,
|
T2p5x16_pulley,
|
||||||
GT2x20um_pulley,
|
GT2x20um_pulley,
|
||||||
GT2x20ob_pulley,
|
GT2x20ob_pulley,
|
||||||
|
GT2x16_pulley,
|
||||||
GT2x12_pulley,
|
GT2x12_pulley,
|
||||||
GT2x20_toothed_idler,
|
GT2x20_toothed_idler,
|
||||||
GT2x20_plain_idler,
|
GT2x20_plain_idler,
|
||||||
|
@@ -36,6 +36,8 @@ function rocker_bezel(type) = type[10]; //! Bezel width
|
|||||||
function rocker_pivot(type) = type[11]; //! Pivot distance from the back of the flange
|
function rocker_pivot(type) = type[11]; //! Pivot distance from the back of the flange
|
||||||
function rocker_button(type) = type[12]; //! How far the button extends from the bezel
|
function rocker_button(type) = type[12]; //! How far the button extends from the bezel
|
||||||
function rocker_spades(type) = type[13]; //! Spade types and positions
|
function rocker_spades(type) = type[13]; //! Spade types and positions
|
||||||
|
function rocker_size(type) = [rocker_width(type), rocker_height(type), rocker_depth(type)]; //! Width, height, and depth in a vector
|
||||||
|
function rocker_slot(type) = [rocker_slot_w(type), rocker_slot_h(type)]; //! Rocker slot in a vector
|
||||||
|
|
||||||
module rocker(type, colour) { //! Draw the specified rocker switch
|
module rocker(type, colour) { //! Draw the specified rocker switch
|
||||||
vitamin(str("rocker(", type[0], "): ", rocker_part(type)));
|
vitamin(str("rocker(", type[0], "): ", rocker_part(type)));
|
||||||
@@ -87,6 +89,6 @@ module rocker(type, colour) { //! Draw the specified rocker switch
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
module rocker_hole(type, h = 0) //! Make a hole to accept a rocker switch, by default 2D, set h for 3D
|
module rocker_hole(type, h = 0, rounded = true) //! Make a hole to accept a rocker switch, by default 2D, set h for 3D
|
||||||
extrude_if(h)
|
extrude_if(h)
|
||||||
rounded_square([rocker_slot_w(type), rocker_slot_h(type)], 1, center = true);
|
rounded_square([rocker_slot_w(type), rocker_slot_h(type)], rounded ? 1 : 0, center = true);
|
||||||
|
@@ -295,8 +295,10 @@ module screw_polysink(type, h = 100, alt = false) { //! A countersink hole made
|
|||||||
poly_cylinder(r = r, h = lh, center = false);
|
poly_cylinder(r = r, h = lh, center = false);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
remainder = h / 2 - layers * layer_height;
|
||||||
|
if(remainder > 0)
|
||||||
translate_z(layers * layer_height)
|
translate_z(layers * layer_height)
|
||||||
poly_cylinder(r = rmin, h = h / 2 - layers * layer_height, center = false);
|
poly_cylinder(r = rmin, h = remainder, center = false);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|