Input shaping: различия между версиями

Материал из Срухопедии
мНет описания правки
мНет описания правки
 
Строка 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
Проверяем акселерометр командой MEASURE_AXES_NOISE значения шума по осям должны быть <100


Настраиваем Input Shaping
Настраиваем Input Shaping
В этом примере используется один акселерометр, но TronxyCrux построен по схеме "дрыгостол" поэтому сначала устанавливаем акселерометр на печатающую голову(ось X) и выполняем команду TEST_RESONANCES AXIS=X
В этом примере используется один акселерометр, но TronxyCrux построен по схеме "дрыгостол" поэтому сначала устанавливаем акселерометр на печатающую голову(ось X) и выполняем команду TEST_RESONANCES AXIS=X
Затем крепим к столу и выполняем команду TEST_RESONANCES AXIS=Y
Затем крепим к столу и выполняем команду TEST_RESONANCES AXIS=Y
Klipper создаст два файла типа -
/tmp/resonances_x_*.csv /tmp/resonances_y_*.csv


Далее их надо преобразовать в графики, для этого в консоли OrangePi выполнить команды
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_x_*.csv -o /tmp/shaper_calibrate_x.png
~/klipper/scripts/calibrate_shaper.py /tmp/resonances_y_*.csv -o /tmp/shaper_calibrate_y.png
~/klipper/scripts/calibrate_shaper.py /tmp/resonances_y_*.csv -o /tmp/shaper_calibrate_y.png
[[Файл:Shaper calibrate x.png|мини|график Х]]
[[Файл:Shaper calibrate x.png|мини|график Х]]
На этих графиках будут выданы резонансные частоты и рекомендации по испольуемым шейперам, эти значения надо будет внести в printer.cfgв соответствующий раздел[input_shaper]shaper_freq_x: ...shaper_type_x: ...shaper_freq_y: 34.6
На этих графиках будут выданы резонансные частоты и рекомендации по используемым шейперам, эти значения надо будет внести в printer.cfg в соответствующий раздел
shaper_type_y: mzv


На этих графиках будут выданы резонансные частоты и рекомендации по используемым шейперам, эти значения надо будет внести в printer.cfg
в соответствующий раздел
[input_shaper]
[input_shaper]
shaper_freq_x: ...
shaper_freq_x: ...
shaper_type_x: ...
shaper_type_x: ...
shaper_freq_y: 34.6
shaper_freq_y: 34.6
shaper_type_y: mzv
shaper_type_y: mzv


Замечу, что эти значения зависят от установленных ззначений максимального ускорения, max_accel, подробнее можно прочитать в документации Klipper по приложенным ссылкам
Замечу, что эти значения зависят от установленных значений максимального ускорения, 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

GY-291
GY-291 adxl345

OrangePi имеет 26 пиновый разъем расширения, на котором присутствует шина SPI

26pin

модуль подключается по схеме

Пин 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

https://www.klipper3d.org/Measuring_Resonances.html

https://klipper.wiki/ru/home/tuning/shaper