# Sand table: design notes - **Printable design:** `sand-table-v2.solidcraft`. Bodies named `REF_*` are bought or on-hand parts, modeled only for fit. - **Older files:** `sand-table-v1.solidcraft` (first layout) and `mechanism-mockups.solidcraft` (A vs B blocks). - **Print files:** `print/` ## Size - 318 mm (12.5") across, about 129 mm (5.1") tall, plus stick-on feet. - The sand area is 284 mm (11.2") across. The ball reaches 133 mm from the center (rho 0–133). ## How it works (mechanism A) - **Spin:** - The pancake NEMA17 hangs under the center plate on 9 mm posts. Its screw slots allow ±3 mm for belt tension. - A 20T pulley drives the printed 80T hub pulley (4:1) through a 200 mm closed GT2 loop, at a 46 mm center distance. - **Hub:** - One printed part: the 80T pulley, the arm plate, and a hollow shaft (8 mm OD, 4.5 mm bore). - The shaft turns in 2× 608 bearings, set back-to-back in the center plate's housing, which has a lip between them. - The slip-ring adapter is glued on the shaft bottom and presses up on the lower bearing, which locks the shaft in place. - **Slip ring:** - The rotor flange screws to the adapter (3× M3). The rotor wires go up the shaft bore, out a groove in the arm plate, and along the extrusion's side slot. - The stator body hangs below. A printed collar's tab rides in a fork on the center plate, which stops the body from turning. - **Arm:** - 2020 T-slot, **220 mm long**, from x -80 to +140, bolted to the hub with 2× M5 T-nuts. - The in/out motor hangs upside down behind the back end on a printed bracket (T-nuts in the bottom slot). - The tip idler is a 608 in a printed flanged sleeve, on a printed 8 mm pin. No M8 bolt is needed. - **Carriage:** - It rolls on 4× 608s on the upper lands of the extrusion's side faces. On the −y side the two rollers sit on flexure blades with 0.3 mm preload, so there's no slop. - The belt ends clamp into a toothed slot. - The magnet sits in a drop-in cup, 25 mm ahead of the carriage center. With a 1 mm felt pad on top, it touches the plexi floor. - **Homing:** a microswitch on top of the extrusion's back end. The carriage reaches it at rho ≈ 2, and its body is the rho-0 hard stop. - **Electronics:** - The Arduino Uno + CNC shield hangs upside down (components facing down) under the deck at 45°, on 4 printed standoffs, with the USB edge toward the wall. - Cables leave through a notch in the bottom of the wall. The bottom is open for access. ## Heights (z from the ground, mm) | Part | z | |---|---| | Slip ring body / flange | 19.8–34.8 / 34.8–36 | | Adapter | 36–42 | | Hub bearings | 42–49, 53–60 | | Deck shelf | 51–56 | | Center plate | 56–60 | | Spin motor | 24.5–47 (shaft tip 71) | | Hub pulley | 60.5–69.5 | | Arm plate | 69.5–73 | | In/out belt | 70.5–76.5 | | Extrusion | 73–93 | | Arm motor | 82–104.5 | | Rollers | 85.5–92.5 | | Carriage plate | 93–98 | | Magnet top / felt | 105.5 / 106.5 | | Plexi floor | 106.5–109.7 | | Sand gap | 16 | | Glass top / rim | 128.85 | ## Motor (pancake NEMA17, from the user's drawing) - **Body:** 42 × 42 × 22.5 ±0.8. - **Face:** boss Ø22 × 2; 4× M3 on a 31 mm square, 2.5 mm deep. - **Shaft:** Ø5 with a D-flat, 24 ±0.5 from the face. - **Connector:** sticks out 7 mm near the back. - **Wires:** A+ black, A− green, B+ red, B− blue. ## Fit parameters (set from the fit-test coupon, 2026-10-22) - `shaft_d` = **8.1**: every printed 8 mm shaft or pin that goes into a 608 (hub shaft, roller pins, idler pin). - 7.9 and 8.0 fell on and off; 8.1 grips. - The parts were re-exported after this change: 10 hub, 11 slip-ring adapter, 15 idler bracket, 17 carriage. - `brg_d` = **22.2**: every 608 pocket (center plate, idler sleeve). - 22.4 was loose, 22.2 a snug push, 22.0 too tight. - If the idler sleeve ever slips on its bearing, add a drop of CA. ## Parts on hand - 2× pancake NEMA17 - 2× GT2 20T pulley (5 mm bore) - open GT2 belt (about 0.5 m) - 2020 T-slot (needs 220 mm) - 7× 608: 2 hub, 4 carriage, 1 idler - Arduino Uno + CNC shield ## To buy - Slip ring: Comidox 12.5 mm capsule, 6 wires, 2 A. It carries 4 wires for the arm motor and 2 for the home switch. - Rotor: flange Ø24 × 1.2 with 3× Ø3.2 holes on an Ø18 circle, plus a Ø5 × 1.5 boss. - Stator: body Ø12.5 × 15. - GT2 closed loop, 200 mm × 6 mm - 12" round glass, 1/8" - 12" round plexi disc, 1/8" (white or frosted) - N52 magnets, Ø12 × 3 mm, several (stack 2 to start) - Steel balls, 3/8" (plus 5/16" and 1/2" to compare) - Fine sand - Felt pad (self-adhesive) - 4 rubber feet - 12 V 2 A power supply - KW12-style microswitch (20 × 10 × 6.4) - Optional: TMC2208/2209 drivers (quieter) - Optional: 8 mm × 0.5 mm brass tube (spare shaft) ## Hardware | Qty | Part | Where | |---|---|---| | 8 | M3×16 + M3 nut | shell seam joints (2 per seam) | | 16 | M3×8 | deck → wall ledge (8); center plate → deck (8) | | 4 | M3×12 | spin motor (through the counterbored slots) | | 4 | M3×6 | arm motor → bracket | | 3 | M3×6 | slip ring flange → adapter | | 5 | M3×8 | roller washers (4), idler washer (1) | | 4 | M3×6 | Uno → standoffs | | 7 | M5 + slot-6 T-nut | hub 2× M5×12, idler bracket 2× M5×12, motor bracket 2× M5×8, switch mount 1× M5×8 | | 2 | M2×8 | microswitch | Glue: CA for the slip-ring adapter on the shaft, the magnet cup in the carriage, and the magnets. ## Print files (`print/`) | File | Qty | Notes | |---|---|---| | 00-fit-test-coupon | 1 | Print first. Set `shaft_d` / `brg_d` from it, then re-export the parts below. | | 01–04 shell Q1–Q4 | 1 each | Q1 has the cable notch. Joint screws go at the 4 seams. | | 05–08 deck Q1–Q4 | 1 each | Q1 has the Arduino standoffs and goes under Shell Q1 (the 45° side). | | 09 center plate | 1 | Bearing housing, spin-motor posts, slip-ring fork | | 10 hub 80T pulley | 1 | PETG; arm plate on the bed | | 11 slip-ring adapter, 12 stator collar | 1 each | | | 13 arm motor bracket | 1 | Needs tree supports | | 14 switch mount, 15 idler bracket, 16 idler sleeve | 1 each | | | 17 carriage, 18 magnet cup | 1 each | | | 19 roller washers ×4, 19b idler washer | | | | 20 magnet spacers 1/2/3 mm | 1 set | | | 21–24 sand ring Q1–Q4 | 1 each | | The full assembly for viewing is `sand-table-v2-assembly.step`. The body names in `sand-table-v2.solidcraft` have SolidCraft's automatic split suffixes: - **Shell:** `Shell_Q1` = Q1, `Shell_Q1 (1)'` = Q2, `Shell_Q1 (1) (1)` = Q3, `Shell_Q1 (1)` = Q4. - **Deck and sand ring:** the same pattern, starting from `DeckShelf` and `SandRing`. - **Don't rename them.** It breaks the split steps. ## Print orientation - **Shell quarters:** upright. The joint blocks have 45° chamfers underneath. - **Deck sectors, center plate, hub, carriage:** upside down (top face on the bed). - **Arm motor bracket:** motor plate on the bed, with **tree supports** under the T-nut plate. - **Everything else:** flat as modeled. - PETG is best for the hub, carriage and brackets. PLA is fine for the shell, deck and sand ring.