Перейти к основному содержанию

Использование акселерометра

Работы при отключенном питании

Перед началом полностью выключите принтер и отключите его от источника питания. Не подключайте и не отключайте жгуты проводов, не наводите порядок в разводке интерфейсов и не прикасайтесь к клеммам, когда устройство находится под напряжением.

Совет
  • Mini Pad может подключать акселерометр напрямую через встроенный интерфейс или использовать акселерометр, встроенный в инструментальную плату и т.п.

Подключение внешнего акселерометра через встроенный интерфейс

Loading...
  • Пример конфигурации
[mcu host]
serial: /tmp/klipper_host_mcu

[adxl345]
cs_pin: host:None
spi_bus: spidev1.0

[resonance_tester]
accel_chip: adxl345
#accel_chip_y: adxl345 bed
probe_points:
100, 100, 20 # пример

Использование акселерометра

Тестирование и калибровка акселерометра

Установка зависимых пакетов

Примечания
  • Если на устройстве уже работает система FlyOS-FAST, все необходимые зависимости предустановлены, этот шаг можно пропустить.
  • При использовании не FLY верхнего компьютера обязательно выполните следующие операции по установке.
  • Рекомендуется подключаться с помощью SSH-инструментов, таких как MobaXterm, PuTTY, перед выполнением операций.
  • Данное руководство основано на Raspberry Pi, для других платформ материал приведен только для справки.

Шаги установки

  1. Последовательно выполните следующие команды для установки зависимых пакетов.
  2. Время установки зависит от производительности процессора и состояния сети, обычно занимает 10–20 минут. Пожалуйста, терпеливо дождитесь завершения установки.
  3. Если объем оперативной памяти (RAM) устройства слишком мал, установка может завершиться неудачей.

Шаг 1: Установка системных зависимых пакетов

sudo apt install python3-numpy python3-matplotlib libatlas-base-dev

Шаг 2: Установка зависимых пакетов виртуальной среды Klipper

~/klippy-env/bin/pip install matplotlib numpy

Тестирование акселерометра

Предварительные условия

  • Принтер выполнил операцию возврата в исходное положение (Homing).
  • Убедитесь, что акселерометр правильно включен в файле конфигурации Klipper.

Команды тестирования

Введите следующую команду в консоли Klipper:

ACCELEROMETER_QUERY

Если подключено несколько акселерометров, можно указать конкретный чип для тестирования:

ACCELEROMETER_QUERY CHIP=<Название чипа ADXL>

Замените <Название чипа ADXL> на фактический идентификатор акселерометра (например, adxl345).

Подсказка

В некоторых старых версиях Klipper для получения данных акселерометра необходимо выполнить ACCELEROMETER_QUERY дважды.

Обработка распространенных проблем

Отключение питания

Перед проверкой, повторным подключением или заменой кабелей акселерометра полностью выключите принтер и отключите источник питания. Не подключайте и не отключайте модули ADXL/LIS2DW/MPU/ICM и не прикасайтесь к оголенным контактам при включенном питании.

  1. Сбой при первом выполнении: В некоторых версиях Klipper может наблюдаться задержка распознавания команды. Если при первом выполнении данные не возвращены, выполните ту же команду еще раз.
  2. Команда не распознается: Если после многократного выполнения по-прежнему выводится сообщение о неизвестной команде, возможно, версия Klipper слишком старая. Рекомендуется:
    • Обновить Klipper до последней версии
    • Или перепрошить последнюю версию системы (например, последнюю версию FlyOS-FAST)
  3. Invalid adxl345 id: Если выводится сообщение Invalid adxl345 id (got xx vs e5), сначала немедленно выполните ACCELEROMETER_QUERY еще раз; если ошибка повторяется, в первую очередь замените готовый кабель акселерометра, переходную плату или модуль датчика для перекрестного тестирования. Не рекомендуется, чтобы обычные пользователи самостоятельно допаивали или ремонтировали паяные соединения.
  4. Invalid lis2dw / mpu / icm id: При использовании датчиков LIS2DW, MPU9250, ICM20948 и т. д. убедитесь, что имя секции конфигурации, шина связи и модель чипа соответствуют фактическому оборудованию.
  5. Unable to obtain response / timeout: Обычно указывает на проблему связи между верхним компьютером и MCU акселерометра. Проверьте USB/CAN-подключение, идентификатор [mcu], cs_pin, spi_bus или i2c_bus.

