Merge branch 'master' of github.com:rookiepeng/hexapod

This commit is contained in:
Zhengyu Peng
2021-12-07 13:23:48 -05:00
10 changed files with 245 additions and 0 deletions
+1
View File
@@ -1,3 +1,4 @@
.DS_Store .DS_Store
*.pyc *.pyc
.vscode/ .vscode/
*.blend1
+244
View File
@@ -0,0 +1,244 @@
/*
* Variables for Thingiverse Customizer
* ==================================================================
*
*/
// The number of cells in your battery holder
Cell_Count = 2;
// AA:50.5;18650:65
Cell_Long = 65;
// AA:14.5;18650:18
Cell_Wide = 18;
// 1:series connection; 2:parallel connection
Connection = 1;
// 1:yes; 2:no
mounting_flanges = 1;
/*
* Library function: edge
* ==================================================================
*
* Used to make roundes edges on objects
*
*/
module edge(radius, height)
{
difference()
{
translate([radius/2-0.5, radius/2-0.5, 0])
cube([radius+1, radius+1, height], center = true);
translate([radius, radius, 0])
cylinder(h = height+1, r1 = radius, r2 = radius, center = true, $fn = 100);
}
}
module battery_box(cells)
{
difference()
{
union()
{
translate([0, 0, Cell_Wide*(4/3)/4])
cube(size=[Cell_Long+7+7, Cell_Wide*cells, Cell_Wide*(4/3)/2], center=true);
translate([Cell_Long/2+5.5, 0, Cell_Wide*(4/3)/2])
cube(size=[3, Cell_Wide*cells, Cell_Wide*(4/3)], center=true);
translate([-(Cell_Long/2+5.5), 0, Cell_Wide*(4/3)/2])
cube(size=[3, Cell_Wide*cells, Cell_Wide*(4/3)], center=true);
translate([-(Cell_Long/2+5-2), 0, Cell_Wide*0.8/2+Cell_Wide*(4/3)/4])
cube(size=[2, Cell_Wide*cells, Cell_Wide*0.7], center=true);
translate([(Cell_Long/2+5-2), 0, Cell_Wide*0.8/2+Cell_Wide*(4/3)/4])
cube(size=[2, Cell_Wide*cells, Cell_Wide*0.7], center=true);
// mounting flanges
if (mounting_flanges == 1)
{
translate([20, cells*Cell_Wide/2+4/2, 3/2])
cube(size=[7, 4, 3], center=true);
translate([20, cells*Cell_Wide/2+4, 3/2])
cylinder(r=7/2, h=3, center=true, $fn = 60);
translate([-20, cells*Cell_Wide/2+4/2, 3/2])
cube(size=[7, 4, 3], center=true);
translate([-20, cells*Cell_Wide/2+4, 3/2])
cylinder(r=7/2, h=3, center=true, $fn = 60);
translate([20, -(cells*Cell_Wide/2+4/2), 3/2])
cube(size=[7, 4, 3], center=true);
translate([20, -(cells*Cell_Wide/2+4), 3/2])
cylinder(r=7/2, h=3, center=true, $fn = 60);
translate([-20, -(cells*Cell_Wide/2+4/2), 3/2])
cube(size=[7, 4, 3], center=true);
translate([-20, -(cells*Cell_Wide/2+4), 3/2])
cylinder(r=7/2, h=3, center=true, $fn = 60);
}
}
if (mounting_flanges == 2)
{
}
for (i=[0:cells-1])
{
// battery cradle
translate([0, -cells*Cell_Wide/2+Cell_Wide/2+Cell_Wide*i, Cell_Wide/2+10/2])
rotate(90, [0, 1, 0])
cylinder(r=Cell_Wide/2, h=Cell_Long+2+2, center=true, $fn = 100);
// spring cut-out
translate([Cell_Long/2+3.5, -cells*Cell_Wide/2+Cell_Wide/2+Cell_Wide*i, Cell_Wide/2+10/2])
cube(size=[1, 12, 12], center=true);
translate([Cell_Long/2+3.5, -cells*Cell_Wide/2+Cell_Wide/2+Cell_Wide*i, Cell_Wide/2+10/2])
cube(size=[1, 4, 30], center=true);
translate([Cell_Long/2+3-1/2, -cells*Cell_Wide/2+Cell_Wide/2+Cell_Wide*i, Cell_Wide/2+10/2])
cube(size=[1, 8, 12], center=true);
translate([-(Cell_Long/2+3.5), -cells*Cell_Wide/2+Cell_Wide/2+Cell_Wide*i, Cell_Wide/2+10/2])
cube(size=[1, 12, 12], center=true);
translate([-(Cell_Long/2+3.5), -cells*Cell_Wide/2+Cell_Wide/2+Cell_Wide*i, Cell_Wide/2+10/2])
cube(size=[1, 4, 30], center=true);
translate([-(Cell_Long/2+3-1/2), -cells*Cell_Wide/2+Cell_Wide/2+Cell_Wide*i, Cell_Wide/2+10/2])
cube(size=[1, 8, 12], center=true);
// solder flange cut-out
translate([(Cell_Long/2+5-6/2), -cells*Cell_Wide/2+Cell_Wide/2+Cell_Wide*i, 3/2])
cube(size=[6, 6, 3.1], center=true);
translate([(Cell_Long/2)-1/2, -cells*Cell_Wide/2+Cell_Wide/2+Cell_Wide*i, 3/2])
cylinder(r=6/2, h=3.1, center=true, $fn = Cell_Long);
translate([-(Cell_Long/2+5-6/2), -cells*Cell_Wide/2+Cell_Wide/2+Cell_Wide*i, 3/2])
cube(size=[6, 6, 3.1], center=true);
translate([-(Cell_Long/2)+1/2, -cells*Cell_Wide/2+Cell_Wide/2+Cell_Wide*i, 3/2])
cylinder(r=6/2, h=3.1, center=true, $fn = Cell_Long);
// polarity marking (+)
translate([20, -cells*Cell_Wide/2+Cell_Wide/2+Cell_Wide*i, 4/2+4.5])
cube(size=[6, 2, 4], center=true);
translate([20, -cells*Cell_Wide/2+Cell_Wide/2+Cell_Wide*i, 4/2+4.5])
cube(size=[2, 6, 4], center=true);
// polarity marking (-)
translate([-20, -cells*Cell_Wide/2+Cell_Wide/2+Cell_Wide*i, 4/2+4.5])
cube(size=[6, 2, 4], center=true);
}
if (cells>=2)
{
for (i=[0:cells-2])
{
// bottom cut-out for cell connections
if (Connection == 1)
{
translate([0, -cells*Cell_Wide/2+Cell_Wide+Cell_Wide*i, 2.5/2])
rotate(17, [0, 0, 1])
cube(size=[Cell_Long, 2, 2.6], center=true);
}
if (Connection == 2)
{
translate([Cell_Long/2+3, -cells*Cell_Wide/2+Cell_Wide+Cell_Wide*i, 2.5/2])
rotate(90, [0, 0, 1])
cube(size=[Cell_Wide, 2, 2.6], center=true);
translate([-Cell_Long/2-3, -cells*Cell_Wide/2+Cell_Wide+Cell_Wide*i, 2.5/2])
rotate(90, [0, 0, 1])
cube(size=[Cell_Wide, 2, 2.6], center=true);
}
}
}
// bottom cut-out for output wires
translate([Cell_Long/4, -cells*Cell_Wide/2+Cell_Wide/2+Cell_Wide*0, 2.5/2])
cube(size=[Cell_Long/2, 2, 2.6], center=true);
translate([3/2, -cells*Cell_Wide/2+Cell_Wide/2+Cell_Wide*0+1, 2.5/2])
edge(4, 2.6);
translate([3/2, -cells*Cell_Wide/2+Cell_Wide/2+Cell_Wide*0-1, 2.5/2])
rotate(-90, [0, 0, 1])
edge(4, 2.6);
translate([-Cell_Long/4, -cells*Cell_Wide/2+Cell_Wide/2+Cell_Wide*(cells-1), 2.5/2])
cube(size=[Cell_Long/2, 2, 2.6], center=true);
translate([-3/2, -cells*Cell_Wide/2+Cell_Wide/2+Cell_Wide*(cells-1)+1, 2.5/2])
rotate(90, [0, 0, 1])
edge(4, 2.6);
translate([-3/2, -cells*Cell_Wide/2+Cell_Wide/2+Cell_Wide*(cells-1)-1, 2.5/2])
rotate(180, [0, 0, 1])
edge(4, 2.6);
// bottom polarity marking (+)
translate([7, -cells*Cell_Wide/2+Cell_Wide/2+Cell_Wide*0-4.5, 1.5/2])
cube(size=[4, 1.5, 1.6], center=true);
translate([7, -cells*Cell_Wide/2+Cell_Wide/2+Cell_Wide*0-4.5, 1.5/2])
cube(size=[1.5, 4, 1.6], center=true);
// bottom polarity marking (-)
translate([-7, -cells*Cell_Wide/2+Cell_Wide/2+Cell_Wide*(cells-1)+4.5, 1.5/2])
cube(size=[4, 1.5, 1.6], center=true);
// mounting holes
translate([20, cells*Cell_Wide/2+4, 3/2])
cylinder(r=3.3/2, h=4, center=true, $fn = 30);
translate([-20, cells*Cell_Wide/2+4, 3/2])
cylinder(r=3.3/2, h=4, center=true, $fn = 30);
translate([20, -(cells*Cell_Wide/2+4), 3/2])
cylinder(r=3.3/2, h=4, center=true, $fn = 30);
translate([-20, -(cells*Cell_Wide/2+4), 3/2])
cylinder(r=3.3/2, h=4, center=true, $fn = 30);
// bottom cut-out for output wire
translate([0, 0, 2.5/2])
cube(size=[3, cells*Cell_Wide+5, 2.6], center=true);
// cutout to ease battery removal
translate([0, 0, 20/2+10/2])
rotate(90, [1, 0, 0])
cylinder(r=20/2, h=cells*Cell_Wide+5, center=true, $fn = 100);
// rounded corners on end plates
translate([0, -cells*Cell_Wide/2, Cell_Wide*(4/3)])
rotate(90, [0, 1, 0])
edge(4, Cell_Long+8+8+5);
translate([0, cells*Cell_Wide/2, Cell_Wide*(4/3)])
rotate(90, [0, 1, 0])
rotate(-90, [0, 0, 1])
edge(4, Cell_Long+8+8+5);
translate([0, -cells*Cell_Wide/2, Cell_Wide*(4/3)*0.95-3])
rotate(90, [0, 1, 0])
edge(3, Cell_Long+4+4);
translate([0, cells*Cell_Wide/2, Cell_Wide*(4/3)*0.95-3])
rotate(90, [0, 1, 0])
rotate(-90, [0, 0, 1])
edge(3, Cell_Long+4+4);
}
}
battery_box(Cell_Count);
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.