commit
96c1ddfbba
@ -0,0 +1,7 @@ |
||||
# cad |
||||
|
||||
Some CAD stuff I made for 3D printing etc |
||||
|
||||
## usbuart-case |
||||
|
||||
Case/shell for https://github.com/thequux/usb-uart , made in OpenSCAD. |
@ -0,0 +1 @@ |
||||
*.stl |
@ -0,0 +1,253 @@ |
||||
pcb_width = 33.5; |
||||
pcb_length = 85.6; |
||||
pcb_thickness = 1.6; |
||||
|
||||
thread_diameter = 2.6752404735808355; // Dp of coarse M3 |
||||
hole_diameter = 3.2; |
||||
raise_diameter = 5.2; |
||||
|
||||
hole1_xoff = 4.254; |
||||
hole1_yoff = 4.841; |
||||
hole2_xoff = pcb_width - 4.191; |
||||
hole2_yoff = hole1_yoff; |
||||
hole3_xoff = hole1_xoff; |
||||
hole3_yoff = pcb_length - 4.757; |
||||
hole4_xoff = pcb_width - 4.274; |
||||
hole4_yoff = hole3_yoff; |
||||
|
||||
outer_spacing = 1.5; |
||||
outer_thickness = 1.5; |
||||
groove_width = 1; |
||||
groove_thickness = 1; |
||||
|
||||
case_height_total = 6; |
||||
case_height_inner = case_height_total - outer_thickness; |
||||
|
||||
j1_xoff = 12.676;//12.696; |
||||
j1_width = 8.128; |
||||
j1_height = 3+pcb_thickness; |
||||
|
||||
sw1_yoff = 11.052; |
||||
sw1_width = 12.7; |
||||
sw1_height = 5+pcb_thickness; |
||||
|
||||
j3_yoff = sw1_yoff + sw1_width + 11.43; |
||||
j3_width = 6.223; |
||||
j3_height = 2.54+pcb_thickness; |
||||
|
||||
j8_xoff = 7.977;//9.140; |
||||
j8_width = 16.383; |
||||
j8_height = j3_height; |
||||
|
||||
j2_width = 16.29; |
||||
j2_length = 9.9; |
||||
j2_xoff = 8.116; |
||||
j2_yoff = pcb_length - 11.536 - j2_length; |
||||
|
||||
j7_width = 6.15; |
||||
j7_length = j7_width; |
||||
j7_xoff = 13.192; |
||||
j7_yoff = j2_yoff - 3.156 - j7_length; |
||||
|
||||
j456_width = 8.68; |
||||
j456_length = 11.2; |
||||
j456_xoff = 11.926; |
||||
j456_yoff = j7_yoff - 1.236 - j456_length; |
||||
|
||||
// pcb |
||||
%linear_extrude(pcb_thickness) square([pcb_width, pcb_length]); |
||||
|
||||
// case etc |
||||
translate([0,0,0],$fn=40) difference() { |
||||
union() { |
||||
// outer shell |
||||
difference() { |
||||
minkowski() { |
||||
translate([0,0,-groove_width]) |
||||
cube([pcb_width,pcb_length,case_height_inner+pcb_thickness+groove_width]); |
||||
sphere(r=outer_thickness); |
||||
} |
||||
translate([0,0,-case_height_inner*0.1-groove_width]) |
||||
cube([pcb_width,pcb_length,case_height_inner*1.1+groove_width]); |
||||
translate([-outer_thickness,-outer_thickness,-pcb_thickness*1.1-groove_width]) |
||||
cube([pcb_width+outer_thickness*2,pcb_length+outer_thickness*2,pcb_thickness*1.1]); |
||||
|
||||
// informative text |
||||
translate([0,0,case_height_total+1.25]) { |
||||
linear_extrude(1) union() { |
||||
translate([j8_xoff+2.54,pcb_length-1.27]) rotate(90) union() { |
||||
translate([0,-2.54*0])text("A",size=2,halign="right"); |
||||
translate([0,-2.54*1])text("GND",size=2,halign="right"); |
||||
translate([0,-2.54*2])text("TXD",size=2,halign="right"); |
||||
translate([0,-2.54*3])text("RXD",size=2,halign="right"); |
||||
translate([0,-2.54*4])text("B",size=2,halign="right"); |
||||
translate([0,-2.54*5])text("Vtgt",size=2,halign="right"); |
||||
} |
||||
|
||||
translate([j2_xoff,j2_yoff]) union() { |
||||
translate([-1.27,2.54*0.5])text("A",size=2,halign="right"); |
||||
translate([-1.27,2.54*2.5])text("GND",size=2,halign="right"); |
||||
translate([j2_width/2,-2.54])text("↑TXD↑",size=2,halign="center"); |
||||
translate([j2_width/2,2.54*4])text("↓RXD↓",size=2,halign="center"); |
||||
translate([j2_width+1.27,2.54*0.5])text("B",size=2); |
||||
translate([j2_width+1.27,2.54*2.5])text("Vtgt",size=2); |
||||
} |
||||
|
||||
translate([j7_xoff-1.27*0.5,j7_yoff+1.27]) |
||||
text("swapped||",size=2,halign="right"); |
||||
translate([j7_xoff-1.27*0.5,j7_yoff+2.54+1.27]) |
||||
text("normal=",size=2,halign="right"); |
||||
|
||||
translate([j456_xoff-2.54*3,j456_yoff+2.54*1.8]) |
||||
text("A",size=4,halign="right"); |
||||
translate([j456_xoff+j456_width+2.54*4.5,j456_yoff+2.54*1.8]) |
||||
text("B",size=4,halign="right"); |
||||
|
||||
translate([j456_xoff-2.54*2.5,j456_yoff+1.27*0.5]) union() { |
||||
translate([0,2.55*0])text("DSR",size=2); |
||||
translate([0,2.55*1])text("CTS",size=2); |
||||
translate([0,2.55*2])text("DTR",size=2); |
||||
translate([-2.6,2.55*3])text("→RTS",size=2); |
||||
} |
||||
|
||||
translate([j456_xoff+1.27+j456_width,j456_yoff+1.27*0.5]) union() { |
||||
translate([0,2.55*0])text("DSR",size=2); |
||||
translate([0,2.55*1])text("CTS←",size=2); |
||||
translate([0,2.55*2])text("DTR",size=2); |
||||
translate([0,2.55*3])text("RTS",size=2); |
||||
} |
||||
|
||||
translate([pcb_width/2,j456_yoff-2.54*2.5]) union() { |
||||
translate([0,-2.54*0])text("USB UART case",size=2,halign="center"); |
||||
translate([0,-2.54*1])text("© sys64738",size=2,halign="center"); |
||||
translate([0,-2.54*2])text("For CH340 UART",size=2,halign="center"); |
||||
translate([0,-2.54*3])text("PCB by TQ",size=2,halign="center"); |
||||
translate([0,-2.54*5])text("OSHW: git.lain.faith",size=2,halign="center"); |
||||
translate([0,-2.54*6])text("/sys64738/cad",size=2,halign="center"); |
||||
} |
||||
|
||||
translate([pcb_width/2,0]) text("USB",size=2,halign="center"); |
||||
|
||||
translate([pcb_width,sw1_yoff+sw1_width-3.5]) union() { |
||||
translate([0,-4*0])text("3V3",size=2,halign="right"); |
||||
translate([0,-4*1])text("Ext",size=2,halign="right"); |
||||
translate([0,-4*2])text("5V",size=2,halign="right"); |
||||
} |
||||
translate([pcb_width,j3_yoff+j3_width-2.54]) union() { |
||||
translate([0,-2.54*0])text("-",size=2,halign="right"); |
||||
translate([0,-2.54*1])text("+",size=2,halign="right"); |
||||
translate([-2.54,-2.54*1.4])rotate(90)text("Vext",size=2); |
||||
} |
||||
} |
||||
} |
||||
} |
||||
|
||||
// screw thingies |
||||
translate([0,0,pcb_thickness]) difference() { |
||||
// cylinders |
||||
union() { |
||||
// hole 1 bearing |
||||
translate([hole1_xoff,hole1_yoff]) |
||||
cylinder(case_height_inner,d=raise_diameter); |
||||
// hole 2 bearing |
||||
translate([hole2_xoff,hole2_yoff]) |
||||
cylinder(case_height_inner,d=raise_diameter); |
||||
// hole 3 bearing |
||||
translate([hole3_xoff,hole3_yoff]) |
||||
cylinder(case_height_inner,d=raise_diameter); |
||||
// hole 4 bearing |
||||
translate([hole4_xoff,hole4_yoff]) |
||||
cylinder(case_height_inner,d=raise_diameter); |
||||
} |
||||
// thread holes |
||||
translate([0,0,-0.1]) union() { |
||||
translate([hole1_xoff,hole1_yoff]) |
||||
cylinder(case_height_inner+0.1,d=thread_diameter); |
||||
// hole 2 bearing |
||||
translate([hole2_xoff,hole2_yoff]) |
||||
cylinder(case_height_inner+0.1,d=thread_diameter); |
||||
// hole 3 bearing |
||||
translate([hole3_xoff,hole3_yoff]) |
||||
cylinder(case_height_inner+0.1,d=thread_diameter); |
||||
// hole 4 bearing |
||||
translate([hole4_xoff,hole4_yoff]) |
||||
cylinder(case_height_inner+0.1,d=thread_diameter); |
||||
} |
||||
} |
||||
} |
||||
|
||||
// hole: J1 |
||||
translate([j1_xoff,-5,-0.1-groove_width]) |
||||
cube([j1_width, 10, j1_height+0.1+groove_width]); |
||||
// hole: SW1 |
||||
translate([pcb_width-4,sw1_yoff,-0.1-groove_width]) |
||||
cube([8, sw1_width, sw1_height+0.1+groove_width]); |
||||
// hole: J3 |
||||
translate([pcb_width-2.54,j3_yoff,-0.1-groove_width]) |
||||
cube([2.54*2, j3_width, j3_height+0.1+groove_width]); |
||||
// hole: J8 |
||||
translate([j8_xoff,pcb_length-2.54,-0.1-groove_width]) |
||||
cube([j8_width, 2.54*2, j8_height+0.1+groove_width]); |
||||
|
||||
// hole: J2 |
||||
translate([j2_xoff,j2_yoff,case_height_total/2]) |
||||
cube([j2_width,j2_length,case_height_total]); |
||||
// hole: J7 |
||||
translate([j7_xoff,j7_yoff,case_height_total/2]) |
||||
cube([j7_width,j7_length,case_height_total]); |
||||
// hole: J4..6 |
||||
translate([j456_xoff,j456_yoff,case_height_total/2]) |
||||
cube([j456_width,j456_length,case_height_total]); |
||||
} |
||||
|
||||
// bottom & pcb holder |
||||
translate([0,0,-groove_thickness],$fn=40) difference() { |
||||
union() { |
||||
// pcb holder |
||||
linear_extrude(groove_thickness) difference() { |
||||
square([pcb_width, pcb_length]); |
||||
translate([groove_width,groove_width]) |
||||
square([pcb_width-groove_width*2,pcb_length-groove_width*2]); |
||||
} |
||||
|
||||
// hole 1 bearing |
||||
translate([hole1_xoff,hole1_yoff]) cylinder(groove_thickness,d=raise_diameter); |
||||
// hole 2 bearing |
||||
translate([hole2_xoff,hole2_yoff]) cylinder(groove_thickness,d=raise_diameter); |
||||
// hole 3 bearing |
||||
translate([hole3_xoff,hole3_yoff]) cylinder(groove_thickness,d=raise_diameter); |
||||
// hole 4 bearing |
||||
translate([hole4_xoff,hole4_yoff]) cylinder(groove_thickness,d=raise_diameter); |
||||
|
||||
// bottom plane |
||||
translate([0,0,-outer_thickness]) |
||||
linear_extrude(outer_thickness) { |
||||
minkowski() { |
||||
square([pcb_width,pcb_length]); |
||||
circle(r=outer_spacing); |
||||
} |
||||
} |
||||
} |
||||
|
||||
// holes for screws |
||||
translate([0,0,-2]) union() { |
||||
// hole 1 bearing |
||||
translate([hole1_xoff,hole1_yoff]) cylinder(5,d=hole_diameter); |
||||
translate([hole2_xoff,hole2_yoff]) cylinder(5,d=hole_diameter); |
||||
translate([hole3_xoff,hole3_yoff]) cylinder(5,d=hole_diameter); |
||||
translate([hole4_xoff,hole4_yoff]) cylinder(5,d=hole_diameter); |
||||
} |
||||
|
||||
// space for screw heads |
||||
translate([0,0,-outer_thickness-0.01]) union() { |
||||
// hole 1 bearing |
||||
translate([hole1_xoff,hole1_yoff]) |
||||
cylinder(outer_thickness*0.75,d=raise_diameter*1.25); |
||||
translate([hole2_xoff,hole2_yoff]) |
||||
cylinder(outer_thickness*0.75,d=raise_diameter*1.25); |
||||
translate([hole3_xoff,hole3_yoff]) |
||||
cylinder(outer_thickness*0.75,d=raise_diameter*1.25); |
||||
translate([hole4_xoff,hole4_yoff]) |
||||
cylinder(outer_thickness*0.75,d=raise_diameter*1.25); |
||||
} |
||||
} |
Binary file not shown.
Loading…
Reference in new issue