Creality 4.2.2

Материал из Ender 3 Wiki
Перейти к навигации Перейти к поиску

Плата принтера Creality 4.2.2 - это новое семейство 32битных плат для принтеров серии Creality Ender 3 (Pro, 3v2). Данная плата основаны на чипе STM32F103 RET6 с ARM архитектурой. Поэтому стоит учитывать что логика работы пинов рассчитана на 3.3В и подача на них 5В приведет к выходу платы из строя. При использовании прошивки Klipper используется смещение 28KiB для загрузчика, независимо от модели принтера. В данной статье будет рассмотрено подключение дополнительных устройств к данной плате.

Расположение пинов на плате

Pinount creality 4.2.2.png Creality 4.2.2 schematic.jpg

Расположение большей части пинов понятны исходя из файла конфигурации. Поэтому рассматриваться будет разъемы для подключения BLTouch, IDC10 и разъем J1 для датчика, например филамента, выделенные синим, красным и желтыми квадратами соответственно.

Разъем BLTouch

BLTouch Pinout
GND VCC_5V PB0 (SIG) GND PB1
BLTouch pins Creality 4.2.2.png

Следует пояснить PB0 (SIG) - это управление сервоприводом BLTouch, а PB1 - контрольный пин концевика.

Разъем IDC10 - EXP1

IDC_10 - EXP1 Pinout
PC6 IDC10 pins Creality 4.2.2.png PB2
PB10 PB11
PB14 PB13
PB12 PB15
GND VCC_5V

Примечание: Пины PB10, BP11, и GND используются для UART (USART) подключения с управляющей платы и не могут быть переназначены/использованы по другому при таком виде подключения.

Пример использования этого разъема мной:

IDC_10 - EXP1 Pinout
PC6 IDC10 pins Creality 4.2.2.png PB2 (LM2596)
PB10 (USART) PB11 (USART)
PB14 (ADXL) PB13 (ADXL)
PB12 (ADXL) PB15 (ADXL)
GND (USART) VCC_5V

Разъем J1

Для датчика филамента в исходниках Marlin указан пин PA4 "Pulled-high"

J1 Pinout
PA4 GND VCC_3.3V
J1 pins Creality 4.2.2.png

Подключение BLTouch

При подключении датчика BLTouch следует учесть что пины на плате по умолчанию могут не соответствовать пинам датчика BLTouch. В силу чего необходимо проверять реальное расположение пинов. Например, для оригинального датчика BLTouch приобретенного непосредственно у Creality, необходимо поменять местами красный провод VCC_5V и желтый SIG в разъеме, дабы их реальное расположение соответствовало распиновке разъема.

BLTouch Z-probe pins (v3.1) Цвет
GND BLTouch wires.png
VCC
Servo PWM (SIG)
GND
Sense

Отключаем концевик оси Z, и подключаем все разъемы в разъем для BLTouch, в соответствии с распиновкой. Вариант подключения (и часто используемый в прошивке Marlin), при котором часть проводов (GND/Sense) использует разъем концевика Z - на текущий момент не работоспособен.

Открываем printer.cfg и ищем блок отвечающий за шаговик по оси Z

[stepper_z]
step_pin: PB6
dir_pin: !PB5
enable_pin: !PC3
microsteps: 16
rotation_distance: 8
endstop_pin: ^PA7
position_endstop: 0.0
position_max: 250

Меняем настройку для endstop_pin, заменяя обычный концевик ^PA7 на: z_virtual_endstop. Таким образом получаем следующий блок:

[stepper_z]
step_pin: PB6
dir_pin: !PB5
enable_pin: !PC3
microsteps: 16
rotation_distance: 8
endstop_pin: probe:z_virtual_endstop
position_endstop: 0.0
position_max: 250


В основной конфиг printer.cfg добавляем строку:

[include probe.cfg]

Затем создаем файл probe.cfg, где x_offset и y_offset - смещения для Вашего крепления для BLTouch. Z_offset Определяется либо через лист бумаги, либо через команду PROBE_CALIBRATE. Измерение (samples) будет производиться в 2 захода, и как результат будет выдаваться усредненное значение.