BatchBulkHelper / spi_transfer_response

Сообщение об ошибке: При выполнении ACCELEROMETER_QUERY, TEST_RESONANCES или SHAPER_CALIBRATE появляется:

BatchBulkHelper start callback error
BatchBulkHelper stop callback error
Unable to obtain 'spi_transfer_response' response

Характер ошибки: spi_transfer_response означает, что Klipper не получил ответ на SPI-запрос, но это может быть не первопричина. В недавних случаях из журналов MCU сначала переходил в shutdown из-за Timer too close, и только затем пакетный сбор данных ADXL сообщал о невозможности получить ответ по SPI; в этом случае сначала следует обработать предыдущий shutdown, а не сразу считать акселерометр неисправным.

Метод диагностики:

  1. В полном klippy.log найдите первое сообщение BatchBulkHelper, затем прокрутите вверх в поисках более ранних сообщений Timer too close, Lost communication with MCU, MCU shutdown или Serial connection closed.
  2. Если обнаружен более ранний shutdown, сначала устраните первопричину в соответствии с Ошибки системы и тайм-аута; последующее сообщение spi_transfer_response обычно исчезает после восстановления соединения.
  3. Если более раннего shutdown нет, а ошибка возникает немедленно при каждом выполнении ACCELEROMETER_QUERY, проверьте [mcu], cs_pin, spi_bus и тип чипа акселерометра.
Отключение питания

Перед повторным подключением или заменой кабелей акселерометра, переходных плат или модулей полностью выключите принтер и отключите источник питания. Не подключайте и не отключайте кабели SPI/I2C и не прикасайтесь к оголенным контактам при включенном питании.

  1. После отключения питания замените готовый кабель, переходную плату или модуль датчика для перекрестного тестирования; не позволяйте обычным пользователям самостоятельно допаивать или использовать перемычки.
  2. Если ошибка возникает только в начале или в конце теста резонанса, временно отключите камеру, экран и другие службы с высокой нагрузкой и повторите тест, сохранив полный журнал для дальнейшего анализа.

Оценка результатов

  • Нормальный вывод: Если возвращается непрерывный поток данных (как показано на рисунке ниже), акселерометр работает нормально, и можно проводить измерения для компенсации резонанса.
  • Ошибочный вывод: Если появляется сообщение о тайм-ауте, отсутствии данных или ошибке связи, последовательно проверьте:
    1. После отключения питания убедитесь, что соединение акселерометра надежно закреплено.
    2. Правильность конфигурации датчика и SPI в файле конфигурации.
    3. В первую очередь определите проблему питания/связи путем замены готового кабеля, переходной платы или модуля датчика.
Loading...

Распространенные ошибки при тесте резонанса

