Как я уже упоминал ранее, в качестве управляющей электроники для Ворона я выбрал связку Duet 3 + Duet 3 Toolboard + Raspberry Pi 4. Несмотря на высокую стоимость этого решения, мой выбор пал на него из-за моей любви к web-интерфейсу дуэта (во избежание споров сразу поясню, что имею хороший опыт с Marlin, Smoothieware и Lerdge; Klipper и Octoprint сам не пробовал, но увидел сильно позже «Дуэта», поэтому не впечатлили):
Конечно, любовь — любовью, но помимо интерфейса Duet поддерживает мета-команды и объектно-ориентированную модель, что позволяет вывести макросы на совершенной иной уровень. Вот пара примеров:
;Calibrate BL Touch trigger height
; When we get variables we can define one here
; Uncomment when ready to use
; var RunningTotal=0
; var average=0
; If the printer hasn't been homed, home it
if !move.axes[0].homed || !move.axes[1].homed || !move.axes[2].homed
G28
M564 S0 H0 ; Allow movement beyond limits
if move.axes[2].machinePosition < 6 ; make sure we have probe clearance
G1 Z6
M280 P0 S160 I1 ; reset BL Touch
G4 S0.5
M98 P"0:/sys/retractprobe.g" ; Ensure probe is retracted & reset
G4 S0.5
M290 R0 S0 ; clear any baby stepping
M561 ; clear any bed transform
; Jog head to position
M291 P"Jog nozzle to touch bed" R"Set nozzle to zero" S3 Z1
G92 Z0
M291 P"Press OK to begin" R"Ready?" S3;
; carry out 10 probes
while iterations <= 9
G1 Z6
M400
if sensors.probes[0].value[0]=1000 ; if probe is in error state
echo "Probe in error state- resetting"
M280 P0 S160 I1 ; reset BL Touch
G4 S0.5
M98 P"0:/sys/retractprobe.g" ; Ensure probe is retracted & reset
G4 S0.5
G30 S-1
M400
; Uncomment when variables allowed
; RunningTotal=RunningTotal + move.axes[2].machinePosition
;average=RunningTotal/(iterations+1)
G4 S0.5
; Until variables come use this
M291 P"Check console for results and enter average value in G31 Z parameter of config.g" R"Finished" S3
;When variables come uncomment this
;G31 Z{average}
;M291 P"Trigger height set to : " ^ sensors.probes[0].triggerHeight ^ " Press OK to save to config, cancel to use until restart" R"Finished" S2
;M500
M564 S0 H1 ; Reset limits
; daemon.g
; check temps every 10 seconds when not printing (i.e. Idle) and shut down if exceed max temps. RRF checks when printing, but not when idle.
; not all commands are required. e.g. shutting off power by dropping a relay negates need for M112, M81 - un-comment or adjust as required for your configuration
; assumes that the thermistor for each heater is monitor # zero as there is no way to do nested loops using "iterations" as identifier in both loops until variables are available in the object model
; no checking done for null values! -
if state.status="idle"
while iterations < #heat.heaters ;
;if heat.heaters[iterations].current > heat.heaters[iterations].monitors[0].limit ; un-comment when ready to go live
if heat.heaters[iterations].current > 50 ; uncomment for testing, comment out when going live
M291 P"Heater over max temp" R"Temp Error!" S1 T0 ; Display message for testing
;M112 ; Do emergency stop
;M81 ; Turn PS_ON (ATX) off
;M42 P5 S1 ; Set GPIO 5 (output) high to activate alarm relay. GPIO pin must be configured using M950
;M42 P6 S0 ; Set GPIO 6 (output) low to cut power. GPIO pin must be configured using M950
;if sensors.gpIn[6].value=1 ; check state of connected smoke detector - GPIO pin must be configured using M950
;M291 P"Smoke detector active!" R"I'm on fire!" S1 T0 ; Display Nikki Lauder message for testing
;M112 ; Do emergency stop
;M81 ; Turn PS_ON (ATX) off
;M42 P5 S1 ; Set GPIO 5 (output) high to activate alarm relay
;M42 P6 S0 ; Set GPIO 6 (output) low to cut power
G4 S10 ; wait 10 seconds before next check (adjust S parameter as you see fit)
Всё это, конечно, упрощает многие процедуры, позволяет сэкономить время, избавиться от рутинных ошибок, но остаётся самая главная причина, по которой я остановил свой выбор на «Дуэте» — ненавижу провода! Паять их, обжимать. Ненавижу!
В данный момент мой Uni 3D оснащён Duet 2 WiFi, я доволен этой платой и её вэб-интерфейсом . Это раз. А два — это то, что Voron требует минимум 7 драйверов шаговых моторов! Да, сами разработчики «Ворона» рекомендуют использовать 2 платы SKR 1.3 под управлением Klipper на Raspberry P, но мне хочется немного другого и бóльшего.
Материнская плата Duet 3 оснащена 6 драйверами шаговых моторов TMC5160, которые настраиваются произвольным образом и я хочу назначить первые два на оси XY, а оставшиеся 4 на ось Z. А вот экструдер подключить с помощью платы расширения Duet 3 Toolboard, которая (та-даааам!) подключается к материнке по CAN-шине.
Чем полезно такое подключение? А тем, что, например, на печатающей голове моего Uni есть вот такие компоненты:
- нагреватель — 2 провода;
- термодатчик — 2 провода;
- вентилятор охлаждения хотэнда — 2 провода;
- вентилятор охлаждения печатаемой модели — 2 провода;
- шаговый мотор — 4 провода;
- датчик BLTouch — 5 проводов;
Итого — 17 проводов (на самом деле больше — ещё 6 для второго хотэнда). А вот плата Toolboard 1LC, которая монтируется на печатающую голову и оснащена она следующими интерфейсами:
- один драйвер TMC2209 для шагового мотора;
- один разъём (Out 0) для подключения нагревателя, 5А максимум;
- один 4-контактный разъём (Out 1) для подключения 12-вольтного вентилятора обдува модели (PWM, Tacho);
- один 3-контактный разъём (Out 2) для подключения 12-вольтного вентилятора охлаждения модели;
- два разъёма (Temp 0 и Temp 1) для подключения датчиков температуры;
- один 4-контактный разъём (IO 0) и два 3-контактных разъёма (IO 1 и IO 2) ввода-вывода для подключения различной периферии, например, BLTouch, датчика филамента и пр.
- 2 кнопки и 2 светодиода, функции которых можно настроить.
И эта плата подключается к материнской всего лишь одним кабелем с двумя витыми парами и двумя проводами питания — итого 6 проводов, а если расширение не планируется, то вместо двух витых пар достаточно одной. Питание 12 — 36 вольт, причём на самой плате стоят регуляторы на 12, 5 и 3,3 вольт. Так что теперь не надо использовать преобразователь 24 → 12 В для вентиляторов Noctua.
Более того, если я захочу навесить на печатающую голову какие-то другие компоненты, типа второго экструдера, системы смены самой печатной головы, дополнительные механизмы — не надо тянуть дополнительные провода, т.к. все платы расширения подключаются по шине CAN в режиме daisy-chain. Таким образом, есть и избавление от пучка проводов и хороший запас для дальнейших апгрейдов.
Но, как я уже упоминал, придётся помучиться, т.к. платформа новая, документация тоже не совсем всеобъемлющая, видео по подключению и настройке практически отсутствуют. В русскоязычном сегменте не нашёл информации вообще. Придётся делать всё методом научного тыка. Вот по результатам этого «тыка» и буду тут выкладывать полевые заметки. Надеюсь, что всё получится.
недавние комментарии