Created
September 19, 2021 12:50
-
-
Save ednisley/bda77c0afdd41d98bcf62f81d3e35661 to your computer and use it in GitHub Desktop.
OpenSCAD source code: Circuit support plate for Tour Easy rear running light
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// Circuit plate for Tour Easy running lights | |
// Ed Nisley - KE4ZNU - 2021-09 | |
/* [Hidden] */ | |
ThreadThick = 0.25; | |
ThreadWidth = 0.40; | |
HoleWindage = 0.2; | |
Protrusion = 0.1; // make holes end cleanly | |
function IntegerMultiple(Size,Unit) = Unit * ceil(Size / Unit); | |
ID = 0; | |
OD = 1; | |
LENGTH = 2; | |
inch = 25.4; | |
//---------------------- | |
// Dimensions | |
// Light case along X axis | |
LightID = 23.0; | |
WallThick = 2.0; | |
Screw = [3.0,6.8,4.0]; // M3 OD=washer, length=nut + washers | |
Insert = [3.0,4.2,8.0]; // splined brass insert, minus splines | |
InsertOffset = 10.0; // insert from heatsink end | |
PinOD = 1.6; // alignment pins | |
PinOC = 14.0; | |
PinDepth = 5.0; | |
Plate = [50.0,LightID,Insert[OD] + 4*ThreadThick]; // overall plate size | |
WirePort = [10.0,3.0,2*Plate.z]; | |
NumSides = 2*3*4; | |
//---------------------- | |
// Useful routines | |
module PolyCyl(Dia,Height,ForceSides=0) { // based on nophead's polyholes | |
Sides = (ForceSides != 0) ? ForceSides : (ceil(Dia) + 2); | |
FixDia = Dia / cos(180/Sides); | |
cylinder(r=(FixDia + HoleWindage)/2, | |
h=Height, | |
$fn=Sides); | |
} | |
// Circuit plate | |
module Plate() { | |
difference() { | |
intersection() { | |
cube(Plate,center=true); | |
rotate([0,90,0]) | |
cylinder(d=LightID,h=2*Plate.x,$fn=NumSides,center=true); | |
} | |
rotate([0,90,0]) rotate(180/6) | |
translate([0,0,-Plate.x]) | |
PolyCyl(Screw[ID],2*Plate.x,6); | |
rotate([0,90,0]) rotate(180/6) | |
translate([0,0,-Plate.x/2 - Protrusion]) | |
PolyCyl(Insert[OD],Insert[LENGTH] + InsertOffset + Protrusion,6); | |
translate([-Plate.x/2 + InsertOffset + Insert[LENGTH]/2,0,Plate.z/2]) | |
cube([Insert[LENGTH],Insert[OD],Plate.z],center=true); | |
for (j=[-1,1]) | |
translate([-Plate.x/2,j*PinOC/2,0]) | |
rotate([0,90,0]) rotate(180/6) | |
translate([0,0,-PinDepth]) | |
PolyCyl(PinOD,2*PinDepth,6); | |
for (j=[-1,1]) | |
translate([0,j*(Plate.y/2 - WirePort.y/2),0]) | |
cube(WirePort,center=true); | |
} | |
} | |
//- Build it | |
Plate(); | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
More details on my blog at https://wp.me/poZKh-aqj