Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Binary file added Images/actions.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added Images/artecfacts.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added Images/deltatoy_pinned.jpg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added Images/pinDemo.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
61 changes: 61 additions & 0 deletions Pin.scad
Original file line number Diff line number Diff line change
@@ -0,0 +1,61 @@
// create a pin to constrain the part
//should print sat on the wide end without difficulty
// should have a narrower "bearing surface" for the moveing part
//should end in a slightly wider profile to lock in
// use a wedge profile such that joint preload can be controlled by adjusting the insertion distance slightly

$fs = 0.1;
$sa = 1;
include <params.scad>;
//cone is part of the bearing
module pin(
matingLength = 5,
bearingLength = 5,
coneLength = 2,
coneOuterDia = 7,
pinDia = pinDia,
bearingDelta = pinClearence,
chamferLength = 1,
chamferStep = 1
){
assert(bearingLength>coneLength, "bearing length must be longer than cone length");
translate([0,0,-(matingLength+bearingLength)]) {
//chamfer to make locating into hole easier
cylinder(d1=pinDia-chamferStep,d2 = pinDia,h= chamferLength);
//mating section is a fixed length plug
translate([0,0,chamferLength-0.001]) cylinder(d=pinDia,h= matingLength-chamferLength);
//bearing shaft is full length inside part
translate([0,0,chamferLength]) cylinder(d=pinDia-bearingDelta,h= matingLength+bearingLength-chamferLength);
//coneic mating surface
translate([0,0,(matingLength+bearingLength)-coneLength]) cylinder(d1=pinDia-bearingDelta,d2 = coneOuterDia,h= coneLength);
}
}

module pinClearence(
Length = 10,
pinDia = pinDia,
bearingDelta = pinClearence*1.5,
coneLength = 2,
coneOuterDia = 7,
overHead = 0.1
){
assert(Length>coneLength, "bearing length must be longer than cone length");
translate([0,0,-(Length)]) {
//clear to the pin diamter throughout
cylinder(d=pinDia+bearingDelta,h=Length);
//coneic mating surface
translate([0,0,(Length)-coneLength]) cylinder(d1=pinDia+bearingDelta,d2 = coneOuterDia,h= coneLength);
translate([0,0,Length-0.01]) cylinder(d=coneOuterDia,h=overHead);
}
}

module pinMate(Length = 10, pinClearence = pinClearence, overHead = 0.1){

translate([0,0,-Length]) cylinder(d=pinDia+pinClearence,h=Length+overHead);

}
rotate([180,0,0]){
//translate([-10,0,0]) pinClearence();
translate([ 0,0,0]) pin();
//translate([ 10,0,0]) pinMate();
}
5 changes: 3 additions & 2 deletions arm.scad
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
include <params.scad>
use <Pin.scad>
// lower and upper arm are the same

centerToCenter = 25;
Expand All @@ -16,7 +17,7 @@ difference(){
cylinder(d=Width,h=Thickness);
translate([centerToCenter,0,0]) cylinder(d=Width,h=Thickness);
}
cylinder(d=pinDia,h=pinHeight+Thickness);
}
translate([centerToCenter,0,-Thickness]) cylinder(d=pinDia+pinClearenceVert,h=Thickness*3);
translate([centerToCenter,0,Thickness]) pinMate();
translate([0,0,Thickness]) pinClearence();
}
17 changes: 17 additions & 0 deletions pinDemo.scad
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
use <Pin.scad>
$fs = 0.1;
$fa=1;


color("red") difference() {
cylinder(d=10,h=8);
translate([0,0,8]) pinMate();
}


color("blue") translate([0,0,10]) difference() {
cylinder(d=10,h=5);
translate([0,0,5]) pinClearence();
}

color("green") translate([0,0,25]) pin();
40 changes: 32 additions & 8 deletions readme.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
# Grounded Delta Desk Toy
This is a quick and basic openscad model, it's small and quick to print, it requires three non-printed parts (skate/608 bearings)
![Image of the first revision of the Grounded Delta Desk Toy](/Images/FirstPrint.jpg)
![Image of the pinned assembly Grounded Delta Desk Toy](/Images/deltatoy_pinned.jpg)


## Parts list to print
| Part | Count |
Expand All @@ -10,24 +11,47 @@ This is a quick and basic openscad model, it's small and quick to print, it requ
| shoulder | 3 |
| tool | 1 |
| base | 1 |
| pins | 12 |

All printed parts should print in the openscad export orientation without supports

## Non-printed parts
| Part | Count |
| ---- | ----- |
| 806 bearing | 3 |
| 608 bearing | 3 |


## Assembly instructions
1. Place bearings into the big hole on the bottom of each shoulder
2. Assemble an arm by pressing two segments together (peg into hole) the "spare" peg should be under the arm (nothing sticks out from the side of the arm)
3. add the wrist peg into the hole on the top arm, note the wrist will sit above the other arm section, if the wrist would be upside down rotate the arm 180 degrees
4. Connect the arm to the shoulder, note orientation, one side of the bracket is right on the centre of the round part, this is the side the arm should attach from
2. Assemble an arm by plassing two segments together and connecting with a pin, the pin should go into a hole with a chamfer in the first part and through to a hole without a chamfer, all chamfers should face outwards
3. Place a pin through the chamfered hole in the wrist and into the hole on the top arm, note the wrist will sit above the other arm section, if the wrist would be upside down rotate the arm 180 degrees
4. Place a pin through the chamfered hole in the bottom of the arm and into the hole in the shoulder, note that the seam between the arm and shoulder should be centered
5. Repeat this for the other two arms
6. Sit each arm on top of one of the pegs on the base
6. Place three pins through the tool part and into the bottom side of each wrist
7. Sit the assembly on top of the base (one shoulder onto each pin)


