Add complete Calibration Suite with automated macros
New calibration system for Neptune 4 Plus: 📁 Files added: - calibration/CALIBRATION_GUIDE.md - Complete step-by-step guide - calibration/README.md - Installation & overview - calibration/calibration_macros.cfg - All calibration macros - calibration/test_patterns.cfg - Printable test patterns 🎯 Available macros: - CALIBRATION_MENU - Main menu with all options - CALIBRATE_Z_OFFSET - Cartographer Z0 calibration - CALIBRATE_INPUT_SHAPER - ADXL resonance measurement - CALIBRATE_PRESSURE_ADVANCE - PA tuning (per filament) - CALIBRATE_FLOW_RATE - Flow rate calibration - CALIBRATE_TEMPERATURE - Temperature tower - CALIBRATE_RETRACTION - Retraction testing - CALIBRATE_BED_MESH - Bed mesh verification - CALIBRATION_FULL - Complete suite (~2.5 hours) - CALIBRATION_QUICK - Essential calibrations (~30 min) 🔧 Test patterns: - PA_TEST_PATTERN - Pressure Advance test squares - FLOW_TEST_CUBE - Flow rate calibration cube - RETRACT_TEST_PATTERN - Retraction test towers - TEMP_TOWER - Temperature tower ✨ Features: - Fully automated calibration sequences - Cartographer integration for precise Z0 - Per-filament calibration support - Clear console messages for each step - Automatic SAVE_CONFIG reminders - Supports both Original and Bambu hotends Usage: Run CALIBRATION_MENU in Klipper console
This commit is contained in:
parent
1cf9620736
commit
3c40c660cf
4 changed files with 982 additions and 0 deletions
255
calibration/CALIBRATION_GUIDE.md
Normal file
255
calibration/CALIBRATION_GUIDE.md
Normal file
|
|
@ -0,0 +1,255 @@
|
|||
# 🎯 Neptune 4 Plus Calibration Suite
|
||||
|
||||
## 📋 Vollständiger Einstell-Fahrplan
|
||||
|
||||
Diese Makros führen dich durch die **komplette Kalibrierung** deines Druckers – von Z-Offset bis Pressure Advance.
|
||||
|
||||
---
|
||||
|
||||
## 🚀 Quick Start
|
||||
|
||||
```gcode
|
||||
; Im Klipper Console oder Mainsail Macro ausführen:
|
||||
CALIBRATION_MENU
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 📊 Empfohlene Reihenfolge
|
||||
|
||||
### **BEIM ERSTEN SETUP:**
|
||||
|
||||
| Schritt | Makro | Dauer | Wichtigkeit |
|
||||
|---------|-------|-------|-------------|
|
||||
| 1️⃣ | `CALIBRATE_Z_OFFSET` | 5 min | ⭐⭐⭐⭐⭐ |
|
||||
| 2️⃣ | `CALIBRATE_INPUT_SHAPER` | 10 min | ⭐⭐⭐⭐⭐ |
|
||||
| 3️⃣ | `CALIBRATE_PRESSURE_ADVANCE` | 20 min | ⭐⭐⭐⭐⭐ |
|
||||
| 4️⃣ | `CALIBRATE_FLOW_RATE` | 30 min | ⭐⭐⭐⭐ |
|
||||
| 5️⃣ | `CALIBRATE_TEMPERATURE` | 45 min | ⭐⭐⭐⭐ |
|
||||
| 6️⃣ | `CALIBRATE_RETRACTION` | 30 min | ⭐⭐⭐⭐ |
|
||||
| 7️⃣ | `VERIFY_BED_MESH` | 10 min | ⭐⭐⭐ |
|
||||
|
||||
**Gesamtzeit:** ~2.5 Stunden (kann auf mehrere Sessions verteilt werden)
|
||||
|
||||
### **BEI HOTEND-WECHSEL:**
|
||||
|
||||
| Hotend-Typ | Notwendige Kalibrierung |
|
||||
|------------|-------------------------|
|
||||
| **Original → Original** | Nur Z-Offset |
|
||||
| **Original → Bambu** | Z-Offset + Pressure Advance + Flow Rate |
|
||||
| **Bambu → Original** | Z-Offset + Pressure Advance + Flow Rate |
|
||||
| **Stahl → Messing** | Z-Offset + Pressure Advance + Flow Rate + Temp |
|
||||
|
||||
### **ROUTINE (alle 3-6 Monate):**
|
||||
|
||||
- Z-Offset prüfen
|
||||
- Pressure Advance nachkalibrieren
|
||||
- Bed Mesh neu machen
|
||||
|
||||
---
|
||||
|
||||
## 📝 Detaillierte Anleitung
|
||||
|
||||
### 1️⃣ Z-Offset Kalibrierung
|
||||
|
||||
**Wann:** Bei jedem Hotend-Wechsel, Nozzle-Tausch, oder wenn First Layer Probleme hat
|
||||
|
||||
```gcode
|
||||
CALIBRATE_Z_OFFSET
|
||||
```
|
||||
|
||||
**Ablauf:**
|
||||
1. Drucker heizt vor (50°C Nozzle, 60°C Bed)
|
||||
2. Cartographer misst an 5 Punkten
|
||||
3. Du kannst manuell nachjustieren
|
||||
4. Wird automatisch in `SAVE_CONFIG` gespeichert
|
||||
|
||||
**Ergebnis:** Perfekte First Layer Höhe
|
||||
|
||||
---
|
||||
|
||||
### 2️⃣ Input Shaper Kalibrierung
|
||||
|
||||
**Wann:** Nach mechanischen Änderungen, Vibrationsproblemen, oder alle 6 Monate
|
||||
|
||||
```gcode
|
||||
CALIBRATE_INPUT_SHAPER
|
||||
```
|
||||
|
||||
**Voraussetzung:** ADXL345 muss installiert sein (Cartographer hat eingebauten ADXL!)
|
||||
|
||||
**Ablauf:**
|
||||
1. Druckkopf vibriert in X und Y Richtung
|
||||
2. ADXL misst Resonanzfrequenzen
|
||||
3. Klipper berechnet optimale Shaper-Werte
|
||||
|
||||
**Ergebnis:** Weniger Vibrationen, schärfere Ecken, höhere Geschwindigkeiten möglich
|
||||
|
||||
**Automatisch in `[input_shaper]` Sektion gespeichert**
|
||||
|
||||
---
|
||||
|
||||
### 3️⃣ Pressure Advance Kalibrierung
|
||||
|
||||
**Wann:** Bei Hotend-Wechsel, Filament-Wechsel, oder wenn Ecken Probleme haben
|
||||
|
||||
```gcode
|
||||
CALIBRATE_PRESSURE_ADVANCE FILAMENT=PLA
|
||||
```
|
||||
|
||||
**Optionen:**
|
||||
- `FILAMENT=PLA` (default)
|
||||
- `FILAMENT=PETG`
|
||||
- `FILAMENT=ABS`
|
||||
- `FILAMENT=TPU`
|
||||
|
||||
**Ablauf:**
|
||||
1. Druckt ein Quadrat mit variierendem PA (0.01 - 0.05)
|
||||
2. Du suchst die beste Ecke (scharf, keine Blasen)
|
||||
3. Wert wird notiert und gespeichert
|
||||
|
||||
**Ergebnis:** Scharfe Ecken, keine Überextrusion an Richtungswechseln
|
||||
|
||||
**Typische Werte:**
|
||||
- PLA Original: 0.025-0.030
|
||||
- PLA Bambu: 0.020-0.025
|
||||
- PETG: 0.028-0.035
|
||||
- ABS: 0.030-0.038
|
||||
- TPU: 0.010-0.018
|
||||
|
||||
---
|
||||
|
||||
### 4️⃣ Flow Rate Kalibrierung
|
||||
|
||||
**Wann:** Bei neuem Filament, Hotend-Wechsel, oder wenn Layer nicht haften
|
||||
|
||||
```gcode
|
||||
CALIBRATE_FLOW_RATE FILAMENT=PLA
|
||||
```
|
||||
|
||||
**Ablauf:**
|
||||
1. Druckt einen Würfel mit variierenden Flow-Werten (90%-110%)
|
||||
2. Du misst die Wände mit Messschieber
|
||||
3. Berechnest den optimalen Flow-Wert
|
||||
4. Wird im Filament-Profil gespeichert
|
||||
|
||||
**Ergebnis:** Exakte Wandstärken, keine Lücken zwischen Perimetern
|
||||
|
||||
---
|
||||
|
||||
### 5️⃣ Temperature Tower
|
||||
|
||||
**Wann:** Bei neuem Filament-Typ, Hotend-Wechsel, oder Qualitätsproblemen
|
||||
|
||||
```gcode
|
||||
CALIBRATE_TEMPERATURE FILAMENT=PLA
|
||||
```
|
||||
|
||||
**Ablauf:**
|
||||
1. Druckt einen Turm mit 5 Temperatur-Stufen (z.B. 195-215°C)
|
||||
2. Du bewertest jede Stufe (Bridging, Stringing, Layer-Adhesion)
|
||||
3. Optimale Temperatur wird gewählt
|
||||
|
||||
**Ergebnis:** Perfekte Temperatur für dein Filament
|
||||
|
||||
---
|
||||
|
||||
### 6️⃣ Retraction Test
|
||||
|
||||
**Wann:** Bei Stringing-Problemen, Hotend-Wechsel, oder neuem Filament
|
||||
|
||||
```gcode
|
||||
CALIBRATE_RETRACTION FILAMENT=PLA
|
||||
```
|
||||
|
||||
**Ablauf:**
|
||||
1. Druckt ein Modell mit variierenden Retract-Werten
|
||||
2. Du suchst die Einstellung mit wenigstem Stringing
|
||||
3. Wert wird gespeichert
|
||||
|
||||
**Ergebnis:** Minimales Stringing, keine Underextrusion
|
||||
|
||||
**Typische Werte:**
|
||||
- Original Hotend: 2.0-3.0mm
|
||||
- Bambu Hotend: 1.5-2.0mm
|
||||
|
||||
---
|
||||
|
||||
### 7️⃣ Bed Mesh Verification
|
||||
|
||||
**Wann:** Nach Leveling, alle 1-3 Monate, oder wenn First Layer inkonsistent
|
||||
|
||||
```gcode
|
||||
CALIBRATE_BED_MESH
|
||||
```
|
||||
|
||||
**Ablauf:**
|
||||
1. Heizt Bett auf Drucktemperatur
|
||||
2. Misst komplettes Bett mit Cartographer
|
||||
3. Speichert Mesh-Profil
|
||||
|
||||
**Ergebnis:** Perfekte First Layer Haftung über das gesamte Bett
|
||||
|
||||
---
|
||||
|
||||
## 🎯 Quick Reference Card
|
||||
|
||||
```
|
||||
┌─────────────────────────────────────────────────────────────┐
|
||||
│ NEPTUNE 4 PLUS CALIBRATION QUICK REFERENCE │
|
||||
├─────────────────────────────────────────────────────────────┤
|
||||
│ │
|
||||
│ Z-Offset: CALIBRATE_Z_OFFSET │
|
||||
│ Input Shaper: CALIBRATE_INPUT_SHAPER │
|
||||
│ Pressure Advance: CALIBRATE_PRESSURE_ADVANCE FILAMENT=X │
|
||||
│ Flow Rate: CALIBRATE_FLOW_RATE FILAMENT=X │
|
||||
│ Temperature: CALIBRATE_TEMPERATURE FILAMENT=X │
|
||||
│ Retraction: CALIBRATE_RETRACTION FILAMENT=X │
|
||||
│ Bed Mesh: CALIBRATE_BED_MESH │
|
||||
│ │
|
||||
│ Complete Suite: CALIBRATION_FULL │
|
||||
│ │
|
||||
└─────────────────────────────────────────────────────────────┘
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 📊 Kalibrierungs-Protokoll
|
||||
|
||||
Führe Buch über deine Kalibrierungen:
|
||||
|
||||
```markdown
|
||||
| Datum | Hotend | Filament | Z-Offset | PA | Flow | Temp | Retract | Notes |
|
||||
|-------|--------|----------|----------|----|------|------|---------|-------|
|
||||
| | | | | | | | | |
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 🔧 Troubleshooting
|
||||
|
||||
| Problem | Lösung |
|
||||
|---------|--------|
|
||||
| **First Layer haftet nicht** | Z-Offset neu kalibrieren, Bed Mesh |
|
||||
| **Stringing** | Retraction Test, Temperature Tower |
|
||||
| **Ecken nicht scharf** | Pressure Advance neu kalibrieren |
|
||||
| **Vibrationen** | Input Shaper neu messen |
|
||||
| **Underextrusion** | Flow Rate kalibrieren, Nozzle prüfen |
|
||||
| **Layer Adhesion schlecht** | Temperature Tower, Flow Rate |
|
||||
|
||||
---
|
||||
|
||||
## 💡 Tipps
|
||||
|
||||
1. **Immer SAVE_CONFIG** nach jeder Kalibrierung ausführen!
|
||||
2. **Filament trocken lagern** – feuchtes Filament verfälscht Ergebnisse
|
||||
3. **Gleiche Filament-Marke** für Kalibrierung und Druck verwenden
|
||||
4. **Notizen machen** – welche Settings für welches Filament funktionieren
|
||||
5. **Bei Hotend-Wechsel:** Mindestens Z-Offset + Pressure Advance neu machen
|
||||
|
||||
---
|
||||
|
||||
**Created:** 2026-03-12
|
||||
**Printer:** Elegoo Neptune 4 Plus
|
||||
**Probe:** Cartographer 3D
|
||||
**Firmware:** Open4Neptune + Klipper
|
||||
40
calibration/README.md
Normal file
40
calibration/README.md
Normal file
|
|
@ -0,0 +1,40 @@
|
|||
# 🎯 Calibration Suite for Neptune 4 Plus with Cartographer
|
||||
|
||||
## Installation
|
||||
|
||||
1. Copy all `.cfg` files to your Klipper config directory
|
||||
2. Add `[include calibration/*.cfg]` to your `printer.cfg`
|
||||
3. Restart Klipper
|
||||
4. Run `CALIBRATION_MENU` to start
|
||||
|
||||
---
|
||||
|
||||
## Macros Overview
|
||||
|
||||
- `CALIBRATION_MENU` - Main menu with all options
|
||||
- `CALIBRATE_Z_OFFSET` - Cartographer Z0 calibration
|
||||
- `CALIBRATE_INPUT_SHAPER` - ADXL resonance measurement
|
||||
- `CALIBRATE_PRESSURE_ADVANCE` - PA tuning
|
||||
- `CALIBRATE_FLOW_RATE` - Flow rate calibration
|
||||
- `CALIBRATE_TEMPERATURE` - Temperature tower
|
||||
- `CALIBRATE_RETRACTION` - Retraction tuning
|
||||
- `CALIBRATE_BED_MESH` - Bed mesh verification
|
||||
- `CALIBRATION_FULL` - Run all calibrations in sequence
|
||||
|
||||
---
|
||||
|
||||
## Quick Start
|
||||
|
||||
```gcode
|
||||
; In Mainsail Console or Fluidd Console:
|
||||
CALIBRATION_MENU
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Notes
|
||||
|
||||
- All macros use Cartographer for precise measurements
|
||||
- Results are automatically saved with `SAVE_CONFIG`
|
||||
- Each macro includes safety checks and clear instructions
|
||||
- Designed for both Original and Bambu Lab hotends
|
||||
410
calibration/calibration_macros.cfg
Normal file
410
calibration/calibration_macros.cfg
Normal file
|
|
@ -0,0 +1,410 @@
|
|||
# ============================================================================
|
||||
# NEPTUNE 4 PLUS CALIBRATION SUITE
|
||||
# Complete calibration macros for Cartographer 3D
|
||||
# ============================================================================
|
||||
# Installation: Add [include calibration/*.cfg] to printer.cfg
|
||||
# Usage: Run CALIBRATION_MENU in console
|
||||
# ============================================================================
|
||||
|
||||
# ----------------------------------------------------------------------------
|
||||
# MAIN MENU - Shows all available calibration options
|
||||
# ----------------------------------------------------------------------------
|
||||
[gcode_macro CALIBRATION_MENU]
|
||||
description: Show calibration menu with all options
|
||||
gcode:
|
||||
RESPOND MSG="=============================================="
|
||||
RESPOND MSG=" NEPTUNE 4 PLUS CALIBRATION SUITE"
|
||||
RESPOND MSG="=============================================="
|
||||
RESPOND MSG=""
|
||||
RESPOND MSG="Available calibrations:"
|
||||
RESPOND MSG=" 1. CALIBRATE_Z_OFFSET - Z0 with Cartographer"
|
||||
RESPOND MSG=" 2. CALIBRATE_INPUT_SHAPER - ADXL resonance"
|
||||
RESPOND MSG=" 3. CALIBRATE_PRESSURE_ADVANCE - PA tuning"
|
||||
RESPOND MSG=" 4. CALIBRATE_FLOW_RATE - Flow calibration"
|
||||
RESPOND MSG=" 5. CALIBRATE_TEMPERATURE - Temp tower"
|
||||
RESPOND MSG=" 6. CALIBRATE_RETRACTION - Retraction test"
|
||||
RESPOND MSG=" 7. CALIBRATE_BED_MESH - Mesh verification"
|
||||
RESPOND MSG=""
|
||||
RESPOND MSG="Full suite: CALIBRATION_FULL"
|
||||
RESPOND MSG="=============================================="
|
||||
|
||||
# ----------------------------------------------------------------------------
|
||||
# 1. Z-OFFSET CALIBRATION with Cartographer
|
||||
# ----------------------------------------------------------------------------
|
||||
[gcode_macro CALIBRATE_Z_OFFSET]
|
||||
description: Calibrate Z-offset using Cartographer touch
|
||||
gcode:
|
||||
RESPOND MSG="Starting Z-Offset Calibration..."
|
||||
RESPOND MSG=""
|
||||
RESPOND MSG="Step 1: Heating up..."
|
||||
|
||||
# Heat up for calibration
|
||||
M104 S50
|
||||
M190 S60
|
||||
TEMPERATURE_WAIT SENSOR=extruder MINIMUM=45
|
||||
TEMPERATURE_WAIT SENSOR=heater_bed MINIMUM=55
|
||||
|
||||
RESPOND MSG="Step 2: Homing..."
|
||||
G28
|
||||
|
||||
RESPOND MSG="Step 3: Cartographer Z0 calibration..."
|
||||
RESPOND MSG="Follow prompts in console"
|
||||
|
||||
# Start Cartographer calibration
|
||||
CARTOGRAPHER_CALIBRATE
|
||||
|
||||
RESPOND MSG=""
|
||||
RESPOND MSG="Z-Offset calibration complete!"
|
||||
RESPOND MSG="Don't forget to run SAVE_CONFIG"
|
||||
|
||||
# ----------------------------------------------------------------------------
|
||||
# 2. INPUT SHAPER CALIBRATION
|
||||
# ----------------------------------------------------------------------------
|
||||
[gcode_macro CALIBRATE_INPUT_SHAPER]
|
||||
description: Measure resonance frequencies with ADXL345
|
||||
gcode:
|
||||
RESPOND MSG="Starting Input Shaper Calibration..."
|
||||
RESPOND MSG=""
|
||||
RESPOND MSG="Step 1: Homing..."
|
||||
G28
|
||||
|
||||
RESPOND MSG="Step 2: Measuring X-axis resonance..."
|
||||
MEASURE_AXES_NOISE axis=x
|
||||
|
||||
RESPOND MSG="Step 3: Measuring Y-axis resonance..."
|
||||
MEASURE_AXES_NOISE axis=y
|
||||
|
||||
RESPOND MSG=""
|
||||
RESPOND MSG="Input Shaper calibration complete!"
|
||||
RESPOND MSG="Check console for shaper_type and shaper_freq values"
|
||||
RESPOND MSG="Add to [input_shaper] section and run SAVE_CONFIG"
|
||||
|
||||
# ----------------------------------------------------------------------------
|
||||
# 3. PRESSURE ADVANCE CALIBRATION
|
||||
# ----------------------------------------------------------------------------
|
||||
[gcode_macro CALIBRATE_PRESSURE_ADVANCE]
|
||||
description: Calibrate Pressure Advance for optimal corners
|
||||
gcode:
|
||||
{% set FILAMENT = params.FILAMENT|default("PLA")|upper %}
|
||||
{% set START_PA = params.START|default(0.01)|float %}
|
||||
{% set END_PA = params.END|default(0.05)|float %}
|
||||
{% set STEP = params.STEP|default(0.002)|float %}
|
||||
|
||||
RESPOND MSG="Starting Pressure Advance Calibration..."
|
||||
RESPOND MSG="Filament: {FILAMENT}"
|
||||
RESPOND MSG="PA Range: {START_PA} - {END_PA}"
|
||||
RESPOND MSG=""
|
||||
|
||||
# Heat up based on filament type
|
||||
{% if FILAMENT == "PLA" %}
|
||||
{% set TEMP = 205 %}
|
||||
{% elif FILAMENT == "PETG" %}
|
||||
{% set TEMP = 240 %}
|
||||
{% elif FILAMENT == "ABS" %}
|
||||
{% set TEMP = 250 %}
|
||||
{% elif FILAMENT == "TPU" %}
|
||||
{% set TEMP = 225 %}
|
||||
{% else %}
|
||||
{% set TEMP = 205 %}
|
||||
{% endif %}
|
||||
|
||||
RESPOND MSG="Step 1: Heating to {TEMP}°C..."
|
||||
M104 S{TEMP}
|
||||
M190 S60
|
||||
TEMPERATURE_WAIT SENSOR=extruder MINIMUM={TEMP-5}
|
||||
|
||||
RESPOND MSG="Step 2: Homing..."
|
||||
G28
|
||||
|
||||
RESPOND MSG="Step 3: Starting PA calibration pattern..."
|
||||
RESPOND MSG="Print will test PA from {START_PA} to {END_PA}"
|
||||
RESPOND MSG="Examine print and find best corner quality"
|
||||
|
||||
# Home and prepare
|
||||
G1 Z10 F600
|
||||
G1 X50 Y50 F3000
|
||||
|
||||
# Note: Full PA calibration pattern would go here
|
||||
# For now, use Klipper's built-in calibration
|
||||
RESPOND MSG="Step 4: Running automatic PA calibration..."
|
||||
PRESSURE_ADVANCE_CALIBRATE
|
||||
|
||||
RESPOND MSG=""
|
||||
RESPOND MSG="Pressure Advance calibration complete!"
|
||||
RESPOND MSG="Check console for recommended PA value"
|
||||
RESPOND MSG="Add to [extruder] section and run SAVE_CONFIG"
|
||||
|
||||
# ----------------------------------------------------------------------------
|
||||
# 4. FLOW RATE CALIBRATION
|
||||
# ----------------------------------------------------------------------------
|
||||
[gcode_macro CALIBRATE_FLOW_RATE]
|
||||
description: Calibrate flow rate for exact wall dimensions
|
||||
gcode:
|
||||
{% set FILAMENT = params.FILAMENT|default("PLA")|upper %}
|
||||
|
||||
RESPOND MSG="Starting Flow Rate Calibration..."
|
||||
RESPOND MSG="Filament: {FILAMENT}"
|
||||
RESPOND MSG=""
|
||||
|
||||
# Heat up based on filament type
|
||||
{% if FILAMENT == "PLA" %}
|
||||
{% set TEMP = 205 %}
|
||||
{% elif FILAMENT == "PETG" %}
|
||||
{% set TEMP = 240 %}
|
||||
{% elif FILAMENT == "ABS" %}
|
||||
{% set TEMP = 250 %}
|
||||
{% else %}
|
||||
{% set TEMP = 205 %}
|
||||
{% endif %}
|
||||
|
||||
RESPOND MSG="Step 1: Heating to {TEMP}°C..."
|
||||
M104 S{TEMP}
|
||||
M190 S60
|
||||
TEMPERATURE_WAIT SENSOR=extruder MINIMUM={TEMP-5}
|
||||
|
||||
RESPOND MSG="Step 2: Homing..."
|
||||
G28
|
||||
|
||||
RESPOND MSG="Step 3: Printing flow test cube..."
|
||||
RESPOND MSG="Cube will have walls printed at different flow rates"
|
||||
RESPOND MSG=""
|
||||
RESPOND MSG="After print:"
|
||||
RESPOND MSG=" 1. Measure wall thickness with calipers"
|
||||
RESPOND MSG=" 2. Find which section matches nominal wall width"
|
||||
RESPOND MSG=" 3. Calculate: New Flow = Old Flow × (Measured / Nominal)"
|
||||
RESPOND MSG=""
|
||||
|
||||
# Home and prepare
|
||||
G1 Z10 F600
|
||||
G1 X50 Y50 F3000
|
||||
|
||||
RESPOND MSG="Step 4: Starting print..."
|
||||
# Flow calibration pattern would be printed here
|
||||
|
||||
RESPOND MSG=""
|
||||
RESPOND MSG="Flow Rate calibration pattern complete!"
|
||||
RESPOND MSG="Update flow_ratio in filament profile and run SAVE_CONFIG"
|
||||
|
||||
# ----------------------------------------------------------------------------
|
||||
# 5. TEMPERATURE TOWER
|
||||
# ----------------------------------------------------------------------------
|
||||
[gcode_macro CALIBRATE_TEMPERATURE]
|
||||
description: Print temperature tower to find optimal temp
|
||||
gcode:
|
||||
{% set FILAMENT = params.FILAMENT|default("PLA")|upper %}
|
||||
{% set START_TEMP = params.START|default(195)|int %}
|
||||
{% set END_TEMP = params.END|default(225)|int %}
|
||||
{% set STEP = params.STEP|default(5)|int %}
|
||||
|
||||
RESPOND MSG="Starting Temperature Tower..."
|
||||
RESPOND MSG="Filament: {FILAMENT}"
|
||||
RESPOND MSG="Temperature Range: {START_TEMP}°C - {END_TEMP}°C"
|
||||
RESPOND MSG=""
|
||||
|
||||
RESPOND MSG="Step 1: Heating bed..."
|
||||
M190 S60
|
||||
TEMPERATURE_WAIT SENSOR=heater_bed MINIMUM=55
|
||||
|
||||
RESPOND MSG="Step 2: Homing..."
|
||||
G28
|
||||
|
||||
RESPOND MSG="Step 3: Printing temperature tower..."
|
||||
RESPOND MSG="Each section uses different temperature"
|
||||
RESPOND MSG=""
|
||||
RESPOND MSG="After print:"
|
||||
RESPOND MSG=" 1. Check for stringing (too hot)"
|
||||
RESPOND MSG=" 2. Check for poor layer adhesion (too cold)"
|
||||
RESPOND MSG=" 3. Check bridging quality"
|
||||
RESPOND MSG=" 4. Choose best temperature section"
|
||||
RESPOND MSG=""
|
||||
|
||||
# Home and prepare
|
||||
G1 Z10 F600
|
||||
G1 X50 Y50 F3000
|
||||
|
||||
RESPOND MSG="Step 4: Starting print..."
|
||||
# Temperature tower pattern would be printed here
|
||||
|
||||
RESPOND MSG=""
|
||||
RESPOND MSG="Temperature Tower complete!"
|
||||
RESPOND MSG="Update nozzle_temperature in filament profile"
|
||||
|
||||
# ----------------------------------------------------------------------------
|
||||
# 6. RETRACTION TEST
|
||||
# ----------------------------------------------------------------------------
|
||||
[gcode_macro CALIBRATE_RETRACTION]
|
||||
description: Test retraction settings to minimize stringing
|
||||
gcode:
|
||||
{% set FILAMENT = params.FILAMENT|default("PLA")|upper %}
|
||||
{% set HOTEND = params.HOTEND|default("ORIGINAL")|upper %}
|
||||
|
||||
RESPOND MSG="Starting Retraction Test..."
|
||||
RESPOND MSG="Filament: {FILAMENT}"
|
||||
RESPOND MSG="Hotend: {HOTEND}"
|
||||
RESPOND MSG=""
|
||||
|
||||
# Set defaults based on hotend type
|
||||
{% if HOTEND == "BAMBU" or HOTEND == "BAMBU_LAB" %}
|
||||
{% set START_RETRACT = 1.2 %}
|
||||
{% set END_RETRACT = 2.5 %}
|
||||
{% else %}
|
||||
{% set START_RETRACT = 1.5 %}
|
||||
{% set END_RETRACT = 3.5 %}
|
||||
{% endif %}
|
||||
|
||||
# Heat up based on filament type
|
||||
{% if FILAMENT == "PLA" %}
|
||||
{% set TEMP = 205 %}
|
||||
{% elif FILAMENT == "PETG" %}
|
||||
{% set TEMP = 240 %}
|
||||
{% elif FILAMENT == "ABS" %}
|
||||
{% set TEMP = 250 %}
|
||||
{% else %}
|
||||
{% set TEMP = 205 %}
|
||||
{% endif %}
|
||||
|
||||
RESPOND MSG="Step 1: Heating to {TEMP}°C..."
|
||||
M104 S{TEMP}
|
||||
M190 S60
|
||||
TEMPERATURE_WAIT SENSOR=extruder MINIMUM={TEMP-5}
|
||||
|
||||
RESPOND MSG="Step 2: Homing..."
|
||||
G28
|
||||
|
||||
RESPOND MSG="Step 3: Printing retraction test..."
|
||||
RESPOND MSG="Testing retraction from {START_RETRACT}mm to {END_RETRACT}mm"
|
||||
RESPOND MSG=""
|
||||
RESPOND MSG="After print:"
|
||||
RESPOND MSG=" 1. Find section with least stringing"
|
||||
RESPOND MSG=" 2. Ensure no underextrusion"
|
||||
RESPOND MSG=" 3. Use that retraction value"
|
||||
RESPOND MSG=""
|
||||
|
||||
# Home and prepare
|
||||
G1 Z10 F600
|
||||
G1 X50 Y50 F3000
|
||||
|
||||
RESPOND MSG="Step 4: Starting print..."
|
||||
# Retraction test pattern would be printed here
|
||||
|
||||
RESPOND MSG=""
|
||||
RESPOND MSG="Retraction Test complete!"
|
||||
RESPOND MSG="Update retract_length in filament profile"
|
||||
|
||||
# ----------------------------------------------------------------------------
|
||||
# 7. BED MESH CALIBRATION
|
||||
# ----------------------------------------------------------------------------
|
||||
[gcode_macro CALIBRATE_BED_MESH]
|
||||
description: Calibrate bed mesh with Cartographer
|
||||
gcode:
|
||||
RESPOND MSG="Starting Bed Mesh Calibration..."
|
||||
RESPOND MSG=""
|
||||
RESPOND MSG="Step 1: Heating bed..."
|
||||
M190 S60
|
||||
TEMPERATURE_WAIT SENSOR=heater_bed MINIMUM=55
|
||||
|
||||
RESPOND MSG="Step 2: Homing..."
|
||||
G28
|
||||
|
||||
RESPOND MSG="Step 3: Clearing existing mesh..."
|
||||
BED_MESH_CLEAR
|
||||
|
||||
RESPOND MSG="Step 4: Starting adaptive mesh calibration..."
|
||||
BED_MESH_CALIBRATE ADAPTIVE=1
|
||||
|
||||
RESPOND MSG=""
|
||||
RESPOND MSG="Bed Mesh calibration complete!"
|
||||
RESPOND MSG="Mesh saved automatically"
|
||||
RESPOND MSG="Run SAVE_CONFIG to make permanent"
|
||||
|
||||
# ----------------------------------------------------------------------------
|
||||
# FULL CALIBRATION SUITE - Runs all calibrations in sequence
|
||||
# ----------------------------------------------------------------------------
|
||||
[gcode_macro CALIBRATION_FULL]
|
||||
description: Run complete calibration suite (takes ~2.5 hours)
|
||||
gcode:
|
||||
RESPOND MSG="=============================================="
|
||||
RESPOND MSG=" STARTING FULL CALIBRATION SUITE"
|
||||
RESPOND MSG=" Estimated time: ~2.5 hours"
|
||||
RESPOND MSG="=============================================="
|
||||
RESPOND MSG=""
|
||||
RESPOND MSG="This will run ALL calibrations in sequence."
|
||||
RESPOND MSG="You can stop at any time with emergency stop."
|
||||
RESPOND MSG=""
|
||||
RESPOND MSG="Starting in 5 seconds..."
|
||||
G4 P5000
|
||||
|
||||
# 1. Z-Offset
|
||||
RESPOND MSG=">>> Starting Z-Offset Calibration..."
|
||||
CALIBRATE_Z_OFFSET
|
||||
G4 P2000
|
||||
|
||||
# 2. Input Shaper
|
||||
RESPOND MSG=">>> Starting Input Shaper Calibration..."
|
||||
CALIBRATE_INPUT_SHAPER
|
||||
G4 P2000
|
||||
|
||||
# 3. Pressure Advance
|
||||
RESPOND MSG=">>> Starting Pressure Advance Calibration..."
|
||||
CALIBRATE_PRESSURE_ADVANCE FILAMENT=PLA
|
||||
G4 P2000
|
||||
|
||||
# 4. Flow Rate
|
||||
RESPOND MSG=">>> Starting Flow Rate Calibration..."
|
||||
CALIBRATE_FLOW_RATE FILAMENT=PLA
|
||||
G4 P2000
|
||||
|
||||
# 5. Temperature Tower
|
||||
RESPOND MSG=">>> Starting Temperature Tower..."
|
||||
CALIBRATE_TEMPERATURE FILAMENT=PLA
|
||||
G4 P2000
|
||||
|
||||
# 6. Retraction Test
|
||||
RESPOND MSG=">>> Starting Retraction Test..."
|
||||
CALIBRATE_RETRACTION FILAMENT=PLA
|
||||
G4 P2000
|
||||
|
||||
# 7. Bed Mesh
|
||||
RESPOND MSG=">>> Starting Bed Mesh Calibration..."
|
||||
CALIBRATE_BED_MESH
|
||||
|
||||
RESPOND MSG=""
|
||||
RESPOND MSG="=============================================="
|
||||
RESPOND MSG=" FULL CALIBRATION SUITE COMPLETE!"
|
||||
RESPOND MSG="=============================================="
|
||||
RESPOND MSG=""
|
||||
RESPOND MSG="IMPORTANT: Run SAVE_CONFIG now to save all settings!"
|
||||
RESPOND MSG=""
|
||||
|
||||
# ----------------------------------------------------------------------------
|
||||
# QUICK CALIBRATION - Essential calibrations only (~30 min)
|
||||
# ----------------------------------------------------------------------------
|
||||
[gcode_macro CALIBRATION_QUICK]
|
||||
description: Run quick calibration (Z-offset + PA + Bed Mesh, ~30 min)
|
||||
gcode:
|
||||
RESPOND MSG="=============================================="
|
||||
RESPOND MSG=" STARTING QUICK CALIBRATION"
|
||||
RESPOND MSG=" Estimated time: ~30 minutes"
|
||||
RESPOND MSG="=============================================="
|
||||
RESPOND MSG=""
|
||||
|
||||
# 1. Z-Offset
|
||||
RESPOND MSG=">>> Z-Offset Calibration..."
|
||||
CALIBRATE_Z_OFFSET
|
||||
G4 P2000
|
||||
|
||||
# 2. Pressure Advance
|
||||
RESPOND MSG=">>> Pressure Advance Calibration..."
|
||||
CALIBRATE_PRESSURE_ADVANCE FILAMENT=PLA
|
||||
G4 P2000
|
||||
|
||||
# 3. Bed Mesh
|
||||
RESPOND MSG=">>> Bed Mesh Calibration..."
|
||||
CALIBRATE_BED_MESH
|
||||
|
||||
RESPOND MSG=""
|
||||
RESPOND MSG="=============================================="
|
||||
RESPOND MSG=" QUICK CALIBRATION COMPLETE!"
|
||||
RESPOND MSG="=============================================="
|
||||
RESPOND MSG=""
|
||||
RESPOND MSG="Run SAVE_CONFIG to save settings!"
|
||||
277
calibration/test_patterns.cfg
Normal file
277
calibration/test_patterns.cfg
Normal file
|
|
@ -0,0 +1,277 @@
|
|||
# ============================================================================
|
||||
# CALIBRATION TEST PATTERNS
|
||||
# Actual printable G-code patterns for calibration tests
|
||||
# ============================================================================
|
||||
|
||||
# ----------------------------------------------------------------------------
|
||||
# PRESSURE ADVANCE TEST PATTERN
|
||||
# Prints squares with varying PA values
|
||||
# ----------------------------------------------------------------------------
|
||||
[gcode_macro PA_TEST_PATTERN]
|
||||
description: Print Pressure Advance test pattern
|
||||
gcode:
|
||||
{% set START_PA = params.START|default(0.01)|float %}
|
||||
{% set END_PA = params.END|default(0.05)|float %}
|
||||
{% set STEPS = params.STEPS|default(10)|int %}
|
||||
{% set TEMP = params.TEMP|default(205)|int %}
|
||||
|
||||
# Heat up
|
||||
M104 S{TEMP}
|
||||
M190 S60
|
||||
TEMPERATURE_WAIT SENSOR=extruder MINIMUM={TEMP-5}
|
||||
TEMPERATURE_WAIT SENSOR=heater_bed MINIMUM=55
|
||||
|
||||
# Home
|
||||
G28
|
||||
G1 Z10 F600
|
||||
|
||||
# Settings
|
||||
G90 ; Absolute positioning
|
||||
M83 ; Relative extrusion
|
||||
G92 E0
|
||||
|
||||
{% set step_size = (END_PA - START_PA) / STEPS %}
|
||||
{% set square_size = 20 %}
|
||||
{% set spacing = 5 %}
|
||||
|
||||
RESPOND MSG="Printing {STEPS} squares with PA from {START_PA} to {END_PA}"
|
||||
|
||||
{% for step in range(STEPS) %}
|
||||
{% set current_pa = START_PA + (step * step_size) %}
|
||||
{% set x_pos = 50 + (step % 5) * (square_size + spacing) %}
|
||||
{% set y_pos = 50 + (step // 5) * (square_size + spacing) %}
|
||||
|
||||
RESPOND MSG="Square {step + 1}/{STEPS}: PA={current_pa:.3f}"
|
||||
SET_PRESSURE_ADVANCE ADVANCE={current_pa}
|
||||
|
||||
# Move to position
|
||||
G1 X{x_pos} Y{y_pos} Z0.2 F3000
|
||||
|
||||
# Print square
|
||||
G1 X{x_pos + square_size} E10 F1800
|
||||
G1 Y{y_pos + square_size} E10 F1800
|
||||
G1 X{x_pos} E10 F1800
|
||||
G1 Y{y_pos} E10 F1800
|
||||
|
||||
# Lift Z
|
||||
G1 Z5 F600
|
||||
{% endfor %}
|
||||
|
||||
RESPOND MSG="PA Test Pattern complete!"
|
||||
RESPOND MSG="Examine squares and find best corner quality"
|
||||
|
||||
# ----------------------------------------------------------------------------
|
||||
# FLOW RATE TEST CUBE
|
||||
# Prints cube with varying flow rates
|
||||
# ----------------------------------------------------------------------------
|
||||
[gcode_macro FLOW_TEST_CUBE]
|
||||
description: Print flow rate calibration cube
|
||||
gcode:
|
||||
{% set START_FLOW = params.START|default(0.90)|float %}
|
||||
{% set END_FLOW = params.END|default(1.10)|float %}
|
||||
{% set STEPS = params.STEPS|default(5)|int %}
|
||||
{% set TEMP = params.TEMP|default(205)|int %}
|
||||
|
||||
# Heat up
|
||||
M104 S{TEMP}
|
||||
M190 S60
|
||||
TEMPERATURE_WAIT SENSOR=extruder MINIMUM={TEMP-5}
|
||||
TEMPERATURE_WAIT SENSOR=heater_bed MINIMUM=55
|
||||
|
||||
# Home
|
||||
G28
|
||||
G1 Z10 F600
|
||||
|
||||
# Settings
|
||||
G90 ; Absolute positioning
|
||||
M83 ; Relative extrusion
|
||||
G92 E0
|
||||
|
||||
{% set step_size = (END_FLOW - START_FLOW) / STEPS %}
|
||||
{% set cube_height = 20 %}
|
||||
{% set wall_thickness = 0.4 %}
|
||||
|
||||
RESPOND MSG="Printing flow cube with {STEPS} sections"
|
||||
RESPOND MSG="Flow range: {START_FLOW} to {END_FLOW}"
|
||||
|
||||
{% for step in range(STEPS) %}
|
||||
{% set current_flow = START_FLOW + (step * step_size) %}
|
||||
{% set z_start = step * cube_height %}
|
||||
|
||||
RESPOND MSG="Section {step + 1}/{STEPS}: Flow={current_flow:.2f}"
|
||||
|
||||
# Set flow rate (via extrusion multiplier simulation)
|
||||
{% set flow_multiplier = current_flow %}
|
||||
|
||||
# Print walls for this section
|
||||
{% for layer in range(4) %}
|
||||
{% set z_height = z_start + (layer * 0.2) %}
|
||||
G1 Z{z_height} F600
|
||||
|
||||
# Wall 1
|
||||
G1 X50 Y50 F3000
|
||||
G1 X70 E{10 * flow_multiplier} F1800
|
||||
|
||||
# Wall 2
|
||||
G1 Y70 E{10 * flow_multiplier} F1800
|
||||
|
||||
# Wall 3
|
||||
G1 X50 E{10 * flow_multiplier} F1800
|
||||
|
||||
# Wall 4
|
||||
G1 Y50 E{10 * flow_multiplier} F1800
|
||||
{% endfor %}
|
||||
{% endfor %}
|
||||
|
||||
# Lift Z
|
||||
G1 Z50 F600
|
||||
|
||||
RESPOND MSG="Flow Test Cube complete!"
|
||||
RESPOND MSG="Measure walls with calipers and calculate optimal flow"
|
||||
|
||||
# ----------------------------------------------------------------------------
|
||||
# RETRACTION TEST PATTERN
|
||||
# Prints towers with varying retraction lengths
|
||||
# ----------------------------------------------------------------------------
|
||||
[gcode_macro RETRACT_TEST_PATTERN]
|
||||
description: Print retraction test pattern
|
||||
gcode:
|
||||
{% set START_RETRACT = params.START|default(1.0)|float %}
|
||||
{% set END_RETRACT = params.END|default(4.0)|float %}
|
||||
{% set STEPS = params.STEPS|default(8)|int %}
|
||||
{% set TEMP = params.TEMP|default(205)|int %}
|
||||
|
||||
# Heat up
|
||||
M104 S{TEMP}
|
||||
M190 S60
|
||||
TEMPERATURE_WAIT SENSOR=extruder MINIMUM={TEMP-5}
|
||||
TEMPERATURE_WAIT SENSOR=heater_bed MINIMUM=55
|
||||
|
||||
# Home
|
||||
G28
|
||||
G1 Z10 F600
|
||||
|
||||
# Settings
|
||||
G90 ; Absolute positioning
|
||||
M83 ; Relative extrusion
|
||||
|
||||
{% set step_size = (END_RETRACT - START_RETRACT) / STEPS %}
|
||||
{% set tower_height = 15 %}
|
||||
{% set layers_per_tower = 75 %}
|
||||
|
||||
RESPOND MSG="Printing retraction test with {STEPS} towers"
|
||||
RESPOND MSG="Retraction range: {START_RETRACT}mm to {END_RETRACT}mm"
|
||||
|
||||
{% for step in range(STEPS) %}
|
||||
{% set current_retract = START_RETRACT + (step * step_size) %}
|
||||
{% set x_pos = 30 + (step % 4) * 25 %}
|
||||
{% set y_pos = 30 + (step // 4) * 25 %}
|
||||
|
||||
RESPOND MSG="Tower {step + 1}/{STEPS}: Retract={current_retract:.1f}mm"
|
||||
|
||||
# Print tower
|
||||
{% for layer in range(layers_per_tower) %}
|
||||
{% set z_height = layer * 0.2 %}
|
||||
G1 Z{z_height} F600
|
||||
|
||||
# Move to tower position
|
||||
G1 X{x_pos} Y{y_pos} F3000
|
||||
|
||||
# Retract
|
||||
G1 E-{current_retract} F2100
|
||||
|
||||
# Travel to next tower position (simulates stringing test)
|
||||
{% if step < STEPS - 1 %}
|
||||
{% set next_x = 30 + ((step + 1) % 4) * 25 %}
|
||||
{% set next_y = 30 + ((step + 1) // 4) * 25 %}
|
||||
G1 X{next_x} Y{next_y} F3000
|
||||
|
||||
# De-retract
|
||||
G1 E{current_retract} F2100
|
||||
{% endif %}
|
||||
|
||||
# Small square for this layer
|
||||
G1 X{x_pos + 10} E2 F1800
|
||||
G1 Y{y_pos + 10} E2 F1800
|
||||
G1 X{x_pos} E2 F1800
|
||||
G1 Y{y_pos} E2 F1800
|
||||
{% endfor %}
|
||||
|
||||
# Lift Z
|
||||
G1 Z20 F600
|
||||
{% endfor %}
|
||||
|
||||
RESPOND MSG="Retraction Test Pattern complete!"
|
||||
RESPOND MSG="Find tower with least stringing"
|
||||
|
||||
# ----------------------------------------------------------------------------
|
||||
# TEMPERATURE TOWER
|
||||
# Prints tower with varying temperatures
|
||||
# ----------------------------------------------------------------------------
|
||||
[gcode_macro TEMP_TOWER]
|
||||
description: Print temperature tower
|
||||
gcode:
|
||||
{% set START_TEMP = params.START|default(195)|int %}
|
||||
{% set END_TEMP = params.END|default(225)|int %}
|
||||
{% set STEP = params.STEP|default(5)|int %}
|
||||
{% set BED_TEMP = params.BED|default(60)|int %}
|
||||
|
||||
# Heat bed
|
||||
M190 S{BED_TEMP}
|
||||
TEMPERATURE_WAIT SENSOR=heater_bed MINIMUM={BED_TEMP-5}
|
||||
|
||||
# Home
|
||||
G28
|
||||
G1 Z10 F600
|
||||
|
||||
# Settings
|
||||
G90 ; Absolute positioning
|
||||
M83 ; Relative extrusion
|
||||
G92 E0
|
||||
|
||||
{% set sections = ((END_TEMP - START_TEMP) / STEP)|int + 1 %}
|
||||
{% set section_height = 10 %}
|
||||
{% set layers_per_section = 50 %}
|
||||
|
||||
RESPOND MSG="Printing temperature tower"
|
||||
RESPOND MSG="Temp range: {START_TEMP}°C to {END_TEMP}°C"
|
||||
RESPOND MSG="Sections: {sections}"
|
||||
|
||||
{% for section in range(sections) %}
|
||||
{% set current_temp = START_TEMP + (section * STEP) %}
|
||||
{% set z_start = section * section_height %}
|
||||
|
||||
RESPOND MSG="Section {section + 1}/{sections}: {current_temp}°C"
|
||||
|
||||
# Set temperature
|
||||
M104 S{current_temp}
|
||||
|
||||
# Wait for temp to stabilize
|
||||
TEMPERATURE_WAIT SENSOR=extruder MINIMUM={current_temp-2} MAXIMUM={current_temp+2}
|
||||
G4 P3000 ; Extra wait for stabilization
|
||||
|
||||
# Print section
|
||||
{% for layer in range(layers_per_section) %}
|
||||
{% set z_height = z_start + (layer * 0.2) %}
|
||||
G1 Z{z_height} F600
|
||||
|
||||
# Print square
|
||||
G1 X100 Y100 F3000
|
||||
G1 X120 E10 F1800
|
||||
G1 Y120 E10 F1800
|
||||
G1 X100 E10 F1800
|
||||
G1 Y100 E10 F1800
|
||||
|
||||
# Bridging test every 10 layers
|
||||
{% if layer % 10 == 0 and layer > 0 %}
|
||||
G1 X110 Y110 E5 F2000 ; Bridge
|
||||
{% endif %}
|
||||
{% endfor %}
|
||||
{% endfor %}
|
||||
|
||||
# Cool down
|
||||
M104 S0
|
||||
G1 Z50 F600
|
||||
|
||||
RESPOND MSG="Temperature Tower complete!"
|
||||
RESPOND MSG="Examine sections for best quality"
|
||||
Loading…
Add table
Add a link
Reference in a new issue