Skip to content

Подключение ADXL354 к BTT PI V1.2 через GPIO

Konstant edited this page Jul 23, 2024 · 1 revision

Эта инструкция составлена @Vladimir_Kibenko (мои только редакторские правки).

Описание

На данный момент я не нашёл простейшего подробного гайда по подключению adxl345 к плате bigtreetech pi v1.2 по 40Pin-GPIO. На эту тему немало информации в сети но хотелось бы собрать по крупицам всё воедино, так как у многих возникают сложности в подключении этих компонентов. Так как я новичёк и для меня эта процедура абсолютно не известна, постараюсь описать всё максимально понятно и в той последовательности, в какой выполнял её я. За основу у нас взят простейший adxl345 с гребёнкой под пайку (если не уверены в своих навыках пайки используйте другой гайд по подключению через комплектный SPI или USB).

И микрокомпьютер BigTreeTech Pi V1.2

1. Аппаратная часть

На акселерометре припаиваем гребёнку

Для подключения акселерометра к плате я использовал dupont провода мама-мама

Чтобы понять что соединять, мне помогла информация из сети по распиновке микрокомпьютера.

Соединяем контакты:
ADXL345 → (№ пина) BTT PI V1.2
GND → (20) GND
VCC → (17) 3.3V
CS → (24) PG12 GPIO204
SDO → (21) PH8 GPIO232, SPI1_MISO
SDA → (19) PH7 GPIO231, SPI1_MOSI
SCL → (23) PH6 GPIO230, SPI1

В целом так должно это выглядеть.

Теперь отсоединяем провода от акселерометра, предварительно для большего удобства можно склеить скотчем или термоклеем, можно обжать если есть такие разьёмы, решение за вами.

2. Программная часть.

Открываем терминал (я использую mobaxterm) и выполняем поочерёдно команды из официальной документации Klipper

sudo apt update
sudo apt install python3-numpy python3-matplotlib libatlas-base-dev libopenblas-dev
~/klippy-env/bin/pip install -v numpy

В разделе /boot/ в файле BoardEnv.txt необходимо раскоментировать overlays=spidev1_2. Через терминал у меня этого не получилось, потому что boot наверное в readonly смонтирован. Вставил SD-карту в компьютер и исправил файл.
Затем:
В printer.cfg (можно через веб-интерфейс) добавляем:

[mcu host]
serial: /tmp/klipper_host_mcu

[adxl345]
cs_pin: host:gpio204
spi_bus: spidev1.2

[resonance_tester]
accel_chip: adxl345
probe_points: 117.5,117.5,10

Далее возвращаемся к терминалу и выполняем команду: sudo systemctl status klipper-mcu.service

Всё сохраняем и выходим.

Думаю не нужно объяснять как ориентировать акселерометр по осям, ибо подходить к такой калибровке нужно осознано и понимать нужно оно или нет), а также рекомендовать модель для монтажа adxl345 ибо их множество и при желании можно спроектировать свою модель!

Из официальной документации Klipper: Внимание: убедитесь, что акселерометр и любые винты, которые его удерживают, не касаются металлических частей принтера. В принципе, крепление должно быть спроектировано таким образом, чтобы обеспечить электрическую изоляцию акселерометра от рамы принтера. Невыполнение этого требования может создать контур заземления в системе, который может повредить электронику. https://www.klipper3d.org/Measuring_Resonances.html

Затем погасим хост на всякий случай, перезагружаем клиппер, подключаем к акселерометру хост и запускаем его. Собственно должна загрузиться веб-морда без ошибок.

Теперь можно выполнить проверку настройки.

В консоли введём:

ACCELEROMETER_QUERY CHIP=adxl345

Пояснение из официальной документации Klipper: введите, ACCELEROMETER_QUERY CHIP=где — имя чипа, как оно было введено, например CHIP=bed(см.: bed-slinger ) для всех установленных чипов акселерометра. Вы должны увидеть текущие измерения акселерометра, включая ускорение свободного падения, например Recv: // adxl345 values (x, y, z): 470.719200, 941.438400, 9728.196800 Если вы получили ошибку типа Invalid adxl345 id (got xx vs e5), где xx есть другой ID, немедленно попробуйте еще раз. Проблема с инициализацией SPI. Если вы все еще получаете ошибку, это указывает на проблему с подключением к ADXL345 или неисправный датчик. Дважды проверьте питание, проводку (чтобы она соответствовала схеме, ни один провод не был сломан или ослаблен и т. д.) и качество пайки.
https://www.klipper3d.org/Measuring_Resonances.html

Пробуем выполнить:

MEASURE_AXES_NOISE

Пояснение из официальной документации Klipper: Далее попробуйте запустить MEASURE_AXES_NOISE в Octoprint, вы должны получить некоторые базовые цифры для шума акселерометра на осях (должны быть где-то в диапазоне ~1-100). Слишком высокий шум осей (например, 1000 и более) может указывать на проблемы с датчиком, проблемы с его питанием или слишком шумные несбалансированные вентиляторы на 3D-принтере. https://www.klipper3d.org/Measuring_Resonances.html

В целом процедуру подключения ADXL345 к BTT PI V1.2 по 40Pin-GPIO можно считать законченной.

Далее вы можете провести несколько реальных тестов, выполнив соответствующие команды для измерения резонансов по осям X и Y.

Дополнительную информацию можно найти на официальном сайте клиппера.

Неоценимую помощь и терпение оказал @konstant, за что ему огромная благодарность.

Надеюсь этот гайд многим поможет в решении данного вопроса.

Всем отличной печати!