Whirlpool Refrigerator: Replacement Freezer Shelf Bracket

Somehow, one of the brackets that supports the small shelf inside the freezer of our Whirlpool refrigerator went missing over the many intervening years and repairs; we never used that shelf and stashed it in a closet almost immediately after getting the refrigerator, so not having the bracket didn’t matter. We recently set up a chest freezer in the basement for all the garden veggies that used to fill all the space available and decided to (re-)install the shelf, which meant we needed a bracket.

It’s impossible to figure out exactly which “shelf stud” in that list would solve the problem, but one of the upper-left pair in that set seems to be about right. On the other paw, I don’t need all the other brackets and doodads and screws, sooo… I can probably make one.

Start with a few measurements, then doodle up the general idea:

Refrigerator Bracket - dimension doodle
Refrigerator Bracket – dimension doodlet’s time to conjure up a solid model:

A bit of OpenSCAD solid modeling:

Refrigerator Bracket Pin - solid model
Refrigerator Bracket Pin – solid model

The yellow bars support the ceiling of that big dovetail, which would otherwise sag badly. The OEM bracket has nicely rounded corners on the base and a bit of an overall radius at the end of the post; this was pretty close and easier to do.

Now it’s time to Fire the Thing-O-Matic…

I switched from blue to white filament during the print, because I figured I’d print another one after I got the sizes right, so it emerged with an attractive blue base:

Bracket on build platform
Bracket on build platform

A better view of the support structure:

Bracket - dovetail support structure
Bracket – dovetail support structure

Two of the bars snapped off cleanly, but the third required a bit of scraping:

Bracket - support scars
Bracket – support scars

Somewhat to my surprise, Prototype 001 slipped snugly over the matching dovetail on the freezer wall, with about the same firm fit as the OEM brackets:

Refrigerator bracket - installed
Refrigerator bracket – installed

And it works perfectly, apart from that attractive blue base that I suppose we’ll get used to after a while:

Refrigerator bracket - in use
Refrigerator bracket – in use

I have no idea whether ABS is freezer-rated. It seems strong enough and hasn’t broken yet, so we’ll declare victory and keep the source code on tap.

The whole project represents about an hour of hammering out OpenSCAD code for the solid model and another hour of printing, which means I’d be better off to just buy the parts kit and throw away the unused bits. Right?

I loves me my Thing-O-Matic…

The OpenSCAD source code:

// Shelf support bracket
// for Whirlpool freezer
// Ed Nisley KE4ZNU Octoboer 2012

//include </mnt/bulkdata/Project Files/Thing-O-Matic/MCAD/units.scad>
//include </mnt/bulkdata/Project Files/Thing-O-Matic/Useful Sizes.scad>

// Layout options

Layout = "Build";
 // Overall layout: Show Build
 // Printing plates: Build
 // Parts: Post Base Keystone Support

ShowGap = 10; // spacing between parts in Show layout

//- Extrusion parameters must match reality!
// Print with +1 shells and 3 solid layers

ThreadThick = 0.25;
ThreadWidth = 2.0 * ThreadThick;

HoleWindage = 0.2;

function IntegerMultiple(Size,Unit) = Unit * ceil(Size / Unit);

Protrusion = 0.1; // make holes end cleanly

//----------------------
// Dimensions

PostLength = 17.5;
PostWidth = 8.2;
PostHeight = 14.4;
PostOffset = 4.4;

PostTopWidth = 4.0;
PostTopHeight = 4.2;

BaseLength = 22.6;
BaseWidth = 20.8;
BaseThick = 5.0;

KeystoneOffset = 3.4;
KeyThick = IntegerMultiple(3.0,ThreadThick);
KeyBase = 2.5;
SlotOpening = 11.63;
//----------------------
// 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) {

 Range = floor(50 / Space);

 for (x=[-Range:Range])
 for (y=[-Range:Range])
 translate([x*Space,y*Space,Size/2])
 %cube(Size,center=true);

}

//-------------------
// Component parts

//--- Post

module Post(h=PostLength) {

PostTopAngle = atan((PostWidth - PostTopWidth)/(2*PostTopHeight));
PostBottomRadius = PostWidth/2;

PostPolyTop = [PostTopWidth/2,0];
PostPolyBottom = [PostWidth/2,-PostTopHeight];

hull() {
 linear_extrude(height=h) {
 polygon(points=[
 [-PostPolyTop[0],PostPolyTop[1]],
 PostPolyTop,
 PostPolyBottom,
 [-PostPolyBottom[0],PostPolyBottom[1]]
 ]);
 translate([0,-PostHeight + PostBottomRadius])
 circle(r=PostBottomRadius,$fn=4*8);
 }
 }
}

//--- Base block

module Base() {

 linear_extrude(height=BaseThick)
 square([BaseWidth,BaseLength],center=true);

}

//-- Keystone slot

module Keystone() {

Tx = SlotOpening/2 + KeyBase;

 rotate([90,0,0])
 linear_extrude(height=BaseLength)
 polygon(points=[
 [-Tx,KeyThick],
 [ Tx,KeyThick],
 [ SlotOpening/2,0],
 [ SlotOpening/2,-Protrusion],
 [-SlotOpening/2,-Protrusion],
 [-SlotOpening/2,0]
 ]);
}

//--- Support structure

module Support() {

SupportLength = BaseLength - 2*ThreadWidth;
SupportWidth = 2*ThreadWidth;
SupportHeight = KeyThick - Protrusion;

SupportPeriod = 7.0*ThreadWidth;

SupportBeams = 3; // must be odd -- choose to fit
SIndex = floor((SupportBeams - 1)/2);

for (i=[-SIndex:SIndex])
 translate([(i*SupportPeriod - SupportWidth/2),-(SupportLength + ThreadWidth),0])
 color("Yellow") cube([SupportWidth,SupportLength,SupportHeight]);
}

//--- The whole thing!

module Bracket(ShowSupp) {

 union() {
 difference() {
 Base();
 translate([0,(BaseLength/2 - KeystoneOffset),0])
 Keystone();
 }
 translate([0,(BaseLength/2 - PostOffset),BaseThick - Protrusion])
 Post(h=(PostLength + Protrusion));
 }

 if (ShowSupp)
 translate([0,(BaseLength/2 - KeystoneOffset),0])
 Support();

}

//----------------------
// Build it!

ShowPegGrid();

if (Layout == "Show")
 Bracket(false);

if (Layout == "Build")
 Bracket(true);

if (Layout == "Post")
 Post();

if (Layout == "Base")
 Base();

if (Layout == "Keystone")
 Keystone();

if (Layout == "Support") {
 Support();
% Keystone();
}

2 thoughts on “Whirlpool Refrigerator: Replacement Freezer Shelf Bracket

  1. how much to print me one of those and send it to me in Washington state? my story is the exact same as yours (except the part about the Thing-O-Matic…).

    1. How about $10 for either red PLA from the M2 or white ABS from the Thing-O-Matic, sent to you in a box covered with stamps?

      Shapeways says it’ll cost $6.43 in their “Strong & Flexible Plastic”, plus shipping. That gets you laser sintered nylon, not extruded ABS or PLA, which might look better.

      It would probably make more sense for you to tweak the OpenSCAD code to match the dovetail mount in your freezer and send it to them. I think the laser sintering process doesn’t need the support bars holding up the dovetail ceiling, so set Layout = “Show” before you compile the model and export the STL file.

      Heck, they can even do it in stainless steel!

Comments are closed.