Замер максимального объёмного потока тензодатчиком
Max Volumetric Speed (MVS) — потолок скорости плавления конкретной катушки, который слайсер использует как жёсткий лимит: заниженный MVS молча режет все скорости печати (профиль со скоростью 230 мм/с при MVS 14 реально печатает ~172). Обычно MVS ставят на глазок или по вендорскому профилю. Тензодатчиком в сопле его можно измерить: противодавление расплава растёт с потоком закономерно, а на пределе плавления ломается характерным образом. Метод — flow-модуль CNCKitchen/PrusaPATuner, портируется целиком (чистая математика).
Метод: лесенка потоков
- Чистая E-экструзия в воздух (вобл не нужен: противодавление доходит до датчика и без XY-движения — PA здесь не участвует).
- Прогрев 3 с на минимальном потоке → 1.5 с тишины (guard-базлайн после тарирования) → ступени потока FMIN→FMAX (эталон 5→30 мм³/с шагом 1) по 2 с каждая. Первая половина каждой полки отбрасывается как переходный процесс.
- Расход: (5+6+…+30)·2 с / 2.405 мм² ≈ 385 мм филамента ≈ 1.15 г PLA за полный прогон. Частота датчика некритична: даже на ~40 Гц полка даёт ~40 сэмплов после отброса. Каверза длины хода: одна полка = один extrude-only ход; верхняя полка 30 мм³/с × 2 с ≈ 25 мм — упирается в
max_extrude_only_distanceпри больших DWELL.
Анализ: фит + три независимых детектора
Базлайн — фит степенного закона F = a·Q^b + c по нижним ~45% полок (min 5): c впитывает статическую нагрузку, b — реология. Эталонный код фитит scipy.curve_fit с границами b∈[0.05, 2]; фолбэк без scipy — лог-лог линейная регрессия (форсирует c=0 и занижает b при ненулевом офсете). Мои фиты: PLA F=1944·Q^1.51+4.4e4 (R²=0.993), PETG F=1.3e4·Q^1.09+5.5e4 (R²=0.999) — заявленное «шёл b<1» не догма, важна форма.
Детекторы предела (самый ранний побеждает):
- Отрыв вверх (deviation): средняя сила полки превышает предсказание фита на max(4·σ_остатков, 10% отн.) — две полки подряд (одна = шум). Физика: в расплав идёт нерасплавленное ядро, сопротивление растёт быстрее закона.
- Рост дисперсии (variance onset): σ полки > 3× медианы σ тихой зоны — предвестник пропусков экструдера.
- Обвал (collapse): средняя сила падает >15% от пика — экструдер уже щёлкает, реальная подача рухнула.
Рекомендация = самый ранний триггер × (1 − 0.15) — 15% дерейт на вариативность катушек и температуры. Показывать оба числа: реальный предел (где сломалось) и безопасное (в слайсер).
Чистый прогон моего Elegoo Rapid PETG (@240, ~40 Гц, над опущенным столом)
QFLOW_MEASURE: 26 levels 5.0-30.0 mm3/s, 2.0 s each, 2279 samples
guard baseline: mean=-1467 sigma=725 counts over 60 samples
Q мм³/с подача мм/с n сила a.u. σ
5.00 2.079 40 128332 1617
6.00 2.495 40 146509 1552
...ровный степенной рост, σ ≈ 1.5–2.7k...
21.00 8.731 40 433951 5170
22.00 9.147 40 469611 2697
23.00 9.562 40 573447 14513 ← отрыв вверх (deviation)
24.00 9.978 40 650673 5745 ← пик
25.00 10.394 40 637425 25754 ← начало обвала, σ взлетела
26.00 10.810 40 576543 154151 ← экструдер щёлкает
28.00 11.641 40 566069 146827
30.00 12.473 40 553854 131...
note: baseline fit F=1.302e+04*Q^1.09+5.458e+04 over 12 levels (R2=0.999, resid sigma=1744)
note: quiet-region force sigma=2067; variance trigger at 3x = 6201
note: recommended max = 23.00 x (1-0.15) = 19.55 mm3/s
sensor 40.0 Hz, read errors 0; filament used 385 mm (1.15 g)
Для сравнения: вендорские профили этому классу PETG ставят 12–17 — датчик показал честные ~19.6 с запасом, прямая прибавка скорости печати.
Отрицательный пример: мой же замер, загрязнённый кучей (PLA @220, у жёлоба)
Первый прогон PLA шёл в одну точку над жёлобом — 385 мм прутка выросли столбиком до сопла к верхним полкам:
5.00 → 64321 (σ1114) ... ровный рост ...
15.00 → 157268 (σ2162)
16.00 → 178368 (σ5465) ← первый σ-выброс (куча начала касаться)
17.00 → 192187 (σ2082) ← и «отпустила» — σ пляшет
18.00 → 193804 (σ5708) ← детектор дисперсии сработал ЗДЕСЬ (порог 3×1741=5222)
...
28.00 → +65k ступенька в средних при ровном тренде вокруг
→ guard: "WARNING baseline shift ... The verdict below is suspect; re-run before trusting"
→ deviation 23.00 | variance 18.00 | recommended 15.30 — ЗАБРАКОВАНО
Перемер над опущенным столом дал чистые предел ~22 / безопасно 18.7 мм³/с — детектор дисперсии в грязном прогоне сработал на 3–4 полки раньше срока от механического контакта, а «перетарировка» на Q=28 была касанием кучи. Guard спас от занижения MVS на ~18%.
Итог замеров моих катушек
| Катушка | Реальный предел | Безопасный (в слайсер) | Вендорский профиль |
|---|---|---|---|
| QIDI PLA Rapido @220 | ~22 | 18.7 | 14 |
| Elegoo Rapid PETG @240 | 23 | 19.6 | 12–17 |
Guard против тихой перетарировки
Прошивка может молча перетарировать датчик посреди замера (у Prusa наблюдали DC-сдвиг 787→0 при прогреве, из-за чего якорь анализа уезжал на 9 ступеней). При точных границах полок из планировщика сдвиг окна невозможен, но средние полок он сдвигает — детектор: ступенька в средних при неизменном тренде с обеих сторон (двусторонняя проверка отличает перетарировку от реального излома — у излома дельты остаются повышенными). Только предупреждение, без автокомпенсации: молча вычесть сдвиг = риск отдать завышенный MVS, это небезопасная сторона ошибки. Пример пользы у меня: ступенька +65k на Q=28 оказалась не перетарировкой, а контактом кучи пластика с соплом — guard честно пометил прогон подозрительным, перемер над опущенным столом дал чистую лесенку.
Гочи
- Куча пластика под соплом — главный враг (385 мм прутка в одну точку!): экструдить над опущенным столом или распределять точку по ходу — см. Загрязнение силовых замеров экструзии.
- Граница полок — полуоткрытое окно
[t_from, t_to): закрытое с обеих сторон захватывает первый (ещё растущий) сэмпл следующей полки и раздувает σ в ~4 раза, глуша детектор дисперсии (найдено мутационной симуляцией: детектор срабатывал на 25 вместо 19 при истинном пределе 16). - Смена материала перед замером требует продувки старого из расплава — как и у PA.
- Температура — часть результата: MVS@220 ≠ MVS@240, фиксировать вместе с числом.
Практика на конкретной машине — Авто-калибровка PA и потока на QIDI Q2 — гайд.
Источники
- CNCKitchen/PrusaPATuner —
src/prusa_pa_tuner/flow_gen.py+flow_analysis.py(лесенка, фит, детекторы, baseline-shift guard, дерейт 0.15) - Константы эталона: N_SIGMA=4, REL_TOL=0.10, VAR_FACTOR=3, COLLAPSE_FRAC=0.15, FIT_FRAC=0.45, SETTLE_FRAC=0.5, DERATE_FRAC=0.15