Сообщение об ошибкеРаспространенная причинаМетод устранения
No data received from accelerometerАкселерометр не подключен, неправильный порядок проводов SPI/I2C, проблема с питаниемСначала выполните ACCELEROMETER_QUERY, чтобы убедиться в нормальной связи, затем повторите тест
Insufficient axis data for shaper calibrationСлишком малый диапазон движения, слишком низкое ускорение, чрезмерный шум показаний датчикаУвеличьте диапазон теста или accel_per_hz, проверьте надежность крепления акселерометра
Frequency range too narrowСлишком ослаблен ремень, частота механического резонанса машины выходит за пределы диапазона измеренийПроверьте натяжение ремня, затяжку механических соединений; при необходимости снизьте max_freq или увеличьте accel_per_hz
График резонанса — сплошной шум, без явных пиковДатчик закреплен ненадежно, помехи от вибрации вентилятора, провисание кабелейПосле отключения питания закрепите датчик заново, отключите вентиляторы на время теста, прокладывайте сигнальные провода отдельно от проводов двигателей
SHAPER_CALIBRATE не выводит результат или завершается с ошибкойОтсутствуют зависимости Python (numpy/matplotlib), недостаточно памятиУстановите зависимости согласно разделу в начале документа; для расчета больших графиков резонанса может потребоваться больше памяти
Cannot test Z axis together with other axesВ TEST_RESONANCES одновременно указаны ось Z и оси X/YОсь Z необходимо тестировать отдельно, не смешивая с X/Y
Invalid POINT parameterНеверный формат координат POINT= или отсутствуют три значения x,y,zЗаполняйте в формате POINT=100,100,20
Invalid NAME parameterИмя вывода пустое, содержит специальные символы или не соответствует требованиям командыИспользуйте латиницу, цифры, символы подчеркивания или дефисы в имени
No accelerometer measurements foundВ процессе теста не было получено действительных данных акселерометраСначала выполните ACCELEROMETER_QUERY, затем проверьте крепление датчика и связь
Unsupported outputВ параметре OUTPUT= указан неподдерживаемый типУкажите тип вывода, поддерживаемый Klipper, обычно resonances

Если ACCELEROMETER_QUERY работает нормально, но тест резонанса постоянно завершается неудачей, в первую очередь проверьте в следующем порядке:

  1. После отключения питания убедитесь, что поверхность акселерометра плотно прилегает к тестируемой детали, нет ослабления из-за амортизирующих материалов или двустороннего скотча.
  2. На время теста временно отключите вентиляторы обдува модели, вентилятор хотэнда и вентиляторы камеры.
  3. Убедитесь, что во время теста кабели не натягивают датчик и не зацепляются за оси движения.
  4. Увеличьте амплитуду теста: в [resonance_tester] постепенно повышайте accel_per_hz с значения по умолчанию 75 до 100–150.
  5. При использовании акселерометра на инструментальной плате (USB/CAN) убедитесь, что линия связи не проходит рядом с проводами двигателей или нагревательного стола.

Конфигурация ориентации акселерометра

Ориентация установки акселерометра влияет на результаты измерения резонанса. Если конфигурация axes_map не соответствует фактической ориентации установки, TEST_RESONANCES или SHAPER_CALIBRATE выдадут неправильную частотную характеристику, что приведет к неработоспособности компенсации Input Shaper.

Что такое axes_map

axes_map используется для отображения собственных осей акселерометра на координаты X/Y/Z принтера. Различные инструментальные платы, корпуса печатающих головок или модули акселерометра могут иметь разную ориентацию установки, поэтому необходимо настраивать в соответствии с фактическим способом монтажа.

Если не заполнять axes_map, Klipper по умолчанию использует x,y,z, то есть оси X/Y/Z акселерометра напрямую соответствуют осям X/Y/Z принтера.

[adxl345]
cs_pin: toolboard:PB12
spi_bus: spi1
axes_map: x,y,z # Настроить в соответствии с фактической ориентацией установки

axes_map поддерживает изменение порядка осей и инверсию (добавление - перед осью):

Ситуация установкиПример конфигурации
X/Y акселерометра совпадают с принтеромaxes_map: x,y,z
Акселерометр повернут на 90°, X/Y меняются местамиaxes_map: y,x,z
Акселерометр установлен вверх ногами, ось Z инвертированаaxes_map: x,y,-z
Акселерометр установлен сбоку, Y/Z меняются местамиaxes_map: x,z,y
Примечание

Секции конфигурации акселерометров [adxl345], [lis2dw], [mpu9250], [bmi160], [icm20948] и другие используют одинаковые правила axes_map.

Предварительная проверка ориентации с помощью ACCELEROMETER_QUERY

