Files
sandTable/design-notes.md
ckochandClaude Opus 5.5 c498882bbb Sand table v3: build fixes, bolted hub, counterweight, print guide
- print/ reorganised: v1-original (first export), v2-current, the v2.1-v2.7 fixes
  found while building, and v3/ with every printed part.
- v3: deck screws you can reach, seam joints from outside, arm bolted straight
  to the hub, 6804 hub bearings with a 15 mm bore for connectors, clamp collar,
  counterweight, 12.5 mm sand ring for a raised floor, Uno turnaround plate.
- print/README.md: full v3 parts list, what changed and why, assembly order.
- docs/: diagrams for each change.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-01 13:40:23 -05:00

13 KiB
Raw Permalink Blame History

Sand table: design notes

  • Printable design: sand-table-v3.solidcraft (latest; sand-table-v2.solidcraft is kept as it was). 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/README.md has the full v3 parts list and says which folder each part comes from.
  • Custom controller board (optional): pcb/

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 (20 mm OD, 15 mm bore, v3). Connectors (4-pin JST-XH, 6-pin JST-PH or Dupont 1×4) pass through the bore one at a time.
    • The shaft turns in 2× 6804 bearings (20 × 32 × 7), set back-to-back in the center plate's housing, which has a lip between them. Before v3 it was an 8 mm shaft in 2× 608s.
    • A clamp collar (part 11, one M3 pinch screw) on the shaft bottom presses up on the lower bearing's inner ring and locks the shaft in place. Loosen it and the hub lifts out.
  • Slip ring:
    • On the Comidox ring, the flange and body are one fixed housing (the stator). Only the center boss around the top wires turns (the rotor). This was confirmed while building, 2026-10-25.
    • A printed coupler (part 26, print/v3) pegs into the clamp collar's 3 holes (12.5 mm radius). Its 1 mm socket holds the rotor boss (gel CA on the socket wall only), and the boss bottoming in it leaves the flange 0.5 mm clear. The slip ring now sits 3 mm lower than before.
    • The flange is not screwed to anything.
    • Wiring (v3, bolted arm): the arm motor cable and switch wires run along the extrusion's wire-side slot, across a groove on top of the hub (6 × 4.5 mm), and down the hub's 15 mm bore. Their plugs meet the slip ring's top-wire plugs under the hub, and the joined plugs push up inside the bore. Dupont 2.54 mm pairs: 4-pin (motor) and 2-pin (switch).
    • A printed holder (part 27) holds the housing still. Its cup surrounds the body with the flange resting on it, a peg sits in one flange hole, and its sleeve fits over the end of the post and is held by an M3×16 (v3; it was glued before). It replaced the stator collar, which only stopped rotation and let the housing flop. In v3 the post moved out to x 23.5–29, clear of the collar's pinch-screw lug, which reaches 21.1 mm from the center.
  • Arm:
    • 2020 T-slot, 220 mm long, from x -80 to +140.
    • It bolts straight down onto the hub's arm plate with 2× M5×12 socket heads, 17 mm each side of the center, from under the hub into T-nuts in the bottom slot (v3; the glued mounts 29/29b/29c are gone). The arm and hub are built together on the bench and go into the table as one piece; the hub lifts out after loosening the clamp collar.
    • Counterweight (part 34, v3): bolted under the far half with 2× M5×10 (T-nuts at 66 and 102 mm from the center). Two pockets beside the rail on the wire side hold stacks of US quarters (24.3 mm, up to 8 each) under a screwed lid (part 35, 3× M3×8). About 7 quarters in the outer pocket balance the arm with the carriage halfway out; fine-tune by balancing the rail on a pencil at the hub center. Estimated imbalance before: 12 kg·mm with the carriage home, 7 halfway, 2 at the rim (arm motor taken as 140 g).
    • A 1 mm shim (part 30) sits between the motor bracket and the rail.
    • 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.
    • The sleeve's belt groove is 7 mm for the 6 mm belt (print/v2.6-idler-sleeve). The first sleeve's groove was exactly 6 mm and dragged on the belt.
  • 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 KW12 microswitch with a straight hinged lever sits on top of the extrusion's back end, turned so the lever faces the carriage (v2.1 mount).
    • A glue-on striker on the carriage presses the lever; it trips near rho 1–5, depending on the lever.
    • The end of the switch mount is the rho-0 hard stop. The switch body sits 0.5 mm behind it.
    • Set FluidNC mpos_mm so Y0 sits about 0.5 mm in front of the stop.
  • Electronics:
    • The Arduino Uno + CNC shield hangs upside down (components facing down) under the deck at 45°. On the v3 deck it hangs from the turnaround plate (part 36, 2026-11-01), with the USB edge toward the centre. The deck's own standoffs put the USB edge 2.4 mm from the wall, too close for a plug.
    • 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 / boss 16.8–31.8 / 31.8–33 / 33–34.5
