Использование акселерометра
Подключение к плате
TFT-экран и интерфейс SPI акселерометра нельзя использовать одновременно!
- Физический конфликт: TFT-экран (через интерфейс FPC-TFT), интерфейс SPI акселерометра (ZH1.5-7P) и расширительный интерфейс RRF аппаратно используют одни и те же ресурсы SPI.
- Последствия: При одновременном подключении это приведет к аномальному отображению экрана и серьезным ошибкам в данных измерений акселерометра.
- Решение: Обязательно подключайте только одно из устройств за раз.
Конфигурация
[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, для других платформ материал приведен только для справки.
Шаги установки
- Последовательно выполните следующие команды для установки зависимых пакетов.
- Время установки зависит от производительности процессора и состояния сети, обычно занимает 10–20 минут. Пожалуйста, терпеливо дождитесь завершения установки.
- Если объем оперативной памяти (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 и не прикасайтесь к оголенным контактам при включенном питании.
- Сбой при первом выполнении: В некоторых версиях Klipper может наблюдаться задержка распознавания команды. Если при первом выполнении данные не возвращены, выполните ту же команду еще раз.
- Команда не распознается: Если после многократного выполнения по-прежнему выводится сообщение о неизвестной команде, возможно, версия Klipper слишком старая. Рекомендуется:
- Обновить Klipper до последней версии
- Или перепрошить последнюю версию системы (например, последнюю версию FlyOS-FAST)
- Invalid adxl345 id: Если выводится сообщение
Invalid adxl345 id (got xx vs e5), сначала немедленно выполнитеACCELEROMETER_QUERYеще раз; если ошибка повторяется, в первую очередь замените готовый кабель акселерометра, переходную плату или модуль датчика для перекрестного тестирования. Не рекомендуется, чтобы обычные пользователи самостоятельно допаивали или ремонтировали паяные соединения. - Invalid lis2dw / mpu / icm id: При использовании датчиков LIS2DW, MPU9250, ICM20948 и т. д. убедитесь, что имя секции конфигурации, шина связи и модель чипа соответствуют фактическому оборудованию.
- 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, а не сразу считать акселерометр неисправным.
Метод диагностики:
- В полном
klippy.logнайдите первое сообщениеBatchBulkHelper, затем прокрутите вверх в поисках более ранних сообщенийTimer too close,Lost communication with MCU,MCU shutdownилиSerial connection closed. - Если обнаружен более ранний shutdown, сначала устраните первопричину в соответствии с Ошибки системы и тайм-аута; последующее сообщение
spi_transfer_responseобычно исчезает после восстановления соединения. - Если более раннего shutdown нет, а ошибка возникает немедленно при каждом выполнении
ACCELEROMETER_QUERY, проверьте[mcu],cs_pin,spi_busи тип чипа акселерометра.
Перед повторным подключением или заменой кабелей акселерометра, переходных плат или модулей полностью выключите принтер и отключите источник питания. Не подключайте и не отключайте кабели SPI/I2C и не прикасайтесь к оголенным контактам при включенном питании.
- После отключения питания замените готовый кабель, переходную плату или модуль датчика для перекрестного тестирования; не позволяйте обычным пользователям самостоятельно допаивать или использовать перемычки.
- Если ошибка возникает только в начале или в конце теста резонанса, временно отключите камеру, экран и другие службы с высокой нагрузкой и повторите тест, сохранив полный журнал для дальнейшего анализа.
Оценка результатов
- Нормальный вывод: Если возвращается непрерывный поток данных (как показано на рисунке ниже), акселерометр работает нормально, и можно проводить измерения для компенсации резонанса.
- Ошибочный вывод: Если появляется сообщение о тайм-ауте, отсутствии данных или ошибке связи, последовательно проверьте:
- После отключения питания убедитесь, что соединение акселерометра надежно закреплено.
- Правильность конфигурации датчика и SPI в файле конфигурации.
- В первую очередь определите проблему питания/связи путем замены готового кабеля, переходной платы или модуля датчика.
Распространенные ошибки при тесте резонанса
| Сообщение об ошибке | Распространенная причина | Метод устранения |
|---|---|---|
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 работает нормально, но тест резонанса постоянно завершается неудачей, в первую очередь проверьте в следующем порядке:
- После отключения питания убедитесь, что поверхность акселерометра плотно прилегает к тестируемой детали, нет ослабления из-за амортизирующих материалов или двустороннего скотча.
- На время теста временно отключите вентиляторы обдува модели, вентилятор хотэнда и вентиляторы камеры.
- Убедитесь, что во время теста кабели не натягивают датчик и не зацепляются за оси движения.
- Увеличьте амплитуду теста: в
[resonance_tester]постепенно повышайтеaccel_per_hzс значения по умолчанию75до100–150. - При использовании акселерометра на инструментальной плате (USB/CAN) убедитесь, что линия связи не проходит рядом с проводами двигателей или нагревательного стола.
Калибровка акселерометра
Шаги калибровки
-
Убедитесь, что принтер выполнил возврат в исходное положение (Homing).
-
Введите следующую команду в консоли для начала автоматической калибровки осей X, Y:
SHAPER_CALIBRATE -
После завершения калибровки сохраните конфигурацию:
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. Настройте параметры в соответствии с конкретным оборудованием и системным окружением.