В состоянии покоя акселерометр обнаруживает гравитационное ускорение около 1g. Наблюдая, какая ось показывает значение, близкое к ±1g, можно предварительно определить ориентацию акселерометра:

  1. Выполните ACCELEROMETER_QUERY, запишите показания по каждой оси.
  2. Наклоните принтер (или акселерометр) вдоль направлений X, Y, Z и наблюдайте, по какой оси изменение показаний максимально.
  3. Если при наклоне принтера вдоль направления X наибольшее изменение показаний по оси Y акселерометра, это указывает на необходимость обмена отображения X/Y.
  4. Если знак показаний какой-либо оси противоположный (например, показания отрицательные при наклоне в положительном направлении), добавьте - перед соответствующей осью.

Проверка ориентации с помощью Shake&Tune

Необходимое условие

Для описанного ниже метода требуется установленный плагин Klippain Shake&Tune. В FlyOS-Fast v1.3.5 и выше он уже предустановлен.

Спектрограммы, создаваемые Shake&Tune, позволяют наглядно проверить правильность axes_map:

  1. Выполните тесты резонанса по осям X и Y отдельно:

    TEST_RESONANCES AXIS=X
    TEST_RESONANCES AXIS=Y
  2. Просмотрите созданные спектрограммы:

    • Ориентация правильная: спектрограмма теста по оси X должна показывать четкий пик резонанса в направлении X, а спектрограмма теста по оси Y — четкий пик в направлении Y; частоты обычно различаются.
    • Ориентация неправильная: если спектрограммы тестов по X и Y почти одинаковы, или пики резонанса аномально близки по частоте, это указывает на необходимость корректировки axes_map.
  3. После изменения axes_map выполните RESTART, затем повторно запустите тесты и сравните результаты.

Внимание

Ошибка в конфигурации axes_map не вызывает ошибок связи, ACCELEROMETER_QUERY по-прежнему корректно возвращает данные. Аномальным будет только результат измерения резонанса, поэтому эту проблему легко не заметить.

Подробная диагностика axes_map: См. раздел axes_map в вопросах конфигурации компенсации резонанса и компенсации давления

Калибровка акселерометра

Используйте Shake&Tune для более детального анализа

Если в системе установлен плагин Klippain Shake&Tune, команда TEST_RESONANCES автоматически создаст спектральные графики и сравнительные графики ремней, что обеспечит более наглядный визуальный анализ, чем встроенная команда SHAPER_CALIBRATE. Начиная с версии FlyOS-Fast v1.3.5 и выше этот плагин предустановлен.

Этапы калибровки

  1. Убедитесь, что принтер выполнил хомирование.

  2. Введите следующую команду в консоли, чтобы начать автоматическую калибровку осей X и Y:

    SHAPER_CALIBRATE
  3. После завершения калибровки сохраните конфигурацию:

    SAVE_CONFIG

Калибровка одной оси

Если необходимо откалибровать только одну ось, используйте:

SHAPER_CALIBRATE AXIS=X

Или замените X на Y.

Предупреждение по безопасности

Во время процесса калибровки принтер может создавать сильные вибрации. Если вибрации слишком сильные, немедленно нажмите кнопку аварийной остановки или отправьте команду M112 для экстренной остановки.

Регулировка интенсивности вибрации

Если вибрации во время теста слишком сильные, можно соответствующим образом снизить значение параметра accel_per_hz (по умолчанию 75):

[resonance_tester]
accel_per_hz: 50

Проблемы конфигурации и настройки: При исправном аппаратном обеспечении акселерометра, но плохих результатах после включения компенсации резонанса, неправильной настройке shaper_freq, конфликтах между Pressure Advance и Input Shaper и т.д., обратитесь к разделу Проблемы конфигурации компенсации резонанса и давления.

Примечание: Вышеуказанные шаги применимы к конфигурации компенсации резонанса большинства 3D-принтеров на базе Klipper. Настраивайте в соответствии с фактическим оборудованием и системным окружением.

Loading...