Coupler 33.5–36
Clamp collar 36–42
Hub bearings (6804) 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–74 (v3; was 73 + a 1 mm strip)
Counterweight / lid 63.5–80.5 / 80.5–82.5
In/out belt 71.5–77.5
Extrusion 74–94
Arm motor 82–104.5
Rollers 86.5–93.5
Carriage plate 94–99
Magnet top / felt 105.5 / 106.5
Plexi floor 106.5–109.7
Sand gap 16
Glass top / rim 128.85

Raised floor (this build, 2026-10-31): the plexi floor sits on about 3.5 mm rubber stoppers on the ledge. That clears the magnet stack and stops the floor shifting. With it, use the 12.5 mm sand ring (print/v3/21–24 …-12.5mm.stl) so the glass stays flush with the rim. The sand gap becomes 12.5 mm: fine for a 3/8" or 5/16" ball, too small for a 1/2" one.

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.
  • shaft2_d = 20.1 (v3, not yet tested): the hub shaft into the 6804s. brg2_d = 32.2: the center plate's 6804 pockets. Check both with 00b-fit-test-6804 and re-export the center plate and hub if another size fits better.
  • brg_d = 22.2: every 608 pocket (idler sleeve; the center plate before v3).
    • 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: 4 carriage, 1 idler, 2 spare (the hub used them before v3)
  • 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.
  • 2× 6804-2RS bearing (20 × 32 × 7, also sold as 61804) for the hub (v3)
  • 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 microswitch with a straight hinged lever (KW12-B, the 1.1" lever is best; about 20 × 10.5 × 6.5), not the roller version
  • Optional: TMC2208/2209 drivers (quieter)
  • Optional: 8 mm × 0.5 mm brass tube (spare shaft)

Hardware

Qty Part Head Where
16 M3×8 + M3 hex nut button head (ISO 7380) shell seams, from outside (4 per seam); nuts drop into the seam plates' slots (v3)
8 M3×12 button head deck → shell bosses, straight down (v3)
8 M3×8 button head (ISO 7380) center plate → deck
2 M3×12 or ×16 button or socket hub clamp collar pinch screw (1), slip-ring holder → post (1, M3×16) (v3)
4 M3×12 socket head spin motor (flush in the 6.4 mm × 3 mm counterbored slots)
4 M3×6 socket head arm motor → bracket
5 M3×8 button head roller washers (4), idler washer (1)
8 M3×6 button head (4) + socket head (4) turnaround plate 36 → deck standoffs (4, button heads in counterbores); Uno / controller board → plate standoffs (4)
9 M5 + slot-6 drop-in T-nut socket head (DIN 912) idler bracket 2× M5×12 and hub 2× M5×12 (both in 9.5 mm counterbores), motor bracket 2× M5×8 (or ×10 with the 1 mm shim), switch mount 1× M5×8, counterweight 2× M5×10 (in 9.5 mm counterbores)
3 M3×8 button head counterweight lid (v3)
2 M2×8 pan head, Phillips microswitch, only with the v2.1 mount. The v2.5 peg mount needs no screws; the switch is glued onto 2 pegs.

Head and length notes (checked against the model, 2026-10-24):

  • Center plate screws need low heads: the motor bracket's M5 heads sweep over them with 2.8 mm to spare with button heads, or 1.5 mm with socket heads.
  • Slip-ring flange: not screwed down. The flange is part of the fixed housing; see "How it works".
  • M5 length into 2020: the slot is about 6 mm deep before the solid center, so a screw must not reach more than about 6 mm past the face it clamps.
  • Substitutes that also fit:
    • Button heads for any M3 socket head except the slip ring.
    • M5×10 instead of M5×8 with 1 mm washers under the head: 1 each on the motor bracket, 2 on the switch mount.
    • M5×13 instead of M5×12, socket head only. M5 button heads are 9.5 mm across and won't fit the 9.5 mm counterbores.
  • Tools: 2, 2.5 and 4 mm hex keys and a #0 Phillips screwdriver.

Glue: CA for the coupler on the slip ring's spinning center, the magnet cup in the carriage, and the magnets. Nothing in the arm or hub is glued (v3).

Print files (v2 set, print/v2-current/)

For v3, use the "Full parts list (v3)" in print/README.md; it replaces this table.

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). Use the v2-current copy: the standoffs in v1-original are mirrored.
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 Use the switch mount from print/v2.1-switch-update/
25 carriage striker 1 print/v2.1-switch-update/; glue onto the carriage's back edge
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.

In sand-table-v3.solidcraft the counterweight is Counterweight + CounterweightLid, with REF_Quarters7 (7 quarters) and REF_HubBolt* / REF_CWBolt* showing the M5s; the old HubRailMount (29c) features are suppressed. The shell quarters are separate bodies, ShellQ1–ShellQ4. Each is a 90° revolve, not a split ring, because cuts on the split ring failed. The deck and sand ring still use split names. In sand-table-v2.solidcraft the names 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 deck bosses have 45° undersides (v3).
  • 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.
  • Counterweight (34): flat, pockets up, 100% infill if you can; its own weight counts.
  • Everything else: flat as modeled.
  • PETG is best for the hub, carriage and brackets. PLA is fine for the shell, deck and sand ring.