Creality 4.2.2
Плата принтера Creality 4.2.2 - это новое семейство 32битных плат для принтеров серии Creality Ender 3 (Pro, 3v2). Данная плата основаны на чипе STM32F103 RET6 с ARM архитектурой. Поэтому стоит учитывать что логика работы пинов рассчитана на 3.3В и подача на них 5В приведет к выходу платы из строя. При использовании прошивки Klipper используется смещение 28KiB для загрузчика, независимо от модели принтера. В данной статье будет рассмотрено подключение дополнительных устройств к данной плате.
Содержание
Расположение пинов на плате
Расположение большей части пинов понятны исходя из файла конфигурации. Поэтому рассматриваться будет разъемы для подключения BLTouch, IDC10 и разъем J1 для датчика, например филамента, выделенные синим, красным и желтыми квадратами соответственно.
Разъем BLTouch
BLTouch Pinout | ||||
---|---|---|---|---|
GND | VCC_5V | PB0 (SIG) | GND | PB1 |
![]() |
Следует пояснить PB0 (SIG) - это управление сервоприводом BLTouch, а PB1 - контрольный пин концевика.
Разъем IDC10 - EXP1
IDC_10 - EXP1 Pinout | |||
---|---|---|---|
PC6 | ![]() |
PB2 | |
PB10 | PB11 | ||
PB14 | PB13 | ||
PB12 | PB15 | ||
GND | VCC_5V |
Примечание: Пины PB10, BP11, и GND используются для UART (USART) подключения с управляющей платы и не могут быть переназначены/использованы по другому при таком виде подключения.
Пример использования этого разъема мной:
IDC_10 - EXP1 Pinout | |||
---|---|---|---|
PC6 | ![]() |
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 |
![]() |
Подключение BLTouch
При подключении датчика BLTouch следует учесть что пины на плате по умолчанию могут не соответствовать пинам датчика BLTouch. В силу чего необходимо проверять реальное расположение пинов. Например, для оригинального датчика BLTouch приобретенного непосредственно у Creality, необходимо поменять местами красный провод VCC_5V и желтый SIG в разъеме, дабы их реальное расположение соответствовало распиновке разъема.
BLTouch Z-probe pins (v3.1) | Цвет | |
---|---|---|
GND | ![]() | |
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 3.3В и GND, с IDC10 берем пины PB14, PB13, PB12, PB15 и назначаем на них SPI_SOFT.
Creality Pin | Цвет | ADXL Pin | Klipper func | ![]() |
---|---|---|---|---|
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 в соответствии с документацией.