Built back in 2004, the Dell GX270 PC had PS/2 keyboard and mouse ports on its back panel, so I put a PS/2 plug on the cable from the Hall effect sensor in the foot pedal. Although the original sockets mounted on a complex system board structure that I can’t repurpose, it’s easy enough to conjure up a mount for a single socket on the back panel:

A quick fit check verified the dimensions:

Astonishingly, the socket slid firmly into its slot. I love it when that happens on the first try!
The flat plate in front of the mount snaps into the chassis cutout to locate the 2-56 screw hole positions:

The screws thread directly into the mount, with the holes tapped for 2-56. PLA isn’t all that strong, but there’s enough meat to hold the mount firmly enough for my simple purposes.
And it looks pretty good, in a post-apocalyptic missing-windows sort of way:

That was easy…
The OpenSCAD source code:
// PS/2 Socket Mount
// Ed Nisley - KE4ZNU - October 2014
Layout = "Build"; // Build Socket Guide
//- Extrusion parameters must match reality!
ThreadThick = 0.20;
ThreadWidth = 0.40;
HoleWindage = 0.2; // extra clearance
Protrusion = 0.1; // make holes end cleanly
AlignPinOD = 1.70; // assembly alignment pins: filament dia
function IntegerMultiple(Size,Unit) = Unit * ceil(Size / Unit);
//----------------------
// Dimensions
Socket = [14.1,13.3,13.0]; // PS/2 socket outline, minus tabs & wires on bottom
Flange = 6.0;
WallThick = IntegerMultiple(2.0,ThreadWidth);
Mount = Socket + [2*Flange,WallThick,WallThick];
ScrewTap = 1.90; // 2-56 tap for machine screws
ScrewOC = 19.0;
echo(str("Screw OC: ",ScrewOC));
ChassisHole = [13.0,13.0,1.0];
GuideLayers = IntegerMultiple(0.5,ThreadThick);
//----------------------
// 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);
}
module ShowPegGrid(Space = 10.0,Size = 1.0) {
RangeX = floor(100 / Space);
RangeY = floor(125 / Space);
for (x=[-RangeX:RangeX])
for (y=[-RangeY:RangeY])
translate([x*Space,y*Space,Size/2])
%cube(Size,center=true);
}
//-- Build the mount
module SocketMount() {
difference() {
translate([0,Mount[1]/2,Mount[2]/2])
cube(Mount,center=true);
translate([0,Socket[1]/2,Socket[2]/2])
cube(Socket + [0,Protrusion,Protrusion],center=true);
for (i=[-1,1]) // holes centered on socket, not mount
translate([i*ScrewOC/2,-Protrusion,Socket[2]/2])
rotate([-90,0,0])
rotate(180/6)
PolyCyl(ScrewTap,Mount[1] + 2*Protrusion,6);
}
}
//-- Totally ad-hoc drill guide to center holes on PS/2 cutout
module DrillGuide() {
union() {
intersection() {
translate([0,0,GuideLayers])
cube([2*Mount[0],2*Mount[1],2*GuideLayers],center=true);
translate([0,-Socket[2]/2,Mount[1]])
rotate([-90,0,0])
SocketMount();
}
translate([0,0,Protrusion])
linear_extrude(height=(3*GuideLayers - Protrusion)) {
circle(d=ChassisHole[0],$fn=8*4);
translate([-ChassisHole[0]/2,0])
square([ChassisHole[0],(ChassisHole[1] - ChassisHole[0]/2)],center=false);
}
}
}
//----------------------
// Build it
ShowPegGrid();
if (Layout == "Socket")
SocketMount();
if (Layout == "Guide")
DrillGuide();
if (Layout == "Build") {
translate([0,-Mount[2],0])
DrillGuide();
translate([0,0,Mount[1]])
rotate([-90,0,0])
SocketMount();
}
Comments
One response to “Kenmore 158: Hall Effect Pedal Connector”
[…] the PS/2 connector for the foot pedal, mounting the DB9 “serial” connector required some […]