Initial AON3D M2+ dual MCU configuration

- Octopus Pro: Motors (MOTOR0-7), bed heater (PA1), chamber heater (PB10)
- Azteeg X3: Thermistors, endstops, probe, fan, hotend heaters
- IDEX setup with external DM542T drivers
- Includes wiring documentation and swap guide

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
2026-01-12 20:52:58 -05:00
commit ef868e7953
26 changed files with 3973 additions and 0 deletions

View File

@@ -0,0 +1,8 @@
{
"permissions": {
"allow": [
"Bash(git add:*)",
"Bash(git commit -m \"$\\(cat <<''EOF''\nInitial AON3D M2+ dual MCU configuration\n\n- Octopus Pro: Motors \\(MOTOR0-7\\), bed heater \\(PA1\\), chamber heater \\(PB10\\)\n- Azteeg X3: Thermistors, endstops, probe, fan, hotend heaters\n- IDEX setup with external DM542T drivers\n- Includes wiring documentation and swap guide\n\nCo-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>\nEOF\n\\)\")"
]
}
}

110
README.md Normal file
View File

@@ -0,0 +1,110 @@
# AON3D M2+ - BTT Octopus Pro v1.0.1 Conversion
Controller board upgrade from Azteeg X3 to BigTreeTech Octopus Pro v1.0.1 running Klipper firmware.
## Machine Configuration
| Component | Specification |
|-----------|---------------|
| Printer | AON3D M2+ (IDEX) |
| Controller | BTT Octopus Pro v1.0.1 |
| Firmware | Klipper |
| Host | Raspberry Pi 4/5 (FluiddPi) |
| Stepper Drivers | External DM542T |
| Kinematics | Cartesian with Dual Carriage (IDEX) |
## Motor Assignments
| Motor Slot | Axis | Function |
|------------|------|----------|
| MOTOR0 | X | Primary carriage |
| MOTOR1 | X2 | Dual carriage (IDEX) |
| MOTOR2 | Y | Y axis |
| MOTOR3 | Y1 | Y axis (second motor) |
| MOTOR4 | Z | Z axis |
| MOTOR5 | Z1 | Z axis (second motor) |
| MOTOR6 | E0 | Extruder 0 |
| MOTOR7 | E1 | Extruder 1 |
## Build Volume
- X: 450mm (540mm total with dual carriage travel)
- Y: 450mm
- Z: 600mm
- Heated Chamber: Yes (up to 175°C)
## Project Structure
```
AON3D-M2/
├── klipper/
│ ├── printer.cfg # Main Klipper configuration
│ └── macros.cfg # G-code macros (IDEX, pause/resume, etc.)
├── original/
│ └── klipper_config/ # Original Azteeg X3 configs (reference)
├── docs/
│ └── wiring.md # Wiring guide for Octopus Pro
└── README.md
```
## Quick Start
1. **Flash Klipper** to the Octopus Pro (see [docs/wiring.md](docs/wiring.md))
2. **Wire the board** according to the pin assignments in [docs/wiring.md](docs/wiring.md)
3. **Copy config files** to your Pi:
```bash
scp klipper/*.cfg pi@192.168.86.20:~/printer_data/config/
```
4. **Update serial port** in `printer.cfg`:
```bash
ssh pi@192.168.86.20
ls /dev/serial/by-id/*
# Edit printer.cfg with the correct serial ID
```
5. **Restart Klipper** and verify connection
## Key Differences from Original Setup
| Setting | Original (Azteeg X3) | New (Octopus Pro) |
|---------|---------------------|-------------------|
| MCU | ATmega2560 (Arduino) | STM32F446 |
| Pin format | `ar##` aliases | Direct STM32 pins |
| Communication | FTDI USB-Serial | Native USB |
| Voltage reference | 5V ADC | 3.3V ADC |
## Calibration Checklist
After wiring, perform these calibrations:
- [ ] Verify motor directions (invert DIR pins if needed)
- [ ] Check endstop triggering (`QUERY_ENDSTOPS`)
- [ ] Verify thermistor readings at room temperature
- [ ] PID tune extruders: `PID_EXTRUDER` / `PID_EXTRUDER1`
- [ ] PID tune bed: `PID_BED`
- [ ] PID tune chamber: `PID_CHAMBER`
- [ ] Calibrate Z endstop: `Z_ENDSTOP_CALIBRATE`
- [ ] Run bed mesh: `BED_MESH_CALIBRATE`
- [ ] Verify IDEX tool changes: `T0` / `T1`
## Useful Commands
```gcode
T0 # Switch to extruder 0
T1 # Switch to extruder 1
CALIBRATE_M2 # Full calibration routine
PID_EXTRUDER TEMP=250 # PID tune extruder at 250°C
PID_BED TEMP=110 # PID tune bed at 110°C
LOAD_FILAMENT # Load filament
UNLOAD_FILAMENT # Unload filament
```
## Links
- [Klipper Documentation](https://www.klipper3d.org/)
- [BTT Octopus Pro GitHub](https://github.com/bigtreetech/BIGTREETECH-OCTOPUS-Pro)
- [Klipper Config Reference](https://www.klipper3d.org/Config_Reference.html)
- [IDEX Configuration](https://www.klipper3d.org/Config_Reference.html#dual_carriage)

Binary file not shown.

Binary file not shown.

BIN
docs/BTT_Octopus_pro_EN.pdf Normal file

Binary file not shown.

View File

@@ -0,0 +1,79 @@
# Azteeg X3 → Octopus Pro Swap Guide
**Do NOT install M0DIAG-M7DIAG jumpers**
---
## MOTORS (left to right on Octopus)
| Motor | Axis | Step | Dir | Enable |
|-------|------|------|-----|--------|
| MOTOR0 | X (T0) | PF13 | PF12 | PF14 |
| MOTOR1 | Y (left) | PG0 | PG1 | PF15 |
| MOTOR2 | Z (left) | PF11 | PG3 | PG5 |
| MOTOR3 | E0 (T0) | PG4 | PC1 | PA0 |
| MOTOR4 | E1 (T1) | PF9 | PF10 | PG2 |
| MOTOR5 | X2 (T1) | PC13 | PF0 | PF1 |
| MOTOR6 | Y1 (right) | PE2 | PE3 | PD4 |
| MOTOR7 | Z1 (right) | PE6 | PA14 | PE0 |
---
## ENDSTOPS
| Wire from Azteeg | → | Octopus Pin |
|------------------|---|-------------|
| X min endstop | → | PG6 |
| X2 endstop | → | PG9 |
| Y min endstop | → | PG10 |
| Y1 endstop | → | PG11 |
| Z min endstop | → | PG12 |
| Z1 endstop | → | PG13 |
---
## THERMISTORS
| Wire from Azteeg | → | Octopus Pin |
|------------------|---|-------------|
| Extruder 0 thermistor | → | PF4 |
| Extruder 1 thermistor | → | PF5 |
| Chamber thermistor | → | PF6 |
| Bed thermistor | → | PF3 |
---
## HEATERS
| Wire from Azteeg | Azteeg Pin | → | Octopus Pin |
|------------------|------------|---|-------------|
| Hotend 0 heater | ar10 | → | PA2 (HE0) |
| Hotend 1 heater | ar9 | → | PA3 (HE1) |
| Chamber heater | ar4 | → | PB10 (HE2) |
| Bed heater | ar8 | → | PA1 (HB) |
---
## FANS
| Wire from Azteeg | → | Octopus Pin |
|------------------|---|-------------|
| Enclosure fan | → | PD12 |
---
## PROBE
| Wire from Azteeg | → | Octopus Pin |
|------------------|---|-------------|
| Probe signal | → | PG15 |
---
## POWER
| Wire from Azteeg | → | Octopus |
|------------------|---|---------|
| 24V + | → | VIN + |
| 24V - | → | VIN - |
| USB to Pi | → | USB-C |

368
docs/octopus-pro-wiring.svg Normal file
View File

@@ -0,0 +1,368 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1200 900" width="1200" height="900">
<defs>
<style>
.board { fill: #1a1a2e; stroke: #4a4a6a; stroke-width: 3; }
.header { fill: #2d2d44; stroke: #6a6a8a; stroke-width: 1; }
.header-motor { fill: #3d5a3d; stroke: #5a8a5a; stroke-width: 1; }
.header-heater { fill: #5a3d3d; stroke: #8a5a5a; stroke-width: 1; }
.header-therm { fill: #3d3d5a; stroke: #5a5a8a; stroke-width: 1; }
.header-fan { fill: #3d5a5a; stroke: #5a8a8a; stroke-width: 1; }
.header-endstop { fill: #5a5a3d; stroke: #8a8a5a; stroke-width: 1; }
.header-power { fill: #5a3d5a; stroke: #8a5a8a; stroke-width: 1; }
.label { font-family: monospace; font-size: 11px; fill: #ffffff; }
.label-small { font-family: monospace; font-size: 9px; fill: #cccccc; }
.label-title { font-family: Arial, sans-serif; font-size: 14px; fill: #ffffff; font-weight: bold; }
.label-header { font-family: Arial, sans-serif; font-size: 20px; fill: #ffffff; font-weight: bold; }
.wire { stroke-width: 2; fill: none; }
.wire-step { stroke: #ff6b6b; }
.wire-dir { stroke: #4ecdc4; }
.wire-en { stroke: #ffe66d; }
.wire-gnd { stroke: #888888; }
.wire-signal { stroke: #95e1d3; }
.wire-power { stroke: #ff8c42; }
.driver-box { fill: #2a2a3a; stroke: #5a5a7a; stroke-width: 2; rx: 5; }
.connector { fill: #4a4a6a; stroke: #7a7a9a; stroke-width: 1; }
.pin { fill: #gold; stroke: #aa8800; stroke-width: 0.5; }
.note { font-family: Arial, sans-serif; font-size: 10px; fill: #aaaaaa; }
</style>
</defs>
<!-- Background -->
<rect width="1200" height="900" fill="#0d0d1a"/>
<!-- Title -->
<text x="600" y="35" text-anchor="middle" class="label-header">AON3D M2+ Wiring Diagram - BTT Octopus Pro v1.0.1</text>
<text x="600" y="55" text-anchor="middle" class="note">External DM542T Stepper Drivers Configuration</text>
<!-- Octopus Pro Board -->
<rect x="50" y="80" width="400" height="700" class="board" rx="10"/>
<text x="250" y="110" text-anchor="middle" class="label-title">BTT OCTOPUS PRO v1.0.1</text>
<!-- Motor Headers -->
<g id="motor-headers">
<text x="70" y="145" class="label-title">MOTOR OUTPUTS</text>
<!-- MOTOR0 -->
<rect x="70" y="155" width="80" height="35" class="header-motor" rx="3"/>
<text x="110" y="175" text-anchor="middle" class="label">MOTOR0</text>
<text x="110" y="185" text-anchor="middle" class="label-small">X Axis</text>
<!-- MOTOR1 -->
<rect x="160" y="155" width="80" height="35" class="header-motor" rx="3"/>
<text x="200" y="175" text-anchor="middle" class="label">MOTOR1</text>
<text x="200" y="185" text-anchor="middle" class="label-small">X2 (IDEX)</text>
<!-- MOTOR2 -->
<rect x="250" y="155" width="80" height="35" class="header-motor" rx="3"/>
<text x="290" y="175" text-anchor="middle" class="label">MOTOR2</text>
<text x="290" y="185" text-anchor="middle" class="label-small">Y Axis</text>
<!-- MOTOR3 -->
<rect x="340" y="155" width="80" height="35" class="header-motor" rx="3"/>
<text x="380" y="175" text-anchor="middle" class="label">MOTOR3</text>
<text x="380" y="185" text-anchor="middle" class="label-small">Y1 Axis</text>
<!-- MOTOR4 -->
<rect x="70" y="200" width="80" height="35" class="header-motor" rx="3"/>
<text x="110" y="220" text-anchor="middle" class="label">MOTOR4</text>
<text x="110" y="230" text-anchor="middle" class="label-small">Z Axis</text>
<!-- MOTOR5 -->
<rect x="160" y="200" width="80" height="35" class="header-motor" rx="3"/>
<text x="200" y="220" text-anchor="middle" class="label">MOTOR5</text>
<text x="200" y="230" text-anchor="middle" class="label-small">Z1 Axis</text>
<!-- MOTOR6 -->
<rect x="250" y="200" width="80" height="35" class="header-motor" rx="3"/>
<text x="290" y="220" text-anchor="middle" class="label">MOTOR6</text>
<text x="290" y="230" text-anchor="middle" class="label-small">Extruder 0</text>
<!-- MOTOR7 -->
<rect x="340" y="200" width="80" height="35" class="header-motor" rx="3"/>
<text x="380" y="220" text-anchor="middle" class="label">MOTOR7</text>
<text x="380" y="230" text-anchor="middle" class="label-small">Extruder 1</text>
</g>
<!-- Endstop Headers -->
<g id="endstop-headers">
<text x="70" y="265" class="label-title">ENDSTOPS (DIAG)</text>
<rect x="70" y="275" width="55" height="30" class="header-endstop" rx="3"/>
<text x="97" y="293" text-anchor="middle" class="label-small">DIAG0</text>
<text x="97" y="302" text-anchor="middle" class="label-small">X-min</text>
<rect x="130" y="275" width="55" height="30" class="header-endstop" rx="3"/>
<text x="157" y="293" text-anchor="middle" class="label-small">DIAG1</text>
<text x="157" y="302" text-anchor="middle" class="label-small">X2</text>
<rect x="190" y="275" width="55" height="30" class="header-endstop" rx="3"/>
<text x="217" y="293" text-anchor="middle" class="label-small">DIAG2</text>
<text x="217" y="302" text-anchor="middle" class="label-small">Y-min</text>
<rect x="250" y="275" width="55" height="30" class="header-endstop" rx="3"/>
<text x="277" y="293" text-anchor="middle" class="label-small">DIAG3</text>
<text x="277" y="302" text-anchor="middle" class="label-small">Y1</text>
<rect x="310" y="275" width="55" height="30" class="header-endstop" rx="3"/>
<text x="337" y="293" text-anchor="middle" class="label-small">DIAG4</text>
<text x="337" y="302" text-anchor="middle" class="label-small">Z-min</text>
<rect x="370" y="275" width="55" height="30" class="header-endstop" rx="3"/>
<text x="397" y="293" text-anchor="middle" class="label-small">DIAG5</text>
<text x="397" y="302" text-anchor="middle" class="label-small">Z1</text>
</g>
<!-- Thermistor Headers -->
<g id="thermistor-headers">
<text x="70" y="340" class="label-title">THERMISTORS</text>
<rect x="70" y="350" width="70" height="35" class="header-therm" rx="3"/>
<text x="105" y="370" text-anchor="middle" class="label">T0</text>
<text x="105" y="380" text-anchor="middle" class="label-small">Extruder 0</text>
<rect x="150" y="350" width="70" height="35" class="header-therm" rx="3"/>
<text x="185" y="370" text-anchor="middle" class="label">T1</text>
<text x="185" y="380" text-anchor="middle" class="label-small">Extruder 1</text>
<rect x="230" y="350" width="70" height="35" class="header-therm" rx="3"/>
<text x="265" y="370" text-anchor="middle" class="label">T2</text>
<text x="265" y="380" text-anchor="middle" class="label-small">Chamber</text>
<rect x="310" y="350" width="70" height="35" class="header-therm" rx="3"/>
<text x="345" y="370" text-anchor="middle" class="label">TB</text>
<text x="345" y="380" text-anchor="middle" class="label-small">Bed</text>
</g>
<!-- Heater Headers -->
<g id="heater-headers">
<text x="70" y="420" class="label-title">HEATERS</text>
<rect x="70" y="430" width="70" height="35" class="header-heater" rx="3"/>
<text x="105" y="450" text-anchor="middle" class="label">HE0</text>
<text x="105" y="460" text-anchor="middle" class="label-small">Hotend 0</text>
<rect x="150" y="430" width="70" height="35" class="header-heater" rx="3"/>
<text x="185" y="450" text-anchor="middle" class="label">HE1</text>
<text x="185" y="460" text-anchor="middle" class="label-small">Hotend 1</text>
<rect x="230" y="430" width="70" height="35" class="header-heater" rx="3"/>
<text x="265" y="450" text-anchor="middle" class="label">HE2</text>
<text x="265" y="460" text-anchor="middle" class="label-small">Chamber</text>
<rect x="310" y="430" width="80" height="35" class="header-heater" rx="3"/>
<text x="350" y="450" text-anchor="middle" class="label">HB</text>
<text x="350" y="460" text-anchor="middle" class="label-small">Bed (10A)</text>
</g>
<!-- Fan Headers -->
<g id="fan-headers">
<text x="70" y="500" class="label-title">FANS</text>
<rect x="70" y="510" width="50" height="30" class="header-fan" rx="3"/>
<text x="95" y="528" text-anchor="middle" class="label-small">FAN0</text>
<rect x="125" y="510" width="50" height="30" class="header-fan" rx="3"/>
<text x="150" y="528" text-anchor="middle" class="label-small">FAN1</text>
<rect x="180" y="510" width="50" height="30" class="header-fan" rx="3"/>
<text x="205" y="528" text-anchor="middle" class="label">FAN2</text>
<rect x="235" y="510" width="50" height="30" class="header-fan" rx="3"/>
<text x="260" y="528" text-anchor="middle" class="label-small">FAN3</text>
<rect x="290" y="510" width="50" height="30" class="header-fan" rx="3"/>
<text x="315" y="528" text-anchor="middle" class="label-small">FAN4</text>
<text x="205" y="555" text-anchor="middle" class="note">FAN2 = Enclosure Fan</text>
</g>
<!-- Probe Header -->
<g id="probe-header">
<text x="70" y="585" class="label-title">PROBE</text>
<rect x="70" y="595" width="80" height="35" class="header-endstop" rx="3"/>
<text x="110" y="615" text-anchor="middle" class="label">PROBE</text>
<text x="110" y="625" text-anchor="middle" class="label-small">PG15</text>
</g>
<!-- Power Header -->
<g id="power-header">
<text x="70" y="660" class="label-title">POWER</text>
<rect x="70" y="670" width="100" height="40" class="header-power" rx="3"/>
<text x="120" y="693" text-anchor="middle" class="label">24V IN</text>
<rect x="180" y="670" width="80" height="40" class="header" rx="3"/>
<text x="220" y="693" text-anchor="middle" class="label">USB-C</text>
</g>
<!-- Pin Reference -->
<g id="pin-reference">
<text x="70" y="740" class="label-title">PIN REFERENCE</text>
<text x="70" y="758" class="label-small">MOTOR0: STEP=PF13, DIR=PF12, EN=PF14</text>
<text x="70" y="770" class="label-small">MOTOR1: STEP=PG0, DIR=PG1, EN=PF15</text>
<text x="70" y="782" class="label-small">MOTOR2: STEP=PF11, DIR=PG3, EN=PG5</text>
<text x="70" y="794" class="label-small">MOTOR3: STEP=PG4, DIR=PC1, EN=PA0</text>
<text x="250" y="758" class="label-small">MOTOR4: STEP=PF9, DIR=PF10, EN=PG2</text>
<text x="250" y="770" class="label-small">MOTOR5: STEP=PC13, DIR=PF0, EN=PF1</text>
<text x="250" y="782" class="label-small">MOTOR6: STEP=PE2, DIR=PE3, EN=PD4</text>
<text x="250" y="794" class="label-small">MOTOR7: STEP=PE6, DIR=PA14, EN=PE0</text>
</g>
<!-- DM542T Drivers (right side) -->
<g id="dm542t-drivers">
<text x="700" y="90" text-anchor="middle" class="label-title">EXTERNAL DM542T DRIVERS (x8)</text>
<!-- Driver template shown for clarity -->
<rect x="520" y="110" width="150" height="180" class="driver-box"/>
<text x="595" y="135" text-anchor="middle" class="label">DM542T</text>
<text x="595" y="150" text-anchor="middle" class="label-small">Driver Template</text>
<!-- Input side -->
<text x="540" y="175" class="label-small">INPUTS:</text>
<text x="540" y="190" class="label-small">PUL+ ← STEP</text>
<text x="540" y="202" class="label-small">PUL- ← GND</text>
<text x="540" y="214" class="label-small">DIR+ ← DIR</text>
<text x="540" y="226" class="label-small">DIR- ← GND</text>
<text x="540" y="238" class="label-small">ENA+ ← EN</text>
<text x="540" y="250" class="label-small">ENA- ← GND</text>
<!-- Output side -->
<text x="540" y="270" class="label-small">OUTPUTS: A+,A-,B+,B-</text>
<text x="540" y="282" class="label-small">POWER: V+, V-</text>
<!-- Connection diagram -->
<text x="700" y="130" class="label-title">CONNECTION PATTERN</text>
<rect x="700" y="145" width="180" height="145" class="driver-box"/>
<!-- From Octopus -->
<text x="715" y="165" class="label-small" fill="#ff6b6b">STEP (pin 2) ──► PUL+</text>
<text x="715" y="180" class="label-small" fill="#4ecdc4">DIR (pin 3) ──► DIR+</text>
<text x="715" y="195" class="label-small" fill="#ffe66d">EN (pin 4) ──► ENA+</text>
<text x="715" y="210" class="label-small" fill="#888888">GND (pin 1) ──► PUL-</text>
<text x="715" y="225" class="label-small" fill="#888888"> ├──► DIR-</text>
<text x="715" y="240" class="label-small" fill="#888888"> └──► ENA-</text>
<text x="715" y="265" class="label-small">To Motor: A+, A-, B+, B-</text>
<text x="715" y="280" class="label-small">Power: 24-48V DC</text>
</g>
<!-- Driver assignments table -->
<g id="driver-table">
<text x="900" y="90" text-anchor="middle" class="label-title">DRIVER ASSIGNMENTS</text>
<rect x="890" y="100" width="280" height="200" fill="#1a1a2e" stroke="#4a4a6a" rx="5"/>
<text x="910" y="125" class="label-small">OCTOPUS DRIVER MOTOR</text>
<text x="910" y="140" class="label-small">────────────────────────────</text>
<text x="910" y="155" class="label-small">MOTOR0 → DM542T #1 → X</text>
<text x="910" y="170" class="label-small">MOTOR1 → DM542T #2 → X2 (IDEX)</text>
<text x="910" y="185" class="label-small">MOTOR2 → DM542T #3 → Y</text>
<text x="910" y="200" class="label-small">MOTOR3 → DM542T #4 → Y1</text>
<text x="910" y="215" class="label-small">MOTOR4 → DM542T #5 → Z</text>
<text x="910" y="230" class="label-small">MOTOR5 → DM542T #6 → Z1</text>
<text x="910" y="245" class="label-small">MOTOR6 → DM542T #7 → E0</text>
<text x="910" y="260" class="label-small">MOTOR7 → DM542T #8 → E1</text>
<text x="910" y="290" class="label-small">Total: 8 motor channels</text>
</g>
<!-- Wiring color legend -->
<g id="legend">
<text x="520" y="330" class="label-title">WIRE COLOR LEGEND</text>
<rect x="520" y="340" width="200" height="100" fill="#1a1a2e" stroke="#4a4a6a" rx="5"/>
<line x1="535" y1="360" x2="575" y2="360" class="wire wire-step"/>
<text x="585" y="364" class="label-small">STEP signal</text>
<line x1="535" y1="380" x2="575" y2="380" class="wire wire-dir"/>
<text x="585" y="384" class="label-small">DIR signal</text>
<line x1="535" y1="400" x2="575" y2="400" class="wire wire-en"/>
<text x="585" y="404" class="label-small">ENABLE signal</text>
<line x1="535" y1="420" x2="575" y2="420" class="wire wire-gnd"/>
<text x="585" y="424" class="label-small">GND (common)</text>
</g>
<!-- Heater/Sensor wiring -->
<g id="heater-wiring">
<text x="520" y="470" class="label-title">HEATER &amp; SENSOR WIRING</text>
<rect x="520" y="480" width="350" height="150" fill="#1a1a2e" stroke="#4a4a6a" rx="5"/>
<text x="535" y="505" class="label-small">THERMISTORS (2-wire, not polarized):</text>
<text x="545" y="520" class="label-small">T0 (PF4) ← Extruder 0 thermistor</text>
<text x="545" y="535" class="label-small">T1 (PF5) ← Extruder 1 thermistor</text>
<text x="545" y="550" class="label-small">T2 (PF6) ← Chamber thermistor</text>
<text x="545" y="565" class="label-small">TB (PF3) ← Bed thermistor</text>
<text x="535" y="590" class="label-small">HEATERS:</text>
<text x="545" y="605" class="label-small">HE0 (PA2) → Hotend 0 HE2 (PB10) → Chamber</text>
<text x="545" y="620" class="label-small">HE1 (PA3) → Hotend 1 HB (PA1) → Bed</text>
</g>
<!-- Endstop wiring -->
<g id="endstop-wiring">
<text x="520" y="660" class="label-title">ENDSTOP WIRING</text>
<rect x="520" y="670" width="350" height="110" fill="#1a1a2e" stroke="#4a4a6a" rx="5"/>
<text x="535" y="695" class="label-small">ENDSTOP PIN ASSIGNMENTS:</text>
<text x="545" y="710" class="label-small">DIAG0 (PG6) → X min DIAG3 (PG11) → Y1</text>
<text x="545" y="725" class="label-small">DIAG1 (PG9) → X2/IDEX DIAG4 (PG12) → Z min</text>
<text x="545" y="740" class="label-small">DIAG2 (PG10) → Y min DIAG5 (PG13) → Z1</text>
<text x="545" y="760" class="label-small">PROBE (PG15) → Bed probe (with pull-up: ^PG15)</text>
</g>
<!-- DIP Switch settings -->
<g id="dip-switches">
<text x="900" y="330" class="label-title">DM542T DIP SWITCHES</text>
<rect x="890" y="340" width="280" height="130" fill="#1a1a2e" stroke="#4a4a6a" rx="5"/>
<text x="910" y="365" class="label-small">MICROSTEPPING (SW5-SW8):</text>
<text x="910" y="385" class="label-small">X,X2,Y,Y1,E0,E1: 16 µsteps</text>
<text x="910" y="400" class="label-small"> → SW5=OFF, SW6=ON, SW7=ON, SW8=OFF</text>
<text x="910" y="420" class="label-small">Z, Z1: 4 µsteps</text>
<text x="910" y="435" class="label-small"> → SW5=ON, SW6=ON, SW7=OFF, SW8=OFF</text>
<text x="910" y="460" class="label-small">CURRENT (SW1-SW3): Set per motor specs</text>
</g>
<!-- System diagram -->
<g id="system-overview">
<text x="1040" y="510" text-anchor="middle" class="label-title">SYSTEM OVERVIEW</text>
<!-- Pi -->
<rect x="970" y="530" width="140" height="50" fill="#3d5a3d" stroke="#5a8a5a" rx="5"/>
<text x="1040" y="555" text-anchor="middle" class="label">Raspberry Pi</text>
<text x="1040" y="570" text-anchor="middle" class="label-small">FluiddPi</text>
<!-- Arrow -->
<text x="1040" y="600" text-anchor="middle" class="label-small">USB ↓</text>
<!-- Octopus -->
<rect x="970" y="610" width="140" height="50" fill="#3d3d5a" stroke="#5a5a8a" rx="5"/>
<text x="1040" y="635" text-anchor="middle" class="label">Octopus Pro</text>
<text x="1040" y="650" text-anchor="middle" class="label-small">Klipper MCU</text>
<!-- Arrow -->
<text x="1040" y="680" text-anchor="middle" class="label-small">Step/Dir/En ↓</text>
<!-- Drivers -->
<rect x="970" y="690" width="140" height="50" fill="#5a3d3d" stroke="#8a5a5a" rx="5"/>
<text x="1040" y="715" text-anchor="middle" class="label">DM542T x8</text>
<text x="1040" y="730" text-anchor="middle" class="label-small">External Drivers</text>
<!-- Arrow -->
<text x="1040" y="760" text-anchor="middle" class="label-small">4-wire ↓</text>
<!-- Motors -->
<rect x="970" y="770" width="140" height="50" fill="#5a5a3d" stroke="#8a8a5a" rx="5"/>
<text x="1040" y="795" text-anchor="middle" class="label">Stepper Motors</text>
<text x="1040" y="810" text-anchor="middle" class="label-small">NEMA 17/23</text>
</g>
<!-- Notes -->
<text x="520" y="810" class="note">Note: All GND connections can share a common ground wire daisy-chained between drivers.</text>
<text x="520" y="825" class="note">Ensure adequate wire gauge for motor power (14-16 AWG for power, 22-24 AWG for signals).</text>
<!-- Footer -->
<text x="600" y="880" text-anchor="middle" class="label-small">AON3D M2+ BTT Octopus Pro Conversion - Wiring Diagram v1.0</text>
</svg>

After

Width:  |  Height:  |  Size: 19 KiB

142
docs/swap-checklist.md Normal file
View File

@@ -0,0 +1,142 @@
# AON3D M2+ Controller Swap Checklist
## Azteeg X3 → BTT Octopus Pro v1.0.1
Since your DM542T drivers are already wired to the motors, you only need to move the **signal wires** from the Azteeg to the Octopus Pro.
---
## BEFORE YOU START
- [ ] Power OFF everything
- [ ] Take photos of current Azteeg wiring for reference
- [ ] Label wires if not already labeled
---
## 1. MOTOR SIGNAL WIRES (Step/Dir/Enable from DM542T)
Move the signal cables from each DM542T driver to the Octopus Pro motor headers.
**Wiring per DM542T → Octopus:**
```
DM542T Octopus MOTOR Header
────── ────────────────────
PUL+ ─────────► Pin 2 (STEP)
DIR+ ─────────► Pin 3 (DIR)
ENA+ ─────────► Pin 4 (EN)
PUL-/DIR-/ENA- ► Pin 1 (GND) - can share one GND wire
```
| DM542T Driver | From Azteeg | To Octopus Header |
|---------------|-------------|-------------------|
| X motor | Azteeg X | **MOTOR0** | ☐ |
| X2 motor (IDEX) | Azteeg ? | **MOTOR1** | ☐ |
| Y motor | Azteeg Y | **MOTOR2** | ☐ |
| Y1 motor | Azteeg ? | **MOTOR3** | ☐ |
| Z motor | Azteeg Z | **MOTOR4** | ☐ |
| Z1 motor | Azteeg ? | **MOTOR5** | ☐ |
| Extruder 0 | Azteeg E0 | **MOTOR6** | ☐ |
| Extruder 1 | Azteeg E1 | **MOTOR7** | ☐ |
---
## 2. ENDSTOPS
Move endstop connectors from Azteeg to Octopus DIAG headers.
| Endstop | To Octopus Header | Done |
|---------|-------------------|------|
| X min | **DIAG0** (PG6) | ☐ |
| X2 / IDEX | **DIAG1** (PG9) | ☐ |
| Y min | **DIAG2** (PG10) | ☐ |
| Y1 (if used) | **DIAG3** (PG11) | ☐ |
| Z min | **DIAG4** (PG12) | ☐ |
| Z1 (if used) | **DIAG5** (PG13) | ☐ |
---
## 3. THERMISTORS
Move thermistor connectors from Azteeg to Octopus.
| Thermistor | To Octopus Header | Done |
|------------|-------------------|------|
| Extruder 0 | **T0** (PF4) | ☐ |
| Extruder 1 | **T1** (PF5) | ☐ |
| Chamber | **T2** (PF6) | ☐ |
| Bed | **TB** (PF3) | ☐ |
---
## 4. HEATERS
Move heater wires from Azteeg to Octopus.
| Heater | To Octopus Header | Done |
|--------|-------------------|------|
| Hotend 0 | **HE0** (PA2) | ☐ |
| Hotend 1 | **HE1** (PA3) | ☐ |
| Chamber | **HE2** (PB10) | ☐ |
| Bed | **HB** (PA1) | ☐ |
---
## 5. FANS
| Fan | To Octopus Header | Done |
|-----|-------------------|------|
| Enclosure fan | **FAN2** (PD12) | ☐ |
| Others (if any) | FAN0-5 as needed | ☐ |
---
## 6. PROBE
| Component | To Octopus Header | Done |
|-----------|-------------------|------|
| Probe | **PROBE** (PG15) | ☐ |
---
## 7. POWER & COMMUNICATION
| Connection | Done |
|------------|------|
| 24V power to Octopus VIN (+/-) | ☐ |
| USB cable to Raspberry Pi | ☐ |
---
## 8. FINAL CHECKS
- [ ] All connections secure
- [ ] No loose wires
- [ ] 24V polarity correct
- [ ] USB connected to Pi
---
## 9. POWER ON SEQUENCE
1. [ ] Power on Raspberry Pi first
2. [ ] SSH in: `ssh pi@192.168.86.20`
3. [ ] Power on 24V to printer
4. [ ] Check serial: `ls /dev/serial/by-id/*`
5. [ ] Copy the serial ID
6. [ ] Update printer.cfg with serial ID
7. [ ] Copy configs to Pi
8. [ ] Restart Klipper
---
## QUICK PIN REFERENCE
```
MOTOR0 → X MOTOR4 → Z HE0 → Hotend 0 T0 → Extruder 0 temp
MOTOR1 → X2 MOTOR5 → Z1 HE1 → Hotend 1 T1 → Extruder 1 temp
MOTOR2 → Y MOTOR6 → E0 HE2 → Chamber T2 → Chamber temp
MOTOR3 → Y1 MOTOR7 → E1 HB → Bed TB → Bed temp
DIAG0 → X min DIAG2 → Y min DIAG4 → Z min PROBE → Bed probe
DIAG1 → X2 DIAG3 → Y1 DIAG5 → Z1 FAN2 → Enclosure
```

336
docs/wiring-checklist.md Normal file
View File

@@ -0,0 +1,336 @@
# AON3D M2+ Wiring Checklist
## BTT Octopus Pro v1.0.1
Print this checklist and mark each connection as you complete it.
---
## PRE-WIRING CHECKS
- [ ] Power supply OFF
- [ ] All components laid out and identified
- [ ] Wire labels/markers ready
- [ ] Multimeter available for testing
- [ ] Correct wire gauges prepared:
- [ ] 14-16 AWG for power
- [ ] 22-24 AWG for signals
---
## 1. POWER CONNECTIONS
### Main Power
| Connection | From | To | Done |
|------------|------|-----|------|
| 24V+ | PSU +24V | Octopus VIN+ | ☐ |
| 24V- | PSU GND | Octopus VIN- | ☐ |
### DM542T Driver Power (all 8 drivers)
| Driver | V+ Connected | V- Connected |
|--------|--------------|--------------|
| DM542T #1 (X) | ☐ | ☐ |
| DM542T #2 (X2) | ☐ | ☐ |
| DM542T #3 (Y) | ☐ | ☐ |
| DM542T #4 (Y1) | ☐ | ☐ |
| DM542T #5 (Z) | ☐ | ☐ |
| DM542T #6 (Z1) | ☐ | ☐ |
| DM542T #7 (E0) | ☐ | ☐ |
| DM542T #8 (E1) | ☐ | ☐ |
---
## 2. MOTOR SIGNAL CONNECTIONS
### MOTOR0 → DM542T #1 → X Axis Motor
| Signal | Octopus Pin | DM542T Terminal | Done |
|--------|-------------|-----------------|------|
| STEP | PF13 (pin 2) | PUL+ | ☐ |
| DIR | PF12 (pin 3) | DIR+ | ☐ |
| EN | PF14 (pin 4) | ENA+ | ☐ |
| GND | GND (pin 1) | PUL-, DIR-, ENA- | ☐ |
Motor wires to DM542T:
- [ ] A+ connected
- [ ] A- connected
- [ ] B+ connected
- [ ] B- connected
---
### MOTOR1 → DM542T #2 → X2 (Dual Carriage) Motor
| Signal | Octopus Pin | DM542T Terminal | Done |
|--------|-------------|-----------------|------|
| STEP | PG0 (pin 2) | PUL+ | ☐ |
| DIR | PG1 (pin 3) | DIR+ | ☐ |
| EN | PF15 (pin 4) | ENA+ | ☐ |
| GND | GND (pin 1) | PUL-, DIR-, ENA- | ☐ |
Motor wires to DM542T:
- [ ] A+ connected
- [ ] A- connected
- [ ] B+ connected
- [ ] B- connected
---
### MOTOR2 → DM542T #3 → Y Axis Motor
| Signal | Octopus Pin | DM542T Terminal | Done |
|--------|-------------|-----------------|------|
| STEP | PF11 (pin 2) | PUL+ | ☐ |
| DIR | PG3 (pin 3) | DIR+ | ☐ |
| EN | PG5 (pin 4) | ENA+ | ☐ |
| GND | GND (pin 1) | PUL-, DIR-, ENA- | ☐ |
Motor wires to DM542T:
- [ ] A+ connected
- [ ] A- connected
- [ ] B+ connected
- [ ] B- connected
---
### MOTOR3 → DM542T #4 → Y1 Axis Motor
| Signal | Octopus Pin | DM542T Terminal | Done |
|--------|-------------|-----------------|------|
| STEP | PG4 (pin 2) | PUL+ | ☐ |
| DIR | PC1 (pin 3) | DIR+ | ☐ |
| EN | PA0 (pin 4) | ENA+ | ☐ |
| GND | GND (pin 1) | PUL-, DIR-, ENA- | ☐ |
Motor wires to DM542T:
- [ ] A+ connected
- [ ] A- connected
- [ ] B+ connected
- [ ] B- connected
---
### MOTOR4 → DM542T #5 → Z Axis Motor
| Signal | Octopus Pin | DM542T Terminal | Done |
|--------|-------------|-----------------|------|
| STEP | PF9 (pin 2) | PUL+ | ☐ |
| DIR | PF10 (pin 3) | DIR+ | ☐ |
| EN | PG2 (pin 4) | ENA+ | ☐ |
| GND | GND (pin 1) | PUL-, DIR-, ENA- | ☐ |
Motor wires to DM542T:
- [ ] A+ connected
- [ ] A- connected
- [ ] B+ connected
- [ ] B- connected
---
### MOTOR5 → DM542T #6 → Z1 Axis Motor
| Signal | Octopus Pin | DM542T Terminal | Done |
|--------|-------------|-----------------|------|
| STEP | PC13 (pin 2) | PUL+ | ☐ |
| DIR | PF0 (pin 3) | DIR+ | ☐ |
| EN | PF1 (pin 4) | ENA+ | ☐ |
| GND | GND (pin 1) | PUL-, DIR-, ENA- | ☐ |
Motor wires to DM542T:
- [ ] A+ connected
- [ ] A- connected
- [ ] B+ connected
- [ ] B- connected
---
### MOTOR6 → DM542T #7 → Extruder 0 Motor
| Signal | Octopus Pin | DM542T Terminal | Done |
|--------|-------------|-----------------|------|
| STEP | PE2 (pin 2) | PUL+ | ☐ |
| DIR | PE3 (pin 3) | DIR+ | ☐ |
| EN | PD4 (pin 4) | ENA+ | ☐ |
| GND | GND (pin 1) | PUL-, DIR-, ENA- | ☐ |
Motor wires to DM542T:
- [ ] A+ connected
- [ ] A- connected
- [ ] B+ connected
- [ ] B- connected
---
### MOTOR7 → DM542T #8 → Extruder 1 Motor
| Signal | Octopus Pin | DM542T Terminal | Done |
|--------|-------------|-----------------|------|
| STEP | PE6 (pin 2) | PUL+ | ☐ |
| DIR | PA14 (pin 3) | DIR+ | ☐ |
| EN | PE0 (pin 4) | ENA+ | ☐ |
| GND | GND (pin 1) | PUL-, DIR-, ENA- | ☐ |
Motor wires to DM542T:
- [ ] A+ connected
- [ ] A- connected
- [ ] B+ connected
- [ ] B- connected
---
## 3. DM542T DIP SWITCH SETTINGS
| Driver | Axis | Microsteps | SW5 | SW6 | SW7 | SW8 | Set |
|--------|------|------------|-----|-----|-----|-----|-----|
| #1 | X | 16 | OFF | ON | ON | OFF | ☐ |
| #2 | X2 | 16 | OFF | ON | ON | OFF | ☐ |
| #3 | Y | 16 | OFF | ON | ON | OFF | ☐ |
| #4 | Y1 | 16 | OFF | ON | ON | OFF | ☐ |
| #5 | Z | 4 | ON | ON | OFF | OFF | ☐ |
| #6 | Z1 | 4 | ON | ON | OFF | OFF | ☐ |
| #7 | E0 | 16 | OFF | ON | ON | OFF | ☐ |
| #8 | E1 | 16 | OFF | ON | ON | OFF | ☐ |
Current settings (SW1-SW3): Set per your motor specifications
- [ ] All current settings configured
---
## 4. ENDSTOP CONNECTIONS
| Endstop | Octopus Header | Pin | Signal Wire | GND Wire |
|---------|----------------|-----|-------------|----------|
| X Min | DIAG0 | PG6 | ☐ | ☐ |
| X2 (IDEX) | DIAG1 | PG9 | ☐ | ☐ |
| Y Min | DIAG2 | PG10 | ☐ | ☐ |
| Y1 (opt) | DIAG3 | PG11 | ☐ | ☐ |
| Z Min | DIAG4 | PG12 | ☐ | ☐ |
| Z1 (opt) | DIAG5 | PG13 | ☐ | ☐ |
---
## 5. PROBE CONNECTION
| Component | Octopus Header | Connection | Done |
|-----------|----------------|------------|------|
| Probe Signal | PROBE | S pin | ☐ |
| Probe GND | PROBE | G pin | ☐ |
| Probe VCC (if needed) | PROBE | V pin | ☐ |
---
## 6. THERMISTOR CONNECTIONS
| Thermistor | Octopus Header | Pin | Wire 1 | Wire 2 |
|------------|----------------|-----|--------|--------|
| Extruder 0 | T0 | PF4 | ☐ | ☐ |
| Extruder 1 | T1 | PF5 | ☐ | ☐ |
| Chamber | T2 | PF6 | ☐ | ☐ |
| Bed | TB | PF3 | ☐ | ☐ |
---
## 7. HEATER CONNECTIONS
| Heater | Octopus Header | Pin | + Wire | - Wire |
|--------|----------------|-----|--------|--------|
| Hotend 0 | HE0 | PA2 | ☐ | ☐ |
| Hotend 1 | HE1 | PA3 | ☐ | ☐ |
| Chamber | HE2 | PB10 | ☐ | ☐ |
| Bed | HB | PA1 | ☐ | ☐ |
**Note for Bed**: If using SSR, connect SSR control to HB output
- [ ] SSR used (if applicable)
- [ ] SSR control wiring correct
- [ ] SSR load wiring correct
---
## 8. FAN CONNECTIONS
| Fan | Octopus Header | Pin | + Wire | - Wire |
|-----|----------------|-----|--------|--------|
| Enclosure Fan | FAN2 | PD12 | ☐ | ☐ |
| Part Cooling 0 (opt) | FAN0 | PA8 | ☐ | ☐ |
| Part Cooling 1 (opt) | FAN1 | PE5 | ☐ | ☐ |
| Hotend Fan 0 (opt) | FAN3 | PD13 | ☐ | ☐ |
| Hotend Fan 1 (opt) | FAN4 | PE4 | ☐ | ☐ |
---
## 9. COMMUNICATION
| Connection | Done |
|------------|------|
| USB cable from Octopus to Raspberry Pi | ☐ |
---
## 10. PRE-POWER-ON VERIFICATION
### Visual Inspection
- [ ] No exposed wire strands touching other terminals
- [ ] All screw terminals tight
- [ ] No pinched wires
- [ ] Polarity correct on all power connections
### Multimeter Checks
- [ ] No short between 24V+ and GND on Octopus
- [ ] No short between V+ and V- on any DM542T
- [ ] Continuity on all signal wires (disconnected from board)
---
## 11. FIRST POWER-ON SEQUENCE
### Step 1: Octopus Pro Only (no motor power)
- [ ] Connect USB to Pi
- [ ] Power on 24V supply to Octopus
- [ ] Octopus LEDs illuminate
- [ ] No smoke or burning smell
- [ ] Run `ls /dev/serial/by-id/*` on Pi - device appears
### Step 2: Flash Klipper Firmware
- [ ] Build Klipper for STM32F446
- [ ] Copy firmware.bin to SD card
- [ ] Flash Octopus Pro
- [ ] Verify serial device still present
### Step 3: Start Klipper
- [ ] Copy printer.cfg and macros.cfg to Pi
- [ ] Update serial port in printer.cfg
- [ ] Start/restart Klipper
- [ ] No errors in Klipper log
- [ ] Fluidd connects successfully
### Step 4: Test Without Motor Power
- [ ] `QUERY_ENDSTOPS` - all show correct state
- [ ] Temperature readings appear (room temp)
- [ ] No heater errors
### Step 5: Motor Power On
- [ ] Power on DM542T power supply
- [ ] All DM542T LEDs illuminate
- [ ] Test single axis movement at low speed
- [ ] Verify direction (invert DIR pin if wrong)
### Step 6: Full System Test
- [ ] All axes move correctly
- [ ] Both extruders work
- [ ] Homing works on all axes
- [ ] IDEX tool change (T0/T1) works
- [ ] Heaters respond (test at low temp first)
- [ ] Fans operate
---
## NOTES
_Use this space for any notes during wiring:_
```
```
---
## COMPLETION
- [ ] All connections verified
- [ ] System tested and operational
- [ ] Date completed: _______________
- [ ] Signed off by: _______________

534
docs/wiring-instructions.md Normal file
View File

@@ -0,0 +1,534 @@
# AON3D M2+ Wiring Instructions
## BTT Octopus Pro v1.0.1 with External DM542T Drivers
---
## Overview
This guide covers wiring your AON3D M2+ IDEX printer with:
- **Controller**: BTT Octopus Pro v1.0.1
- **Stepper Drivers**: External DM542T (8 units)
- **Host**: Raspberry Pi 4/5 running FluiddPi
### Total Connections Required
| Category | Count | Items |
|----------|-------|-------|
| Motor Drivers | 8 | X, X2, Y, Y1, Z, Z1, E0, E1 |
| Endstops | 4-6 | X-min, X-max, Y-min, (Y-max), Z-min, (Z-max) |
| Thermistors | 4 | Extruder 0, Extruder 1, Bed, Chamber |
| Heaters | 4 | Extruder 0, Extruder 1, Bed, Chamber |
| Fans | 1+ | Enclosure fan (+ optional part cooling) |
| Probe | 1 | Bed probe |
| Power | 2 | 24V main, USB to Pi |
---
## PART 1: Power Supply Connections
### 1.1 Main Power Input (24V DC)
Connect your 24V power supply to the Octopus Pro:
```
Power Supply Octopus Pro
============ ===========
+24V ─────────────────────► VIN (+)
GND ─────────────────────► VIN (-)
```
**Location**: Large screw terminals on the edge of the board labeled "POWER" or "VIN"
**Wire Gauge**: Use 14-16 AWG for main power
### 1.2 DM542T Driver Power
Each DM542T driver needs its own power connection (typically 24-48V DC):
```
Power Supply DM542T Driver
============ =============
+24V to +48V ─────────────► V+ (or VCC)
GND ──────────────────────► V- (or GND)
```
**Important**:
- All DM542T drivers can share the same power supply
- Use appropriately rated power supply (calculate total motor current)
- Typical: 48V power supply for better high-speed performance
---
## PART 2: Stepper Motor Connections (DM542T Drivers)
### 2.1 Understanding the Signal Flow
```
┌─────────────┐ Step/Dir/Enable ┌─────────────┐ 4-wire ┌─────────────┐
│ Octopus │ ───────────────────────►│ DM542T │───────────────►│ Stepper │
│ Pro │ (low current) │ Driver │ (high current)│ Motor │
└─────────────┘ └─────────────┘ └─────────────┘
```
### 2.2 Octopus Pro Motor Header Pinout
Each MOTOR header on the Octopus Pro has this pinout:
```
┌───┬───┬───┬───┐
│ 1 │ 2 │ 3 │ 4 │
└───┴───┴───┴───┘
│ │ │ │
│ │ │ └── EN (Enable)
│ │ └────── DIR (Direction)
│ └────────── STEP (Step pulse)
└────────────── GND (Ground)
```
### 2.3 Motor-to-Driver Assignments
| Octopus Header | Klipper Section | Function | STEP | DIR | EN |
|----------------|-----------------|----------|------|-----|-----|
| MOTOR0 | [stepper_x] | X Carriage 0 | PF13 | PF12 | PF14 |
| MOTOR1 | [dual_carriage] | X Carriage 1 (IDEX) | PG0 | PG1 | PF15 |
| MOTOR2 | [stepper_y] | Y Axis | PF11 | PG3 | PG5 |
| MOTOR3 | [stepper_y1] | Y1 Axis (2nd motor) | PG4 | PC1 | PA0 |
| MOTOR4 | [stepper_z] | Z Axis | PF9 | PF10 | PG2 |
| MOTOR5 | [stepper_z1] | Z1 Axis (2nd motor) | PC13 | PF0 | PF1 |
| MOTOR6 | [extruder] | Extruder 0 | PE2 | PE3 | PD4 |
| MOTOR7 | [extruder1] | Extruder 1 | PE6 | PA14 | PE0 |
### 2.4 Wiring Each DM542T Driver
For **EACH** of the 8 motor drivers, make these connections:
```
Octopus Pro MOTOR Header DM542T Driver
============================ =============
Pin 1 (GND) ──────────────────────► PUL- (Pulse negative)
├───► DIR- (Direction negative)
└───► ENA- (Enable negative)
Pin 2 (STEP) ─────────────────────► PUL+ (Pulse positive)
Pin 3 (DIR) ──────────────────────► DIR+ (Direction positive)
Pin 4 (EN) ───────────────────────► ENA+ (Enable positive)
```
**Visual Diagram**:
```
Octopus MOTOR0 DM542T #1 (X Axis)
┌─────────────┐ ┌─────────────────┐
│ GND ●──────┼────────┬───────────────►│ PUL- │
│ STEP ●──────┼────────┼───────────────►│ PUL+ │
│ DIR ●──────┼────────┼───────────────►│ DIR+ │
│ EN ●──────┼────────┼───────────────►│ ENA+ │
└─────────────┘ │ ┌┤ DIR- │
├───────────────►│ ENA- │
│ │ │
│ │ A+ ●───────────┼──► Motor Coil A+
│ │ A- ●───────────┼──► Motor Coil A-
│ │ B+ ●───────────┼──► Motor Coil B+
│ │ B- ●───────────┼──► Motor Coil B-
│ │ │
│ │ V+ ●───────────┼──► +24-48V
│ │ V- ●───────────┼──► GND (Power)
│ └─────────────────┘
└─── Common GND (can use single wire daisy-chained
or individual wires to each driver)
```
### 2.5 Repeat for All 8 Drivers
| # | Octopus Header | DM542T Label | Motor |
|---|----------------|--------------|-------|
| 1 | MOTOR0 | DM542T-X | X Carriage 0 |
| 2 | MOTOR1 | DM542T-X2 | X Carriage 1 |
| 3 | MOTOR2 | DM542T-Y | Y Motor |
| 4 | MOTOR3 | DM542T-Y1 | Y1 Motor |
| 5 | MOTOR4 | DM542T-Z | Z Motor |
| 6 | MOTOR5 | DM542T-Z1 | Z1 Motor |
| 7 | MOTOR6 | DM542T-E0 | Extruder 0 |
| 8 | MOTOR7 | DM542T-E1 | Extruder 1 |
### 2.6 DM542T DIP Switch Settings
Set the DIP switches on each DM542T to match the Klipper config:
**Microstepping** (SW5-SW8):
| Axis | Microsteps | SW5 | SW6 | SW7 | SW8 |
|------|------------|-----|-----|-----|-----|
| X, X2, Y, Y1 | 16 | OFF | ON | ON | OFF |
| Z, Z1 | 4 | ON | ON | OFF | OFF |
| E0, E1 | 16 | OFF | ON | ON | OFF |
**Current Settings** (SW1-SW3): Set according to your motor specs. Typical settings:
- NEMA 23 motors: 2.0-3.0A
- NEMA 17 extruders: 1.0-1.5A
---
## PART 3: Endstop Connections
### 3.1 Endstop Pinout on Octopus Pro
The DIAG/Endstop headers are 3-pin connectors:
```
┌───┬───┬───┐
│ S │ V │ G │
└───┴───┴───┘
│ │ │
│ │ └── GND (Ground)
│ └────── +5V (for powered sensors, optional)
└────────── Signal
```
### 3.2 Endstop Assignments
| Endstop | Function | Octopus Header | Pin | Config |
|---------|----------|----------------|-----|--------|
| X Min | Home position Carriage 0 | DIAG0 | PG6 | `endstop_pin: PG6` |
| X Max | Home position Carriage 1 | DIAG1 | PG9 | `endstop_pin: PG9` |
| Y Min | Y home position | DIAG2 | PG10 | `endstop_pin: PG10` |
| Y1 | Y1 endstop (optional) | DIAG3 | PG11 | `endstop_pin: PG11` |
| Z Min | Z home position | DIAG4 | PG12 | `endstop_pin: PG12` |
| Z1 | Z1 endstop (optional) | DIAG5 | PG13 | `endstop_pin: PG13` |
### 3.3 Wiring Mechanical Endstops
**Normally Open (NO) Switch** - most common:
```
Endstop Switch Octopus Pro DIAG Header
============== =======================
COM ──────────────────────► G (Ground)
NO ──────────────────────► S (Signal)
```
Config: `endstop_pin: PG6`
**Normally Closed (NC) Switch** - add `!` to invert:
```
Endstop Switch Octopus Pro DIAG Header
============== =======================
COM ──────────────────────► G (Ground)
NC ──────────────────────► S (Signal)
```
Config: `endstop_pin: !PG6`
### 3.4 Wiring Optical/Inductive Sensors (3-wire)
```
Sensor Octopus Pro DIAG Header
====== =======================
VCC (Brown/Red) ──────────► V (+5V)
GND (Blue/Black) ─────────► G (Ground)
Signal (Black/Yellow) ────► S (Signal)
```
---
## PART 4: Thermistor Connections
### 4.1 Thermistor Header Pinout
```
┌───┬───┐
│ T │ G │
└───┴───┘
│ │
│ └── GND (Ground)
└────── Thermistor Signal
```
### 4.2 Thermistor Assignments
| Sensor | Function | Octopus Header | Pin |
|--------|----------|----------------|-----|
| TH0 | Extruder 0 temperature | T0 | PF4 |
| TH1 | Extruder 1 temperature | T1 | PF5 |
| TH2 | Chamber temperature | T2 | PF6 |
| TB | Bed temperature | TB | PF3 |
### 4.3 Wiring Thermistors
Thermistors are not polarized - either wire can go to either terminal:
```
Thermistor (2-wire) Octopus Pro TH Header
=================== =====================
Wire 1 ───────────────────► T (Signal)
Wire 2 ───────────────────► G (Ground)
```
**Important**: Your M2 uses custom thermistors with voltage-based calibration. The config already includes the correct `adc_temperature` definitions.
---
## PART 5: Heater Connections
### 5.1 Heater Output Specifications
| Output | Function | Pin | Max Current | Connector |
|--------|----------|-----|-------------|-----------|
| HE0 | Hotend 0 | PA2 | 5A | Screw terminal |
| HE1 | Hotend 1 | PA3 | 5A | Screw terminal |
| HE2 | Chamber heater | PB10 | 5A | Screw terminal |
| HB | Heated bed | PA1 | 10A | Large screw terminal |
### 5.2 Wiring Hotend Heaters (HE0, HE1)
```
Heater Cartridge Octopus Pro HE0/HE1
================ ===================
Wire 1 ───────────────────► + (Positive terminal)
Wire 2 ───────────────────► - (Negative terminal)
```
**Note**: Standard heater cartridges are not polarized.
### 5.3 Wiring Chamber Heater (HE2)
Same as hotend heaters:
```
Chamber Heater Octopus Pro HE2
============== ===============
Wire 1 ───────────────────► +
Wire 2 ───────────────────► -
```
### 5.4 Wiring Heated Bed (HB)
**For beds drawing less than 10A** - connect directly:
```
Heated Bed Octopus Pro HB
========== ==============
Wire 1 ───────────────────► + (Positive)
Wire 2 ───────────────────► - (Negative)
```
**For high-power beds (>10A)** - use SSR (Solid State Relay):
```
Octopus Pro HB SSR Heated Bed
============== === ==========
+ ────────────────────────► DC+ (Control)
- ────────────────────────► DC- (Control)
AC/DC+ (Load) ────────► Bed +
AC/DC- (Load) ◄────────┤
Power Supply (+) ──────────────────────────────────┘
Power Supply (-) ─────────────────────────────────► Bed -
```
---
## PART 6: Fan Connections
### 6.1 Fan Header Pinout
```
┌───┬───┐
│ + │ - │
└───┴───┘
│ │
│ └── GND (Negative)
└────── +24V PWM (Positive, controlled)
```
### 6.2 Fan Assignments
| Fan | Function | Pin | Header |
|-----|----------|-----|--------|
| FAN0 | Part cooling 0 (optional) | PA8 | FAN0 |
| FAN1 | Part cooling 1 (optional) | PE5 | FAN1 |
| FAN2 | Enclosure/Chamber fan | PD12 | FAN2 |
| FAN3 | Hotend fan 0 (optional) | PD13 | FAN3 |
| FAN4 | Hotend fan 1 (optional) | PE4 | FAN4 |
### 6.3 Wiring Fans
```
Fan (2-wire) Octopus Pro FAN Header
============ ======================
+ (Red) ──────────────────► + (Positive/PWM)
- (Black) ────────────────► - (Ground)
```
**Enclosure Fan** (configured in Klipper):
- Connected to FAN2
- Controlled by chamber heater temperature
---
## PART 7: Probe Connection
### 7.1 Probe Wiring
Your probe connects to the dedicated PROBE header:
**For mechanical probe (2-wire)**:
```
Probe Switch Octopus Pro PROBE
============ =================
COM ──────────────────────► G (Ground)
NO/NC ────────────────────► S (Signal)
```
**For inductive/capacitive probe (3-wire)**:
```
Probe Sensor Octopus Pro PROBE
============ =================
VCC ──────────────────────► V (+5V or +24V depending on sensor)
GND ──────────────────────► G (Ground)
Signal ───────────────────► S (Signal)
```
Config: `pin: ^PG15` (the `^` enables internal pull-up)
---
## PART 8: Communication Connections
### 8.1 USB to Raspberry Pi
Connect the Octopus Pro to your Raspberry Pi via USB:
```
Octopus Pro Raspberry Pi
=========== ============
USB-C port ◄───────────────► USB port (any)
```
Use a quality USB cable - data + power capable.
### 8.2 Finding the Serial Port
After connecting, run on the Pi:
```bash
ls /dev/serial/by-id/*
```
You should see something like:
```
/dev/serial/by-id/usb-Klipper_stm32f446xx_XXXXXXXXXX-if00
```
Update `printer.cfg` with this path.
---
## PART 9: Complete Wiring Checklist
### Power
- [ ] 24V power supply connected to Octopus Pro VIN
- [ ] 24-48V power supply connected to all DM542T drivers
- [ ] USB cable from Octopus Pro to Raspberry Pi
### Motors (8 total)
- [ ] MOTOR0 → DM542T → X motor (Carriage 0)
- [ ] MOTOR1 → DM542T → X2 motor (Carriage 1/IDEX)
- [ ] MOTOR2 → DM542T → Y motor
- [ ] MOTOR3 → DM542T → Y1 motor
- [ ] MOTOR4 → DM542T → Z motor
- [ ] MOTOR5 → DM542T → Z1 motor
- [ ] MOTOR6 → DM542T → Extruder 0 motor
- [ ] MOTOR7 → DM542T → Extruder 1 motor
### Endstops
- [ ] X endstop → DIAG0
- [ ] X2/Dual carriage endstop → DIAG1
- [ ] Y endstop → DIAG2
- [ ] Y1 endstop → DIAG3 (if used)
- [ ] Z endstop → DIAG4
- [ ] Z1 endstop → DIAG5 (if used)
### Thermistors
- [ ] Extruder 0 thermistor → T0
- [ ] Extruder 1 thermistor → T1
- [ ] Chamber thermistor → T2
- [ ] Bed thermistor → TB
### Heaters
- [ ] Extruder 0 heater → HE0
- [ ] Extruder 1 heater → HE1
- [ ] Chamber heater → HE2
- [ ] Heated bed → HB (or via SSR)
### Fans
- [ ] Enclosure fan → FAN2
### Probe
- [ ] Bed probe → PROBE header
---
## PART 10: First Power-On Procedure
### Before Applying Power
1. Double-check all wiring against this guide
2. Verify no short circuits (use multimeter)
3. Ensure DM542T DIP switches are set correctly
4. Confirm power supply voltages are correct
### Power-On Sequence
1. **DO NOT** connect motors yet (just signals)
2. Power on the Octopus Pro only
3. Verify it appears on USB (`ls /dev/serial/by-id/`)
4. Flash Klipper firmware (see below)
5. Start Klipper and check for errors
6. Test endstops: `QUERY_ENDSTOPS`
7. Test thermistors: check temperatures in Fluidd
8. **Then** connect motor power and test movement
### Flashing Klipper Firmware
```bash
cd ~/klipper
make menuconfig
```
Settings for Octopus Pro v1.0.1:
- Micro-controller: **STMicroelectronics STM32**
- Processor model: **STM32F446**
- Bootloader offset: **32KiB bootloader**
- Clock Reference: **12 MHz crystal**
- Communication: **USB (on PA11/PA12)**
```bash
make clean
make
```
Copy `out/klipper.bin` to SD card as `firmware.bin`, insert into Octopus, power cycle.
---
## Troubleshooting
### Motor doesn't move
1. Check DM542T has power (LED on?)
2. Verify step/dir/enable wiring
3. Check DIP switch settings
4. Try inverting enable pin: `enable_pin: PF14``enable_pin: !PF14`
### Motor moves wrong direction
- Invert the DIR pin in config: `dir_pin: PF12``dir_pin: !PF12`
### Endstop always triggered or never triggers
- Check `QUERY_ENDSTOPS` output
- Try inverting: `endstop_pin: PG6``endstop_pin: !PG6`
- Verify wiring (NO vs NC switch)
### Thermistor shows wrong temperature
- Check wiring continuity
- Verify correct `sensor_type` in config
- The custom `adc_temperature` definitions should match your sensors
### Heater doesn't heat
- Check for "HEATER_ERROR" in Klipper logs
- Verify heater wiring
- Check thermistor is working (needs valid temp reading)

204
docs/wiring.md Normal file
View File

@@ -0,0 +1,204 @@
# AON3D M2+ Wiring Guide - BTT Octopus Pro v1.0.1
## Motor Driver Connections (External DM542T)
Since you're using external DM542T drivers, only **STEP**, **DIR**, and **ENABLE** signals are needed from the Octopus Pro. The drivers handle their own current and microstepping via DIP switches.
### Motor Pin Assignments
| Motor | Function | Octopus Header | STEP Pin | DIR Pin | ENABLE Pin |
|-------|----------|----------------|----------|---------|------------|
| MOTOR0 | X Axis (Carriage 0) | MOTOR0 | PF13 | PF12 | PF14 |
| MOTOR1 | X2 / Dual Carriage | MOTOR1 | PG0 | PG1 | PF15 |
| MOTOR2 | Y Axis | MOTOR2 | PF11 | PG3 | PG5 |
| MOTOR3 | Y1 Axis | MOTOR3 | PG4 | PC1 | PA0 |
| MOTOR4 | Z Axis | MOTOR4 | PF9 | PF10 | PG2 |
| MOTOR5 | Z1 Axis | MOTOR5 | PC13 | PF0 | PF1 |
| MOTOR6 | Extruder 0 | MOTOR6 | PE2 | PE3 | PD4 |
| MOTOR7 | Extruder 1 | MOTOR7 | PE6 | PA14 | PE0 |
### DM542T Wiring per Motor
```
Octopus Pro Motor Header DM542T Driver
======================== =============
STEP (pin 2) ───────────────► PUL+
GND (pin 1) ───────────────► PUL-
DIR (pin 3) ───────────────► DIR+
GND (pin 1) ───────────────► DIR-
EN (pin 4) ───────────────► ENA+
GND (pin 1) ───────────────► ENA-
```
**Note:** The Octopus Pro motor headers have a 4-pin connector:
- Pin 1: GND
- Pin 2: STEP
- Pin 3: DIR
- Pin 4: EN (active low)
---
## Endstop Connections
| Endstop | Function | Octopus Pin | Header |
|---------|----------|-------------|--------|
| DIAG0 | X Min (Carriage 0) | PG6 | DIAG0 |
| DIAG1 | X Max (Dual Carriage) | PG9 | DIAG1 |
| DIAG2 | Y Min | PG10 | DIAG2 |
| DIAG3 | Y1 (optional) | PG11 | DIAG3 |
| DIAG4 | Z Min | PG12 | DIAG4 |
| DIAG5 | Z1 (optional) | PG13 | DIAG5 |
| Probe | Bed probe | PG15 | PROBE |
### Endstop Wiring
```
Endstop Switch Octopus Pro
============== ===========
Signal ─────────────────► S (Signal)
GND ────────────────────► G (Ground)
(VCC optional) ─────────► V (+5V for powered sensors)
```
---
## Heater Connections
| Heater | Function | Octopus Pin | Header | Max Current |
|--------|----------|-------------|--------|-------------|
| HE0 | Extruder 0 Hotend | PA2 | HE0 | 5A |
| HE1 | Extruder 1 Hotend | PA3 | HE1 | 5A |
| HE2 | Chamber Heater | PB10 | HE2 | 5A |
| HB | Heated Bed | PA1 | HB | 10A (use SSR for high power beds) |
**Important:** For high-power heated beds (>10A), use a Solid State Relay (SSR) controlled by the HB output.
---
## Thermistor Connections
| Sensor | Function | Octopus Pin | Header |
|--------|----------|-------------|--------|
| T0 | Extruder 0 Temperature | PF4 | TH0 |
| T1 | Extruder 1 Temperature | PF5 | TH1 |
| T2 | Chamber Temperature | PF6 | TH2 |
| TB | Bed Temperature | PF3 | TB |
### Thermistor Wiring
```
Thermistor Octopus Pro
========== ===========
Wire 1 ─────────────────► T (Thermistor signal)
Wire 2 ─────────────────► G (Ground)
```
---
## Fan Connections
| Fan | Function | Octopus Pin | Header |
|-----|----------|-------------|--------|
| FAN0 | Part Cooling (optional) | PA8 | FAN0 |
| FAN1 | Part Cooling 2 (optional) | PE5 | FAN1 |
| FAN2 | Chamber/Enclosure Fan | PD12 | FAN2 |
| FAN3 | Hotend Fan 0 (optional) | PD13 | FAN3 |
| FAN4 | Hotend Fan 1 (optional) | PE4 | FAN4 |
---
## Power Connections
### Main Power Input
- **VIN**: 24V DC (or your system voltage)
- **GND**: Ground
### Motor Power
- The DM542T drivers have their own power input - connect them to your 24-48V power supply as per DM542T specifications.
---
## DM542T DIP Switch Settings
Set the DIP switches on your DM542T drivers to match the Klipper configuration:
### Microstepping (match `microsteps` in config)
| Microsteps | SW5 | SW6 | SW7 | SW8 |
|------------|-----|-----|-----|-----|
| 16 (X,Y,E) | OFF | ON | ON | OFF |
| 4 (Z axes) | ON | ON | OFF | OFF |
### Current Setting (adjust for your motors)
Refer to DM542T documentation for current settings based on your stepper motor specifications.
---
## Octopus Pro v1.0.1 Header Layout
```
┌─────────────────────────────────────────────────────────────┐
│ BTT OCTOPUS PRO v1.0.1 │
├─────────────────────────────────────────────────────────────┤
│ │
│ [MOTOR0] [MOTOR1] [MOTOR2] [MOTOR3] [MOTOR4] │
│ X X2 Y Y1 Z │
│ │
│ [MOTOR5] [MOTOR6] [MOTOR7] │
│ Z1 E0 E1 │
│ │
│ [HE0] [HE1] [HE2] [HB] ← Heater outputs │
│ │
│ [TH0] [TH1] [TH2] [TB] ← Thermistor inputs │
│ │
│ [FAN0-5] ← Fan outputs │
│ │
│ [DIAG0-7] ← Endstop/diagnostic inputs │
│ │
│ [PROBE] ← Probe input │
│ │
│ [USB] [POWER] │
│ │
└─────────────────────────────────────────────────────────────┘
```
---
## Flashing Klipper to Octopus Pro
1. SSH into your Raspberry Pi:
```bash
ssh pi@192.168.86.20
```
2. Build Klipper firmware:
```bash
cd ~/klipper
make menuconfig
```
3. Configure for Octopus Pro v1.0.1:
- Micro-controller: **STMicroelectronics STM32**
- Processor model: **STM32F446**
- Bootloader offset: **32KiB bootloader**
- Clock Reference: **12 MHz crystal**
- Communication interface: **USB (on PA11/PA12)**
4. Build:
```bash
make clean
make
```
5. Flash via SD card:
- Copy `out/klipper.bin` to SD card as `firmware.bin`
- Insert SD card into Octopus Pro
- Power cycle the board
6. Find the serial port:
```bash
ls /dev/serial/by-id/*
```
7. Update `printer.cfg` with the correct serial port.

View File

@@ -0,0 +1,26 @@
[board_pins arduino-mega]
aliases:
ar0=PE0, ar1=PE1, ar2=PE4, ar3=PE5, ar4=PG5,
ar5=PE3, ar6=PH3, ar7=PH4, ar8=PH5, ar9=PH6,
ar10=PB4, ar11=PB5, ar12=PB6, ar13=PB7, ar14=PJ1,
ar15=PJ0, ar16=PH1, ar17=PH0, ar18=PD3, ar19=PD2,
ar20=PD1, ar21=PD0, ar22=PA0, ar23=PA1, ar24=PA2,
ar25=PA3, ar26=PA4, ar27=PA5, ar28=PA6, ar29=PA7,
ar30=PC7, ar31=PC6, ar32=PC5, ar33=PC4, ar34=PC3,
ar35=PC2, ar36=PC1, ar37=PC0, ar38=PD7, ar39=PG2,
ar40=PG1, ar41=PG0, ar42=PL7, ar43=PL6, ar44=PL5,
ar45=PL4, ar46=PL3, ar47=PL2, ar48=PL1, ar49=PL0,
ar50=PB3, ar51=PB2, ar52=PB1, ar53=PB0, ar54=PF0,
ar55=PF1, ar56=PF2, ar57=PF3, ar58=PF4, ar59=PF5,
ar60=PF6, ar61=PF7, ar62=PK0, ar63=PK1, ar64=PK2,
ar65=PK3, ar66=PK4, ar67=PK5, ar68=PK6, ar69=PK7,
analog0=PF0, analog1=PF1, analog2=PF2, analog3=PF3, analog4=PF4,
analog5=PF5, analog6=PF6, analog7=PF7, analog8=PK0, analog9=PK1,
analog10=PK2, analog11=PK3, analog12=PK4, analog13=PK5, analog14=PK6,
analog15=PK7,
# Marlin adds these additional aliases
ml70=PG4, ml71=PG3, ml72=PJ2, ml73=PJ3, ml74=PJ7,
ml75=PJ4, ml76=PJ5, ml77=PJ6, ml78=PE2, ml79=PE6,
ml80=PE7, ml81=PD4, ml82=PD5, ml83=PD6, ml84=PH2,
ml85=PH7

BIN
klipper/firmware.bin Normal file

Binary file not shown.

276
klipper/macros.cfg Normal file
View File

@@ -0,0 +1,276 @@
# AON3D M2+ Macros
# For BTT Octopus Pro with IDEX configuration
# ================================================================================
# Cancel Print
# ================================================================================
[gcode_macro CANCEL_PRINT]
description: Cancel the actual running print
rename_existing: CANCEL_PRINT_BASE
gcode:
PARK_{printer.toolhead.extruder}
CANCEL_PRINT_BASE
# ================================================================================
# Pause / Resume
# ================================================================================
[gcode_macro PAUSE]
rename_existing: BASE_PAUSE
gcode:
{% set Z = params.Z|default(10)|float %}
{% set E = params.E|default(1)|float %}
SAVE_GCODE_STATE NAME=PAUSE_state
BASE_PAUSE
G91
G1 E-{E} F2100
G1 Z{Z}
PARK_{printer.toolhead.extruder}
[gcode_macro RESUME]
rename_existing: BASE_RESUME
gcode:
{% set E = params.E|default(1)|float %}
G91
G1 E{E} F2100
G90
RESTORE_GCODE_STATE NAME=PAUSE_state MOVE=1
BASE_RESUME
# ================================================================================
# End Print
# ================================================================================
[gcode_macro END_PRINT]
gcode:
{% set Z = params.Z|default(10)|float %}
{% set E = params.E|default(5)|float %}
# Turn off heaters and fan
M106 S0
SET_HEATER_TEMPERATURE HEATER=extruder TARGET=0
SET_HEATER_TEMPERATURE HEATER=extruder1 TARGET=0
SET_HEATER_TEMPERATURE HEATER=heater_bed TARGET=0
SET_HEATER_TEMPERATURE HEATER=chamber TARGET=0
G91
G1 E-{E} F2100
G1 Z{Z}
PARK_{printer.toolhead.extruder}
# Disable steppers
M84
# ================================================================================
# Homing Override
# ================================================================================
[homing_override]
set_position_z: 10
gcode:
SAVE_GCODE_STATE NAME=home_z_state
G91
G1 Z10 F480
G28 X0 Y0
G28 Z0
G90
G1 Z3 F600
RESTORE_GCODE_STATE NAME=home_z_state
axes: z
# ================================================================================
# Idle Timeout
# ================================================================================
[idle_timeout]
timeout: 86400 # 24 hours
# ================================================================================
# IDEX Toolhead Macros
# ================================================================================
# Primary toolhead (T0) park position
[gcode_macro PARK_extruder]
gcode:
SAVE_GCODE_STATE NAME=park0
G90
G1 X-85 F12000
RESTORE_GCODE_STATE NAME=park0
# Activate primary extruder
[gcode_macro T0]
gcode:
PARK_{printer.toolhead.extruder}
ACTIVATE_EXTRUDER EXTRUDER=extruder
SET_DUAL_CARRIAGE CARRIAGE=0
SET_GCODE_OFFSET Z=0
# Input shaper for carriage 0 (calibrate these values for your machine)
SET_INPUT_SHAPER SHAPER_FREQ_X=60 SHAPER_TYPE_X=ei SHAPER_FREQ_Y=40 SHAPER_TYPE_Y=ei
# Secondary toolhead (T1) park position
[gcode_macro PARK_extruder1]
gcode:
SAVE_GCODE_STATE NAME=park1
G90
G1 X518 F12000
RESTORE_GCODE_STATE NAME=park1
# Activate secondary extruder
[gcode_macro T1]
gcode:
PARK_{printer.toolhead.extruder}
ACTIVATE_EXTRUDER EXTRUDER=extruder1
SET_DUAL_CARRIAGE CARRIAGE=1
SET_GCODE_OFFSET Z=-0.45
# Input shaper for carriage 1 (calibrate these values separately)
SET_INPUT_SHAPER SHAPER_FREQ_X=60 SHAPER_TYPE_X=ei SHAPER_FREQ_Y=40 SHAPER_TYPE_Y=ei
# ================================================================================
# Calibration Macro
# ================================================================================
[gcode_macro CALIBRATE_M2]
description: Calibrate the current tool with a mesh centered at Z=0
gcode:
G28
G1 Z15 F600
G1 X200 Y200 F6000
Z_ENDSTOP_CALIBRATE
PROBE
TESTZ Z=-.001
G4 P500
M400
ACCEPT
SET_KINEMATIC_POSITION Z=0
BED_MESH_CALIBRATE
[gcode_macro Calibrate_Tool_Offset]
gcode:
z_endstop_calibrate
# ================================================================================
# Temperature Command Overrides (for chamber heater compatibility)
# ================================================================================
[gcode_macro M140]
rename_existing: M140.1
gcode:
{% if params.S is defined %}
SAVE_VARIABLE VARIABLE=bedtemp VALUE={params.S}
{% endif %}
M140.1 { rawparams }
[gcode_macro M190]
rename_existing: M190.1
gcode:
{% if params.S is defined %}
SAVE_VARIABLE VARIABLE=bedtemp VALUE={params.S}
{% endif %}
M190.1 { rawparams }
[gcode_macro M104]
rename_existing: M104.1
gcode:
{% if params.T is defined and params.T == "3"%}
SET_HEATER_TEMPERATURE HEATER=chamber TARGET={params.S if params.S is defined else "0"}
{% else %}
{% if params.S is defined %}
{% set varname = "t1temp" if params.T is defined and params.T == "1" else "t0temp" %}
SAVE_VARIABLE VARIABLE={varname} VALUE={params.S}
{% endif %}
M104.1 { rawparams }
{% endif %}
[gcode_macro M109]
rename_existing: M109.1
gcode:
{% if params.T is defined and params.T == "3"%}
SET_HEATER_TEMPERATURE HEATER=chamber TARGET={params.S if params.S is defined else "0"}
TEMPERATURE_WAIT SENSOR=chamber MINIMUM={params.S} MAXIMUM={params.S}
{% else %}
{% if params.S is defined %}
{% set varname = "t1temp" if params.T is defined and params.T == "1" else "t0temp" %}
SAVE_VARIABLE VARIABLE={varname} VALUE={params.S}
{% endif %}
M109.1 { rawparams }
{% endif %}
# ================================================================================
# G-code Offset Management
# ================================================================================
[gcode_macro SET_GCODE_OFFSET]
rename_existing: _SET_GCODE_OFFSET
gcode:
{% if printer.save_variables.variables.gcode_offsets %}
{% set offsets = printer.save_variables.variables.gcode_offsets %}
{% else %}
{% set offsets = {'x': None,'y': None,'z': None} %}
{% endif %}
{% set ns = namespace(offsets={'x': offsets.x,'y': offsets.y,'z': offsets.z}) %}
_SET_GCODE_OFFSET {% for p in params %}{'%s=%s '% (p, params[p])}{% endfor %}
{%if 'X' in params %}{% set null = ns.offsets.update({'x': params.X}) %}{% endif %}
{%if 'Y' in params %}{% set null = ns.offsets.update({'y': params.Y}) %}{% endif %}
{%if 'Z' in params %}{% set null = ns.offsets.update({'z': params.Z}) %}{% endif %}
SAVE_VARIABLE VARIABLE=gcode_offsets VALUE="{ns.offsets}"
[delayed_gcode LOAD_GCODE_OFFSETS]
initial_duration: 2
gcode:
{% if printer.save_variables.variables.gcode_offsets %}
{% set offsets = printer.save_variables.variables.gcode_offsets %}
_SET_GCODE_OFFSET {% for axis, offset in offsets.items()
if offsets[axis] %}{ "%s=%s " % (axis, offset) }{% endfor %}
{ action_respond_info("Loaded gcode offsets from saved variables [%s]" % (offsets)) }
{% endif %}
# Initialize input shaper on startup (for dual_carriage compatibility)
[delayed_gcode INIT_INPUT_SHAPER]
initial_duration: 3
gcode:
# Set default input shaper for carriage 0 (T0)
SET_INPUT_SHAPER SHAPER_FREQ_X=60 SHAPER_TYPE_X=ei SHAPER_FREQ_Y=40 SHAPER_TYPE_Y=ei
{ action_respond_info("Input shaper initialized for dual carriage") }
# ================================================================================
# Utility Macros
# ================================================================================
[gcode_macro LOAD_FILAMENT]
description: Load filament into current extruder
gcode:
{% set TEMP = params.TEMP|default(220)|float %}
{% set LENGTH = params.LENGTH|default(100)|float %}
M109 S{TEMP}
G91
G1 E{LENGTH} F300
G90
[gcode_macro UNLOAD_FILAMENT]
description: Unload filament from current extruder
gcode:
{% set TEMP = params.TEMP|default(220)|float %}
{% set LENGTH = params.LENGTH|default(100)|float %}
M109 S{TEMP}
G91
G1 E10 F300
G1 E-{LENGTH} F1000
G90
[gcode_macro PID_EXTRUDER]
description: PID tune the current extruder
gcode:
{% set TEMP = params.TEMP|default(240)|float %}
PID_CALIBRATE HEATER=extruder TARGET={TEMP}
[gcode_macro PID_EXTRUDER1]
description: PID tune extruder 1
gcode:
{% set TEMP = params.TEMP|default(240)|float %}
PID_CALIBRATE HEATER=extruder1 TARGET={TEMP}
[gcode_macro PID_BED]
description: PID tune the heated bed
gcode:
{% set TEMP = params.TEMP|default(100)|float %}
PID_CALIBRATE HEATER=heater_bed TARGET={TEMP}
[gcode_macro PID_CHAMBER]
description: PID tune the heated chamber
gcode:
{% set TEMP = params.TEMP|default(70)|float %}
PID_CALIBRATE HEATER=chamber TARGET={TEMP}

285
klipper/printer.cfg Normal file
View File

@@ -0,0 +1,285 @@
# AON3D M2+ - Dual MCU Configuration
# Azteeg X3: Sensors, Endstops, Probe, Fan, Hotend Heaters
# Octopus Pro: Motors + Bed/Chamber Heaters
# IDEX setup with heated chamber, external DM542T drivers
# ================================================================================
# Requirements
# ================================================================================
[pause_resume]
[display_status]
[virtual_sdcard]
path: ~/gcode_files
[include macros.cfg]
[include Controllino_aliases.cfg]
# ================================================================================
# MCU Configuration
# ================================================================================
# Main MCU - Azteeg X3
[mcu]
serial: /dev/serial/by-id/usb-FTDI_FT231X_USB_UART_DN05SBA9-if00-port0
restart_method: command
# Secondary MCU - Octopus Pro (motors + heaters only)
[mcu octopus]
serial: /dev/serial/by-id/usb-Klipper_stm32f446xx_32000A000E50315939343520-if00
restart_method: command
# ================================================================================
# Printer Definition
# ================================================================================
[printer]
kinematics: cartesian
max_velocity: 250
max_accel: 3000
max_z_velocity: 12
max_z_accel: 30
# ================================================================================
# Stepper Configuration - Motors on Octopus, Endstops on Azteeg
# ================================================================================
# --- X Axis T0 (MOTOR0) ---
[stepper_x]
step_pin: octopus:PF13
dir_pin: !octopus:PF12
enable_pin: !octopus:PF14
microsteps: 16
rotation_distance: 80
endstop_pin: ar3 # Azteeg
position_endstop: -90
position_min: -90
position_max: 450
homing_speed: 100
step_pulse_duration: 0.000006
# --- Y Axis Left (MOTOR1) ---
[stepper_y]
step_pin: octopus:PG0
dir_pin: !octopus:PG1
enable_pin: !octopus:PF15
microsteps: 16
rotation_distance: 80
endstop_pin: ar14 # Azteeg
position_endstop: -44
position_min: -44
position_max: 450
homing_speed: 80
step_pulse_duration: 0.000006
# --- Z Axis Left (MOTOR2) ---
[stepper_z]
step_pin: octopus:PF11
dir_pin: octopus:PG3
enable_pin: !octopus:PG5
microsteps: 4
rotation_distance: 2
endstop_pin: ar18 # Azteeg
position_min: -11
position_max: 600
homing_retract_dist: 2
homing_speed: 5
step_pulse_duration: 0.000006
# --- Dual Carriage / X T1 (MOTOR5) ---
[dual_carriage]
axis: x
step_pin: octopus:PC13
dir_pin: !octopus:PF0
enable_pin: !octopus:PF1
microsteps: 16
rotation_distance: 80
endstop_pin: ar2 # Azteeg
position_endstop: 518.5
position_max: 518.5
homing_speed: 100
step_pulse_duration: 0.000006
# --- Y1 Axis Right (MOTOR6) ---
[stepper_y1]
step_pin: octopus:PE2
dir_pin: octopus:PE3
enable_pin: !octopus:PD4
microsteps: 16
rotation_distance: 80
endstop_pin: ar15 # Azteeg
step_pulse_duration: 0.000006
# --- Z1 Axis Right (MOTOR7) ---
[stepper_z1]
step_pin: octopus:PE6
dir_pin: octopus:PA14
enable_pin: !octopus:PE0
microsteps: 4
rotation_distance: 2
endstop_pin: ar19 # Azteeg
step_pulse_duration: 0.000006
# ================================================================================
# Extruder Configuration - Motors on Octopus, Heaters+Sensors on Azteeg
# ================================================================================
# --- Extruder 0 (MOTOR3) - Motor on Octopus, Heater on Azteeg ---
[extruder]
step_pin: octopus:PG4
dir_pin: octopus:PC1
enable_pin: !octopus:PA0
microsteps: 16
rotation_distance: 4.961
nozzle_diameter: 0.400
filament_diameter: 1.750
heater_pin: ar10 # Azteeg
sensor_type: thermistor20
sensor_pin: analog3 # Azteeg
min_temp: 0
max_temp: 500
pressure_advance: 0.06
pressure_advance_smooth_time: 0.12
max_extrude_cross_section: 10
control: pid
pid_kp: 17.123
pid_ki: 0.660
pid_kd: 111.088
# --- Extruder 1 (MOTOR4) - Motor on Octopus, Heater on Azteeg ---
[extruder1]
step_pin: octopus:PF9
dir_pin: octopus:PF10
enable_pin: !octopus:PG2
microsteps: 16
rotation_distance: 4.961
nozzle_diameter: 0.400
filament_diameter: 1.750
heater_pin: ar9 # Azteeg
sensor_type: thermistor20
sensor_pin: analog9 # Azteeg
min_temp: 0
max_temp: 400
pressure_advance: 0.06
pressure_advance_smooth_time: 0.12
control: pid
pid_kp: 15.157
pid_ki: 0.529
pid_kd: 108.559
# ================================================================================
# Custom Thermistor Definitions
# ================================================================================
[adc_temperature thermistor86]
temperature1: 20
voltage1: 4.8239
temperature2: 90
voltage2: 3.3005
temperature3: 180
voltage3: 0.7913
[adc_temperature thermistor20]
temperature1: 20
voltage1: 1.1926
temperature2: 200
voltage2: 1.921
temperature3: 600
voltage3: 3.328
[adc_temperature thermistor5]
temperature1: 20
voltage1: 4.817
temperature2: 150
voltage2: 1.122
temperature3: 300
voltage3: 0.0876
# ================================================================================
# Heated Bed - on Octopus (both SSRs wired to PA1)
# ================================================================================
[heater_bed]
heater_pin: octopus:PA1 # Octopus HB
sensor_type: thermistor5
sensor_pin: analog14 # Azteeg
control: pid
pid_Kp: 22.2
pid_Ki: 1.08
pid_Kd: 114
min_temp: -20
max_temp: 230
# ================================================================================
# Heated Chamber - on Octopus
# ================================================================================
[heater_generic chamber]
gcode_id: T2
heater_pin: octopus:PB10 # Octopus HE2
sensor_type: thermistor86
sensor_pin: analog13 # Azteeg
max_power: 1.0
pwm_cycle_time: 0.3
control: pid
pid_Kp: 100
pid_Ki: 1.8
pid_Kd: 300
min_temp: -20
max_temp: 175
[verify_heater chamber]
check_gain_time: 900
max_error: 200
[heater_fan Enclosure_fan]
pin: ar5 # Azteeg
fan_speed: 1.0
heater: chamber
kick_start_time: 10000
shutdown_speed: 0
# ================================================================================
# Probe and Bed Mesh - on Azteeg
# ================================================================================
[probe]
pin: ^ar22 # Azteeg
lift_speed: 10
speed: 6.0
[bed_mesh]
speed: 200
horizontal_move_z: 2
mesh_min: 60, 60
mesh_max: 380, 380
probe_count: 6, 6
# ================================================================================
# Additional Configuration
# ================================================================================
[force_move]
enable_force_move: True
[idle_timeout]
timeout: 14400
[save_variables]
filename: ~/savedVariables.cfg
# ================================================================================
# Temperature Monitoring
# ================================================================================
[temperature_sensor octopus_temp]
sensor_type: temperature_mcu
sensor_mcu: octopus
min_temp: 0
max_temp: 100
[temperature_sensor raspberry_pi]
sensor_type: temperature_host
min_temp: 10
max_temp: 100
#*# <---------------------- SAVE_CONFIG ---------------------->
#*# DO NOT EDIT THIS BLOCK OR BELOW. The contents are auto-generated.
#*#
#*# [probe]
#*# z_offset = 0.500
#*#
#*# [stepper_z]
#*# position_endstop = -1.590

Binary file not shown.

View File

@@ -0,0 +1,45 @@
[server]
host = 0.0.0.0
port = 7125
max_upload_size = 1024
[file_manager]
enable_object_processing = False
[data_store]
temperature_store_size = 600
gcode_store_size = 1000
[authorization]
force_logins = false
cors_domains =
*.local
*.lan
*://app.fluidd.xyz
trusted_clients =
10.0.0.0/8
127.0.0.0/8
169.254.0.0/16
172.16.0.0/12
192.168.0.0/16
FE80::/10
::1/128
127.0.0.1
127.0.0.0
[octoprint_compat]
[history]
[announcements]
subscriptions =
fluidd
[update_manager]
enable_auto_refresh = True
[update_manager client fluidd]
type = web
repo = fluidd-core/fluidd
path = ~/fluidd

View File

@@ -0,0 +1,26 @@
[board_pins arduino-mega]
aliases:
ar0=PE0, ar1=PE1, ar2=PE4, ar3=PE5, ar4=PG5,
ar5=PE3, ar6=PH3, ar7=PH4, ar8=PH5, ar9=PH6,
ar10=PB4, ar11=PB5, ar12=PB6, ar13=PB7, ar14=PJ1,
ar15=PJ0, ar16=PH1, ar17=PH0, ar18=PD3, ar19=PD2,
ar20=PD1, ar21=PD0, ar22=PA0, ar23=PA1, ar24=PA2,
ar25=PA3, ar26=PA4, ar27=PA5, ar28=PA6, ar29=PA7,
ar30=PC7, ar31=PC6, ar32=PC5, ar33=PC4, ar34=PC3,
ar35=PC2, ar36=PC1, ar37=PC0, ar38=PD7, ar39=PG2,
ar40=PG1, ar41=PG0, ar42=PL7, ar43=PL6, ar44=PL5,
ar45=PL4, ar46=PL3, ar47=PL2, ar48=PL1, ar49=PL0,
ar50=PB3, ar51=PB2, ar52=PB1, ar53=PB0, ar54=PF0,
ar55=PF1, ar56=PF2, ar57=PF3, ar58=PF4, ar59=PF5,
ar60=PF6, ar61=PF7, ar62=PK0, ar63=PK1, ar64=PK2,
ar65=PK3, ar66=PK4, ar67=PK5, ar68=PK6, ar69=PK7,
analog0=PF0, analog1=PF1, analog2=PF2, analog3=PF3, analog4=PF4,
analog5=PF5, analog6=PF6, analog7=PF7, analog8=PK0, analog9=PK1,
analog10=PK2, analog11=PK3, analog12=PK4, analog13=PK5, analog14=PK6,
analog15=PK7,
# Marlin adds these additional aliases
ml70=PG4, ml71=PG3, ml72=PJ2, ml73=PJ3, ml74=PJ7,
ml75=PJ4, ml76=PJ5, ml77=PJ6, ml78=PE2, ml79=PE6,
ml80=PE7, ml81=PD4, ml82=PD5, ml83=PD6, ml84=PH2,
ml85=PH7

View File

@@ -0,0 +1,36 @@
[main]
# Invert axis in move panel. Default is False. Change to true to invert
invert_x: False
invert_y: False
invert_z: False
# Time (seconds) before the Job Status page reverts to main menu after a successful job
job_complete_timeout: 30
# Time (seconds) before the Job Status page reverts to main menu after a successful job.
# If this option is 0, the user must click on a button to go back to the main menu.
job_error_timeout: 0
# Specify the language
# The language can be specified here instead of using the system default language.
language: en
# Allows the cursor to be displayed on the screen
show_cursor: False
[printer M2 2020]
# Define the moonraker host/port if different from 127.0.0.1 and 7125
moonraker_host: 127.0.0.1
moonraker_port: 7125
# Moonraker API key if this is not connecting from a trusted client IP
moonraker_api_key: 755f90d2560c45c5a8bfd1dd1ee6a008
# Define the z_babystep intervals in a CSV list. Currently only 2 are supported
z_babystep_values: 0.01, 0.05
#~# --- Do not edit below this line. This section is auto generated --- #~#
#~#
#~# [main]
#~# language = en
#~# print_estimate_compensation = 133
#~# move_speed_xy = 101
#~# print_sort_dir = date_desc
#~#
#~# [graph M2 2020]
#~# heater_bed = False
#~# extruder = False
#~#

View File

@@ -0,0 +1,243 @@
# Cancel print definition
[gcode_macro CANCEL_PRINT]
description: Cancel the actual running print
rename_existing: CANCEL_PRINT_BASE
gcode:
PARK_{printer.toolhead.extruder}
CANCEL_PRINT_BASE
#[pause_resume]
[gcode_macro PAUSE]
rename_existing: BASE_PAUSE
gcode:
{% set Z = params.Z|default(10)|float %}
{% set E = params.E|default(1)|float %}
SAVE_GCODE_STATE NAME=PAUSE_state
BASE_PAUSE
G91
G1 E-{E} F2100
G1 Z{Z}
PARK_{printer.toolhead.extruder}
[gcode_macro RESUME]
rename_existing: BASE_RESUME
gcode:
{% set E = params.E|default(1)|float %}
G91
G1 E{E} F2100
G90
RESTORE_GCODE_STATE NAME=PAUSE_state MOVE=1
BASE_RESUME
[gcode_macro END_PRINT]
gcode:
{% set Z = params.Z|default(10)|float %}
{% set E = params.E|default(5)|float %}
# Turn off bed, extruder, and fan
; M140 S0
; M104 T0 S0
; M104 T1 S0
M106 S0
SET_HEATER_TEMPERATURE HEATER=extruder TARGET=0
SET_HEATER_TEMPERATURE HEATER=extruder1 TARGET=0
SET_HEATER_TEMPERATURE HEATER=heater_bed TARGET=0
SET_HEATER_TEMPERATURE HEATER=chamber TARGET=0
G91
G1 E-{E} F2100
G1 Z{Z}
PARK_{printer.toolhead.extruder}
# Disable steppers
M84
# Homing definition
[homing_override]
set_position_z: 10
gcode:
SAVE_GCODE_STATE NAME=home_z_state
G91
G1 Z10 F480
G28 X0 Y0
G28 Z0
G90
G1 Z3 F600
RESTORE_GCODE_STATE NAME=home_z_state
axes: z
# Idle definition
[idle_timeout]
#gcode:
# A list of G-Code commands to execute on an idle timeout. See
# docs/Command_Templates.md for G-Code format. The default is to run
# "TURN_OFF_HEATERS" and "M84".
timeout: 86400 # Allow heaters to run 24 hours lol
# Idle time (in seconds) to wait before running the above G-Code
# commands. The default is 600 seconds.
# Toolhead definition
# Primary toolhead
[gcode_macro PARK_extruder]
gcode:
SAVE_GCODE_STATE NAME=park0
G90
G1 X-85 F12000
RESTORE_GCODE_STATE NAME=park0
# Activate the primary extruder
[gcode_macro T0]
gcode:
PARK_{printer.toolhead.extruder}
ACTIVATE_EXTRUDER EXTRUDER=extruder
SET_DUAL_CARRIAGE CARRIAGE=0
SET_GCODE_OFFSET Z=0
#SWITCH_PROBE PROBE_NUM=0
# Input shaper for carriage 0
SET_INPUT_SHAPER SHAPER_FREQ_X=60 SHAPER_TYPE_X=ei SHAPER_FREQ_Y=40 SHAPER_TYPE_Y=ei
# Secondary toolhead
[gcode_macro PARK_extruder1]
gcode:
SAVE_GCODE_STATE NAME=park1
G90
G1 X518 F12000
RESTORE_GCODE_STATE NAME=park1
[gcode_macro T1]
gcode:
PARK_{printer.toolhead.extruder}
ACTIVATE_EXTRUDER EXTRUDER=extruder1
SET_DUAL_CARRIAGE CARRIAGE=1
SET_GCODE_OFFSET Z=-0.45
#SWITCH_PROBE PROBE_NUM=1
# Input shaper for carriage 1
SET_INPUT_SHAPER SHAPER_FREQ_X=60 SHAPER_TYPE_X=ei SHAPER_FREQ_Y=40 SHAPER_TYPE_Y=ei
[gcode_macro CALIBRATE_M2]
# Macro to calibrate the current tool with a mesh centered at Z=0.
# Useful if you're using Z fade for dupe mode, or anomalously thick sheets.
gcode:
G28
G1 Z15 F600
G1 X200 Y200 F6000
Z_ENDSTOP_CALIBRATE
PROBE
TESTZ Z=-.001
G4 P500
M400
ACCEPT
SET_KINEMATIC_POSITION Z=0
BED_MESH_CALIBRATE
#[gcode_macro SET_HEATER_TEMPERATURE]
#description: Set heater temperature and save temperature to variables file.
#rename_existing: SET_HEATER_TEMPERATURE_BASE
#gcode:
# {% if params.HEATER=="extruder" %}
# SAVE_VARIABLE VARIABLE=t0temp VALUE={params.TARGET}
# {% elif params.HEATER=="extruder1"%}
# SAVE_VARIABLE VARIABLE=t1temp VALUE={params.TARGET}
# {% elif params.HEATER=="heater_bed"%}
# SAVE_VARIABLE VARIABLE=bedtemp VALUE={params.TARGET}
# {% elif params.HEATER=="chamber"%}
# SAVE_VARIABLE VARIABLE=chambertemp VALUE={params.TARGET}
# {% endif%}
# SET_HEATER_TEMPERATURE_BASE HEATER={params.HEATER} TARGET={params.TARGET}
[gcode_macro M140]
rename_existing: M140.1
gcode:
{% if params.S is defined %}
SAVE_VARIABLE VARIABLE=bedtemp VALUE={params.S}
{% endif %}
M140.1 { rawparams }
[gcode_macro Calibrate_Tool_Offset]
gcode:
z_endstop_calibrate
[gcode_macro M190]
rename_existing: M190.1
gcode:
{% if params.S is defined %}
SAVE_VARIABLE VARIABLE=bedtemp VALUE={params.S}
{% endif %}
M190.1 { rawparams }
[gcode_macro M104]
rename_existing: M104.1
gcode:
{% if params.T is defined and params.T == "3"%}
SET_HEATER_TEMPERATURE HEATER=chamber TARGET={params.S if params.S is defined else "0"}
{% else %}
{% if params.S is defined %}
{% set varname = "t1temp" if params.T is defined and params.T == "1" else "t0temp" %}
SAVE_VARIABLE VARIABLE={varname} VALUE={params.S}
{% endif %}
M104.1 { rawparams }
{% endif %}
[gcode_macro M109]
rename_existing: M109.1
gcode:
{% if params.T is defined and params.T == "3"%}
SET_HEATER_TEMPERATURE HEATER=chamber TARGET={params.S if params.S is defined else "0"}
TEMPERATURE_WAIT SENSOR=chamber MINIMUM={params.S} MAXIMUM={params.S}
{% else %}
{% if params.S is defined %}
{% set varname = "t1temp" if params.T is defined and params.T == "1" else "t0temp" %}
SAVE_VARIABLE VARIABLE={varname} VALUE={params.S}
{% endif %}
M109.1 { rawparams }
{% endif %}
[save_variables]
filename: ~/savedVariables.cfg
[gcode_macro SET_GCODE_OFFSET]
rename_existing: _SET_GCODE_OFFSET
gcode:
{% if printer.save_variables.variables.gcode_offsets %}
{% set offsets = printer.save_variables.variables.gcode_offsets %}
{% else %}
{% set offsets = {'x': None,'y': None,'z': None} %}
{% endif %}
{% set ns = namespace(offsets={'x': offsets.x,'y': offsets.y,'z': offsets.z}) %}
_SET_GCODE_OFFSET {% for p in params %}{'%s=%s '% (p, params[p])}{% endfor %}
{%if 'X' in params %}{% set null = ns.offsets.update({'x': params.X}) %}{% endif %}
{%if 'Y' in params %}{% set null = ns.offsets.update({'y': params.Y}) %}{% endif %}
{%if 'Z' in params %}{% set null = ns.offsets.update({'z': params.Z}) %}{% endif %}
SAVE_VARIABLE VARIABLE=gcode_offsets VALUE="{ns.offsets}"
[delayed_gcode LOAD_GCODE_OFFSETS]
initial_duration: 2
gcode:
{% if printer.save_variables.variables.gcode_offsets %}
{% set offsets = printer.save_variables.variables.gcode_offsets %}
_SET_GCODE_OFFSET {% for axis, offset in offsets.items()
if offsets[axis] %}{ "%s=%s " % (axis, offset) }{% endfor %}
{ action_respond_info("Loaded gcode offsets from saved variables [%s]" % (offsets)) }
{% endif %}
# Initialize input shaper on startup (for dual_carriage compatibility)
[delayed_gcode INIT_INPUT_SHAPER]
initial_duration: 3
gcode:
# Set default input shaper for carriage 0 (T0)
SET_INPUT_SHAPER SHAPER_FREQ_X=60 SHAPER_TYPE_X=ei SHAPER_FREQ_Y=40 SHAPER_TYPE_Y=ei
{ action_respond_info("Input shaper initialized for dual carriage") }
#[gcode_macro TURN_OFF_HEATERS]
#description: Turn off heaters and wipe saved temperature variables.
#rename_existing: TURN_OFF_HEATERS_BASE
#gcode:
# TURN_OFF_HEATERS_BASE
# SAVE_VARIABLE VARIABLE=t0temp VALUE=0
# SAVE_VARIABLE VARIABLE=t1temp VALUE=0
# SAVE_VARIABLE VARIABLE=bedtemp VALUE=0
# SAVE_VARIABLE VARIABLE=chambertemp VALUE=0

View File

@@ -0,0 +1,101 @@
[main]
# Invert axis in move panel. Default is False. Change to true to invert
invert_x: False
invert_y: False
invert_z: False
# Time (seconds) before the Job Status page reverts to main menu after a successful job
job_complete_timeout: 30
# Time (seconds) before the Job Status page reverts to main menu after a successful job.
# If this option is 0, the user must click on a button to go back to the main menu.
job_error_timeout: 0
# Specify the language
# The language can be specified here instead of using the system default language.
language: en
# Allows the cursor to be displayed on the screen
show_cursor: False
[printer M2 2020]
# Define the moonraker host/port if different from 127.0.0.1 and 7125
moonraker_host: 127.0.0.1
moonraker_port: 7125
# Moonraker API key if this is not connecting from a trusted client IP
moonraker_api_key: False
# Define the z_babystep intervals in a CSV list. Currently only 2 are supported
z_babystep_values: 0.1, 0.05
#~# --- Do not edit below this line. This section is auto generated --- #~#
#~#
#~# [main]
#~# language = en
#~# print_sort_dir = date_desc
#~# screen_blanking = 300
#~# theme = colorized
#~# side_macro_shortcut = False
#~#
#~# [displayed_macros Printer]
#~# bed_mesh_calibrate = False
#~# cancel_print = False
#~# dump_parameters = False
#~# dump_config = False
#~# dump_settings = False
#~# mesh_load = False
#~# m204 = False
#~# m141 = False
#~# man_resonances = False
#~# m600 = False
#~# mesh_store = False
#~# prime_line = False
#~# m300 = False
#~# _caselight_off = False
#~# pause = False
#~# resume = False
#~# _display_plate = False
#~# rst_service = False
#~# rst_filter = False
#~# print_end = False
#~# _extruder_on = False
#~# _display_on = False
#~# _filament_ball = False
#~# test_probe_accuracy = False
#~# quad_gantry_level = False
#~# _list_plates = False
#~# _lcd_knob = False
#~# _add_new_plate = False
#~# _filter_info = False
#~# print_start = False
#~# _runout_info = False
#~# _display_state = False
#~# _add_print_time = False
#~# _extruder_off = False
#~# _set_filter = False
#~# _bed_off = False
#~# _caselight_on = False
#~# _psu_off = False
#~# _vent_info = False
#~# _g32 = False
#~# _bed_on = False
#~# _print_info1 = False
#~# _set_plate_offset = False
#~# _print_info2 = False
#~# _print_ar = False
#~# _filter_on = False
#~# _display_print_time = False
#~# _set_caselight = False
#~# _cg28 = False
#~# _heater_on = False
#~# _display_off = False
#~# _change_plate_name = False
#~# _change_plate_offset = False
#~# _set_z_current = False
#~# _sd_printer_stats = False
#~# _sd_print_stats = False
#~# _wipe = False
#~# _remove_plate = False
#~# _init_plate_array = False
#~# _print_time = False
#~# _set_acc = False
#~# _set_plate = False
#~# _select_pa = False
#~# _shutdown_pi = False
#~#

View File

@@ -0,0 +1,51 @@
[server]
host: 0.0.0.0
port: 7125
max_upload_size: 1024
[file_manager]
# cancel object preprocessing - set to True to enable; leave disabled when running on a low-powered device (e.g. Pi Zero)
enable_object_processing: False
[data_store]
temperature_store_size: 600
gcode_store_size: 1000
[authorization]
force_logins: false
cors_domains:
*.local
*.lan
*://app.fluidd.xyz
trusted_clients:
10.0.0.0/8
127.0.0.0/8
169.254.0.0/16
172.16.0.0/12
192.168.0.0/16
FE80::/10
::1/128
127.0.0.1
127.0.0.0
# enables partial support of Octoprint API
[octoprint_compat]
# enables moonraker to track and store print history.
[history]
# this enables moonraker announcements for fluidd
[announcements]
subscriptions:
fluidd
# this enables moonraker's update manager
[update_manager]
enable_auto_refresh: True
# this enabled fluidd updates
[update_manager client fluidd]
type: web
repo: fluidd-core/fluidd
path: ~/fluidd

View File

@@ -0,0 +1,327 @@
# AON3D M2+
# Requirements
[pause_resume]
[display_status]
[virtual_sdcard]
path: ~/gcode_files
[include M2_macros.cfg]
[include Controllino_aliases.cfg]
# MCU definition
;[mcu]
;serial: /dev/serial/by-id/usb-FTDI_FT231X_USB_UART_DN05SBA9-if00-port0
;baud: 115200
;restart_method: command
[mcu]
serial: /dev/serial/by-id/usb-FTDI_FT231X_USB_UART_DN05SBA9-if00-port0
#serial: /dev/ttyACM0
;baud: 250000
restart_method: command
# Printer definition
[printer]
kinematics: cartesian
max_velocity: 250
max_accel: 3000
max_z_velocity: 12
max_z_accel: 30
# Steppers definition
[stepper_x]
step_pin: ar54
dir_pin: !ar55
enable_pin: !ar38
microsteps: 16
rotation_distance: 80
endstop_pin: ar3
position_endstop: -90
position_min: -90
position_max: 450
homing_speed: 100
step_pulse_duration: 0.000006
[dual_carriage]
axis: x
step_pin: ar23
dir_pin: !ar25
enable_pin: !ar40
microsteps: 16
rotation_distance: 80
endstop_pin: ar2
position_endstop: 518.5
position_max: 518.5
homing_speed: 100
step_pulse_duration: 0.000006
[stepper_y]
step_pin: ar60
dir_pin: !ar61
enable_pin: !ar56
microsteps: 16
rotation_distance: 80
endstop_pin: ar14
position_endstop: -44
position_min: -44
position_max: 450
homing_speed: 80
step_pulse_duration: 0.000006
[stepper_y1]
step_pin: ar27
dir_pin: ar29
enable_pin: !ar41
microsteps: 16
rotation_distance: 80
endstop_pin: ar15
step_pulse_duration: 0.000006
[stepper_z]
step_pin: ar46
dir_pin: ar48
enable_pin: !ar62
microsteps: 4
rotation_distance: 2
endstop_pin: ar18
#position_endstop: -1.6 # -16 for HT bed, -9 for LT, -11 for Hudson Vac
position_min: -11 # -16 for HT bed, -9 for LT, -11 for Hudson Vac
position_max: 600
homing_retract_dist: 2
homing_speed: 5
step_pulse_duration: 0.000006
[stepper_z1]
step_pin: ar43
dir_pin: ar37
enable_pin: !ar42
microsteps: 4
rotation_distance: 2
endstop_pin: ar19
step_pulse_duration: 0.000006
# Thermal sensors definition
[adc_temperature thermistor86]
temperature1: 20
voltage1: 4.8239
temperature2: 90
voltage2: 3.3005
temperature3: 180
voltage3: 0.7913
[adc_temperature thermistor20]
temperature1: 20
voltage1: 1.1926
temperature2: 200
voltage2: 1.921
temperature3: 600
voltage3: 3.328
[adc_temperature thermistor5]
temperature1: 20
voltage1: 4.817
temperature2: 150
voltage2: 1.122
temperature3: 300
voltage3: 0.0876
# thermistor89
# temperature1:30
# voltage1:3.391
# temperature2:100
# voltage2:2.171
# temperature1:160
# voltage1:0.819
# Extruders definition
[extruder]
step_pin: ar26
dir_pin: ar28
enable_pin: !ar24
microsteps: 16
rotation_distance: 4.961
nozzle_diameter: 0.400
filament_diameter: 1.750
heater_pin: ar10
sensor_type: thermistor20
sensor_pin: analog3
control: pid
pid_Kp: 22.2
pid_Ki: 1.08
pid_Kd: 114
min_temp: 0
max_temp: 500
pressure_advance: 0.06
pressure_advance_smooth_time: 0.12
max_extrude_cross_section: 10
[extruder1]
step_pin: ar36
dir_pin: ar34
enable_pin: !ar30
microsteps: 16
rotation_distance: 4.961
nozzle_diameter: 0.400
filament_diameter: 1.750
heater_pin: ar9
sensor_type: thermistor20
sensor_pin: analog9
control: pid
pid_Kp: 22.2
pid_Ki: 1.08
pid_Kd: 114
min_temp: 0
max_temp: 400
pressure_advance: 0.06
pressure_advance_smooth_time: 0.12
# Heat bed definition
[heater_bed]
heater_pin: ar8
sensor_type: thermistor5
sensor_pin: analog14
control: pid
pid_Kp: 22.2
pid_Ki: 1.08
pid_Kd: 114
min_temp: -20
max_temp: 230
# Heated chamber definition
[heater_generic chamber]
gcode_id: T2
heater_pin: ar4
sensor_type: thermistor86
sensor_pin: analog13
max_power: 1.0
pwm_cycle_time: 0.3
control: pid
pid_Kp: 100
pid_Ki: 1.8
pid_Kd: 300
min_temp: -20
max_temp: 175
[verify_heater chamber]
check_gain_time: 900
max_error: 200
[heater_fan Enclosure_fan]
pin: ar5
fan_speed: 1.0
heater: chamber
kick_start_time: 10000
shutdown_speed: 0
# Probe definition
[probe]
pin: ^ar22
;probe2: ^ar7
lift_speed: 10
speed: 6.0
#z_offset = -0.06
# Bed mesh definition
[bed_mesh]
speed: 200
horizontal_move_z: 2
mesh_min: 60,60
mesh_max: 380,380
probe_count: 6,6
[force_move]
enable_force_move = True
#[filament_switch_sensor RunoutSensor]
#pause_on_runout: False
#runout_gcode: PAUSE
#insert_gcode: RESUME
#switch_pin: !PC2
[idle_timeout]
timeout : 14400
[input_shaper]
shaper_freq_x: 60
shaper_type_x: ei
shaper_freq_y: 40
shaper_type_y: ei
#*# <---------------------- SAVE_CONFIG ---------------------->
#*# DO NOT EDIT THIS BLOCK OR BELOW. The contents are auto-generated.
#*#
#*# [probe]
#*# z_offset = 0.500
#*#
#*# [bed_mesh t0bed]
#*# version = 1
#*# points =
#*# 0.020833, -0.031667, -0.064167, -0.046667, 0.010833, 0.015833
#*# 0.045833, 0.010833, -0.031667, 0.085833, 0.135833, 0.180833
#*# 0.105833, 0.070833, 0.060833, 0.098333, 0.108333, 0.100833
#*# 0.263333, 0.175833, 0.165833, 0.205833, 0.220833, 0.220833
#*# 0.368333, 0.248333, 0.185833, 0.175833, 0.175833, 0.170833
#*# 0.500833, 0.353333, 0.280833, 0.178333, 0.115833, 0.118333
#*# tension = 0.2
#*# mesh_x_pps = 2
#*# algo = lagrange
#*# min_x = 0.0
#*# min_y = 0.0
#*# y_count = 6
#*# mesh_y_pps = 2
#*# x_count = 6
#*# max_x = 420.0
#*# max_y = 420.0
#*#
#*# [bed_mesh t1bed]
#*# version = 1
#*# points =
#*# -0.302500, -0.380000, -0.420000, -0.407500, -0.365000, -0.305000
#*# -0.395000, -0.417500, -0.440000, -0.332500, -0.280000, -0.247500
#*# -0.267500, -0.325000, -0.335000, -0.265000, -0.282500, -0.287500
#*# -0.202500, -0.247500, -0.262500, -0.242500, -0.222500, -0.237500
#*# -0.110000, -0.187500, -0.225000, -0.230000, -0.245000, -0.250000
#*# 0.022500, -0.127500, -0.197500, -0.290000, -0.322500, -0.330000
#*# tension = 0.2
#*# mesh_x_pps = 2
#*# algo = lagrange
#*# min_x = 0.0
#*# min_y = 0.0
#*# y_count = 6
#*# mesh_y_pps = 2
#*# x_count = 6
#*# max_x = 420.0
#*# max_y = 420.0
#*#
#*# [bed_mesh default]
#*# version = 1
#*# points =
#*# 0.515000, 0.530000, 0.520000, 0.520000, 0.455000, 0.362500
#*# 0.562500, 0.632500, 0.637500, 0.650000, 0.605000, 0.537500
#*# 0.762500, 0.802500, 0.822500, 0.797500, 0.742500, 0.672500
#*# 0.920000, 0.980000, 0.980000, 0.965000, 0.900000, 0.842500
#*# 1.015000, 1.045000, 1.042500, 1.025000, 0.962500, 0.855000
#*# 0.970000, 0.982500, 0.962500, 0.905000, 0.825000, 0.722500
#*# tension = 0.2
#*# min_x = 60.0
#*# algo = lagrange
#*# y_count = 6
#*# mesh_y_pps = 2
#*# min_y = 60.0
#*# x_count = 6
#*# max_y = 380.0
#*# mesh_x_pps = 2
#*# max_x = 380.0
#*#
#*# [stepper_z]
#*# position_endstop = -1.590

View File

@@ -0,0 +1,333 @@
# AON3D M2+
# Requirements
[pause_resume]
[display_status]
[virtual_sdcard]
path: ~/gcode_files
[include M2_macros.cfg]
[include Controllino_aliases.cfg]
# MCU definition
;[mcu]
;serial: /dev/serial/by-id/usb-FTDI_FT231X_USB_UART_DN05SBA9-if00-port0
;baud: 115200
;restart_method: command
[mcu]
serial: /dev/serial/by-id/usb-FTDI_FT231X_USB_UART_DN05SBA9-if00-port0
#serial: /dev/ttyACM0
;baud: 250000
restart_method: command
# Printer definition
[printer]
kinematics: cartesian
max_velocity: 250
max_accel: 3000
max_z_velocity: 12
max_z_accel: 30
# Steppers definition
[stepper_x]
step_pin: ar54
dir_pin: !ar55
enable_pin: !ar38
microsteps: 16
rotation_distance: 80
endstop_pin: ar3
position_endstop: -90
position_min: -90
position_max: 450
homing_speed: 100
step_pulse_duration: 0.000006
[dual_carriage]
axis: x
step_pin: ar23
dir_pin: !ar25
enable_pin: !ar40
microsteps: 16
rotation_distance: 80
endstop_pin: ar2
position_endstop: 518.5
position_max: 518.5
homing_speed: 100
step_pulse_duration: 0.000006
[stepper_y]
step_pin: ar60
dir_pin: !ar61
enable_pin: !ar56
microsteps: 16
rotation_distance: 80
endstop_pin: ar14
position_endstop: -44
position_min: -44
position_max: 450
homing_speed: 80
step_pulse_duration: 0.000006
[stepper_y1]
step_pin: ar27
dir_pin: ar29
enable_pin: !ar41
microsteps: 16
rotation_distance: 80
endstop_pin: ar15
step_pulse_duration: 0.000006
[stepper_z]
step_pin: ar46
dir_pin: ar48
enable_pin: !ar62
microsteps: 4
rotation_distance: 2
endstop_pin: ar18
#position_endstop: -1.6 # -16 for HT bed, -9 for LT, -11 for Hudson Vac
position_min: -11 # -16 for HT bed, -9 for LT, -11 for Hudson Vac
position_max: 600
homing_retract_dist: 2
homing_speed: 5
step_pulse_duration: 0.000006
[stepper_z1]
step_pin: ar43
dir_pin: ar37
enable_pin: !ar42
microsteps: 4
rotation_distance: 2
endstop_pin: ar19
step_pulse_duration: 0.000006
# Thermal sensors definition
[adc_temperature thermistor86]
temperature1: 20
voltage1: 4.8239
temperature2: 90
voltage2: 3.3005
temperature3: 180
voltage3: 0.7913
[adc_temperature thermistor20]
temperature1: 20
voltage1: 1.1926
temperature2: 200
voltage2: 1.921
temperature3: 600
voltage3: 3.328
[adc_temperature thermistor5]
temperature1: 20
voltage1: 4.817
temperature2: 150
voltage2: 1.122
temperature3: 300
voltage3: 0.0876
# thermistor89
# temperature1:30
# voltage1:3.391
# temperature2:100
# voltage2:2.171
# temperature1:160
# voltage1:0.819
# Extruders definition
[extruder]
step_pin: ar26
dir_pin: ar28
enable_pin: !ar24
microsteps: 16
rotation_distance: 4.961
nozzle_diameter: 0.400
filament_diameter: 1.750
heater_pin: ar10
sensor_type: thermistor20
sensor_pin: analog3
control: pid
pid_Kp: 22.2
pid_Ki: 1.08
pid_Kd: 114
min_temp: 0
max_temp: 500
pressure_advance: 0.06
pressure_advance_smooth_time: 0.12
max_extrude_cross_section: 10
[extruder1]
step_pin: ar36
dir_pin: ar34
enable_pin: !ar30
microsteps: 16
rotation_distance: 4.961
nozzle_diameter: 0.400
filament_diameter: 1.750
heater_pin: ar9
sensor_type: thermistor20
sensor_pin: analog9
#control: pid
#pid_Kp: 22.2
#pid_Ki: 1.08
#pid_Kd: 114
min_temp: 0
max_temp: 400
pressure_advance: 0.06
pressure_advance_smooth_time: 0.12
# Heat bed definition
[heater_bed]
heater_pin: ar8
sensor_type: thermistor5
sensor_pin: analog14
control: pid
pid_Kp: 22.2
pid_Ki: 1.08
pid_Kd: 114
min_temp: -20
max_temp: 230
# Heated chamber definition
[heater_generic chamber]
gcode_id: T2
heater_pin: ar4
sensor_type: thermistor86
sensor_pin: analog13
max_power: 1.0
pwm_cycle_time: 0.3
control: pid
pid_Kp: 100
pid_Ki: 1.8
pid_Kd: 300
min_temp: -20
max_temp: 175
[verify_heater chamber]
check_gain_time: 900
max_error: 200
[heater_fan Enclosure_fan]
pin: ar5
fan_speed: 1.0
heater: chamber
kick_start_time: 10000
shutdown_speed: 0
# Probe definition
[probe]
pin: ^ar22
;probe2: ^ar7
lift_speed: 10
speed: 6.0
#z_offset = -0.06
# Bed mesh definition
[bed_mesh]
speed: 200
horizontal_move_z: 2
mesh_min: 60,60
mesh_max: 380,380
probe_count: 6,6
[force_move]
enable_force_move = True
#[filament_switch_sensor RunoutSensor]
#pause_on_runout: False
#runout_gcode: PAUSE
#insert_gcode: RESUME
#switch_pin: !PC2
[idle_timeout]
timeout : 14400
[input_shaper]
shaper_freq_x: 60
shaper_type_x: ei
shaper_freq_y: 40
shaper_type_y: ei
#*# <---------------------- SAVE_CONFIG ---------------------->
#*# DO NOT EDIT THIS BLOCK OR BELOW. The contents are auto-generated.
#*#
#*# [probe]
#*# z_offset = 0.500
#*#
#*# [bed_mesh t0bed]
#*# version = 1
#*# points =
#*# 0.020833, -0.031667, -0.064167, -0.046667, 0.010833, 0.015833
#*# 0.045833, 0.010833, -0.031667, 0.085833, 0.135833, 0.180833
#*# 0.105833, 0.070833, 0.060833, 0.098333, 0.108333, 0.100833
#*# 0.263333, 0.175833, 0.165833, 0.205833, 0.220833, 0.220833
#*# 0.368333, 0.248333, 0.185833, 0.175833, 0.175833, 0.170833
#*# 0.500833, 0.353333, 0.280833, 0.178333, 0.115833, 0.118333
#*# tension = 0.2
#*# mesh_x_pps = 2
#*# algo = lagrange
#*# min_x = 0.0
#*# min_y = 0.0
#*# y_count = 6
#*# mesh_y_pps = 2
#*# x_count = 6
#*# max_x = 420.0
#*# max_y = 420.0
#*#
#*# [bed_mesh t1bed]
#*# version = 1
#*# points =
#*# -0.302500, -0.380000, -0.420000, -0.407500, -0.365000, -0.305000
#*# -0.395000, -0.417500, -0.440000, -0.332500, -0.280000, -0.247500
#*# -0.267500, -0.325000, -0.335000, -0.265000, -0.282500, -0.287500
#*# -0.202500, -0.247500, -0.262500, -0.242500, -0.222500, -0.237500
#*# -0.110000, -0.187500, -0.225000, -0.230000, -0.245000, -0.250000
#*# 0.022500, -0.127500, -0.197500, -0.290000, -0.322500, -0.330000
#*# tension = 0.2
#*# mesh_x_pps = 2
#*# algo = lagrange
#*# min_x = 0.0
#*# min_y = 0.0
#*# y_count = 6
#*# mesh_y_pps = 2
#*# x_count = 6
#*# max_x = 420.0
#*# max_y = 420.0
#*#
#*# [bed_mesh default]
#*# version = 1
#*# points =
#*# 0.515000, 0.530000, 0.520000, 0.520000, 0.455000, 0.362500
#*# 0.562500, 0.632500, 0.637500, 0.650000, 0.605000, 0.537500
#*# 0.762500, 0.802500, 0.822500, 0.797500, 0.742500, 0.672500
#*# 0.920000, 0.980000, 0.980000, 0.965000, 0.900000, 0.842500
#*# 1.015000, 1.045000, 1.042500, 1.025000, 0.962500, 0.855000
#*# 0.970000, 0.982500, 0.962500, 0.905000, 0.825000, 0.722500
#*# tension = 0.2
#*# min_x = 60.0
#*# algo = lagrange
#*# y_count = 6
#*# mesh_y_pps = 2
#*# min_y = 60.0
#*# x_count = 6
#*# max_y = 380.0
#*# mesh_x_pps = 2
#*# max_x = 380.0
#*#
#*# [stepper_z]
#*# position_endstop = -1.590
#*#
#*# [extruder1]
#*# control = pid
#*# pid_kp = 15.157
#*# pid_ki = 0.529
#*# pid_kd = 108.559

View File

@@ -0,0 +1,364 @@
# AON3D M2+
# Requirements
[pause_resume]
[display_status]
[virtual_sdcard]
path: ~/gcode_files
[include M2_macros.cfg]
[include Controllino_aliases.cfg]
# MCU definition
;[mcu]
;serial: /dev/serial/by-id/usb-FTDI_FT231X_USB_UART_DN05SBA9-if00-port0
;baud: 115200
;restart_method: command
[mcu]
serial: /dev/serial/by-id/usb-FTDI_FT231X_USB_UART_DN05SBA9-if00-port0
#serial: /dev/ttyACM0
;baud: 250000
restart_method: command
# Second MCU - Octopus Pro (for testing)
[mcu octopus]
serial: /dev/serial/by-id/usb-Klipper_stm32f446xx_32000A000E50315939343520-if00
# ================================================================================
# TEST: Thermistors on Octopus (uncomment to test)
# ================================================================================
# Plug thermistors into Octopus T0, T1, T2, TB headers to test
#[temperature_sensor test_extruder0]
#sensor_type: thermistor20
#sensor_pin: octopus:PF4
#[temperature_sensor test_extruder1]
#sensor_type: thermistor20
#sensor_pin: octopus:PF5
#[temperature_sensor test_chamber]
#sensor_type: thermistor86
#sensor_pin: octopus:PF6
#[temperature_sensor test_bed]
#sensor_type: thermistor5
#sensor_pin: octopus:PF3
# Printer definition
[printer]
kinematics: cartesian
max_velocity: 250
max_accel: 3000
max_z_velocity: 12
max_z_accel: 30
# Steppers definition
[stepper_x]
step_pin: ar54
dir_pin: !ar55
enable_pin: !ar38
microsteps: 16
rotation_distance: 80
endstop_pin: ar3
position_endstop: -90
position_min: -90
position_max: 450
homing_speed: 100
step_pulse_duration: 0.000006
[dual_carriage]
axis: x
step_pin: ar23
dir_pin: !ar25
enable_pin: !ar40
microsteps: 16
rotation_distance: 80
endstop_pin: ar2
position_endstop: 518.5
position_max: 518.5
homing_speed: 100
step_pulse_duration: 0.000006
[stepper_y]
step_pin: ar60
dir_pin: !ar61
enable_pin: !ar56
microsteps: 16
rotation_distance: 80
endstop_pin: ar14
position_endstop: -44
position_min: -44
position_max: 450
homing_speed: 80
step_pulse_duration: 0.000006
[stepper_y1]
step_pin: ar27
dir_pin: ar29
enable_pin: !ar41
microsteps: 16
rotation_distance: 80
endstop_pin: ar15
step_pulse_duration: 0.000006
[stepper_z]
step_pin: ar46
dir_pin: ar48
enable_pin: !ar62
microsteps: 4
rotation_distance: 2
endstop_pin: ar18
#position_endstop: -1.6 # -16 for HT bed, -9 for LT, -11 for Hudson Vac
position_min: -11 # -16 for HT bed, -9 for LT, -11 for Hudson Vac
position_max: 600
homing_retract_dist: 2
homing_speed: 5
step_pulse_duration: 0.000006
[stepper_z1]
step_pin: ar43
dir_pin: ar37
enable_pin: !ar42
microsteps: 4
rotation_distance: 2
endstop_pin: ar19
step_pulse_duration: 0.000006
# Thermal sensors definition
[adc_temperature thermistor86]
temperature1: 20
voltage1: 4.8239
temperature2: 90
voltage2: 3.3005
temperature3: 180
voltage3: 0.7913
[adc_temperature thermistor20]
temperature1: 20
voltage1: 1.1926
temperature2: 200
voltage2: 1.921
temperature3: 600
voltage3: 3.328
[adc_temperature thermistor5]
temperature1: 20
voltage1: 4.817
temperature2: 150
voltage2: 1.122
temperature3: 300
voltage3: 0.0876
# thermistor89
# temperature1:30
# voltage1:3.391
# temperature2:100
# voltage2:2.171
# temperature1:160
# voltage1:0.819
# Extruders definition
[extruder]
step_pin: ar26
dir_pin: ar28
enable_pin: !ar24
microsteps: 16
rotation_distance: 4.961
nozzle_diameter: 0.400
filament_diameter: 1.750
heater_pin: ar10
sensor_type: thermistor20
sensor_pin: analog3
#control: pid
#pid_Kp: 22.2
#pid_Ki: 1.08
#pid_Kd: 114
min_temp: 0
max_temp: 500
pressure_advance: 0.06
pressure_advance_smooth_time: 0.12
max_extrude_cross_section: 10
[extruder1]
step_pin: ar36
dir_pin: ar34
enable_pin: !ar30
microsteps: 16
rotation_distance: 4.961
nozzle_diameter: 0.400
filament_diameter: 1.750
heater_pin: ar9
sensor_type: thermistor20
sensor_pin: analog9
#control: pid
#pid_Kp: 22.2
#pid_Ki: 1.08
#pid_Kd: 114
min_temp: 0
max_temp: 400
pressure_advance: 0.06
pressure_advance_smooth_time: 0.12
# Heat bed definition
[heater_bed]
heater_pin: ar8
sensor_type: thermistor5
sensor_pin: analog14
control: pid
pid_Kp: 22.2
pid_Ki: 1.08
pid_Kd: 114
min_temp: -20
max_temp: 230
# Heated chamber definition
[heater_generic chamber]
gcode_id: T2
heater_pin: ar4
sensor_type: thermistor86
sensor_pin: analog13
max_power: 1.0
pwm_cycle_time: 0.3
control: pid
pid_Kp: 100
pid_Ki: 1.8
pid_Kd: 300
min_temp: -20
max_temp: 175
[verify_heater chamber]
check_gain_time: 900
max_error: 200
[heater_fan Enclosure_fan]
pin: ar5
fan_speed: 1.0
heater: chamber
kick_start_time: 10000
shutdown_speed: 0
# Probe definition
[probe]
pin: ^ar22
;probe2: ^ar7
lift_speed: 10
speed: 6.0
#z_offset = -0.06
# Bed mesh definition
[bed_mesh]
speed: 200
horizontal_move_z: 2
mesh_min: 60,60
mesh_max: 380,380
probe_count: 6,6
[force_move]
enable_force_move = True
#[filament_switch_sensor RunoutSensor]
#pause_on_runout: False
#runout_gcode: PAUSE
#insert_gcode: RESUME
#switch_pin: !PC2
[idle_timeout]
timeout : 14400
# Input Shaper - For IDEX, configure via macros in T0/T1 tool change
# Use SET_INPUT_SHAPER commands in the T0 and T1 macros
# Calibrated values:
# Carriage 0 (T0): shaper_freq_x=60, shaper_type_x=ei
# Carriage 1 (T1): shaper_freq_x=60, shaper_type_x=ei
# Y axis: shaper_freq_y=40, shaper_type_y=ei
#*# <---------------------- SAVE_CONFIG ---------------------->
#*# DO NOT EDIT THIS BLOCK OR BELOW. The contents are auto-generated.
#*#
#*# [probe]
#*# z_offset = 0.500
#*#
#*# [bed_mesh t0bed]
#*# version = 1
#*# points =
#*# 0.020833, -0.031667, -0.064167, -0.046667, 0.010833, 0.015833
#*# 0.045833, 0.010833, -0.031667, 0.085833, 0.135833, 0.180833
#*# 0.105833, 0.070833, 0.060833, 0.098333, 0.108333, 0.100833
#*# 0.263333, 0.175833, 0.165833, 0.205833, 0.220833, 0.220833
#*# 0.368333, 0.248333, 0.185833, 0.175833, 0.175833, 0.170833
#*# 0.500833, 0.353333, 0.280833, 0.178333, 0.115833, 0.118333
#*# tension = 0.2
#*# mesh_x_pps = 2
#*# algo = lagrange
#*# min_x = 0.0
#*# min_y = 0.0
#*# y_count = 6
#*# mesh_y_pps = 2
#*# x_count = 6
#*# max_x = 420.0
#*# max_y = 420.0
#*#
#*# [bed_mesh t1bed]
#*# version = 1
#*# points =
#*# -0.302500, -0.380000, -0.420000, -0.407500, -0.365000, -0.305000
#*# -0.395000, -0.417500, -0.440000, -0.332500, -0.280000, -0.247500
#*# -0.267500, -0.325000, -0.335000, -0.265000, -0.282500, -0.287500
#*# -0.202500, -0.247500, -0.262500, -0.242500, -0.222500, -0.237500
#*# -0.110000, -0.187500, -0.225000, -0.230000, -0.245000, -0.250000
#*# 0.022500, -0.127500, -0.197500, -0.290000, -0.322500, -0.330000
#*# tension = 0.2
#*# mesh_x_pps = 2
#*# algo = lagrange
#*# min_x = 0.0
#*# min_y = 0.0
#*# y_count = 6
#*# mesh_y_pps = 2
#*# x_count = 6
#*# max_x = 420.0
#*# max_y = 420.0
#*#
#*# [bed_mesh default]
#*# version = 1
#*# points =
#*# 0.515000, 0.530000, 0.520000, 0.520000, 0.455000, 0.362500
#*# 0.562500, 0.632500, 0.637500, 0.650000, 0.605000, 0.537500
#*# 0.762500, 0.802500, 0.822500, 0.797500, 0.742500, 0.672500
#*# 0.920000, 0.980000, 0.980000, 0.965000, 0.900000, 0.842500
#*# 1.015000, 1.045000, 1.042500, 1.025000, 0.962500, 0.855000
#*# 0.970000, 0.982500, 0.962500, 0.905000, 0.825000, 0.722500
#*# tension = 0.2
#*# min_x = 60.0
#*# algo = lagrange
#*# y_count = 6
#*# mesh_y_pps = 2
#*# min_y = 60.0
#*# x_count = 6
#*# max_y = 380.0
#*# mesh_x_pps = 2
#*# max_x = 380.0
#*#
#*# [stepper_z]
#*# position_endstop = -1.590
#*#
#*# [extruder1]
#*# control = pid
#*# pid_kp = 15.157
#*# pid_ki = 0.529
#*# pid_kd = 108.559
#*#
#*# [extruder]
#*# control = pid
#*# pid_kp = 17.123
#*# pid_ki = 0.660
#*# pid_kd = 111.088

View File

@@ -0,0 +1,79 @@
### Windows users: To edit this file use Notepad++, VSCode, Atom or SublimeText.
### Do not use Notepad or WordPad.
### MacOSX users: If you use Textedit to edit this file make sure to use
### "plain text format" and "disable smart quotes" in "Textedit > Preferences"
### Configure which camera to use
#
# Available options are:
# - auto: tries first usb webcam, if that's not available tries raspi cam
# - usb: only tries usb webcam
# - raspi: only tries raspi cam
#
# Defaults to auto
#
#camera="auto"
### Additional options to supply to MJPG Streamer for the USB camera
#
# See https://faq.octoprint.org/mjpg-streamer-config for available options
#
# Defaults to a resolution of 640x480 px and a framerate of 10 fps
#
#camera_usb_options="-r 640x480 -f 10"
### Additional webcam devices known to cause problems with -f
#
# Apparently there a some devices out there that with the current
# mjpg_streamer release do not support the -f parameter (for specifying
# the capturing framerate) and will just refuse to output an image if it
# is supplied.
#
# The webcam daemon will detect those devices by their USB Vendor and Product
# ID and remove the -f parameter from the options provided to mjpg_streamer.
#
# By default, this is done for the following devices:
# Logitech C170 (046d:082b)
# GEMBIRD (1908:2310)
# Genius F100 (0458:708c)
# Cubeternet GL-UPC822 UVC WebCam (1e4e:0102)
#
# Using the following option it is possible to add additional devices. If
# your webcam happens to show above symptoms, try determining your cam's
# vendor and product id via lsusb, activating the line below by removing # and
# adding it, e.g. for two broken cameras "aabb:ccdd" and "aabb:eeff"
#
# additional_brokenfps_usb_devices=("aabb:ccdd" "aabb:eeff")
#
#
#additional_brokenfps_usb_devices=()
### Additional options to supply to MJPG Streamer for the RasPi Cam
#
# See https://faq.octoprint.org/mjpg-streamer-config for available options
#
# Defaults to 10fps
#
#camera_raspi_options="-fps 10"
### Configuration of camera HTTP output
#
# Usually you should NOT need to change this at all! Only touch if you
# know what you are doing and what the parameters mean.
#
# Below settings are used in the mjpg-streamer call like this:
#
# -o "output_http.so -w $camera_http_webroot $camera_http_options"
#
# Current working directory is the mjpg-streamer base directory.
#
#camera_http_webroot="./www-fluidd"
#camera_http_options="-n"
### EXPERIMENTAL
# Support for different streamer types.
#
# Available options:
# mjpeg [default] - stable MJPG-streamer
#camera_streamer=mjpeg