Input shaping: различия между версиями
DrunkYeti (обсуждение | вклад) мНет описания правки Метка: визуальный редактор отключён |
DrunkYeti (обсуждение | вклад) мНет описания правки |
||
(не показаны 3 промежуточные версии этого же участника) | |||
Строка 2: | Строка 2: | ||
Подключение акселерометра на ADXL345 по шине SPI к OrangePi3 с установленной Klipper | Подключение акселерометра на ADXL345 по шине SPI к OrangePi3 с установленной Klipper | ||
Мною использовался модуль GY-291 | Мною использовался модуль GY-291 | ||
[[Файл:Adxl345.png|мини|альт=GY-291|GY-291 adxl345]] | [[Файл:Adxl345.png|мини|альт=GY-291|GY-291 adxl345]] | ||
Строка 9: | Строка 10: | ||
модуль подключается по схеме | модуль подключается по схеме | ||
Пин ADXL - Пин Orange Pi | Пин ADXL - Пин Orange Pi | ||
VCC(3v) - Out 3.3 V (17 pin) | VCC(3v) - Out 3.3 V (17 pin) | ||
SDA - MOSI (19 pin) | SDA - MOSI (19 pin) | ||
SDO - MISO (21 pin) | SDO - MISO (21 pin) | ||
SCL - CLK (23 pin) | SCL - CLK (23 pin) | ||
GND - GND (25 pin) | GND - GND (25 pin) | ||
CS - CS (24 pin) | CS - CS (24 pin) | ||
Далее надо разрешить использование шины SPI. Для этого - подключиться по сетевому адресу OrangePi через SSH к консоли. Открыть на редактирование файл - sudo vim /boot/orangepiEnv.txt найти секцию overlays, если ее нет - добавить строку overlays=spi-spidev1 если есть - дописать через пробел spi-spidev1 | Далее надо разрешить использование шины SPI. Для этого - подключиться по сетевому адресу OrangePi через SSH к консоли. Открыть на редактирование файл - sudo vim /boot/orangepiEnv.txt найти секцию overlays, если ее нет - добавить строку overlays=spi-spidev1 если есть - дописать через пробел spi-spidev1 | ||
ниже указать параметры | ниже указать параметры | ||
param_spidev_spi_bus=1 | param_spidev_spi_bus=1 | ||
param_spidev_spi_cs=0 | param_spidev_spi_cs=0 | ||
param_spidev_max_freq=100000000 | param_spidev_max_freq=100000000 | ||
Установить пакеты | Установить пакеты | ||
sudo apt updatesudo | |||
sudo apt updatesudo | |||
apt install python3-numpy python3-matplotlib libatlas-base-dev | apt install python3-numpy python3-matplotlib libatlas-base-dev | ||
Кроме того, потребуется установить wiringOP | Кроме того, потребуется установить wiringOP | ||
sudo apt update | sudo apt update | ||
sudo apt install -y git | sudo apt install -y git | ||
git clone https://github.com/orangepi-xunlong/wiringOP | git clone https://github.com/orangepi-xunlong/wiringOP | ||
cd wiringOP | cd wiringOP | ||
sudo ./build clean | sudo ./build clean | ||
sudo ./build | sudo ./build | ||
перезагрузить OrangePi | перезагрузить OrangePi | ||
Далее надо настроить использование OrangePi как дополнительного MCU | Далее надо настроить использование OrangePi как дополнительного MCU | ||
cd ~/klipper/ | cd ~/klipper/ | ||
sudo cp ./scripts/klipper-mcu.service /etc/systemd/system/ | sudo cp ./scripts/klipper-mcu.service /etc/systemd/system/ | ||
sudo systemctl enable klipper-mcu.service | sudo systemctl enable klipper-mcu.service | ||
cd ~/klipper/ | cd ~/klipper/ | ||
make menuconfig | make menuconfig | ||
В меню выбрать "Microcontroller Architecture" to "Linux process," сохранить и выйти | В меню выбрать "Microcontroller Architecture" to "Linux process," сохранить и выйти | ||
sudo service klipper stop | sudo service klipper stop | ||
make flash | make flash | ||
sudo service klipper start | sudo service klipper start | ||
Внести изменения в printer.cfg | Внести изменения в printer.cfg | ||
[mcu opi] | [mcu opi] | ||
serial: /tmp/klipper_host_mcu | serial: /tmp/klipper_host_mcu | ||
[adxl345] | [adxl345] | ||
cs_pin: opi:None | cs_pin: opi:None | ||
spi_bus: spidev1.0 | spi_bus: spidev1.0 | ||
[resonance_tester] | [resonance_tester] | ||
accel_chip: adxl345 | accel_chip: adxl345 | ||
probe_points: 100, 100, 20 # an example | probe_points: 100, 100, 20 # an example | ||
Строка 63: | Строка 98: | ||
Открываем главный экран управлением Klipper и в консоль вводим команду: | Открываем главный экран управлением Klipper и в консоль вводим команду: | ||
ACCELEROMETER_QUERY | ACCELEROMETER_QUERY | ||
Вы должны увидеть что-то типа: | Вы должны увидеть что-то типа: | ||
Recv: // adxl345 values (x, y, z): 470.719200, 941.438400, 9728.196800 | Recv: // adxl345 values (x, y, z): 470.719200, 941.438400, 9728.196800 | ||
Проверяем акселерометр командой MEASURE_AXES_NOISE значения шума по осям должны быть <100 | |||
Настраиваем Input Shaping | |||
В этом примере используется один акселерометр, но TronxyCrux построен по схеме "дрыгостол" поэтому сначала устанавливаем акселерометр на печатающую голову(ось X) и выполняем команду TEST_RESONANCES AXIS=X | |||
Затем крепим к столу и выполняем команду TEST_RESONANCES AXIS=Y | |||
Klipper создаст два файла типа - /tmp/resonances_x_*.csv /tmp/resonances_y_*.csv | |||
Далее их надо преобразовать в графики, для этого в консоли OrangePi выполнить команды: | |||
~/klipper/scripts/calibrate_shaper.py /tmp/resonances_x_*.csv -o /tmp/shaper_calibrate_x.png | |||
~/klipper/scripts/calibrate_shaper.py /tmp/resonances_y_*.csv -o /tmp/shaper_calibrate_y.png | |||
[[Файл:Shaper calibrate x.png|мини|график Х]] | |||
На этих графиках будут выданы резонансные частоты и рекомендации по используемым шейперам, эти значения надо будет внести в printer.cfg в соответствующий раздел | |||
[input_shaper] | |||
shaper_freq_x: ... | |||
shaper_type_x: ... | |||
shaper_freq_y: 34.6 | |||
shaper_type_y: mzv | |||
Замечу, что эти значения зависят от установленных значений максимального ускорения, max_accel, подробнее можно прочитать в документации Klipper по приложенным ссылкам | |||
Полезные ссылки: | Полезные ссылки: | ||
http://www.orangepi.org/html/hardWare/computerAndMicrocontrollers/details/orange-pi-3-LTS.html | http://www.orangepi.org/html/hardWare/computerAndMicrocontrollers/details/orange-pi-3-LTS.html | ||
https://www.klipper3d.org/Measuring_Resonances.html | https://www.klipper3d.org/Measuring_Resonances.html | ||
https://klipper.wiki/ru/home/tuning/shaper | https://klipper.wiki/ru/home/tuning/shaper |
Текущая версия от 02:02, 22 ноября 2024
Прошивка Klipper позволяет настроить компенсацию резонансов (Input shapping) при печати. Эта настройка позволяет уменьшить ореолы, рябь, волны на распечатанных моделях. Первое что нужно сделать - измерить резонансные частоты, возникающие при печати. Делается это с помощью специального устройства - акселерометра. Klipper поддерживает 3 типа микросхем акселерометров - ADXL345, MPU-9250(MPU6050/MPU6500), LIS2DW
Подключение акселерометра на ADXL345 по шине SPI к OrangePi3 с установленной Klipper
Мною использовался модуль GY-291
OrangePi имеет 26 пиновый разъем расширения, на котором присутствует шина SPI
модуль подключается по схеме
Пин ADXL - Пин Orange Pi
VCC(3v) - Out 3.3 V (17 pin)
SDA - MOSI (19 pin)
SDO - MISO (21 pin)
SCL - CLK (23 pin)
GND - GND (25 pin)
CS - CS (24 pin)
Далее надо разрешить использование шины SPI. Для этого - подключиться по сетевому адресу OrangePi через SSH к консоли. Открыть на редактирование файл - sudo vim /boot/orangepiEnv.txt найти секцию overlays, если ее нет - добавить строку overlays=spi-spidev1 если есть - дописать через пробел spi-spidev1
ниже указать параметры
param_spidev_spi_bus=1
param_spidev_spi_cs=0
param_spidev_max_freq=100000000
Установить пакеты
sudo apt updatesudo
apt install python3-numpy python3-matplotlib libatlas-base-dev
Кроме того, потребуется установить wiringOP
sudo apt update
sudo apt install -y git
git clone https://github.com/orangepi-xunlong/wiringOP
cd wiringOP
sudo ./build clean
sudo ./build
перезагрузить OrangePi
Далее надо настроить использование OrangePi как дополнительного MCU
cd ~/klipper/
sudo cp ./scripts/klipper-mcu.service /etc/systemd/system/
sudo systemctl enable klipper-mcu.service
cd ~/klipper/
make menuconfig
В меню выбрать "Microcontroller Architecture" to "Linux process," сохранить и выйти
sudo service klipper stop
make flash
sudo service klipper start
Внести изменения в printer.cfg
[mcu opi]
serial: /tmp/klipper_host_mcu
[adxl345]
cs_pin: opi:None
spi_bus: spidev1.0
[resonance_tester]
accel_chip: adxl345
probe_points: 100, 100, 20 # an example
Перезагрузить прошивку
Открываем главный экран управлением Klipper и в консоль вводим команду:
ACCELEROMETER_QUERY
Вы должны увидеть что-то типа:
Recv: // adxl345 values (x, y, z): 470.719200, 941.438400, 9728.196800
Проверяем акселерометр командой MEASURE_AXES_NOISE значения шума по осям должны быть <100
Настраиваем Input Shaping
В этом примере используется один акселерометр, но TronxyCrux построен по схеме "дрыгостол" поэтому сначала устанавливаем акселерометр на печатающую голову(ось X) и выполняем команду TEST_RESONANCES AXIS=X
Затем крепим к столу и выполняем команду TEST_RESONANCES AXIS=Y
Klipper создаст два файла типа - /tmp/resonances_x_*.csv /tmp/resonances_y_*.csv
Далее их надо преобразовать в графики, для этого в консоли OrangePi выполнить команды:
~/klipper/scripts/calibrate_shaper.py /tmp/resonances_x_*.csv -o /tmp/shaper_calibrate_x.png
~/klipper/scripts/calibrate_shaper.py /tmp/resonances_y_*.csv -o /tmp/shaper_calibrate_y.png
На этих графиках будут выданы резонансные частоты и рекомендации по используемым шейперам, эти значения надо будет внести в printer.cfg в соответствующий раздел
[input_shaper]
shaper_freq_x: ...
shaper_type_x: ...
shaper_freq_y: 34.6
shaper_type_y: mzv
Замечу, что эти значения зависят от установленных значений максимального ускорения, max_accel, подробнее можно прочитать в документации Klipper по приложенным ссылкам
Полезные ссылки:
http://www.orangepi.org/html/hardWare/computerAndMicrocontrollers/details/orange-pi-3-LTS.html