Tinyland · maker log
Glue you can see in UV
A 3D-printer bed adhesive that is stronger than Frank’s “Instagoo,” loaded with strontium-aluminate phosphor so a 365 nm flash shows exactly where you laid it down — and a Klipper macro that refuses to print until the bed is covered.
The starting point: Frank’s Instagoo
Frank’s recipe is 21 g PVP-K30 + 9 g PVA in 200 ml of ~50% isopropyl alcohol — a 70:30 PVP:PVA solution at roughly 15% solids. It’s the same family as the commercial brush-ons (Vision Miner Nano, whose SDS discloses only an IPA carrier and a trade-secret polymer; and Luke’s Laboratory, sold as Standard/Double/Triple “strength,” i.e. the same liquid at different solids). None publishes a quantified bond strength. We keep Frank’s structure and turn three honest knobs.
The recipe
Everything by weight, for a 0.01 g scale. The default below is the 4 oz batch.
Glue batch scaler (by weight)
| Weight | Ingredient |
|---|---|
| 8.00 g | PVP-K90 powder Primary film former — K90 (MW ~1.3M) is the strength upgrade over Frank’s K30 |
| 2.40 g | PVA, 88% hydrolyzed (cold-water grade) Secondary film former / toughness — pins a minimum water fraction |
| 2.00 g | PEG-400 Tackifier / plasticizer — the highest-leverage bond-strength additive |
| 1.70 g | 1% boric-acid stock solution Delivers a trace PVA crosslink (~0.7% of PVA) — dosed via stock so it’s weighable |
| 4.00 g | Coated SrAl₂O₄:Eu,Dy phosphor, 35–50 µm UV-reactive coverage indicator — MUST be waterproof/encapsulated grade |
| 53.00 g | Ethanol (≥95%, denatured ok) Co-solvent for PVP/PEG; flashes off on the heated bed |
| 41.72 g | Distilled water (free water) Dissolves the PVA; carrier lands at ~55:45 ethanol:water |
| 112.82 g | Finished glue (~4.0 oz) |
Solids are ~14.6% by weight (PVP:PVA ≈ 77:23). 1× is the smallest worthwhile batch; 2× (~4 oz) is the recommended minimum. A 0.01 g scale is assumed — the boric acid is dosed as a 1% stock because the neat mass (≈8 mg) is below that resolution.
Showing ~4.0 oz in grams.
Why it’s stronger than Frank’s
- PVP-K90 instead of K30. K90 has ~30× the molecular weight (~1.3M vs ~40k), which raises viscosity, film cohesion, and tack — the single biggest lever, and a drop-in swap for Frank’s K30.
- PEG-400 tackifier. Pressure-sensitive tack in PVP/PEG blends is real and peaks near 36 wt% PEG. We start conservative (20% of the PVP+PEG fraction) so the film still releases; nudge it up for more grab.
- A trace boric-acid crosslink. ~0.7% of the PVA mass lightly bonds the PVA for cohesive strength while keeping the film water/alcohol-redispersible — so prints still pop off on cooling. (More than ~1% and it stops releasing; this is the one number the research had to correct downward.)
The phosphor (and the water trap)
Strontium aluminate SrAl₂O₄:Eu,Dy is the long-afterglow green glow pigment: excited across UV-A (peak ~365 nm), it emits a broad green band at ~520 nm. That is the whole sensing trick — a glued patch lights up green under UV; bare bed stays dark. It is non-toxic with no GHS hazard class, but it’s a hard mineral dust: mask and gloves when weighing powder.
The trap: bare strontium aluminate hydrolyzes in water to non-luminescent Al(OH)₃/Sr(OH)₂ and slowly stops glowing. You can’t just go anhydrous — PVA needs water to dissolve. The fix is a silica/fluoride-coated (“waterproof”/encapsulated) grade (Techno Glow / GLO Effex sell 35–50 µm encapsulated powder) plus a modest water fraction. Coated phosphor is mandatory here, not optional.
Mixing it
- Pre-make a 1% boric stock: 1 g boric acid in 99 g warm distilled water.
- Dissolve the PVA in the warm-water portion (~45–50 °C) until clear.
- Separately dissolve PVP-K90 + PEG-400 in the ethanol (K90 is slow — give it time).
- Combine the alcohol phase into the cooled PVA/water phase; add remaining free water.
- Stir in the boric stock last, slowly, to avoid local gel lumps.
- Disperse the coated phosphor just before use — it’s dense and settles. Apply thin, even coats.
In a pinch: a simpler PVP-40 derivation
The recipe above wants PVP-K90, an encapsulated phosphor, and a boric-acid crosslink — specialized stock. While that’s in the mail, here’s a derivation that uses only common, on-hand chemicals (PVP-40, PVA lab powder, 91% IPA, distilled water, a heavy PEG/PEO powder, and plain strontium aluminate). It’s meant for an automated applicator on less mission-critical printers, and it scales to 1/2/4 oz mini batches.
It still beats Frank’s: same PVP/PVA backbone, but with a touch more adhesive solids and a PEG/PEO tackifier — the documented bond-strength lever — instead of the K90 + crosslink combo. Trade-offs: the plain (uncoated) phosphor hydrolyzes in the aqueous carrier over time, so mix small and use fresh; and heavy PEO is stringy, so keep it low or your applicator will cobweb. Both glues read identically under UV.
In-a-pinch batch scaler (on-hand chemicals)
| Weight | Ingredient |
|---|---|
| 2.80 g | PVP-40 powder (K-30 class, MW ~40k) Film former — same PVP grade as Frank’s; the backbone |
| 1.10 g | PVA lab powder Toughness (PVP:PVA ≈ 72:28, echoes Frank’s 70:30) |
| 0.50 g | PEG/PEO powder (heavy MW) Tackifier — the strength edge over Frank’s; potent & stringy, start low |
| 1.00 g | Strontium aluminate (plain, uncoated) UV coverage indicator — uncoated, so mix small & use fresh |
| 16.00 g | 91% isopropyl alcohol Carrier; flashes off. Kept IPA-heavy to slow phosphor hydrolysis |
| 6.95 g | Distilled water Just enough to dissolve the PVA (carrier ≈ 63:37 IPA:water) |
| 28.35 g | Finished glue (~1.0 oz) |
Adhesive solids ~15.5% (PVP+PVA+PEO), a touch above Frank’s — the PEG/PEO is the tack lever. Uncoated phosphor hydrolyzes in water over time, so mix mini batches and use fresh; shake before each use. Heavy PEO strings — if your applicator clogs or cobwebs, cut the PEO. A 0.01 g scale is assumed.
Showing ~1.0 oz in grams.
Seeing coverage: the sensor
Flood the bed with 365 nm UV and read the ~520 nm green that comes back. The AS7341’s F4 (515 nm) and F5 (555 nm) channels straddle the phosphor peak, and its on-chip interference filters already reject 365 nm — so for a single-point read you often don’t need a separate glass filter. Take a bare-bed baseline once, then express coverage as the green rise above it. Pulse the UV only during the read (eye safety + repeatable charge). For a one-shot whole-bed heatmap, image it instead with a mono global-shutter camera behind a ~500 nm longpass.
Core BOM
| Role | Part | Source | ~Price |
|---|---|---|---|
| 365 nm UV-A LED | LZ1-00UV0R-0000OSRAM / LED Engin | Mouser | ~$20 |
| Constant-current driver (700 mA) | LDD-700HMEAN WELL | Mouser / DigiKey | ~$6 |
| 11-ch spectral sensor (F4≈515, F5≈555 nm) | AS7341 breakout #4698Adafruit | DigiKey | $18.95 |
| Klipper / Moonraker host (I2C + CSI) | Raspberry Pi 5Raspberry Pi | PiShop / DigiKey | ~$80* |
* The Pi is almost certainly already your Klipper host.
Optional upgrades
| Role | Part | Source | ~Price |
|---|---|---|---|
| ~500 nm green longpass (UV block for camera/TSL2591) | FGL495Thorlabs | Thorlabs | ~$35 |
| 520/10 nm bandpass (max selectivity) | FBH520-10Thorlabs | Thorlabs | ~$95 |
| Full-field mono global-shutter camera | Mira220 MONOArducam | Arducam / Pi Hut | ~$70 |
| UV-dose reference (aging/normalization) | LTR-390 #4831Adafruit | DigiKey | $4.50 |
| Cheap broadband fallback (needs a filter) | TSL2591 #1980Adafruit | DigiKey | $6.95 |
The Klipper gate
PRINT_START calls a host script (via the gcode_shell_command extension)
that reads the AS7341 and writes the result back through Moonraker’s SAVE_VARIABLE. A second macro then reads that value and aborts with action_raise_error if coverage is below threshold — before any heating or motion.
Two-point calibration (bare → 0%, glued → 100%) is required.
[gcode_macro _COVERAGE_GATE]
gcode:
{% set min_cov = params.MIN_COVERAGE|default(70)|float %}
{% set cov = printer.save_variables.variables.coverage_pct|default(-1)|float %}
{% if cov < min_cov %}
{ action_raise_error("COVERAGE GATE: %.1f%% < %.1f%%. Re-glue and restart." % (cov, min_cov)) }
{% endif %} Full, usable files: coverage_gate.cfg · coverage_gate.py
Safety
- Flammable carrier (~55% ethanol/IPA). Mix and store away from flame/sparks; let the alcohol flash off before the bed gets hot.
- Phosphor dust: N95/P2 (P100 better) + eye protection when weighing powder; no GHS hazard, but it’s an inhalation/eye irritant.
- Boric acid is a reproductive hazard if ingested — gloves, keep away from food/children/pets.
- 365 nm UV-A is an eye/skin hazard at multi-watt levels — enclose it and pulse only during the read.
Sources
Frank’s Instagoo · DrGhetto/Hackaday Super Goop · PVP K30↔K90 (ULI Polymer) · PVP/PEG
tack (Feldstein et al.) · boric-acid/PVA crosslink (IOP) · strontium-aluminate
hydrolysis + encapsulation (ScienceDirect; Wikipedia) · AS7341 (AMS/Adafruit) · Klipper
Command Templates + gcode_shell_command (KIAUH). Full citation list in the repo README.