Limonchito working document, published as-is. Prices and lead times are estimates from September 2026 and change often.
Lemon rev B: mechanical design, moulds and workshop process
Status 2026-09-17. Everything below comes from lemon_geom.py, the parameter file shared by build_lemon.py (Blender), build_cradle.py (Blender) and make_drawings.py. The model was rebuilt in Blender 4.5 today. fit_report.txt gives OVERALL: PASS: every PCB part is inside the core cavity with a 0.25 mm margin, the Blender BVH test finds no solid-solid intersections, and all 27 mechanical checks pass.
Rev A is kept unchanged in rev_a_backup/.
1. Summary
| Rev A | Rev B | |
|---|---|---|
| Shape | 54 × 43 × 22 superellipsoid pebble | Lemon, 63.9 × 44.0 × 27.0 mm including the nipples (blossom 4.2 mm, stem 2.0 mm + stub Ø2.8 × 1.2) and the leaf relief. Peel dimples on the skin. Flat Qi rest face. |
| Battery | Leads soldered, sealed in by the overmould | User-replaceable: cell plugs into J2 (JST GH, top entry, latching). Top hatch held by 2 × M2×5 Torx T6 screws and a hook tongue. No glue. The sealed version is a flag (LEMON_BATTERY_ACCESS=sealed). |
| Squeeze | PU nub cast through the window, which conflicted with the PET seal film | Captive SLA plunger in each Ø9.6 window, PET film outside, skin cast over it. 0.15 mm preload gap to the dome is unchanged. |
| LED | — | Clear-resin Ø2.5 rod built into the hatch plate, 0.3 mm above D1, under a Ø4 × 0.8 mm skin window |
| Accelerometer | — | U8 LIS2DW12 at (−9, −8.5) on the top side, under the cell (0.7 mm tall, clears) |
| Qi coil to rest face | 3.3 mm | 2.0 mm (0.8 skin + core floor) |
| Mass | 28.9 g | 32.1 g (cell 5.8 g) |
| PU per lemon | 15 g poured | 9.6 g in the part (8.6 cm³) + ~1.3 g runner |
| Moulds | 2 rigid printed blocks, 1 unit per pour | Platinum-silicone 4-cavity body moulds (8 made) + 8-cavity hatch-skin moulds, from printed masters |
| Cradle | — | Leaf shell, 134 × 78 × 16 mm, around an unmodified certified puck (default Samsung EP-P2900, Ø55.5 × 4.4); build_cradle.py |
2. Files produced
- Scripts:
lemon_geom.py(new; all parameters and shared geometry),build_lemon.py,build_cradle.py(new),make_drawings.py. - Lemon:
lemon_totem.blend,lemon_assembly.glb,fit_report.txt,mech_results.json,placements.json. - Print/cast STLs:
stl_core_top_half,stl_core_bottom_half,stl_hatch_plate,stl_squeeze_plunger,stl_skin_reference(body skin + leaf),stl_hatch_skin_reference,stl_pcb_outline. - Mould STLs:
stl_master_lemon_skin(textured skin + leaf + gate/runner/vent + plug print),stl_mould_parting_board,stl_mould_box_frame,stl_mould_hatch_plug. The rev Astl_mold_top/bottomare removed; copies are inrev_a_backup/. - Cradle:
lemon_cradle.blend,stl_cradle_leaf.stl,stl_cradle_cover.stl,drawings/cradle_geometry.json. - Renders:
render_assembled,render_peel_closeup,render_exploded,render_cutaway,render_bottom_qi_face,render_battery_swap,render_mold,render_cradle,render_cradle_nest,render_cradle_exploded(+_web.jpgfor 8 of them). - Drawings:
drawings/lemon_drawings.pdfhas 10 sheets (body, core, hatch + battery access, PCB mechanical interface, carrier + plunger, silicone mould set, cradle, exploded view with balloons, component photos, hand connections). Each sheet is also a PNG. DXFs:body_top_outline,pcb_outline,dome_carrier_outline,hatch_outline,hatch_clear_opening,cradle_leaf_outline. - Sealed variant:
variant_sealed/(fit: PASS). - Not touched:
drawings/pcb_placement.csv(electronics owns it;make_drawings.pyno longer writes it),NETLIST.md,BOM.md, firmware and backend.
3. Shape
- Body:
|x/A|^2.3 + (|y/22|^n + |z/14|^n)^(2/n) = 1, where A = 29.0 toward +X (blossom) and 27.5 toward −X (stem). n = 2.2 on top and 2.8 underneath, so the bottom is flatter. - Nipples: gaussian bumps on the outer skin only. Blossom: 4.2 mm high, σ 3.3. Stem: 2.0 mm, σ 4.0, plus a Ø2.8 × 1.2 stem stub moulded in the same shot.
- Qi rest face: the skin is clipped flat at z = −13.0, giving a flat about 24 × 24 mm. The skin is 0.8 mm thick there. The lemon lies stable on any flat pad and nests in the cradle.
- Peel: dimples on a jittered 3D grid: cell 1.85 mm, radius 0.88 mm, depth 0.20 mm (×0.6–1.0). The texture is masked out on the Qi flat, both squeeze pads (a Ø15 smooth zone, so the squeeze spot is felt), the hatch seam, the LED window and the screw counterbores. It lives only in the master. The core and the drawings use the smooth surface.
- Leaf: a relief 7.5 wide × 1.0 high, embedded 0.6 mm. It runs from the stem down the +Y flank, away from the hatch and the squeeze pads. It is part of the same PU casting, with a green brush coat applied inside the mould before the pour, so there is no separate part to detach (14+ gift, GPSR pull/bite).
- Size: 63.9 × 44 × 27 mm. It is 5 mm thicker than rev A because a lemon cross-section is round. The squeeze width stays 44 mm.
4. Z stack-up (z = 0 at the widest section)
| Layer | z (mm) |
|---|---|
| Skin top / hatch skin | up to +14.0 |
| Hatch plate (clear resin, 1.2) on a 0.8 core ledge | ≈ +7 … +12 |
| Hatch press ribs + PORON 1.5 pad (compressed to 1.0) | +4.8 … +3.8 |
| Cell 26 × 20.5 × 6.2 envelope at (−0.5, −2.2) | −2.4 … +3.8 |
| Foam 0.4 on the U1 shield | −2.8 … −2.4 |
| Top-side parts (U1 1.2 is the tallest under the cell; J2 4.25 and M1 3.2 sit beside it) | −4.0 … +0.25 |
| PCB 44 × 26 × 1.0 | −5.0 … −4.0 |
| Bottom-side parts (≤ 1.4) | −6.4 … −5.0 |
| Free space (coil leads) | 3.7 mm |
| Ferrite 0.4 + coil 0.5 | −10.1 … −11.0 |
| Core floor (≥ 0.55) + skin 0.8 | −11.0 … −13.0 (Qi rest face) |
- Squeeze axis: z = −0.6. The dome carriers are centred there, spanning z −6.85 … +5.65, 1.6 mm under the hatch ledge.
- Why the PCB moved from −3 to −5: the lemon tapers toward both tips. The 44 mm board fits the cavity only near the widest section. The PCB is the tightest part in the fit check at 0.982.
5. Battery access (default)
Decision: the hatch is on the top face, not on the Qi face. The reasons:
- The electronics keep the rev A stack: cell above the PCB, coil soldered below it. A top hatch needs no spring contacts to a coil in a removable base. The Qi face stays one continuous 0.8 mm skin, which gives the shortest coupling distance.
- The hatch rim stays above z ≈ +4.6 at the flanks. Both squeeze pads therefore sit in identical soft body skin, so A and B feel the same.
- The two screws sit at the stem end (x = −17.6, y = ±5.4). That keeps brass and steel away from the antenna at the +X tip. The +X end is held by a plastic hook tongue under the rim.
Opening and hatch - Clear opening: 26.6 × 25.55 mm. The cell lifts straight out with 0.3 mm clearance per side. J2 is reached from above. - Hatch outline: 34.4 × 27.95 mm, leaving a ledge of at least 1.2 mm. - Hatch plate: clear resin, with the light rod, 2 cage fingers, 2 foam press ribs, a plug press pad and the hook tongue built in. A 1.5 mm PU skin is cast on top in its own mould, with a 0.2 mm seam.
Fasteners - Screws: M2×5 pan head, Torx T6, ISO 14583 A2 (SOURCING.md §4.3). - Inserts: ruthex RX-M2x4 in Ø5.4 bosses with Ø3.2 × 4.2 holes, running from z +1.0 up to the plate. The bosses clear the LRA by 1.8 mm and the cell's lift-out path by 1.4 mm. - Plug retention: a hatch pad stops 0.3 mm above the mated plug and pushes it home in a drop. This covers ELECTRONICS_REVB risk 4. - Label area: the underside of the hatch plate, about 20 × 12 mm flat, for CE, bin symbol, model, serial and address (COMPLIANCE.md §5.2). - User procedure and published cell spec: drawings sheet 3. Only a T6 driver is needed, with no heat, glue or solvent (Art. 11 guidelines).
Sealed variant (LEMON_BATTERY_ACCESS=sealed): no hatch, the rod goes in the core top wall, the cell is glued. Fit: PASS. Only for units placed on the EU market before 18 Feb 2027.
6. Squeeze path fix
Rev A cast a PU nub through the window while also covering the window with PET film. Both cannot be true.
In rev B an SLA plunger does the job: Ø9.0 body, Ø3.0 × 0.6 tip, Ø11.2 × 0.8 flange. It sits in the Ø9.6 window before the core halves close, and the flange keeps it captive inside. A Ø14 3M 850 PET disc on the outside keeps PU out of the core. The skin is cast over the disc.
Force path: skin (1.5) → film → plunger → 0.15 gap → dome. Expected trip force is 12–20 N, as in rev A. It must be confirmed on R1 because PU adhesion to the film may add stiffness.
7. Interface with the electronics stream
build_lemon.py reads drawings/pcb_placement.csv on every run: 71 placed parts, with DNP, edge and floor rows skipped. It takes D1, J2 and U8 from the CSV, so the model follows electronics changes automatically. The latest CSV (12:05) has:
- D1 APHHS1005SYCK at (10.0, 11.0) → the rod sits on it (1.7 mm from the cell).
- J2 JST GH BM02B-GHS-TBT, top entry, 5.75 × 4.05 × 4.25 at (−1.0, 10.3) → 0.22 mm from the cell envelope and inside the hatch opening.
- U8 LIS2DW12 at (−9.0, −8.5) → under the cell, clears.
What the layout must hold (drawings sheet 4):
- The cell envelope is 26 × 20.5 × 6.2 at (−0.5, −2.2). Top-side parts under it must be ≤ 1.2 mm tall.
- Nothing taller than 0.5 mm within r = 2 mm of D1.
- J2 must stay inside the hatch opening and ≥ 0.2 mm from the cell footprint.
- Bottom-side keep-outs of 3.0 × 1.5 for the PCB seat ribs at (+17.5, ±7.5) and (−19.0, ±6.5). This is new; the rev A rib positions hit U4 and R7.
- M1 (LRA) at (−18.5, 0) on flying leads (moved 1 mm −X from rev A to clear the 26 mm cell). The CSV and ELECTRONICS_REVB.md now use the same position.
- Open: confirm the BM02B-GHS-TBT footprint and height on JST's drawing (ELECTRONICS_REVB risk 4). If it is taller than 4.25 mm, lower PLUG_H / the hatch pad in lemon_geom.py and rerun.
- An earlier electronics draft (D1 at (13.3, 8.0), side-entry SM02B J2 at (−16.1, 7.4)) is not mechanically possible with a 26 mm cell: J2 would sit under the screw bosses and the rod would hit the cell. It has been replaced in all electronics files.
8. Fit check (fit_report.txt)
- Parts vs cavity: all OK. The tightest are the PCB (0.982), the dome carriers (0.913) and M1 (0.95).
- BVH mesh intersections: none.
- Cell lift-out: −0.02 mm (the corners just clear; the cell envelope already includes 0.4 mm).
- J2 clearances: 0.22 mm to the cell, 0.47 mm inside the opening.
- Other clearances: rod to cell 1.70 mm; bosses to cell 1.40 mm; bosses to LRA 1.80 mm; carriers to ledge 1.61 mm; bottom parts to ferrite 3.70 mm.
- Qi coil to rest face: 2.00 mm.
- Mass: 32.1 g in total.
- Body skin 7.98 g, hatch skin 1.52 g.
- Core halves 2.56 + 3.57 g, hatch plate 1.80 g, plungers 2 × 0.42 g.
- Cell 5.8 g.
9. Leaf cradle (build_cradle.py)
Shell - 118 × 82 mm leaf plus a 16 mm stem, 16 mm high at the nest and 5 mm at the edges. Hollow underside with a 2.2 mm wall. - Midrib and 12 vein grooves 0.5 mm deep.
Puck and cable
- The unmodified puck is centred by 4 crush ribs and pressed up against a 1.0 mm floor by a foam spacer on the cover.
- PUCK_D defaults to 55.5 and can be overridden by environment variable. The pocket takes pucks 4.4–8 mm tall.
- The puck's own cable (fixed, or a USB-C plug boot up to 12.5 × 7 × 24) runs in an underside channel and leaves through the stem groove.
Nest - The lemon's smooth outer surface plus 0.6 mm clearance, 4.4 mm deep below the rim. - The lemon's Qi flat sits on the floor with its coil on the puck axis. - Rx coil to puck top surface: 3.0 mm, plus the puck's own cover. Lateral play ±0.6 mm.
Cover and materials - 1.2 mm cover plate, 3 × M2×6 thread-forming screws, 4 pockets for Ø10 Bumpon feet. - Prototype: PETG FDM. Batch: SLA green, or Smooth-Cast 300 + green pigment cast in a 2-part silicone mould (~€0.75 material, SOURCING.md).
Compliance: no electronics are added and the puck is not opened, so its CE/RED DoC and WPC listing stay valid.
Design note on PLAN.md: PLAN.md recommends leaving the cradle out of batch 1. The rev B flat Qi face was made so the lemon also charges on any flat Qi pad. The cradle then becomes an add-on without any change to the lemon.
10. Silicone moulds for 500 (525 with 5 % scrap)
Materials - Skin: Polytek PT Flex 70 (Shore 70A): 4–5 min pot life, 2 h demould (Syntec, Dordrecht). - Fallback skin: PMC-770 (30 min pot life, 16 h demould). It needs about 3× the mould count for the same rate. - Moulds: Mold Star 30 (platinum). - Masters: SLA, 50 µm, sanded to 600 grit, 2 coats of clear acrylic, then an Inhibit X barrier coat. Platinum silicone is inhibited by SLA resin, so test a patch first. Tin-cure FormSil 25 is the fallback. - Handling: diisocyanate training (REACH entry 74) is mandatory before anyone pours PU professionally. Wear an A2P3 respirator and use local extraction.
Body mould - 4 cavities in a row. Block 104 × 240 mm, 2 halves × 24 mm, about 1.1 kg of silicone (€35). - Made over 4 printed masters set in a printed parting board, then the board is removed and the second half poured. - Registration keys come from the board. A printed box frame contains the pour.
Core location in the mould - A printed hatch plug per cavity passes through the top half. It seals the hatch area and drops 2 pins into the insert holes, which get their inserts after casting. - The core hangs from the plug, and PU buoyancy pushes it up onto the plug. Wall thickness is therefore set by the plug and the silicone, not by pins through the skin. There are no pin holes to fill afterwards.
Gating (bottom fill) - The closed mould stands on its +X edge. - PU goes in at the runner mouth on the top (−X) edge. It runs down a Ø4 runner beside the cavity, turns under the blossom tip and enters through a Ø3.2 gate, filling upward. - Air leaves through a Ø2.2 vent at the stem tip; the stem and leaf root are the highest points. - The gate vestige is trimmed at the nipple, where the texture hides it.
Shot size and time - 4 × (8.6 cm³ skin − hatch skin) + runners ≈ 42 g per mould, mixed for 2 moulds at a time because of the pot life. - Timeline: mix 45 s, vacuum 60 s, pour 20–30 s per cavity, into the 40 L pressure pot at 3.5 bar / 35 °C within 4 min. - Cycle about 2 h 20 min per mould, so 3 cycles in an 8 h day. - No lithium cell is in the mould (the cell goes in at final assembly), so warm curing at 35–40 °C is allowed.
Capacity - 4 moulds in rotation × 4 cavities × 3 cycles = 48 skins/day. - That is above the ~35 cores/day the core-closing station S4 can supply, so casting never waits. - 8 body moulds are made, 4 of them swap-ins as moulds wear. PU life is about 40–60 pulls and the batch needs 132 pulls in total.
Hatch skins - Open-face 8-cavity moulds, textured face down: pour 1.8 g per cavity, press the clear hatch plate in on 2 pins, 2 h. - 4 moulds + 1 spare = 96 per day. Their master is the hatch plate plus the hatch skin (print both STLs merged).
Materials for 525 - PU ≈ 12.5 g/lemon incl. runners and 10 % waste → 6.6 kg, plus 1.5 kg of trials, ≈ 8 kg (4 × 2 kg kits). - Mold Star 30 ≈ 8.8 kg for body moulds + 1.8 kg for hatch moulds → 2 × 7.98 kg kits.
Printed parts per batch
| Part | Per SLA plate (Form 4) | Plates for 525 |
|---|---|---|
| Core halves (standing on edge) | 20 halves | ≈ 53 |
| Hatch plates (Clear) | 30 | 18 |
| Plungers | 60 | 18 |
| Hatch plugs (mould tooling) | — | 40, printed once |
- Total: about 90 plates × ~2.5 h. That is too many for one printer running 5 weeks alongside prototyping.
- Recommendation: run 2 printers, or outsource the 1,050 core halves to JLC3DP (MJF PA12 or SLA 8001) and print hatch plates and plungers in-house.
- MJF PA12 needs its porous surface sealed (thin UV-resin wipe) before the PET discs and the casting.
11. Workshop process (detail in ASSEMBLY.md)
| Station | Labour min/lemon |
|---|---|
| S0 goods-in | 0.3 |
| S1 PCBA hand work (carriers, domes, LRA, coil, SIM) | 7.0 |
| S2 board fixture test (TEST_FIXTURES.md, 2 fixtures) | 3.0 |
| S3 print post-process + inserts | 2.0 |
| S4 core close | 4.0 |
| S5 mould load + pour | 1.5 |
| S6 demould + trim | 2.0 |
| S7 hatch skins | 1.0 |
| S8 final assembly (cell goes in) | 1.5 |
| S9 final test + pairing | 3.5 |
| S10 cradle (per lemon) | 1.5 |
| S11 pack | 2.0 |
| Total | ≈ 29 min/lemon |
- Hours: 525 lemons need about 255 h of direct labour. Batch overhead (mould care, mixing, printer changes) adds ~45 h and 5 % rework ~13 h, for ≈ 315 h.
- Staffing:
- Operator A: S1, S2, S4, about 14 min/lemon → ~30/day.
- Operator B: S3, S5–S7.
- Both work on S8–S11 in the afternoons.
- Schedule: ~25–30 finished lemons/day after week 1 (setup, making the moulds, 20 first articles) gives 525 in about 5 weeks with 2 people, or about 9 weeks alone.
12. Risks that only prototypes (R1/R2) can close
- Qi with an unmodified puck. The small Ø19 Rx coil sits 3.0 mm + the puck cover away from a Qi2 (MPP) puck in BPP fallback. Risks: ping/FOD refusal, magnet pull on the steel domes and LRA can, heating. Test the Samsung EP-P2900, Belkin WIA011 and a generic puck. Fallback: thin the cradle floor to 0.6 mm and ship "charges on any flat Qi pad".
- Cell length. The envelope is 26 × 20.5 × 6.2 with 0.3 mm per side to the opening and 0.22 mm to J2. Measure 10 real cells, PCM fold included, before freezing the core. A 27 mm cell would need J2 moved 1 mm +Y and the opening widened.
- Squeeze feel through skin + PET film + plunger, A/B symmetry, and PU adhesion to the film. Target 12–20 N.
- Casting defects: air in the peel dimples (hence the pressure pot), inhibition of platinum silicone on the SLA masters, and plug sealing at the hatch seam (flash). Budget 5 % scrap and check 20 first articles.
- Heat-set inserts in SLA resin can crack it (SOURCING.md). Fallbacks: insert bonded with resin, or PT thread-forming screws directly into a Ø1.7 boss.
- Skin tear and GPSR pull/bite at the leaf and at the hatch seam lip. Adhesion of the hatch skin to the clear plate.
- LED visibility through 0.8 mm pigmented PU. Light leaking into the whole hatch (clear plate): paint the rod sides or add the black foam ring around D1.
- Antenna: the hatch plate and inserts are new dielectric and metal near the top. Tune in the final housing with a VNA (unchanged from rev A).
- Tolerance stack on the 0.15 mm dome preload: core print ±0.1, carrier solder angle ±1° (≈ ±0.1 at the apex). Use a 90° jig at S2 and a click check at S4 before casting.
- Drop: does the hatch hook + 2 screws hold, and does the cell stay put with only foam and fingers?