## Known Problems
* The tolerance on the bearings is a little loose, the first version has a small piece of electrical tape over each pen and on the edge of each bearing to tighten it up
* The printed joints are not very good, new design to follow at some point
* The tolerance on the bearings is a little loose, the first version has a small piece of electrical tape over each peg and on the edge of each bearing to tighten it up
* new pinned joints are a big improvement but they are quite stiff to install, I used a small trigger clamp


## This Branch
This branch create a demo set for an alternative fixing method where all parts have either a pass through hole or a mating point for a pin. all parts are then pinned togeather

The pinned joints provide constraint and the ability to rotate

![Pin joint components](/Images/pinDemo.png)
The pin (green) passes through the moving part (blue) and anchors in the static part (red)
the pin to static joint is a friction fit
there is a necked down part of the pin to allow for reduced friction on the moving part, the cone on the pin acts as an alignment point

## Where STL?
STL files are generated using github actions to make sure they are up to date with the repo
visit [https://github.com/Scopeuk/GroundedDeltaDeskToy/actions]
select the latest build with the branch name (highlighted in blue) that matches what you are after "PegJoint" for this branch
![Github actions reference](/Images/actions.png)
Select the download button in the artefacts section
![Github actions reference](/Images/artecfacts.png)


5 changes: 3 additions & 2 deletions shoulder.scad
Original file line number Diff line number Diff line change
@@ -1,11 +1,12 @@
include <params.scad>
use <Pin.scad>

$fs=0.1;
$fa=1;

diskDia = 25;
diskThickness = 10;
plateThickness = 3;
plateThickness = 5;

difference(){
//base shape
Expand All @@ -28,7 +29,7 @@ translate([0,0,diskThickness]){
translate([0,0,PivotHeight]) rotate([0,90,0])cylinder(h=plateThickness,d=10);
translate([0,-10/2,-0.1]) cube([plateThickness,10,0.1]);
}
translate([-plateThickness,0,PivotHeight]) rotate([0,90,0]) cylinder(d=pinDia+pinClearence,h=plateThickness*3);
translate([0,0,PivotHeight]) rotate([0,-90,0]) pinMate();
}
}

Expand Down
17 changes: 7 additions & 10 deletions tool.scad
Original file line number Diff line number Diff line change
@@ -1,24 +1,21 @@
include <params.scad>
use <Pin.scad>

$fs=0.1;
$fa=1;

baseDia = 40;
baseHeight = 3;
baseHeight = 5;
pinInset = 4;
pinHeight = 6;
pinWasherDia = pinDia*1.5;
pinWasherHeight = 0.1;

difference(){
cylinder(d = baseDia, h = baseHeight);

cylinder(d = baseDia, h = baseHeight);

module pin(){
cylinder(d = pinWasherDia, h = baseHeight + pinWasherHeight);
cylinder(d = pinDia, h = baseHeight + pinWasherHeight + pinHeight);
}

for(i=[0:120:360]){
rotate([0,0,i]) translate([(baseDia/2)-pinInset,0,0]) pin();
for(i=[0:120:360]){
rotate([0,0,i]) translate([(baseDia/2)-pinInset,0,baseHeight]) pinClearence();
}
}

47 changes: 26 additions & 21 deletions wrist.scad
Original file line number Diff line number Diff line change
@@ -1,33 +1,38 @@
include <params.scad>
use <Pin.scad>

$fs=0.1;
$fa=1;

diskDia = 10;
diskThickness = 3;
plateThickness = 3;
diskThickness = 5;
plateThickness = 5;
centerToCenter = 12;
pinLength = 5;
rotate([0,-90,0]) union(){
translate([0,0,diskDia/2]) rotate([0,90,0]) union(){
difference(){
hull(){
//base shape
translate([-diskDia/2,0,0])cube([diskDia,0.1,diskThickness]);
translate([0,centerToCenter,0]) cylinder(d=diskDia,h=diskThickness);
}
translate([0,centerToCenter,0]) cylinder(d=pinDia+pinClearence,h=diskThickness*3);
}
union(){
hull(){
//base shape
translate([-diskDia/2,0,0])cube([diskDia,0.1,diskThickness]);
translate([0,centerToCenter,0]) cylinder(d=diskDia,h=diskThickness);
}


translate([-(diskDia/2-plateThickness),diskDia/2,diskThickness]){
PivotHeight = 7.5;
PivotOff = 10;
union(){
hull(){
translate([0,-PivotOff,PivotHeight]) rotate([0,-90,0])cylinder(h=plateThickness,d=10);
translate([-plateThickness,-10/2,-0.1]) cube([plateThickness,10,0.1]);
}
translate([-plateThickness,-PivotOff,PivotHeight]) rotate([0,90,0]) cylinder(d=pinDia,h=pinLength+plateThickness);
}
translate([diskDia/2,diskDia/2,diskThickness])
{
PivotHeight = 7.5;
PivotOff = 10;
difference(){
hull(){
translate([0,-PivotOff,PivotHeight]) rotate([0,-90,0])cylinder(h=plateThickness,d=diskDia);
translate([-plateThickness,-10/2,-0.1]) cube([plateThickness,diskDia,0.1]);
}
translate([0,-PivotOff,PivotHeight]) rotate([0,90,0]) pinClearence();
}
}
}

translate([0,centerToCenter,0]) rotate([0,180,0]) pinMate();
}
}
}