ADR-023: Z-Drop Architecture
Status
Accepted
Context
A 3D printer must move the nozzle relative to the print surface in three axes. There are several ways to achieve this:
Motion Architecture Options
1. Bed-Slinger (Prusa i3 style) - Bed moves in Y, gantry moves in X, Z lifts gantry or bed - Common in: Prusa MK3, Ender 3, Anet A8 - Characteristic: Bed swings back and forth during printing
2. Z-Drop / Moving Bed Z (Voron Trident style) - XY gantry at fixed height, bed moves only in Z - Common in: Voron Trident, RatRig V-Core - Characteristic: Bed drops down as layers are printed
3. Gantry-Rise / Fixed Bed (Voron 2.4 style) - Bed fixed at bottom, entire XY gantry rises in Z - Common in: Voron 2.4, some industrial machines - Characteristic: Gantry climbs upward during printing
4. CoreXZ (Voron Switchwire style) - Bed moves in Y, toolhead moves in X and Z via CoreXZ kinematics - Common in: Voron Switchwire, converted Enders - Characteristic: Hybrid approach, complex belt paths
Amalgam Constraints
- Triple-Z kinematic leveling (ADR-005) - requires independent Z control
- M10 threaded rod frame (ADR-001) - heavy, rigid, not optimized for gantry climbing
- Scavenger philosophy - must work with donor printer parts
- Heavy heated bed - 235×235mm aluminum/glass bed has significant mass
- “Tractor” philosophy - mass for stability, software for precision
Decision
We choose Z-Drop Architecture where the bed moves only in Z and the XY gantry operates at a fixed height near the top of the frame.
Why Z-Drop?
1. Triple-Z Synergy
Z-drop + Triple-Z is mathematically elegant:
| Architecture | Auto-Leveling Method | Motors Required |
|---|---|---|
| Z-Drop + Triple-Z | Z_TILT_ADJUST (tilt bed to match gantry) | 3 Z-motors |
| Gantry-Rise + Fixed Bed | Quad Gantry Level (tilt gantry to match bed) | 4 Z-motors |
Three points define a plane. With Z-drop, we tilt a static bed to match the gantry - simple geometry, fewer motors, proven by Voron Trident.
With gantry-rise, we’d need to tilt the entire moving XY assembly using 4 motors (Quad Gantry Leveling) - more complex, more parts, harder to scavenge.
2. Center of Gravity Stability
As the print progresses:
Z-Drop:
Start of print: End of print:
┌─────────────┐ ┌─────────────┐
│ [Gantry] │ │ [Gantry] │
│ │ │ │
│ [Bed+Print at top] │ │
│ │ │ │
└─────────────┘ │ [Bed+Print at bottom]
CoG: High └─────────────┘
CoG: LOW ✓
The heaviest part (bed + growing print) moves toward the 36mm MDF base. Center of gravity stays low = more stability.
Gantry-Rise:
Start of print: End of print:
┌─────────────┐ ┌─────────────┐
│ │ │ [Gantry at top]
│ │ │ │
│ [Gantry at bottom] │ │
│ [Bed] │ │ [Bed] │
└─────────────┘ └─────────────┘
CoG: Low CoG: HIGH ✗
Heavy gantry (motors, extruder, rods) climbs to top of frame = pendulum effect, frame flex amplified.
3. Cable Management
| Aspect | Z-Drop | Gantry-Rise |
|---|---|---|
| Moving cables | Bed heater + thermistor (2 wires) | X motor, Y motors, extruder, fans, hotend, probe (10+ wires) |
| Cable chain | Simple, short | Long, complex, moves full Z height |
| Failure mode | Bed wire breaks (easy fix) | Toolhead wire breaks (printer stops) |
The “racecar brain” (toolhead with all its sensors and actuators) stays at fixed height. Only simple power wires to the bed need to flex.
4. Scavenger Simplicity
| Component | Z-Drop | Gantry-Rise |
|---|---|---|
| Z drive | 3 standard leadscrews | 4 leadscrews + belt sync or 4 motors |
| Z rods | 2 vertical smooth rods | 4 corner rods or rails |
| Mechanics | Bed platform rises/falls | Entire gantry must climb frame |
| Donor parts | Leadscrews from any printer | Need matched quad setup |
Z-drop uses the simplest possible Z mechanics - vertical leadscrews and smooth rods that any donor printer provides.
5. MDF Base Damping
The 36mm laminated MDF plinth (ADR-011) provides constrained layer damping. Z-drop keeps the heavy bed close to the damping base throughout printing:
- Print layer 1: Bed at top, but print mass is minimal
- Print layer 100: Bed lower, print mass increasing, closer to MDF damping
- Print layer 500: Bed near bottom, maximum mass, maximum damping benefit
This maximizes the effectiveness of Input Shaper calibration - resonances stay consistent because the mass stays near the damped base.
Consequences
Benefits
- Simpler Triple-Z: 3 motors define a plane, no quad gantry complexity
- Stable center of gravity: Heavy parts stay low throughout print
- Easy cable management: Only bed wires move
- Scavenger-friendly: Standard leadscrews, no custom gantry mechanics
- MDF damping synergy: Heavy mass stays near damped base
- Proven design: Voron Trident validates this architecture
Trade-offs
- Taller frame: Need Z-height for bed travel + clearance
- Bed drop risk: Heavy bed can crash if power lost (see mitigation below)
- Bed heater wires: Must accommodate Z travel (flexible cable or chain)
- Print removal: Bed at bottom after tall prints (must raise to remove)
Bed Drop Mitigation
Heavy beds can “back-drive” unpowered leadscrews and crash down. Mitigations:
- Leadscrew friction: TR8×2 (2mm pitch) has enough friction to hold 235×235 bed
- Triple-Z distribution: Load spread across 3 screws increases holding friction
- Anti-backlash nuts: Add friction that helps hold position
- Software: Klipper can park bed at safe height before shutdown
- Mechanical stop: Optional hard stop at bottom of Z travel
For Amalgam’s 235×235mm bed (~500-800g with glass), the friction of 3 TR8×2 leadscrews is sufficient to prevent unpowered drop.
Architectural Integration
Relationship to Other ADRs
ADR-023: Z-Drop Architecture
│
├── Enables → ADR-005: Triple-Z (3-motor bed leveling)
│
├── Requires → ADR-008: Spider Bed Support (carries bed on Z)
│
├── Informs → ADR-021: Dual-Rod Motion (XY at fixed height)
│
└── Benefits → ADR-011: Laminated Plinth (damping stays effective)
Frame Layout
┌─────────────────────────────────────┐ ← Top of M10 frame
│ │
│ ┌─────────────────────────────┐ │ ← XY Gantry (FIXED HEIGHT)
│ │ Y-rods (dual per side) │ │
│ │ [Plough on X-rods] │ │
│ └─────────────────────────────┘ │
│ │
│ ↕ Z Travel (~250mm) │
│ │
│ ┌─────────────────────────────┐ │ ← Bed Platform (MOVES IN Z)
│ │ [Heated Bed] │ │
│ │ Z1 ─────┼───── Z2 │ │ ← Triple-Z leadscrews
│ │ Z3 │ │
│ └─────────────────────────────┘ │
│ │
└─────────────────────────────────────┘ ← 36mm MDF Plinth
Motion Independence
Critical design principle: The XY gantry and Z-bed are completely independent systems.
- XY gantry never moves in Z
- Bed never moves in X or Y
- Z_TILT_ADJUST tilts the bed plane to match the gantry plane
- No mechanical coupling between XY and Z motion
This independence simplifies: - Klipper configuration (separate stepper sections) - Calibration (XY and Z tuned independently) - Troubleshooting (isolate issues to one system) - Scavenging (Z parts don’t need to match XY parts)
Alternatives Considered
Alternative A: Bed-Slinger (Rejected)
Moving bed in Y (like Prusa i3):
Pros: - Simpler frame (shorter in Y) - Well-proven design - Easy to scavenge (most donors are bed-slingers)
Cons: - Heavy bed moving in Y causes ringing artifacts - Limits print speed for quality - Y-motor works harder (accelerating bed mass) - Bed leveling more complex (bed moves during probe)
Verdict: Rejected. Moving heavy bed in Y contradicts “Tractor” philosophy of keeping mass stationary for quality.
Alternative B: Gantry-Rise (Rejected)
Fixed bed at bottom, gantry climbs (like Voron 2.4):
Pros: - Bed always accessible - Excellent for enclosed chambers (heat rises to gantry) - Premium feel
Cons: - Requires 4 Z-motors for Quad Gantry Leveling - Center of gravity rises during print - Complex cable management (toolhead wires must travel full Z) - Heavier gantry (carries more structure) - Harder to scavenge (need 4 matched Z-motors)
Verdict: Rejected. QGL requires 4 motors vs Triple-Z’s 3. Harder to scavenge, higher CoG during printing.
Alternative C: CoreXZ (Rejected)
Bed moves in Y, toolhead moves in X and Z via crossed belts:
Pros: - Compact design - Good for conversions (Ender → Switchwire)
Cons: - Still a bed-slinger (Y-axis bed movement) - Complex belt paths - Not compatible with M10 threaded rod frame - Different lineage from Darwin/Mendel
Verdict: Rejected. Still has bed-slinger drawbacks, incompatible with frame philosophy.
Implementation Notes
Z Travel Calculation
# From config.py
Z_TRAVEL = BUILD_VOLUME["Z"] + CLEARANCE
= 250 + 30
= 280mm minimum Z travel
FRAME_HEIGHT = Z_TRAVEL + GANTRY_HEIGHT + BED_THICKNESS + PLINTH_CLEARANCE
= 280 + 80 + 40 + 30
= 430mm internal heightLeadscrew Positioning (for Z_TILT_ADJUST)
Optimal Triple-Z placement for Z_TILT_ADJUST:
┌─────────────────────┐
│ │
│ Z3 (back-center) │
│ ● │
│ │
│ ● ● │
│ Z1 Z2 │
│ (front-left) (front-right)
└─────────────────────┘
Spread as wide as possible - maximizes the “lever arm” for tilt correction, improving accuracy.
Klipper Configuration
[stepper_z] # Z1 - front left
[stepper_z1] # Z2 - front right
[stepper_z2] # Z3 - back center
[z_tilt]
z_positions: # Leadscrew positions
30, 30 # Z1 front-left
200, 30 # Z2 front-right
115, 200 # Z3 back-center
points: # Probe points (near leadscrews)
30, 30
200, 30
115, 200References
- ADR-005: Triple-Z Independent Kinematic Leveling
- ADR-008: Spider Bed Support System
- ADR-011: Laminated Plinth Baseboard
- ADR-021: Dual-Rod Motion System
- Voron Trident: Z-drop + Triple-Z reference
- Voron 2.4: Gantry-rise + QGL reference
- docs/deep-dives/tractor_02_xy_axis_system.md: Detailed Z-drop implementation