Cleaning the baseboard radiator fins before moving the houseplants back to their winter abode by the living room window made sense, so I took the trim covers off and vacuumed a remarkable accumulation of fuzz off the top and out from between the fins. The covers had an equally remarkable accumulation of sawdust along their bottom edge, apparently deposited when the previous owners had the floor sanded before they moved in a decade ago.
If you happen to live in a house with baseboard radiators, I’m guessing you never looked inside, because nobody (else) does.
Anyhow, the radiator fins should rest on plastic carriers atop the bent-metal struts also supporting the trim covers, so that they slide noiselessly when the copper pipe expands & contracts during the heating cycle. Over the last six decades, however, the plastic deteriorated and most of the carriers were either missing or broken to the point of uselessness:

The shapes on the bottom are replacements made with a 3D printed base (“sled”) and a chipboard wrap around the radiator preventing the fins from contacting the strut:

Although it was tempting to 3D print the whole thing, because plastic, I figured there was little point in finesse: chipboard would work just as well, was much faster to produce, and I need not orient the shapes to keep the printed threads in the right direction.
The Prusa MK4 platform was just big enough for the number of sleds I needed:

The sleds along the left and right edges lost traction as the printing progressed, but everything came out all right.
The OpenSCAD program also produces 2D SVG shapes for the chipboard wraps and adhesive rectangles sticking them to the sleds:

Import those into LightBurn, duplicate using the Grid Array, Fire The Laser, then assemble:

The slits encourage the chipboard to bend in the right direction at the right place, so I didn’t need any fancy tooling to get a decent result.
A few rather unpleasant hours crawling around on the floor got the struts bent back into shape and the sleds installed under the fins:

Protip: Gloves aren’t just a good idea, they’re essential.
The trim cover presses the angled chipboard where it should go against the fins. The covers carry shadows of the plastic carriers, suggesting the clearance was tighter than it should have been and thermal cycling put more stress on the plastic than expected. We’ll never know.
Although I’ll make more for the other baseboards as the occasion arises, I hope to never see these again …
The OpenSCAD source code as a GitHub Gist:
| // Baseboard radiator sled | |
| // Ed Nisley – KE4ZNU | |
| // 2025-10-11 | |
| include <BOSL2/std.scad> | |
| Layout = "Sled"; // [Show,Build3D,Build2D,Sled,Wrap,Glue] | |
| /* [Hidden] */ | |
| HoleWindage = 0.2; | |
| Protrusion = 0.1; | |
| Gap = 5.0; | |
| Radiator = [25.0,62.0,50.0]; // X = support base, YZ = radiator element | |
| SledBase = [Radiator.x + 10.0,Radiator.y,1.0]; // support under wrap | |
| Runner = [SledBase.x – 2.0,3.0,1.6]; // bars contacting radiator support | |
| GlueOA = [SledBase.x,SledBase.y] – [2.0,2.0]; // glue sheet | |
| Wrap = [SledBase.x,Radiator.y + 1.0,Radiator.z + 1.0]; // chipboard wrap around radiator | |
| WrapFlat = [Wrap.x,Wrap.y + 2*Wrap.z]; | |
| WrapThick = 1.2; | |
| WrapSlit = 0.4; | |
| //—– | |
| // Sled base | |
| module Sled() { | |
| cuboid(SledBase,rounding=2.0,edges="Z",anchor=BOTTOM) | |
| position(TOP) | |
| for (j=[-1,1]) | |
| fwd(j*SledBase.y/3) | |
| cuboid(Runner,rounding=Runner.z/2,edges="Z",anchor=BOTTOM); | |
| } | |
| //—– | |
| // Glue sheet | |
| // Export as SVG for laser cutting | |
| module Glue() { | |
| rect(GlueOA,rounding=2.0); | |
| } | |
| //—– | |
| // Radiator wrap | |
| // Export as SVG for laser cutting | |
| module Wrap() { | |
| difference() { | |
| rect(WrapFlat,rounding=2.0); | |
| for (j=[-1,1]) | |
| fwd(j*Wrap.y/2) | |
| rect([Wrap.x/2,WrapSlit]); | |
| } | |
| } | |
| //—– | |
| // Build things | |
| if (Layout == "Sled") | |
| Sled(); | |
| if (Layout == "Glue") | |
| Glue(); | |
| if (Layout == "Wrap") | |
| Wrap(); | |
| if (Layout == "Show") { | |
| xrot(180) | |
| Sled(); | |
| color("Yellow",0.6) | |
| Glue(); | |
| up(1) | |
| color("Brown") { | |
| cuboid([Wrap.x,Wrap.y,WrapThick],anchor=BOTTOM); | |
| for (j=[-1,1]) | |
| fwd(j*Wrap.y/2) | |
| cuboid([Wrap.x,WrapThick,Wrap.z],anchor=BOTTOM); | |
| } | |
| } | |
| if (Layout == "Build3D") { | |
| Sled(); | |
| } | |
| if (Layout == "Build2D") { | |
| left(GlueOA.x/2 + Gap/2) | |
| Glue(); | |
| right(Wrap.x/2 + Gap/2) | |
| Wrap(); | |
| } | |
Leave a reply to brentatedsblog Cancel reply