-
KG-UV3D GPS+Voice: Plug Mounting Plate
Unlike my old ICOM IC-Z1A, the Wouxun KG-UV3D radio has mic and speaker jacks recessed into the case, so that a custom plug plate can absorb all the stress from forces applied to the cables without wiggling the plugs. Even better, there’s a removable cover with a mounting screw that can hold the new plate in place!

Wouxun plug mounting plate – overview The first pass at the mount required a bit of filing, as the deepest part of the recess turns out to be not exactly rectangular. That’s (probably) fixed in the source code:

Wouxun plug plate – detail The solid model looks about like you’d expect, with terribly thin side walls between the plugs and the not-quite-rectangular section. The whole affair is asymmetrical around the long axis; the not-quite-rectangular block and hole really are offset:

Plug Mount Plate – Solid Model When printed, the thin sections come out one 0.66 mm plastic thread wide:

Wouxun plug mounting plate – build I spent quite some time iterating through OpenSCAD, RepG, and SkeinLayer to make sure that came out right. This is from a later version with larger recesses around the plugs:

Plug Mount Plate – skeinlayer Some epoxy eased down along the plugs will lock them into the plastic, with an epoxy putty turd over the top to stabilize the cables and terminal connections. That’s a T6 Torx bit to mate with the 2 mm screw (with a captive washer!) pulled from the Small Drawer o’ Salvaged Metric Screws:

Wouxun plug plate – trial fit The OpenSCAD source code is part of the huge block of code at the bottom of that post, but here’s the relevant section:
module PlugPlate() { BaseX = PlugBaseWidth/2 - PlugBaseRadius; BaseY = PlugBaseLength/2 - PlugBaseRadius; difference() { union() { linear_extrude(height=PlugBaseThick,center=false,convexity=3) hull() { translate([-BaseX,-BaseY,0]) circle(r=PlugBaseRadius,$fn=8); translate([-BaseX, BaseY,0]) circle(r=PlugBaseRadius,$fn=8); translate([ BaseX, BaseY,0]) circle(r=PlugBaseRadius,$fn=8); translate([ BaseX,-BaseY,0]) circle(r=PlugBaseRadius,$fn=8); } translate([PlugFillOffsetX, (PlugFillLength/2 - PlugBaseLength/2 + PlugFillOffsetY), PlugBaseThick]) linear_extrude(height=PlugFillThick,center=false,convexity=5) hull() { translate([0,-(PlugFillLength/2 - PlugFillRadius2),0]) circle(r=PlugFillRadius2,$fn=10); translate([-(PlugFillWidth/2 - PlugFillRadius1),-PlugBaseLength/2,0]) circle(r=PlugFillRadius1,$fn=8); translate([-(PlugFillWidth/2 - PlugFillRadius1), (PlugFillLength/2 - PlugFillRadius1),0]) circle(r=PlugFillRadius1,$fn=8); translate([(PlugFillWidth/2 - PlugFillRadius1), (PlugFillLength/2 - PlugFillRadius1),0]) circle(r=PlugFillRadius1,$fn=8); translate([(PlugFillWidth/2 - PlugFillRadius1),-PlugBaseLength/2,0]) circle(r=PlugFillRadius1,$fn=8); } } translate([0,-JackOC/2,-Protrusion]) rotate(360/16) { PolyCyl(Plug3BezelDia,(Plug3BezelThick + Protrusion),8); PolyCyl(Plug3ScrewDia,(PlugBaseThick + PlugFillThick + 2*Protrusion),8); } translate([0,+JackOC/2,-Protrusion]) rotate(360/16) { PolyCyl(Plug2BezelDia,(Plug2BezelThick + Protrusion),8); PolyCyl(Plug2ScrewDia,(PlugBaseThick + PlugFillThick + 2*Protrusion),8); } translate([JackScrewOffsetX,-(PlugBaseLength/2 + JackScrewOffsetY),0]) PolyCyl(JackScrewDia,(PlugBaseThick + PlugFillThick + Protrusion)); } }