Payphone Lock

Image: 1950's era payphone.

Many years ago, I was given this rebuilt payphone as a gift. It is fully functional, but the two locks are not. The bottom lock is completely missing. My granddaughter loves to drop coins in the slots and hear the bells ding, so we pull the door out and it just comes off. One day it came off and fell onto the tile floor. That made me start thinking about getting a lock for it.

I found one site on the web where I could probably get parts for an old phone like this, but the proprietor was pretty unfriendly, so I opted to try a different approach.

What I did was design my own lock in openSCAD, and then print the parts, put it together, and guess what? It works! So now, the door no longer just falls off when the phone is bumped.

This door is made of some pretty heavy steel. When it hit the tile floor, I was really concerned it may have chipped the tile.
Fortunately, not that time.

Image: The coinbox door from the payphone.

Here's the lock I designed and printed. The "key" is a 1/4" screwdriver. I have no intent at this point of worrying about security.

Image: The lock I designed and printed.

Here's how the parts fit together. It works really well. The one thing that is not shown is the pin I created out of 10AWG copper wire. It goes in the hole in the wheel, and into the slot in the bolt.

Here's a listing of the openSCAD code that does all that.

// PayPhone_Lock.scad - 2022 Gregory A Sanders
// Lock guts for the change door

module body(){
    difference(){
        difference(){
            translate([0,0,6])
            cube([58,20,40],true);
            translate([0,1.2,4])
            cube([44, 20, 38],true); 
        }
        translate([0,-5.8,0])
        cube([21,6,66],true); // bolt 
    }
}

module camhubslot(){
    rotate([270,0,0]) //ROT on X, so Z becomes Y. -Y is now Z.
    hull(){
        translate([0,-10,-20])  // bottom cyl
        cylinder(60,d=10.5,true);
        translate([0,0,-20])    // top cyl
        cylinder(60,d=10.5,true);
    }
}

module pinslot(){
    hull(){
        rotate([90,0,0])
        translate([-4,-7,-20]) 
        cylinder(30,d=3.2,true); // pin hole
        rotate([90,0,0])
        translate([1,-7,-20]) 
        cylinder(30,d=3.2,true); // pin hole
    }
}

module key(){
    cube([4,35,4],true);
    difference(){
    translate([0,25,0])
        cube([20,20,4],true);
        translate([0,30,-2])
        cylinder(5,d=4,true);
    }
}

module keyhole(){
    translate([8,0,5])
    cube([4.4,50,4.4],true);
}
module hub(){
    translate([0,0,-9])
    cylinder(21,d=10,true);  // hub
}

module camwheel(){
    color("red")
    rotate([90,0,0])
    translate([8,5,-5.5])
    difference(){
        union(){
            hub();
            translate([0,0,0])
            cylinder(4,d=26,true); // cam wheel
        }
        translate([-7,-8,-10]) 
        cylinder(30,d=3,true); // pin hole

    }
}

module bolt(){
    color("blue")
    difference(){
        union(){
            translate([0,7.5,6])
            cube([20,5,40],true); // bolt 
            translate([0,7.5,-2])
            cube([43.5, 5,26],true);
            }
        translate([8,0,-6])
        camhubslot();
    }
}

module backplate(){
    color("lightblue")
    difference(){
        difference(){
            translate([0,6.5,5])
            cube([54,7,38],true);
            rotate([90,0,0])
            translate([8,5,-5.5])
            hub();
        }
    translate([0,8,-9])
    cube([8,11,11],true);
    }
}

module mntscrew(){
    color("green")
    rotate([90,0,0])
    cylinder(42,d=3.5,true);
}

module squarenut(){
    cube([6.25,3.2,6.25],true);
}

    // 52/2=26 4.2/2=2.1 14-2.1 down: 26-11.9=14.1
module sqnutarray(){
    translate([-24,6.5,11.1])
    squarenut();
    translate([24,6.5,11.1])
    squarenut();
    translate([24,6.5,-10.9])
    squarenut();
    translate([-24,6.5,-10.9])
    squarenut();
}

module mntscrarray(){
    translate([-24,20,11.1])
    mntscrew();
    translate([24,20,11.1])
    mntscrew();
    translate([24,20,-10.9])
    mntscrew();
    translate([-24,20,-10.9])
    mntscrew();
}

//
$fn=80;
// THE BODY
difference(){
    difference(){
        difference(){
            body();
            translate([0,-4,0])
            camwheel();
        }
    translate([0,7,4.5])
    cube([54,8,38],true);
    }
    mntscrarray();
}
// THE CAM WHEEL
translate([0,-4 ,0])
difference(){
    camwheel();
    keyhole();
    }
// THE BACK PLATE
difference(){
backplate();
    union(){
        mntscrarray();
        sqnutarray();
    }
}
// THE BOLT
translate([0,-13.6,4])
difference(){
    bolt();
    pinslot();
    }
// // THE KEY
// key();

I love being able to make things like this.

Another "Thing that Works!"

link to home page

links