greatfet

tools and accesories for using with the GreatFET
git clone https://git.e1e0.net/greatfet.git
Log | Files | Refs

commit f0a37dff1fa582ca0ea34388ab9444647e0fc4dc
Author: Paco Esteban <paco@e1e0.net>
Date:   Sat, 20 Nov 2021 17:37:56 +0100

bench support for the GreatFET

Diffstat:
Agreatfet_support.scad | 103+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 103 insertions(+), 0 deletions(-)

diff --git a/greatfet_support.scad b/greatfet_support.scad @@ -0,0 +1,103 @@ +holeSpacingH = 60.96; +holeFrontSpacingV = 40.64; +holeBackSpacingV = 45.72; + +frameEdgePaddingH = 14; +frameEdgePaddingV = 8; + +frameSize = [holeSpacingH + frameEdgePaddingH*2, holeBackSpacingV + frameEdgePaddingV*2]; +frameThickness = 2; +frameReinforcementHeight = 4; +frameReinforcementThickness = 1.5; +frameWidth = 8; + +mountLength = 15; +mountDia = 7; +mountHoleDia = 3.5; +mountColumns = [0, holeSpacingH, holeSpacingH]; + +union() { + frame(); + mounts(); +} + +module mounts() { + union() { + linear_extrude(mountLength) difference() { + mountOutlines(mountDia); + mountOutlines(mountHoleDia); + } + mountFlanges(); + } +} + +module frame() { + linear_extrude(frameThickness) frameOutline(); + linear_extrude(frameReinforcementHeight) frameRim(frameReinforcementThickness); +} + +module frameOutline() { + union() { + frameRim(frameWidth); + mountOutlines(mountDia); + frameFlanges(mountDia); + } +} + +module frameReinforcementOutline() { + difference() { + frameRim(frameReinforcementThickness); + mountOutlines(mountHoleDia); + } +} + +module frameRim(width) { + difference() { + offset(r=width/2) square(size=frameSize, center=true); + offset(r=-width/2) square(size=frameSize, center=true); + } +} + +module mountOutline(d) { + circle(d/2, $fn=32); +} + +module mountOutlines(d) { + // front + translate([-holeSpacingH/2, holeFrontSpacingV/2]) mountOutline(d); + translate([-holeSpacingH/2, -holeFrontSpacingV/2]) mountOutline(d); + // back + translate([holeSpacingH/2, holeBackSpacingV/2]) mountOutline(d); + translate([holeSpacingH/2, -holeBackSpacingV/2]) mountOutline(d); +} + +module frameFlanges(length) { + translate([-holeSpacingH/2-mountDia/2, holeFrontSpacingV/2]) square(size=[length, frameWidth]); + translate([-holeSpacingH/2-mountDia/2, -holeFrontSpacingV/2-mountDia-frameThickness/2]) square(size=[length, frameWidth]); + translate([holeSpacingH/2-mountDia/2, holeBackSpacingV/2]) square(size=[length, frameWidth]); + translate([holeSpacingH/2-mountDia/2, -holeBackSpacingV/2-mountDia-frameThickness/2]) square(size=[length, frameWidth]); +} + +module mountFlange(edgePadding) { + translate([-frameReinforcementThickness/2, 0]) rotate([90, 0, 90]) + linear_extrude(frameReinforcementThickness) polygon(points=[ + [mountHoleDia/2, 0], + [edgePadding, 0], + [edgePadding, frameReinforcementHeight], + [mountHoleDia/2, mountLength]]); +} + +module flangeFront() { + translate([-holeSpacingH/2, holeFrontSpacingV/2+frameReinforcementThickness]) mountFlange(mountDia+(holeBackSpacingV-holeFrontSpacingV)/2); +} + +module flangeBack() { + translate([holeSpacingH/2, holeBackSpacingV/2+frameReinforcementThickness]) mountFlange(mountDia); +} + +module mountFlanges() { + flangeFront(); + mirror([0,1,0]) flangeFront(); + flangeBack(); + mirror([0,1,0]) flangeBack(); +}