#3dprinting #voron #doron-velta #delta #arms #fixture #build
# Overview
Plan for building six matched 210mm fisheye parallel arms for the [[Doron Velta]] from carbon tube and off-the-shelf M3 rod ends, instead of sourcing NOS FLSUN Q5 arms.
Written because the Q5 aftermarket has dried up — see [[Doron Velta#Arms — sourcing]]. This path is supply-proof: if an arm breaks in 2029, the plan and the fixture are still on the shelf.
**The whole method rests on one idea:** don't try to *cut* six identical arms. Cut them all deliberately short, then let the epoxy cure while the arm is clamped in a fixture that defines the length. The fixture sets the dimension, not your saw and not your calipers. Every arm comes off identical to every other arm, and identical to the fixture.
That reframe is what makes a **3D printed fixture viable**. Read the next section before anything else — it's the part people get wrong.
> [!important] 2026-09-04 — this plan is no longer the primary path
> Haydn Huntley's MagBall arms turned out to be alive, in stock, and **better than this plan's own hard spec** for ~$106. See [[#MagBall arms — the off-the-shelf answer]] immediately below.
>
> Everything from `# Design` onward is retained as the **supply-proof fallback** it was written to be. It is still the right answer if MagBall goes away, and its rod-end research now feeds a cheaper drop-in option (igus KBRM-03) that this note originally rejected on a bad spec.
# MagBall arms — the off-the-shelf answer
[Haydn Huntley's MagBallArms](https://www.magballarms.com/) — **site last modified 2026-05-10, so he is still trading**, which matters enormously given the Q5 aftermarket is dead everywhere else (see [[Doron Velta#Arms — sourcing]]).
Contact: `
[email protected]`. Also resold by [Blue Eagle Labs](https://www.blueeaglelabs.com/products/haydns-carbon-fiber-arms-with-cnc-precision-machined-delrin-sockets).
## Why it obviates this whole plan
The spec sheet reads like someone wrote this note's requirements section:
| This plan's target | MagBall delivered |
|---|---|
| ±0.05mm across all six | **<50µm, typically 30µm**, jig-assembled and individually measured by Haydn |
| ±0.02mm within a pair | 30µm typical — still sort into pairs |
| Reject notchy joints at Phase 3 | **Zero backlash by design** — magnetic preload, no clearance to wear into |
| Fixture, six 24h cure sessions, comparator pass | Arrives assembled |
**$90/set + $16 US Priority Mail = $106 delivered.** Set includes 6 pultruded CF rods, 12 CNC'd Delrin cups with N52 magnets, 12 chrome **M3** ball studs (hex base), and a tube of SuperLube PTFE.
Against this plan's ~$67 of parts *plus* fixture modelling, printing, six cure sessions, and a verification pass that cannot beat 30µm anyway.
Delrin is the right cup material for the job: high wear resistance, low friction, **needs no lubricant**, and quieter than steel. It is also far lighter than steel rod ends — see the mass table under [[#Rod end options]] corrections below.
## Holding force vs. a direct-drive CraneFly
The obvious objection: magnets holding a direct-drive toolhead. ==Not doing Bowden.== Run it.
Haydn tests **≥1.5 kg holding force per joint**. CraneFly + DD head estimated at **~350g** — roughly 70g effector plate and cage, 90–140g extruder with pancake stepper, 50–80g hotend, ~40g blowers, ~40g wiring and hardware.
| Condition | Load per joint | Margin |
|---|---|---|
| Static, six arms sharing, ~25° from vertical | ~64 gf | 23× |
| 10,000 mm/s² + gravity, six arms sharing | ~118 gf | 13× |
| 10,000 mm/s² + gravity, worst-case two arms | ~354 gf | 4.2× |
| 20,000 mm/s² + gravity, worst-case two arms | ~530 gf | 2.8× |
Static case: `T = W / (6 · cos θ)` = 3.43 N / (6 × cos 25°) = 0.63 N = 64 gf.
**The toolhead mass that would erode a 2× margin at 20,000 mm/s² is ~500g** — well past where a CraneFly DD head sits. **Weight is not the constraint.** Bowden vs. direct drive does not change the answer.
==Weigh the assembled toolhead and replace the 350g estimate with the real number.==
## Temperature — investigated, not a problem here
Initially flagged as the deciding risk. It isn't, at this machine's temperatures.
- N52 open-circuit max working temp is ~65 °C, irreversible loss from ~80 °C
- **But that spec is measured open-circuit at L/D 0.7.** A magnet seated against a steel ball is a far more closed magnetic circuit, operating well away from the knee of the demagnetisation curve — real tolerance in service is meaningfully higher
- Below the threshold, loss is **reversible**: NdFeB runs ~−0.11 to −0.12 %/°C on Br, so 20 °C → 60 °C is ~5%. 1.5 kg becomes ~1.43 kg and recovers on cooling. Noise against the margins above
- The cups mount to ball studs **outboard** on the effector, separated from stepper and hotend by printed ABS at ~0.2 W/m·K — an insulator, not a heat path — and sit in part-cooling airflow
**This printer will never exceed 60 °C chamber; 50 °C is the realistic figure.** Cups land near 55 °C. Inside the envelope with margin.
## Residual risks — the ones that stand
| Risk | Note |
|---|---|
| **Crash pop-off** | Documented real-world magball failure: joints let go when the nozzle strikes a lifted part. Explicitly associated with ABS in cold/lukewarm chambers. Arguably a breakaway feature, but it means a failed print and re-seating arms |
| **Levering / peel load** | 1.5 kg is the *straight axial* pull-off. A cup peels off a ball at considerably less. No published figure |
| **Fan interaction** | Reported that magball fields can drag hotend fans at low PWM |
**Mitigation for the first two: retaining bands or springs between arm pairs.** Standard practice, cheap, do it regardless.
## Interface change — this is the real Phase 0 question
The DV/CraneFly takes fisheye eyes with an M3 bolt passing *through* into heat inserts. MagBall needs a **ball stud threaded into** that insert, with the Delrin cup snapping onto it.
Ball studs are M3 with a hex base — Blue Eagle's copy says they "easily adapt to popular carriage and effector thread sizes," so a direct thread-in is plausible.
==But the nodal point moves.== The fisheye's ball centre sits on the bolt axis, roughly in the plane of the mount. The MagBall's ball centre sits atop a stud standing proud of the surface. That shifts `delta_radius` and the effector offsets — calibratable, but it must be *measured*, and it may cost clearance on a machine that is already tight.
==Phase 0 for the MagBall path: confirm the ball stud threads into the CraneFly M3 inserts, and measure how far the ball centre stands off the mounting face.==
# Arm length — 215mm vs 210mm
215mm is a **stock** length at $90; 210mm needs a custom run ($120–130 on the public price list). Worth settling deliberately because it also closes an open question in this note.
## It does not buy back the DV's missing travel
This note previously speculated that longer arms might reclaim some of the DV's lost travel, citing jonathanlundstrom going 280 → 285mm on the QQ-S. **Negative result — the mechanism doesn't apply.**
Kinematic reach limit, where the far arm goes flat:
```
r_max = [ −R + √(4L² − 3R²) ] / 2
```
Assuming `R` (delta_radius) ≈ 120mm for the DV's 200mm bed:
| L | r_max |
|---|---|
| 210mm | 122.5mm |
| 215mm | 128.2mm |
**+5.7mm of reach radius for +5mm of arm** — a better than 1:1 return, and completely unusable, because [[Doron Velta#Known limitations]] records that the toolhead **"will hit the panels and/or belts."** R1 → R2 reclaimed ~15mm by moving 2020s back and 2040s out — printed-part revisions, not arm changes. rogerlz says full travel needs a redesign.
**The DV's limit is collision, not kinematics.** Extra reach extends the envelope into space the toolhead already cannot occupy.
And there is no belt-clearance win either: **arm length does not change the arm's horizontal footprint.** The two endpoints fix that line. Only carriage height changes.
## What it costs
Max Z at centre is `z_carriage − √(L² − R²)`, so longer arms hang the effector lower:
```
ΔZ ≈ L · ΔL / √(L² − R²) = 210 × 5 / 172.3 ≈ 6.1mm
```
**~6mm of max Z lost** — about 1.2× the arm increase, and it holds between 5.5 and 6.7mm across any plausible `R`. On a delta with tall towers, ~2% of Z.
## The ledger
| | 215mm | 210mm |
|---|---|---|
| Price | **$90 stock** | $120–130 custom |
| Availability | Ships now | Negotiate, wait |
| Max Z | **−6mm** | reference |
| Usable travel | no change | no change |
| Joint articulation at edge | ~2° less | reference |
| Backlash amplification | +2.4% | reference |
| Matches rogerlz's validated geometry | no | **yes** |
Backlash amplification is linear in rod length per the RepRap error formula, so 215 is 2.4% worse — **moot at zero backlash**, and listed only for completeness.
The last row carries more weight than it looks. This is a design with known quirks and a small user base; running the reference geometry means oddities can be compared against the handful of people who have built one.
**Decision: ask for 210, accept 215.** Six millimetres of Z is not worth a special order and a delay, but matching the reference geometry is worth $30 if Haydn will do it. `arm_length` is a config value either way.
# Design
## Why a printed fixture is fine here
The instinct is that a printed fixture is too inaccurate for a precision jig. That's true for absolute dimension and irrelevant for this job, because the two specs are not equally important:
| Spec | How tight | Why |
|---|---|---|
| **Arm-to-arm matching** (esp. within a pair) | **Hard requirement** | A mismatch between the two arms of one tower *tilts the effector*. The nozzle sits ~50mm below the pivot plane, so tilt becomes lateral position error. No calibration routine fixes this — the geometry is simply wrong. |
| **Absolute length** (is it really 210.00?) | **Soft requirement** | A uniform error just means every arm is, say, 210.4mm. You measure it once, put the real number in `arm_length`, and the printer is correct. |
Cure-in-fixture gives you perfect matching *for free*, regardless of the fixture's absolute accuracy, because all six arms cure against the same two pins. The fixture's absolute error transfers to all six equally — which lands in the soft column.
So: **fixture repeatability is what matters, not fixture accuracy.** A printed fixture with steel dowel pins is repeatable to well under a thousandth. It just might be 210.4mm instead of 210.0mm, and that's a number you write down rather than a defect you fight.
Tolerance targets:
- Within a pair: **±0.02mm** — achievable trivially with this method
- Across all six: **±0.05mm**
- Absolute vs. nominal 210: **±0.15mm is fine**, as long as you *know* the real figure
## Length math (parameterized)
Rod ends aren't yet chosen, so define:
- `L_ctc` = 210.0mm — target center-to-center of the two ball centers
- `L_re` = ball center → shank shoulder, **per rod end** (from the vendor drawing)
- `L_slack` = 2–3mm — intentional short-cut so the fixture has room to pull the joint
Then:
```
tube_length = L_ctc − (2 × L_re) − L_slack
```
The slack is not sloppiness — it's the adjustment range the fixture consumes when it pulls both rod ends out to exact length before the epoxy sets. Cut every tube to the same computed figure; ±0.5mm on the cut is irrelevant because the fixture, not the tube, sets `L_ctc`.
==Fill in `L_re` and recompute once rod ends are chosen. Do not order tube until this number is settled.==
## Rod end options
Both are M3-bore fisheye (spherical) ends. Decide from the DV mount envelope (see Phase 0) and the mass budget.
| | Metal spherical (SI3T/K, SA3T/K, PHSA3) | Polymer (igus KBRM / EBRM) |
|---|---|---|
| Slop when new | Near zero on good ones; cheap ones rattle | Low, slightly compliant by design |
| Mass | Heavier — worst place to add it, it's all moving mass | Lighter |
| Lubrication | May need it; can attract dust | Self-lubricating, dry |
| Noise | Can tick/click | Quiet |
| Spec data | Varies wildly by seller | igus publishes real dimensioned drawings — makes `L_re` trustworthy |
| Risk | Buying 12 with inconsistent `L_re` | Higher compliance under side load |
Buy **12** (2 per arm × 6). Buy a couple spare. All from **one batch, one seller** — batch-to-batch `L_re` drift is a real thing and it lands straight in the hard-spec column.
==Before ordering: confirm the eye body physically fits the DV pockets — Phase 0.==
### Corrections and hard data (2026-09-04)
**~~igus KBRM-03 pairs a 3mm bore with an M4 thread~~ — that was wrong**, and it wrongly eliminated the best fallback in this note. [TME US](https://www.tme.com/us/en-us/details/kbrm-03/joints/igus/) lists KBRM-03 as **Øhole 3mm, M3 × 0.5, right-hand inside thread, L 25mm, ISO 12240**, igumid G housing with an iglidur® W300 ball. The M3 stud plan works unchanged.
- **$7.06 ea @1, $5.65 @10, $5.30 @25 — 30 in stock at TME US.** No quote, no account, no minimum
- **1.35 g each** against ~10 g for a steel rod end
- **−40 °C to +90 °C continuous** — comfortable for a 50 °C chamber
**Aurora MW-M3** ([full dimensioned drawing](https://cad.timken.com/item/metric-rod-ends/s-female-rod-ends-metric-general-purpose-precision/mw-m3)) is the premium fisheye and it supplies the number Phase 0 was blocked on:
| Dimension | Value |
|---|---|
| **A — base to centre (this is `L_re`)** | **21.00 mm** |
| B — ball bore | 3.000 mm |
| D — head diameter | 12.50 mm |
| H — head width | 4.75 mm |
| W — ball width | 6.00 mm |
| K — shank diameter | 8.00 mm |
| Thread | M3 × 0.5, depth 10.00 mm, female |
| Weight | 10 g |
| Ultimate radial static load | 4,972 N |
Two catches: it ships **with no liner and no lubrication provision** (grease fittings don't exist below M5), so order **MW-M3T** for the PTFE liner. And at 10 g each it is the heaviest option — 120 g across twelve.
### Mass comparison — matters more with a direct-drive head
| | Per joint end | ×12 |
|---|---|---|
| igus KBRM-03 | **1.35 g** | 16 g |
| MagBall (Delrin cup + ball stud) | ~5 g | ~60 g |
| Steel SI3T/K | ~10 g | 120 g |
| Aurora MW-M3 | 10 g | 120 g |
Roughly half an arm's mass acts at the effector. With a ~350g direct-drive toolhead already the acceleration constraint, the steel options cost ~45g at the effector versus the polymer ones — ~11% of toolhead mass, for no gain this build needs.
### The Amazon listing is metal, not plastic
Checked [B0FV3J217T](https://www.amazon.com/Fisheye-Bearings-Thread-Bearing-Printer/dp/B0FV3J217T) directly: **Material: Metal**, categorised under Rod End Bearings, sold as SI3T/K. It is the steel/PTFE type, not the plastic-body-with-brass-ball parts sold under the same "fisheye" word. The gallery mixes variants because the listing defaults to `SA4T K M4` — the variant trap already flagged below, not a materials problem.
For the record, "fisheye rod end" **is** a bearing — a spherical *plain* (sliding) bearing. Nothing in this class has rolling elements, OEM FLSUN arms included. What varies is what the ball slides against: chrome steel on a bonded PTFE-fabric liner (SI3T/K, Aurora MW-M3T), polymer on polymer (igus), or brass on bare plastic (the cheap lookalikes — these wear into play, and play is the amplified quantity).
### Joint articulation limit — new Phase 0 item
Aurora publishes misalignment angles for MW-M3, and they vary enormously by how the eye is retained:
| Mounting | Misalignment angle |
|---|---|
| Clevis mounted | **13°** |
| Shoulder bolt mounted | 25° |
| Pin mounted | 62° |
The RepRap joint survey lists "limited printing area" as the defining con of rod-end joints — ~±30° when a delta wants 35–40° — against magnetic joints, credited with "up to (and over) ±90°."
==Phase 0: measure the swing angle the arm actually needs at travel extremes, and check how the CraneFly retains the eye. If it is a clevis slot rather than an open pin, 13° is a wall no rod end gets past — and it may be part of why the DV is travel-limited.==
## Carbon tube and the stud trick
The open question was how to bond an M3 rod end shank into a tube without either starving the joint or flooding a 0.5mm gap with epoxy. [jonathanlundstrom's QQ-S arm fixture](https://www.thingiverse.com/thing:4444539) solves it cleanly, and his arms are field-proven:
- **4mm OD / 3mm ID woven carbon tube**
- **M3 threaded rod cut into 25mm studs**
- Tap the rod end M3, thread a stud in, epoxy the exposed stud into the 3mm bore
M3 threaded rod in a 3mm ID tube is a near-perfect epoxy fit — the thread crests locate it, the roots hold glue. No bushing, no ferrule, no machining. Roughly 25mm of engagement per end is plenty of bond area at these loads.
==Adopt this unless Phase 0 rules it out. Recompute `tube_length` accordingly — his 285mm arms used 240mm tube, i.e. ~22mm of non-tube length per end, but that figure is specific to his ball links and does **not** transfer to your rod ends.==
- Woven/roll-wrapped over pultruded if the price gap is small; either is stiff enough at 210mm
- Buy ~2m for six arms plus setup waste and two spares
## Do not copy his push-rods
Worth stating plainly because the rest of his build is so directly applicable: he uses **MPJet 7mm ball links**, which are ball-and-socket. The QQ-S mounts take ball links. **The Doron Velta does not** — it uses fisheye eyes with an M3 bolt passing through, into heat inserts on the CraneFly effector.
Same rejection as the Traxxas 5347 kits. Take his *method*, not his hardware BOM.
# Sourcing (US)
All verified in-browser 2026-08-21. Stock and price move — re-check before ordering.
| Item | Source | Price | State |
|---|---|---|---|
| Fisheye rod ends, 12pc | [Amazon B0FV3J217T](https://www.amazon.com/Fisheye-Bearings-Thread-Bearing-Printer/dp/B0FV3J217T) — **select the `SI3T K M3` variant** | $12.77 | In stock, ships 2–3 days |
| **CF tube 5mm OD / 3mm ID, 4 × 400mm** | [Amazon B0951XXJ35](https://www.amazon.com/uxcell-Carbon-Pultrusion-Airplane-Quadcopter/dp/B0951XXJ35) (uxcell, pultruded) — **preferred, see below** | $14.09 | Only 6 left |
| CF tube 4mm OD / 3mm ID, 6 × 400mm | [Amazon B0CZLFYP1F](https://www.amazon.com/uxcell-Pultruded-Airplane-Quadcopter-Multicopter/dp/B0CZLFYP1F) (uxcell, pultruded) | $14.59 | Only 12 left |
| CF tube, 4/3mm, 3 × 400mm | [Amazon B07R7TNBXB](https://www.amazon.com/uxcell-Carbon-Pultrusion-Airplane-Quadcopter/dp/B07R7TNBXB) (uxcell, pultruded) | $13.79 | In stock |
| M3 × 300mm threaded rod, 5pc | Amazon — commodity, several sellers at this price | ~$6 | In stock |
| Structural epoxy | Loctite Power Epoxy / JB Weld — any US hardware store | ~$10 | — |
| 3mm dowel pins | Same stock as the DV bed pins | ~$8 | — |
**12 rod ends is exactly 12** — 6 arms × 2 ends, zero spares. Consider two packs.
**The variant trap, again.** That rod end listing covers four variants and **defaults to `SA4T K M4`**, which is wrong on both counts. You want:
- **`SI`** = female thread — the M3 stud screws *into* the rod end
- **`3`** = 3mm bore — the M3 bolt that passes through the eye into the CraneFly heat inserts
`SA3T K M3` (male thread, integral stud) is the same price and would skip the threaded rod entirely, but the shank is short — less bond area and no coarse length adjustment. `SI` + your own 25mm studs is the proven combination.
### Female + stud, or male with an integral stud?
Worth settling explicitly, because it's the obvious question once tube diameter changes — and the answer is that **tube OD is irrelevant to it.** The stud lives in the *bore*, and the bore stays 3mm whether the tube is 4mm or 5mm outside. Nothing about the rod end choice moves.
| | `SI3T/K` female + M3 stud | `SA3T/K` male, integral shank |
|---|---|---|
| Bond length | Yours to pick — 25mm | Fixed by the part, typically 15–20mm |
| Coarse length adjust | Yes, thread depth | None |
| `L_re` | A number you control | A number the vendor chose |
| Parts count | One extra (threaded rod, ~$6) | Fewer |
Stay with **female + your own studs**. The extra $6 buys bond area and an adjustment axis, and it's what's actually been proven on a working delta.
## Go 5mm OD / 3mm ID, not 4mm
Same 3mm bore, so **nothing about the joint changes** — same M3 stud, same rod end, same bond area. The wall goes 0.5mm → 1.0mm. Run the numbers per unit length:
| | 4×3mm | 5×3mm | Ratio |
|---|---:|---:|---:|
| Cross-section (mass) | 5.50 mm² | 12.57 mm² | **2.29×** |
| Second moment `I` (stiffness) | 8.59 mm⁴ | 26.7 mm⁴ | **3.11×** |
| Wall thickness | 0.5 mm | 1.0 mm | 2× |
**3.1× the bending stiffness for 2.3× the mass** — stiffness rises faster than mass, which is the whole point.
The reason this matters more than I first credited: delta arms alternate between tension and compression every time the effector crosses over a tower. In compression a slender 210mm tube is a **Euler column**, and critical buckling load scales with `EI/L²`. Tripling `I` triples the buckling margin. Split resistance at the bonded joint is a bonus, not the main event.
**Correction (2026-09-04): buckling was never the binding constraint.** Running it properly, `Pcr = π²EI/L²` with E ≈ 130 GPa for pultruded CF and a 165mm free length gives **~1,260 N for the 5×3 tube and ~405 N for the 4×3** — against delta arm loads on the order of 10–30 N. That is a 40× margin on the 5mm and still 20× on the 4mm. Neither was ever close to buckling.
5mm is still the right call, but the reason is **bending stiffness against joint friction moments and lateral loads**, not Euler margin. The 3.1× on `I` is what matters; the column argument was overstated.
Mass cost is small. At ~165mm of tube: ~1.45g → ~3.32g per arm, so ~11g across all six. Roughly half an arm's mass acts at the effector, so call it ~6g of added moving mass — the steel rod ends dominate the arm's weight regardless.
==Phase 0 note: 5mm OD is 1mm fatter. It doesn't touch the mounts (those grip the eye, not the tube), but check arm-to-arm and arm-to-effector clearance at travel extremes — the DV is already tight.==
**Buy quantity:** 4 × 400mm = 1600mm. At ~165mm per tube that's 2 arms per stick — 8 arms' worth, so six plus two spares from one pack.
## Note on pultruded vs. woven
jonathanlundstrom used **woven** tube; everything available in the US at 4×3mm is **pultruded**. At 0.5mm wall, woven in this size is effectively unobtainium.
Pultruded is unidirectional — stiffer and stronger along the axis, which is the dominant load in a delta arm, but it has almost no hoop reinforcement and *can split longitudinally at a bonded joint*. Mitigation is straightforward:
- Keep the stud a **slip fit**, never interference — the epoxy carries the load, the stud must not wedge
- Don't over-tighten anything that squeezes the tube
- Optional insurance: a short overwrap of CF tow or Kevlar thread wetted with epoxy at each bonded end
==If a joint ever splits, that's the signal to hunt down roll-wrapped tube from a composites specialist rather than an RC supplier.==
**Not usable:** McMaster's catalog is locked to automation so I couldn't verify M3 rod ends there — worth a manual look, their quality beats Amazon generic. igus igubal `KBRM-03` pairs a 3mm bore with an **M4** thread, which won't take an M3 stud in a 3mm bore tube, and it's quote-only pricing.
## Non-Amazon alternatives
Also verified in-browser 2026-08-21.
### Rod ends
| Source | Part | Price | State |
|---|---|---|---|
| [Bearings Direct](https://bearingsdirect.com/categories/rod-end-ball-joint-bearings/female-rod-ends/right-hand-thread-female-rod-end-bearings/metric-right-hand-thread-female-rod-ends.html/) | **PHS03** right-hand, genuine IKO, 3mm bore, M3 | **$27.84 ea** | In stock, Glendale CA |
| [Misumi US](https://us.misumi-ec.com/vona2/mech/M2200000000/M2205000000/?CategorySpec=00000042607::b) | Rod End Bearings, Connecting Screw M3 — PHS/POS series | not listed | Category confirmed live |
| [eBay 284454276402](https://www.ebay.com/itm/284454276402) (captainusa223, 100%) | 10pc SI3T/K, 3mm bore, M3×0.5 female RH | $11.99 + **$26 ship** | Only 3 available, ships Zhejiang, no returns |
**Bearings Direct is the quality answer and the expensive one** — $334 for twelve. Genuine IKO means effectively zero slop, which is the failure mode that ruins arms. Justifiable only if the cheap ones turn out notchy at Phase 3.
**Misumi is probably the smart play**: you already order extrusion from them for the [[Voron Cascade BOM]], so these can ride along on an existing order at industrial quality. ==Pull PHS3/POS3 pricing from your account — the public category doesn't show it.==
eBay works out to ~$76 for 12 once shipping is counted, with a three-week wait and no returns. Worse than Amazon on every axis.
### Carbon tube — thin outside Amazon
| Source | Part | Price | State |
|---|---|---|---|
| [Easy Composites US](https://www.easycomposites.us/4mm-pultruded-carbon-fiber-tube) | 4mm/3mm pultruded, 1m | $2.70–4.25/m | ==**OUT OF STOCK**== |
| [Easy Composites US](https://www.easycomposites.us/5mm-pultruded-carbon-fiber-tube) | 5mm/3mm pultruded, 1m | $6.10–9.15/m | ==**OUT OF STOCK**== |
| SpeedyFPV | 4mm OD but **2mm ID** — wrong bore | — | Out of stock anyway |
| CST Composites | Only sub-1.5mm sizes on their tube page | — | No fit |
| Rock West | Search 404s; metric small sizes not found | — | Unverified |
Easy Composites is the right vendor when they restock — reputable composites house, far cheaper per meter than Amazon, US storefront (ships UK→US, 5–8 working days, no duty). ==Set a back-in-stock alert.==
**Their 5mm/3mm is arguably the better part**: same 3mm bore so the M3 stud fit is unchanged, but a 1mm wall instead of 0.5mm — which directly answers the pultruded-splitting risk above. Costs ~1mm more OD and a little mass.
Their woven roll-wrapped line starts at **16mm OD**, confirming woven simply isn't made at 4×3mm. Pultruded it is.
# Build plan
## Phase 0 — Confirm the mount envelope (do this first)
Everything downstream is wasted if the eye doesn't fit the pockets. rogerlz designed around the Q5 eye, so any substitute has to live in that envelope.
Pull these from CAD — the [Fabreeko GrabCAD viewer](https://grabcad.com/library/doron-velta-r2-by-fabreeko-1) or the STEP/F3D in the repo:
- Eye **bore**: 3mm (M3 screw through)
- Eye **body thickness** — must fit the slot in the CraneFly effector and the carriage
- Eye **outer diameter** — must clear the pocket walls through full swing
- **Pocket depth** and screw spacing
Then check the swing: a delta arm sweeps a real angular range. An eye that fits statically can still collide at travel extremes — and the DV is already travel-limited.
==Record the four measured figures here before ordering anything.==
## Phase 1 — Build the fixture
Design intent: two steel dowel pins, parallel, at exactly `L_ctc`, standing off a flat plate that keeps both eyes coplanar.
- **Pins**: 3mm steel dowels. You're already buying 3×20mm dowels for the bed — same stock, order extra.
- **Plate**: print in ABS/ASA, thick enough not to bow (6mm+, high infill). Print flat-side-down on glass/PEI for the reference face.
- **Adjustability**: put one pin in a fixed boss and the other in a **slotted block** that locks with two M3 screws. This is what lets you dial absolute length and, more importantly, correct for print shrinkage without reprinting.
- **Coplanarity**: both eyes must lie flat on the plate so the pivot axes end up parallel. A twisted arm binds. Relieve the plate under the tube so only the eyes touch.
- **Release**: PTFE spray, wax, or a thin PTFE sleeve over each pin. Skip this and you will epoxy an arm to your fixture.
- **Backing**: bolt the fixture down to a wood/MDF plate. Stops the printed part bowing over a 24h cure — jonathanlundstrom calls this out specifically and it's cheaper than printing something thick enough to be self-rigid.
- **Capacity — single station, one arm at a time.** ~~6-up~~. This reverses my first draft, and the reasoning matters: a 6-up fixture has *twelve* pin positions, and any variation between the six pin-pairs transfers directly into arm-to-arm mismatch — the one spec that can't be calibrated out. Printed parts vary measurably across the bed. A single station means the entire build has exactly **one** dimension in it, and all six arms inherit it identically. jonathanlundstrom independently reached the same conclusion.
### Measuring the pin spacing
Measure outside-to-outside across both pins with the 300mm calipers, then subtract pin diameter:
```
C-to-C = (outside measurement) − pin_dia
```
With 3mm dowels at 210mm C-to-C that's a ~213mm reading. Take it a few times, rotating the calipers slightly, and use the mean.
**Write the final number down** — it becomes `arm_length` in `printer.cfg`.
## Phase 2 — Bond
Repeat this loop six times — one arm per fixture session.
1. **Prep the studs.** Tap each rod end M3. Cut M3 threaded rod into 25mm studs, thread one into each rod end.
2. **Cut** the tubes to `tube_length`. Deburr and square the ends.
3. **Mask.** Tape the ends of the tube and the rod end body. Keeps squeeze-out off the parts you care about — his tip, and a good one, because cured epoxy on a rod end body is much harder to remove than tape.
4. **Prep the bond** — this is where joints fail, not in the epoxy brand. Abrade the studs and swab the bores, then degrease with IPA and let it flash off. No skin oils after this point.
5. **Epoxy** — slow-cure structural only. Loctite Power Epoxy, JB Weld, West System. **Not 5-minute epoxy**: brittle, and no working time.
6. **Butter** the stud all round, insert into the tube without fully seating — leave the slack.
7. **Seat on the fixture.** Press both eyes onto the pins; the pins pull the joint out to exact length. Wipe squeeze-out now, not later.
8. **Check coplanarity** — both eyes flat on the plate, tube not twisted.
9. **Cure undisturbed.** 24h is the safe call. If you're impatient, the geometry is locked once the epoxy *gels* — you can pull the arm off the fixture at that point and post-cure it off-fixture at ~60°C, which frees the station for the next arm. ==Only worth trying after the first arm has proven the process.==
## Phase 3 — Verify
1. **Re-seat each arm on the fixture.** It should drop onto both pins freely, no bind, no gap. Anything that fights the pins is out of spec — cut it apart and redo it.
2. **Comparator check.** Nominate one arm as master. Set the dial indicator to zero against it, then check the other five. This measures *matching* directly, which is the spec that matters, and needs no absolute reference at all.
3. **Sort into pairs.** Put the two closest-matched arms on the same tower. Push any residual spread *between* towers, where calibration absorbs it better than effector tilt does.
4. **Slop check.** Work each joint by hand — no detectable radial play. A gritty or notchy ball means a bad rod end; replace it now, not after assembly.
5. **Weigh one.** Compare against the OEM Q5 arm mass if you can find a figure. Heavier arms mean lower usable acceleration.
## Phase 4 — Klipper
- Set `arm_length` to your **measured** value, not 210 — unless 210 is what you measured
- Run `DELTA_CALIBRATE` — this solves endstop positions, tower angles, and delta radius
- Run enhanced calibration (`DELTA_ANALYZE`) with caliper measurements of a printed test object for the finer geometry pass
- ==Verify against current Klipper docs whether `DELTA_ANALYZE` refines `arm_length` itself, or whether it must be measured and fixed by hand.==
Symptom to watch for: if calibration converges but the nozzle-to-bed relationship shifts as the toolhead moves off-center, suspect effector tilt — i.e. a within-pair mismatch that got past Phase 3.
# Decisions
| Decision | Options | Status |
|---|---|---|
| **Arm sourcing** | Build them vs. buy MagBall | **resolved — buy MagBall** (2026-09-04). $106 beats ~$67 + fixture + six cure sessions, and beats this plan's own hard spec. DIY retained as fallback |
| **Joint type** | Fisheye rod end vs. magnetic ball | **resolved — magnetic** (2026-09-04). Zero backlash by design; force margin verified against a DD toolhead |
| **Arm length** | 210mm custom vs. 215mm stock | **ask 210, accept 215** (2026-09-04). 215 costs ~6mm max Z and buys no usable travel; 210 matches rogerlz's validated geometry |
| Longer arms to reclaim travel | 210 → 215+ for reach | **resolved — no** (2026-09-04). DV's limit is collision, not kinematics |
| Rod end type *(fallback path only)* | Metal spherical vs. igus polymer | **igus KBRM-03** if the fisheye route is ever needed — M3 confirmed, 1.35g, in stock. Was wrongly rejected on an M4 spec |
| Tube/shank fit | Direct fit vs. bushing/ferrule | **resolved** — 4mm OD / 3mm ID tube + M3 threaded stud (2026-08-21) |
| Fixture capacity | 6-up vs. single station | **resolved — single station** (2026-08-21); one dimension in the whole build |
# Risks
## MagBall path
| Risk | Mitigation |
|---|---|
| Ball stud doesn't thread into CraneFly inserts | Phase 0 before ordering — same gate as the fisheye path, different part |
| Nodal point shift changes `delta_radius` / effector offsets | Measure stand-off, put real numbers in `printer.cfg`, run `DELTA_CALIBRATE` |
| Crash pop-off on a lifted ABS corner | Retaining bands between arm pairs |
| Levering load < 1.5 kg axial rating | Retaining bands; keep accel sane until proven |
| Magnet field drags effector fans | Watch fan behaviour at low PWM on first prints |
| Magnet thermal loss | Non-issue at ≤60 °C chamber — see the temperature analysis above |
## DIY path
| Risk | Mitigation |
|---|---|
| Eye doesn't fit DV pocket | Phase 0 before any order — this kills the whole plan if missed |
| Inconsistent `L_re` across rod ends | One batch, one seller; the fixture masks this anyway since it sets C-to-C |
| Starved or over-gapped epoxy joint | Hit the 0.1–0.25mm radial gap; use a bushing rather than flooding |
| Arm bonded to the fixture | Release agent on pins, every single time |
| Rod end slop → ringing | Reject notchy joints at Phase 3, before assembly |
| Added moving mass | Weigh early; polymer ends if it's marginal |
| Printed fixture warps between sessions | Cure all six in one session; re-verify spacing if you come back to it |
# Cost
## MagBall (primary path)
| Item | Est. |
|---|---|
| MagBall arm set, 6 arms assembled (215mm stock) | $90 |
| US Priority Mail | $16 |
| 210mm custom, if Haydn will do it | $120–130 + $16 |
| Retaining bands | ~$5 |
| **Total** | **~$111 stock / ~$151 custom** |
Buys a measured 30–50µm match and zero backlash, with no fixture, no epoxy, and no six-session build.
## DIY (fallback path)
| Item | Est. |
|---|---|
| 2 × 12pc SI3T/K rod ends | $25.54 |
| CF tube 5×3mm, 4 × 400mm | $14.09 |
| M3 threaded rod, 5 × 300mm | $5.99 |
| Structural epoxy | ~$10 |
| 3mm dowel pins | ~$8 |
| Filament (fixture) | ~$3 |
| **Total** | **~$67**, plus the fixture is reusable forever |
Comparable to what a set of OEM arms cost when you could still buy them — and it doesn't evaporate when a vendor delists.
# TODO
## MagBall path (primary)
- ==Email Haydn (`
[email protected]`): 210mm custom set (215 acceptable), confirm ball studs are M3, sanity-check magnets at a 50 °C chamber==
- ==Phase 0 (MagBall): confirm the ball stud threads into the CraneFly M3 heat inserts, and measure ball-centre stand-off from the mounting face — it shifts `delta_radius` and effector offsets==
- ==Weigh the assembled CraneFly + DD toolhead; replace the 350g estimate in the force table==
- ==Source retaining bands / springs for arm pairs — insurance against crash pop-off==
- ==Check whether magball fields interfere with the effector fans at low PWM==
## Both paths
- ==Verify `DELTA_ANALYZE` behavior re: `arm_length` in current Klipper docs — does it refine the value, or must it be measured and fixed by hand?==
- ~~Speculative: would slightly longer arms buy back some of the DV's missing travel?~~ **Answered no** (2026-09-04) — the DV is collision-limited, not reach-limited. +5mm of arm buys +5.7mm of *kinematic* reach into space the toolhead already can't occupy, and costs ~6mm of max Z. See [[#Arm length — 215mm vs 210mm]].
## Fallback path
- ==Phase 0: pull eye bore, body thickness, OD, and pocket depth from the DV CAD==
- ==Phase 0: measure required swing angle at travel extremes; check whether the CraneFly retains the eye as a clevis (13°) or an open pin (62°)==
- ~~Choose rod ends and record `L_re`~~ — Aurora MW-M3 gives `L_re` = **21.00mm** (2026-09-04); recompute `tube_length` if this path is ever used
- ~~igus rejected on M4 thread~~ — wrong, KBRM-03 is M3 × 0.5 (2026-09-04)
- ~~Confirm tube ID vs. shank OD; decide whether a bushing is needed~~ (resolved 2026-08-21 — 3mm ID tube + M3 stud)
- ~~Source 4mm OD / 3mm ID CF tube and M3 threaded rod~~ (done 2026-08-21 — see Sourcing)
- ==Phase 0 gate: confirm the SI3T/K eye OD and body width fit the CraneFly and carriage pockets before ordering==
- ==Check McMaster manually for M3 rod ends — better quality than Amazon generic, their catalog blocks automation==
- ==Pull Misumi PHS3/POS3 pricing from your account and compare against Amazon generic + Bearings Direct IKO==
- ~~Set a back-in-stock alert on Easy Composites 5mm/3mm tube~~ — moot, Amazon has 5×3mm in stock (2026-08-21)
- ==Phase 0: check arm clearance at travel extremes with the 1mm-fatter 5mm tube==
- ==Model and print the fixture; measure and record actual pin spacing==
# References
## MagBall and joint theory (added 2026-09-04)
- **[Haydn Huntley's MagBallArms](https://www.magballarms.com/)** — price list, lengths, spec. Site live as of 2026-05-10. `
[email protected]`
- [Blue Eagle Labs — Haydn's arms](https://www.blueeaglelabs.com/products/haydns-carbon-fiber-arms-with-cnc-precision-machined-delrin-sockets) — reseller; confirms M3 hex-base ball studs and <50µm matching
- **[RepRap — Joints for Delta Printer](https://reprap.org/wiki/Joints_for_Delta_Printer)** — the error-amplification formula `PositioningError = 2 × Backlash × RodLength / JointDistance`, and the joint-type comparison. Rod ends limited to ~±30°; magnetic joints "up to (and over) ±90°"
- [supermagnete — magnet temperature](https://www.supermagnete.de/eng/faq/What-temperatures-can-magnets-withstand) and [K&J Magnetics — temperature and neodymium](https://www.kjmagnetics.com/blog/temperature-and-neodymium-magnets) — N52 limits, reversible vs. irreversible loss
- [TME US — igus KBRM-03](https://www.tme.com/us/en-us/details/kbrm-03/joints/igus/) — M3 × 0.5 confirmed, pricing, stock
- [Timken/Aurora MW-M3 drawing](https://cad.timken.com/item/metric-rod-ends/s-female-rod-ends-metric-general-purpose-precision/mw-m3) — source of `L_re` = 21.00mm and the misalignment angles
## Original
- [[Doron Velta]] — main build note and BOM
- [[Voron Cascade BOM]] — tooling inventory (dial indicator, 123 blocks)
- [[Calibration - Shrinkage and Skew]] — relevant to the printed fixture
- [[3D Printer Belt Tensioning]]
- [Doron Velta BOM (rogerlz)](https://github.com/rogerlz/Doron-Velta/blob/main/BOM.md) — "210mm Fisheye Rods, 6"
- [FYSETC DV BOM](https://github.com/FYSETC/FYSETC-Doron_Velta/blob/main/BOM.md) — line 12, "Fisheye Rods 210mm, 6 PCS"
- [CraneFly effector](https://github.com/chirpy2605/voron/tree/main/general/CraneFly) — arm mount geometry
- [Fabreeko DV CAD on GrabCAD](https://grabcad.com/library/doron-velta-r2-by-fabreeko-1) — for Phase 0 measurements
- [FLSUN Q5 wiki](https://wiki.flsun3d.com/en/Q5Manual/Q5Introduction) — confirms 210mm is measured fisheye-center to fisheye-center
- **[FLSUN QQ-S Delta Arm Fixture — jonathanlundstrom (Thingiverse, CC BY)](https://www.thingiverse.com/thing:4444539)** — closest prior art. Same problem (mismatched OEM arms causing effector tilt), same cure-in-fixture solution, field-proven. Method transfers; his ball-link hardware does not.
- [Rod braces — jonathanlundstrom](https://www.thingiverse.com/thing:4444440) — companion part, QQ-S geometry, not directly applicable
# Build Log
## 2026-08-21
- Plan drafted after Q5 arm sourcing came up empty across every vendor checked.
- Settled on cure-in-fixture as the core method, printed fixture with steel dowel pins.
- Rod end type left open pending Phase 0 envelope measurements.
- Switched tube spec to **5mm OD / 3mm ID** (Amazon B0951XXJ35, $14.09, in stock). Bore unchanged so the joint is identical, but 3.1× the second moment for 2.3× the mass — the real gain is Euler buckling margin in the compression half of each stroke. Rod end choice is unaffected: the stud lives in the bore, not the OD.
- Non-Amazon check: Bearings Direct stocks genuine IKO PHS03 in California at $27.84 ea ($334 for twelve). Misumi US carries M3 rod ends and is worth pricing since there's already an account. Carbon tube outside Amazon is thin — Easy Composites has the exact spec but is out of stock in both 4mm/3mm and 5mm/3mm. Confirmed woven isn't manufactured at this size; their roll-wrapped line starts at 16mm.
- US sourcing verified in-browser. Rod ends and tube both available on Amazon for ~$67 all-in. Nothing exotic needed — but the rod end listing defaults to the wrong variant, so `SI3T K M3` has to be selected deliberately. Woven tube isn't available at 4×3mm in the US; going pultruded with slip-fit studs.
- Found jonathanlundstrom's QQ-S arm fixture — independent confirmation of the whole premise. He hit mismatched OEM arms → effector tilt, built new arms in a fixture, and reports the tilt fully gone. Two changes taken from it: **4mm/3mm tube + M3 threaded stud** (resolves the bond-gap problem) and **single-station fixture, not 6-up** (fewer dimensions in the system). Also adopted masking the ends and bolting the fixture to MDF.
## 2026-09-04
- **Found Haydn Huntley's MagBall arms still in production** — site updated 2026-05-10. $90 + $16 shipping for six assembled arms, matched to <50µm (typically 30µm) with zero backlash by design. That is better than this plan's own hard spec, for less money than the parts plus six cure sessions. **MagBall is now the primary path; the DIY plan is demoted to supply-proof fallback.**
- Ran the holding-force math against a direct-drive CraneFly. At ~350g toolhead and 1.5 kg per joint, margins run 23× static, 13× at 10,000 mm/s², and 2.8× at 20,000 mm/s² with pessimistic two-arm load concentration. **Weight is not the constraint** — the threshold is ~500g.
- Chased magnet temperature as the deciding risk and then talked myself back out of it. N52's ~65 °C open-circuit spec is conservative for a magnet seated against a steel ball, sub-threshold loss is reversible at ~0.12 %/°C (~5% at 60 °C), and the cups sit outboard, insulated from the stepper and hotend by printed ABS. At a 50 °C chamber this is a non-issue. Recorded because the reasoning was nearly wrong in the other direction.
- **Settled 215 vs 210.** 215mm is stock at $90, 210mm is a custom run. Longer arms buy +5.7mm of kinematic reach per +5mm of arm — and none of it is usable, because the DV is collision-limited, not reach-limited. Cost is ~6mm of max Z. **Decision: ask 210, accept 215.** This closes the old speculative TODO about longer arms reclaiming travel — negative result.
- **Aurora MW-M3 unblocks `L_re` = 21.00mm** with a full dimensioned drawing (head Ø12.50, head width 4.75, ball bore 3.000). Order the **MW-M3T** variant if ever used — the base part ships with no liner and no lubrication provision.
- **New Phase 0 item, possibly significant:** Aurora publishes misalignment angles of 13° clevis-mounted vs. 62° pin-mounted. RepRap lists limited print area as the defining con of rod-end joints. If the CraneFly retains the eye in a clevis slot, that may be part of why the DV is travel-limited — and it's a constraint magnetic joints don't have.
- Evaluated and rejected two AliExpress options: a 217mm SEEJIE/generic fisheye arm set (~$22, reseller using another store's photos, **no matching tolerance stated anywhere**, and pre-bonded so it can't be corrected) and the idea of buying longer arms to cut down. Cutting mid-span and printing a connector is the wrong move — if shortening is ever needed, cut one end and re-bond, which adds one joint instead of two and puts it where the design already has joints.
- Drafted the email to Haydn: 210mm preferred / 215mm acceptable, confirm M3 ball studs, sanity-check magnets at 50 °C. ==Not sent yet.==
# Changelog
## 2026-09-04
- **Corrected two errors in this note.** igus KBRM-03 is **M3 × 0.5**, not M4 — it was wrongly eliminated, and it's $5.65 ea at qty 10, 1.35g each, 30 in stock at TME US. And the Euler buckling argument for 5mm tube was overstated: real margin is ~40× on 5×3 and ~20× on 4×3, so buckling was never the constraint. 5mm still right, but for bending stiffness.