Files
sandTable/design-notes.md
T
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

173 lines
13 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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.