[bltouch]
sensor_pin: ^PB1
control_pin: PB0
pin_up_touch_mode_reports_triggered: False
probe_with_touch_mode: True
x_offset: 45.8
y_offset: 14.2
z_offset: 3.40
samples: 2


[safe_z_home]
home_xy_position: 65,100 # Change coordinates to the center of your print bed
speed: 50
z_hop: 10 # Move up 10mm

[bed_mesh]
speed: 150
horizontal_move_z: 5
mesh_min: 36,0
mesh_max: 220, 210
probe_count: 7,7
mesh_pps: 2,2
algorithm: bicubic
bicubic_tension: 0.2

Разберем настройки:

[safe_z_home] - отвечает что при каждом выполнении команды G28 независимо от положения оси Z - она будет поднята (z_hop) на 10мм. Замер до стола будет происходить в точке Х65 У100.

[bed_mesh] - Скорость перемещения между точками замеров (speed) составляет 150 мм/с; Скорость по оси Z составляет 5 мм/с; точка с которой будет начат замер X36 Y0; точка на которой будет выполнен последний замер X220 Y210; при калибровки замеры будут производиться по 7 точкам для оси Х и по 7 точкам по оси У; Между точек с реальными замерами будет произведена интерполяция/экстраполяция высоты - виртуальный точки ( mesh_pps ) 2 по оси Х и 2 по оси У;

Подключение ADXL

Рассмотрим частный случай, когда хочется получить два ADXL для раздельного измерения, или на случай если на управляющую плату не получается установить ADXL.

К сожалению, на текущий момент запустить датчик по аппаратной шине SPI от STM32 не представлялось технически возможным. Поэтому в данном случае мы рассматриваем вариант программного SPI.

Учитывая что для USART подключения с плашки IDC10 зарезервированы пины PB10 и PB11, у нас в распоряжении остаются: PB14, PB13, PB12, PB15 - которые расположены вместе и идеально подходят для использования. Единственный сложный момент, это то что для питания датчика ADXL требуется 3.3В и GND, но на плашке IDC10 такого напряжения, а GND занят для USART подключения. Выход рядом с IDC10 есть диагностический разъем JTAG на котором есть необходимые 3.3В и GND

JTAG pins Creality 4.2.2.png

Таким образом мы берем с JTAG 3.3В и GND, с IDC10 берем пины PB14, PB13, PB12, PB15 и назначаем на них SPI_SOFT.

Creality Pin Цвет ADXL Pin Klipper func ADXL wires Creality 4.2.2.png
JTAG_GND GND
JTAG_VCC3.3 VCC
PB14 CS CS_Pin
PB12 SDO SPI_software_miso_pin
PB15 SDA SPI_software_mosi_pin
PB13 SLC spi_software_sclk_pin


В конфигурационный файл добавляем: В случае если используем единственный ADXL

#ADXL on MCU
[adxl345]
cs_pin: PB14                     
spi_software_sclk_pin: PB13  
spi_software_mosi_pin: PB15     
spi_software_miso_pin: PB12

[resonance_tester]
accel_chip: adxl345
probe_points:
    100,100,20  # an example

В случае если это второй ADXL для оси Y, а первый на управляющей плате (в моем случае это Pi4):

#ADXL on Pi4
[adxl345 adxl_x]
cs_pin: rpi: None

#ADXL on MCU
[adxl345 adxl_y]
cs_pin: PB14                     
spi_software_sclk_pin: PB13  
spi_software_mosi_pin: PB15     
spi_software_miso_pin: PB12

[resonance_tester]
#accel_chip: my_chip_name
accel_chip_x: adxl345 adxl_x
accel_chip_y: adxl345 adxl_y
probe_points:
    100,100,20  # an example

Перезагружаем клиппер и проверяем работоспособность, например командой:

MEASURE_AXES_NOISE

В моем случае с двумя ADXL получаем ответ в консоль:

$ MEASURE_AXES_NOISE
// Axes noise for x-axis accelerometer: 12.282279 (x), 15.304118 (y), 30.408056 (z)
// Axes noise for y-axis accelerometer: 39.800257 (x), 39.757298 (y), 78.517822 (z)

А дальше настраиваем Input shaper в соответствии с документацией.