Skip to content

A printed enclosure, a knob, and a slicer run that checks its own work - #7

Merged
Boernsman merged 1 commit into
mainfrom
enclosure
Oct 11, 2026
Merged

Boernsman merged 1 commit into
mainfrom
enclosure

Conversation

@Boernsman

Copy link
Copy Markdown
Contributor

Panel-mount housing in three parts, parameterised, with every dimension read out of hardware/safekiln.kicad_pcb rather than guessed. Renders manifold, slices for PLA on a Prusa. Nothing has been printed.

Part Size 0.2 mm PLA
shell 54 × 81 × 115 mm 8 h 49 m
bezel 70 × 97 × 7 mm 1 h 40 m
knob 25 × 25 × 16 mm 27 m

Panel cut-out 54.4 × 81.3 mm. None of the three needs support, which is a property of the geometry rather than the profile.

The board's placement decided the shape

SW3, the rotary encoder, is on the board at its left edge, with J1 and J2 on that same edge. So that edge is the operator's face and the board stands on edge behind the panel, with the six terminal blocks on the right edge facing into the back of the box. Lying it flat would have put the knob on the side and the mains terminals on the operator's face.

My first version made the box as wide as the board's stack and nothing else: a 23.4 mm front face for a 27 mm display. It does not fit vertically either, that face already carrying the DC input at y=11.1, USB at 23.9 and the encoder at 55.8. The display now takes its own lane beside the board's column. The render caught it before anything was printed.

slice.sh checks four things that fail silently

Three of them happened while writing it:

  • A profile that is ignored. The first pla-0.2mm.ini used [print:]-style sections, which makes it a config bundle: --load ignored it without a word and sliced at 0.3 mm, 200 °C and a cold bed, producing 891 kB of healthy-looking G-code. The profile is flat now and the script reads the settings back out of the finished G-code.
  • A slicer that exits zero while refusing. PrusaSlicer rejected relative E without a per-layer G92 E0, printed the reason, wrote no file and returned success. The existence of the output is the test, not the exit status.
  • A duplicate key, which it does report; and a render that is not a closed solid or is too small to be the part, which it does not.

Two hardware requirements fall out of the fit

  • HWR-24: the board has no mounting holes at all. The shell's four M3 standoffs are a proposal the board has to adopt.
  • HWR-25: 14 of 125 footprints sit outside the outline, including U4, the second MAX31856, at y=117.9 against an outline ending at 110.

Both correct the task list, which also claimed the board had no tracks (182 and 9 vias) and did not carry the supervisor (U5 is an STM32G031K8Tx, with both MAX31856 and the SWD tag-connect placed).

Note on material

PLA softens at 55 to 60 °C and this bolts to a kiln's panel, which is what SWR-SAF-11 exists for. Print it for fit and feel; measure the panel before trusting it. PETG or ASA slices from the same profile.


This PR touches .github/workflows/ci.yml (the SPDX glob gains .scad and the enclosure's .ini/.sh), so gh pr merge will refuse it for lack of the workflow scope. Once CI is green I can fast-forward main with git, as with #5.

…wn work

Panel-mount housing in three parts, parameterised, with every dimension read
out of hardware/safekiln.kicad_pcb rather than guessed. Renders manifold,
slices for PLA on a Prusa, and nothing has been printed.

  shell  54 x 81 x 115 mm, 8 h 49 m, open face up
  bezel  70 x 97 x 7 mm,   1 h 40 m, face down
  knob   25 x 25 x 16 mm,  27 m,     bore up

None needs support, which is a property of the geometry rather than of the
profile: the shell's standoffs grow off its floor, the bezel's apertures are
vertical walls, and the knob's bore is a hole going up.

**The board's placement decided the shape, not a preference.** SW3, the
rotary encoder, is ON the board at its left edge, and J1 and J2 are on that
same edge. So that edge is the operator's face and the board stands on edge
behind the panel, with the six terminal blocks on the right edge facing into
the back of the box where the kiln's wiring belongs. Lying it flat would have
put the knob on the side and the mains terminals on the operator's face.

The first version of the model made the box as wide as the board's stack and
nothing else, which gave a 23.4 mm front face for a 27 mm display module. It
does not fit vertically either: that face already carries the DC input at
y=11.1, USB at 23.9 and the encoder at 55.8, and the largest gap between them
is about 25 mm. So the display takes its own lane beside the board's column,
which is what a panel instrument looks like anyway. The render caught that
before anything was printed, and the arithmetic is in the .scad beside `in_w`.

**The knob** is for the EC11E's 6 mm shaft, printed bore up so the face the
operator looks at is the one the bed made. Flutes rather than knurling, since
a printed knurl at 0.2 mm layers is a texture nobody can feel; eight of them,
findable with a glove on. The pointer is a moulded rib, not paint.

**slice.sh checks four things that fail silently**, and three of them actually
happened while writing it:

  A profile that is ignored. The first pla-0.2mm.ini used [print:]-style
  sections, which makes it a config BUNDLE: --load ignored it without a word
  and sliced at 0.3 mm, 200 degC and a cold bed, producing 891 kB of healthy
  looking G-code. The profile is flat now, and the script reads the settings
  back out of the finished G-code rather than trusting the file it passed in.

  A slicer that exits ZERO while refusing. PrusaSlicer rejected relative E
  without a per-layer G92 E0, printed the reason, wrote no file and returned
  success. So the existence of the output is the test, not the exit status.

  A duplicate key, which it does report, and a render that is not a closed
  solid or is too small to be the part, which it does not.

Two hardware requirements fall out of the fit:

  HWR-24, the board has no mounting holes at all. The shell's four M3
  standoffs are a proposal the board has to adopt, since the enclosure is
  parameterised and the board is not.

  HWR-25, 14 of 125 footprints sit outside the outline, including U4, the
  second MAX31856, at y=117.9 against an outline ending at 110.

Both correct the task list, which also claimed the board had no tracks (it has
182 and 9 vias) and did not carry the supervisor (U5 is an STM32G031K8Tx, with
both MAX31856 and the SWD tag-connect placed). A new section B carries the
four things the enclosure needs before it can be screwed together.

PLA is flagged as probably the wrong material: it softens at 55 to 60 degC and
this bolts to a kiln's panel, which is what SWR-SAF-11 exists for. Print it
for fit and feel; measure the panel before trusting it, and PETG or ASA slices
from the same profile.
@Boernsman
Boernsman merged commit 9bc7f3f into main Oct 11, 2026
11 checks passed
@Boernsman

Copy link
Copy Markdown
Contributor Author

Landed on main as 9bc7f3f by fast-forward after CI went green on this branch (all 11 jobs). gh pr merge is refused for PRs touching .github/workflows/ without the workflow scope, as noted above.

@Boernsman
Boernsman deleted the enclosure branch October 11, 2026 07:43
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant