From f01a4610658f2896424e8bb584c743578c33ee45 Mon Sep 17 00:00:00 2001 From: Peter Braden Date: Wed, 19 Sep 2012 20:06:56 -0700 Subject: [PATCH 01/13] add instructions --- instructions/laser-cutter.md | 6 ++++++ 1 file changed, 6 insertions(+) create mode 100644 instructions/laser-cutter.md diff --git a/instructions/laser-cutter.md b/instructions/laser-cutter.md new file mode 100644 index 0000000..8e5b8ce --- /dev/null +++ b/instructions/laser-cutter.md @@ -0,0 +1,6 @@ +# Making Bitbeams With Basswood On a Laser Cutter + +You can buy 5/16" x 5/16" basswood dowel at some art stores - with a little +laser cutting, this is an easy way to make bitbeam. + +## 1. Making a Stencil From 9341a29768c5b521e5353196872bc18132e956b2 Mon Sep 17 00:00:00 2001 From: Peter Braden Date: Wed, 19 Sep 2012 20:14:45 -0700 Subject: [PATCH 02/13] WIP on laser instructions --- instructions/laser-cutter.md | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) diff --git a/instructions/laser-cutter.md b/instructions/laser-cutter.md index 8e5b8ce..b924353 100644 --- a/instructions/laser-cutter.md +++ b/instructions/laser-cutter.md @@ -4,3 +4,30 @@ You can buy 5/16" x 5/16" basswood dowel at some art stores - with a little laser cutting, this is an easy way to make bitbeam. ## 1. Making a Stencil + +The holes in bitbeams need to be precisely lined up - the easiest way to +do this is to make a 'stencil' form, with grooves to hold the bitbeams in +place. We can laser cut this out of a flat piece of wood or cardboard. + +[TODO] Make stencil file + +[TODO] Image + +## 2. Cutting Dowels to length + +Now you have a stencil, you need to cut the dowels to length, to fit the +holes. You can either use a saw for this, or the laser cutter. + + +## 3. Cutting the Holes + +Fill the grooves in the stencil with the pieces if dowel. Now make sure that +the stencil is lined up precisely with the corner of the laser cutter. The +next file is designed to drill holes in precisely the center of the dowels. + +[TODO] Make hole file + +[TODO] Image + +Once the laser has finished, you need to flip each piece over 90 degrees and +print the holes again. From 3d89876d6a0d7a9b77b7a68a755f1118c4ce7885 Mon Sep 17 00:00:00 2001 From: Peter Braden Date: Mon, 24 Sep 2012 18:34:06 -0700 Subject: [PATCH 03/13] Make source the whole bitbeam, rather than simply a projection for the laser cutter --- src/bitbeam.scad | 22 ++++++++++++++-------- 1 file changed, 14 insertions(+), 8 deletions(-) diff --git a/src/bitbeam.scad b/src/bitbeam.scad index 10413d4..a2f8b86 100644 --- a/src/bitbeam.scad +++ b/src/bitbeam.scad @@ -10,19 +10,25 @@ beam_width = 7.9375; // 5/16 inches module beam(number_of_holes) { beam_length = number_of_holes * 8; - projection(cut=true, center=true) { difference(){ // Draw the beam - translate([-4, -beam_width/2, 0]) - cube([beam_length, beam_width, 1]); + translate([-4, -beam_width/2,0]) + cube(size=[beam_length, beam_width, beam_width]); // Cut the holes - for (x=[4 : 8 : beam_length]) { - translate([x-4, 0, -1]) - cylinder(r=2.4, h=3, $fn=30); - } + for (x=[4 : 8 : beam_length]) { + translate([x-4, 0, 0]){ + translate([0, 0, -1]){ + cylinder(r=2.4, h=beam_width+2, $fn=30); + } + rotate(a=[90, 0, 0]) { + translate([0, beam_width/2, -beam_width/2-1]){ + cylinder(r=2.4, h=beam_width+2, $fn=30); + } + } + } + } } - } } beam(13); From 42c8b042eda9a4081553c8711f6bd10027d35701 Mon Sep 17 00:00:00 2001 From: Peter Braden Date: Mon, 24 Sep 2012 18:49:16 -0700 Subject: [PATCH 04/13] beam_to function allows easier layout of beams --- src/bitbeam.scad | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/src/bitbeam.scad b/src/bitbeam.scad index a2f8b86..2ec3ef0 100644 --- a/src/bitbeam.scad +++ b/src/bitbeam.scad @@ -31,4 +31,15 @@ module beam(number_of_holes) { } } -beam(13); + +module beam_to(start=[0,0,0], length=5, direction=[0,0,0]){ + translate(start * beam_width){ + rotate(direction){ + beam(length); + } + } +} + +beam_to(); + + From 208cc79f5c3b0160746fb8a7855ddee7a92299f8 Mon Sep 17 00:00:00 2001 From: Peter Braden Date: Mon, 24 Sep 2012 18:56:26 -0700 Subject: [PATCH 05/13] should rotate around center of beam --- src/bitbeam.scad | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/bitbeam.scad b/src/bitbeam.scad index 2ec3ef0..a41691a 100644 --- a/src/bitbeam.scad +++ b/src/bitbeam.scad @@ -35,11 +35,15 @@ module beam(number_of_holes) { module beam_to(start=[0,0,0], length=5, direction=[0,0,0]){ translate(start * beam_width){ rotate(direction){ - beam(length); + translate([0, 0, -beam_width/2]){ // rotate around middle of beam + beam(length); + } } } } beam_to(); +beam_to(direction=[0,90,0]); + From 87877f7be822dfb08016ac4bec253b804da89056 Mon Sep 17 00:00:00 2001 From: Peter Braden Date: Mon, 24 Sep 2012 19:11:36 -0700 Subject: [PATCH 06/13] screw and bolt --- src/bitbeam.scad | 28 ++++++++++++++++++++++++++-- 1 file changed, 26 insertions(+), 2 deletions(-) diff --git a/src/bitbeam.scad b/src/bitbeam.scad index a41691a..a727ce6 100644 --- a/src/bitbeam.scad +++ b/src/bitbeam.scad @@ -42,8 +42,32 @@ module beam_to(start=[0,0,0], length=5, direction=[0,0,0]){ } } -beam_to(); +module screw(start=[0,0,0], length=2, direction=[0,0,0]){ + translate(start * beam_width){ + rotate(direction){ + translate([0, 0, -beam_width/2]){ // rotate around middle of beam + + cylinder(r=2.2, h=length*beam_width + beam_width/2, $fn=30); + + translate([0,0,-3]) //Screw head + difference(){ + cylinder(r1=3, r2=4, h=3, $fn=30); + translate([-4.5, -0.5, -0.1]){ + cube([9,1,2]); + } + } + translate([0,0, length*beam_width + 0.2]){ + cylinder(r=5, h=2, $fn=6); + } + + } + } + } +} -beam_to(direction=[0,90,0]); + +beam_to(); +beam_to([0,1,0], direction=[0,90,0]); +screw(direction=[-90,0,0]); From 92311b0da8c780ec70bafa0f08de8e46f0c62cee Mon Sep 17 00:00:00 2001 From: Peter Braden Date: Mon, 24 Sep 2012 19:12:50 -0700 Subject: [PATCH 07/13] metallic color --- src/bitbeam.scad | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/bitbeam.scad b/src/bitbeam.scad index a727ce6..f79b4ea 100644 --- a/src/bitbeam.scad +++ b/src/bitbeam.scad @@ -43,6 +43,7 @@ module beam_to(start=[0,0,0], length=5, direction=[0,0,0]){ } module screw(start=[0,0,0], length=2, direction=[0,0,0]){ + color("lavender"){ translate(start * beam_width){ rotate(direction){ translate([0, 0, -beam_width/2]){ // rotate around middle of beam @@ -63,6 +64,7 @@ module screw(start=[0,0,0], length=2, direction=[0,0,0]){ } } } + } } From dea2c03e7f6cd4d353543d757b1bfb9600d7675f Mon Sep 17 00:00:00 2001 From: Peter Braden Date: Mon, 24 Sep 2012 19:37:51 -0700 Subject: [PATCH 08/13] example model to show off bitbeam macros --- src/bitpad.scad | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) create mode 100644 src/bitpad.scad diff --git a/src/bitpad.scad b/src/bitpad.scad new file mode 100644 index 0000000..8fa1582 --- /dev/null +++ b/src/bitpad.scad @@ -0,0 +1,29 @@ +use <./bitbeam.scad>; + +scale(0.1){ +rotate([90,-20,0]){ + +beam_to([9,1,0], 27, [0,90,0]); + +beam_to([1,0,-25], 13); +beam_to([10,-6,-26], 27, [0,0,90]); +screw([10,0,-25], 2, [0,0,0]); +screw([9,1,-26], 2, [0,90,0]); +screw([9,1,-25], 2, [90,0,0]); + +beam_to([1,0,-1], 13); +beam_to([10,-6,0], 27, [0,0,90]); +screw([10,0,-1], 2, [0,0,0]); +screw([9,1,0], 2, [0,90,0]); +screw([9,1,-1], 2, [90,0,0]); + + +// iPad +color("gray"){ +translate([90,10,-230]){ +cube([10, 190, 250]); +} +} + +} +} \ No newline at end of file From aebf64e0d81f28c500b1622afd3b138740e4a89b Mon Sep 17 00:00:00 2001 From: Timothy Schmidt Date: Sun, 13 Oct 2013 16:58:53 -0400 Subject: [PATCH 09/13] Raspberry Pi adaptor plate initial checkin --- src/bitbeam-raspberry-pi-plate.scad | 37 +++++++++++++++++++++++++++++ src/raspberry-pi.scad | 22 +++++++++++++++++ 2 files changed, 59 insertions(+) create mode 100644 src/bitbeam-raspberry-pi-plate.scad create mode 100644 src/raspberry-pi.scad diff --git a/src/bitbeam-raspberry-pi-plate.scad b/src/bitbeam-raspberry-pi-plate.scad new file mode 100644 index 0000000..bd8ff7d --- /dev/null +++ b/src/bitbeam-raspberry-pi-plate.scad @@ -0,0 +1,37 @@ +/* +Copyright (c) 2013 Timothy Schmidt +All rights reserved. + +Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + +use + +beam_width = 7.9375; // 5/16 inches + +projection(cut=true) { + difference(){ + + // Base plate + cube([8*11, beam_width * 9, 1]); + + // Bottom row + for (x=[8 : 8 : beam_width * 12]) { + translate([x-4, beam_width/2, -10]) + cylinder(r=2.4, h=20, $fn=25); + } + + // Top row + for (x=[8 : 8 : beam_width * 12]) { + translate([x-4, (beam_width/2) + beam_width * 8, -10]) + cylinder(r=2.4, h=20, $fn=25); + } + + translate([25.5,26,0]) MountingHoles(); + } +} \ No newline at end of file diff --git a/src/raspberry-pi.scad b/src/raspberry-pi.scad new file mode 100644 index 0000000..362752e --- /dev/null +++ b/src/raspberry-pi.scad @@ -0,0 +1,22 @@ +/* +Copyright (c) 2013 Timothy Schmidt +All rights reserved. + +Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + +// All measurements derived from the diagram available here: +// http://www.raspberrypi.org/wp-content/uploads/2012/12/Raspberry-Pi-Mounting-Hole-Template.png + +module MountingHoles() +{ + cylinder(r=1.5, h=1, $fn=25); + + translate([54.5,25.5,0]) + cylinder(r=1.5, h=1, $fn=25); +} \ No newline at end of file From cc6f487f6d5de2d80a1b2de4e4dd63aaa52effbb Mon Sep 17 00:00:00 2001 From: Timothy Schmidt Date: Mon, 14 Oct 2013 23:09:28 -0400 Subject: [PATCH 10/13] convert to 2D primitives --- src/bitbeam-raspberry-pi-plate.scad | 14 ++++++-------- src/raspberry-pi.scad | 4 ++-- 2 files changed, 8 insertions(+), 10 deletions(-) diff --git a/src/bitbeam-raspberry-pi-plate.scad b/src/bitbeam-raspberry-pi-plate.scad index bd8ff7d..e235ff6 100644 --- a/src/bitbeam-raspberry-pi-plate.scad +++ b/src/bitbeam-raspberry-pi-plate.scad @@ -14,24 +14,22 @@ use beam_width = 7.9375; // 5/16 inches -projection(cut=true) { - difference(){ +difference(){ // Base plate - cube([8*11, beam_width * 9, 1]); + square([8*11, beam_width * 9]); // Bottom row for (x=[8 : 8 : beam_width * 12]) { - translate([x-4, beam_width/2, -10]) - cylinder(r=2.4, h=20, $fn=25); + translate([x-4, beam_width/2, 0]) + circle(r=2.4, $fn=25); } // Top row for (x=[8 : 8 : beam_width * 12]) { - translate([x-4, (beam_width/2) + beam_width * 8, -10]) - cylinder(r=2.4, h=20, $fn=25); + translate([x-4, (beam_width/2) + beam_width * 8, 0]) + circle(r=2.4, $fn=25); } translate([25.5,26,0]) MountingHoles(); - } } \ No newline at end of file diff --git a/src/raspberry-pi.scad b/src/raspberry-pi.scad index 362752e..df9cc24 100644 --- a/src/raspberry-pi.scad +++ b/src/raspberry-pi.scad @@ -15,8 +15,8 @@ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND module MountingHoles() { - cylinder(r=1.5, h=1, $fn=25); + circle(r=1.5, $fn=25); translate([54.5,25.5,0]) - cylinder(r=1.5, h=1, $fn=25); + circle(r=1.5, $fn=25); } \ No newline at end of file From 3cddbff8cde5ba5a80988ae0d5be7c3e1f5ae4ad Mon Sep 17 00:00:00 2001 From: Timothy Schmidt Date: Mon, 14 Oct 2013 23:12:45 -0400 Subject: [PATCH 11/13] convert to 2D primitives --- src/bitbeam-arduino-plate.scad | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-) diff --git a/src/bitbeam-arduino-plate.scad b/src/bitbeam-arduino-plate.scad index 6d0f808..4e0d4e9 100644 --- a/src/bitbeam-arduino-plate.scad +++ b/src/bitbeam-arduino-plate.scad @@ -2,26 +2,27 @@ use beam_width = 7.9375; // 5/16 inches -projection(cut=true) { - difference(){ +difference(){ // Base plate - cube([8*9, beam_width * 9, 1]); + square([8*9, beam_width * 9]); // Bottom row for (x=[8 : 8 : beam_width * 10]) { - translate([x-4, beam_width/2, -10]) - cylinder(r=2.4, h=20, $fn=25); + translate([x-4, beam_width/2, 0]) + circle(r=2.4, $fn=25); } // Top row for (x=[8 : 8 : beam_width * 10]) { - translate([x-4, (beam_width/2) + beam_width * 8, -10]) - cylinder(r=2.4, h=20, $fn=25); + translate([x-4, (beam_width/2) + beam_width * 8, 0]) + circle(r=2.4, $fn=25); } - translate([17,60,0]) MountingHoles(); - } + translate([17,60,0]) + projection(cut=true) { + MountingHoles(); + } } // Uncomment next line if you want to see the entire board From 0c1ad6b6b5c2984da95fbd5812e0c9054b8d28ff Mon Sep 17 00:00:00 2001 From: Timothy Schmidt Date: Mon, 14 Oct 2013 23:32:58 -0400 Subject: [PATCH 12/13] initial NEMA-17 and 23 motor mount commit, depend on MCAD submodule --- .gitmodules | 3 +++ MCAD | 1 + src/bitbeam-nema-17-mount.scad | 23 +++++++++++++++++++++++ src/bitbeam-nema-23-mount.scad | 23 +++++++++++++++++++++++ 4 files changed, 50 insertions(+) create mode 100644 .gitmodules create mode 160000 MCAD create mode 100644 src/bitbeam-nema-17-mount.scad create mode 100644 src/bitbeam-nema-23-mount.scad diff --git a/.gitmodules b/.gitmodules new file mode 100644 index 0000000..1bd4d77 --- /dev/null +++ b/.gitmodules @@ -0,0 +1,3 @@ +[submodule "MCAD"] + path = MCAD + url = https://github.com/SolidCode/MCAD.git diff --git a/MCAD b/MCAD new file mode 160000 index 0000000..9a958fd --- /dev/null +++ b/MCAD @@ -0,0 +1 @@ +Subproject commit 9a958fd11b0a6b5f8becd37c4f8a42f585abfcd8 diff --git a/src/bitbeam-nema-17-mount.scad b/src/bitbeam-nema-17-mount.scad new file mode 100644 index 0000000..a140304 --- /dev/null +++ b/src/bitbeam-nema-17-mount.scad @@ -0,0 +1,23 @@ +include <../MCAD/motors.scad> + +beam_width = 7.9375; // 5/16 inches + +difference(){ + + // Base plate + square([8*5, beam_width * 7]); + + // Bottom row + for (x=[8 : 8 : beam_width * 6]) { + translate([x-4, beam_width/2, 0]) + circle(r=2.4, $fn=25); + } + + // Top row + for (x=[8 : 8 : beam_width * 6]) { + translate([x-4, (beam_width/2) + beam_width * 6, 0]) + circle(r=2.4, $fn=25); + } + + translate([20, 28, 0]) stepper_motor_mount(17); +} diff --git a/src/bitbeam-nema-23-mount.scad b/src/bitbeam-nema-23-mount.scad new file mode 100644 index 0000000..2023ff1 --- /dev/null +++ b/src/bitbeam-nema-23-mount.scad @@ -0,0 +1,23 @@ +include <../MCAD/motors.scad> + +beam_width = 7.9375; // 5/16 inches + +difference(){ + + // Base plate + square([8*7, beam_width * 9]); + + // Bottom row + for (x=[8 : 8 : beam_width * 8]) { + translate([x-4, beam_width/2, 0]) + circle(r=2.4, $fn=25); + } + + // Top row + for (x=[8 : 8 : beam_width * 8]) { + translate([x-4, (beam_width/2) + beam_width * 8, 0]) + circle(r=2.4, $fn=25); + } + + translate([28, 36, 0]) stepper_motor_mount(23); +} From 4b8446ff38de55ac72c188de37ea56f53b06b8ac Mon Sep 17 00:00:00 2001 From: Timothy Schmidt Date: Wed, 16 Oct 2013 03:49:43 -0400 Subject: [PATCH 13/13] camera tripod plate initial commit --- src/bitbeam-tripod-camera-plate.scad | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) create mode 100644 src/bitbeam-tripod-camera-plate.scad diff --git a/src/bitbeam-tripod-camera-plate.scad b/src/bitbeam-tripod-camera-plate.scad new file mode 100644 index 0000000..41d371d --- /dev/null +++ b/src/bitbeam-tripod-camera-plate.scad @@ -0,0 +1,28 @@ +beam_width = 7.9375; // 5/16 inches +// professional tripod mounting screws are 3/8-16 +// mounting_hole = 3/8 * 25.4; + +// consumer tripod mounting screws are 1/4-20 +mounting_hole = 1/4 * 25.4; + +clearance = 0.15; + +difference(){ + + // Base plate + square([8*3, beam_width * 4]); + + // Bottom row + for (x=[8 : 8 : beam_width * 4]) { + translate([x-4, beam_width/2, 0]) + circle(r=2.4, $fn=25); + } + + // Top row + for (x=[8 : 8 : beam_width * 4]) { + translate([x-4, (beam_width/2) + beam_width * 3, 0]) + circle(r=2.4, $fn=25); + } + + translate([12, beam_width * 4 / 2, 0]) circle(r=(mounting_hole / 2) + clearance, $fn=25); +}