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

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

Подключение к плате

Предупреждение о конфликте интерфейсов

TFT-экран и интерфейс SPI акселерометра нельзя использовать одновременно!

  • Физический конфликт: TFT-экран (через интерфейс FPC-TFT), интерфейс SPI акселерометра (ZH1.5-7P) и расширительный интерфейс RRF аппаратно используют одни и те же ресурсы SPI.
  • Последствия: При одновременном подключении это приведет к аномальному отображению экрана и серьезным ошибкам в данных измерений акселерометра.
  • Решение: Обязательно подключайте только одно из устройств за раз.
Loading...

Конфигурация

[mcu host]
serial: /tmp/klipper_host_mcu

[adxl345]
cs_pin: host:gpiochip0/gpio263
spi_bus: spidev1.2

[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) убедитесь, что линия связи не проходит рядом с проводами двигателей или нагревательного стола.

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

Шаги калибровки

  1. Убедитесь, что принтер выполнил возврат в исходное положение (Homing).

  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...