tinyland-goo

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)

Glue batch scaler (by weight), ~4.0 oz, shown in grams
WeightIngredient
8.00 gPVP-K90 powder Primary film former — K90 (MW ~1.3M) is the strength upgrade over Frank’s K30
2.40 gPVA, 88% hydrolyzed (cold-water grade) Secondary film former / toughness — pins a minimum water fraction
2.00 gPEG-400 Tackifier / plasticizer — the highest-leverage bond-strength additive
1.70 g1% boric-acid stock solution Delivers a trace PVA crosslink (~0.7% of PVA) — dosed via stock so it’s weighable
4.00 gCoated SrAl₂O₄:Eu,Dy phosphor, 35–50 µm UV-reactive coverage indicator — MUST be waterproof/encapsulated grade
53.00 gEthanol (≥95%, denatured ok) Co-solvent for PVP/PEG; flashes off on the heated bed
41.72 gDistilled water (free water) Dissolves the PVA; carrier lands at ~55:45 ethanol:water
112.82 gFinished 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

  1. Pre-make a 1% boric stock: 1 g boric acid in 99 g warm distilled water.
  2. Dissolve the PVA in the warm-water portion (~45–50 °C) until clear.
  3. Separately dissolve PVP-K90 + PEG-400 in the ethanol (K90 is slow — give it time).
  4. Combine the alcohol phase into the cooled PVA/water phase; add remaining free water.
  5. Stir in the boric stock last, slowly, to avoid local gel lumps.
  6. 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)

In-a-pinch batch scaler (on-hand chemicals), ~1.0 oz, shown in grams
WeightIngredient
2.80 gPVP-40 powder (K-30 class, MW ~40k) Film former — same PVP grade as Frank’s; the backbone
1.10 gPVA lab powder Toughness (PVP:PVA ≈ 72:28, echoes Frank’s 70:30)
0.50 gPEG/PEO powder (heavy MW) Tackifier — the strength edge over Frank’s; potent & stringy, start low
1.00 gStrontium aluminate (plain, uncoated) UV coverage indicator — uncoated, so mix small & use fresh
16.00 g91% isopropyl alcohol Carrier; flashes off. Kept IPA-heavy to slow phosphor hydrolysis
6.95 gDistilled water Just enough to dissolve the PVA (carrier ≈ 63:37 IPA:water)
28.35 gFinished 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

RolePartSource~Price
365 nm UV-A LEDLZ1-00UV0R-0000OSRAM / LED EnginMouser~$20
Constant-current driver (700 mA)LDD-700HMEAN WELLMouser / DigiKey~$6
11-ch spectral sensor (F4≈515, F5≈555 nm)AS7341 breakout #4698AdafruitDigiKey$18.95
Klipper / Moonraker host (I2C + CSI)Raspberry Pi 5Raspberry PiPiShop / DigiKey~$80*

* The Pi is almost certainly already your Klipper host.

Optional upgrades

RolePartSource~Price
~500 nm green longpass (UV block for camera/TSL2591)FGL495ThorlabsThorlabs~$35
520/10 nm bandpass (max selectivity)FBH520-10ThorlabsThorlabs~$95
Full-field mono global-shutter cameraMira220 MONOArducamArducam / Pi Hut~$70
UV-dose reference (aging/normalization)LTR-390 #4831AdafruitDigiKey$4.50
Cheap broadband fallback (needs a filter)TSL2591 #1980AdafruitDigiKey$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.

Built from the Tinyland site.scaffold. Recipe and hardware are experimental — validate on your own bed and read the safety notes.