aleksandr.ru - блог https://aleksandr.ru/blog Последние посты блога Mon, 18 Sep 2023 17:34:58 +0300 ru aleksandr.ru Немного о грузах в модельных вагонах https://aleksandr.ru/blog/nemnogo_o_gruzah_v_modelnih_vagonah https://aleksandr.ru/blog/nemnogo_o_gruzah_v_modelnih_vagonah#comments Mon, 18 Sep 2023 17:34:58 +0300 https://aleksandr.ru/blog/nemnogo_o_gruzah_v_modelnih_vagonah nonadult aleksandr.ru Хобби H0 1:87 3D Немного о грузах в модельных вагонах

Поезд с самодельным грузом

Рано или поздно, наверное, все моделисты проходят через это - наполнение вагонов грузами, сделанными собственноручно. Это не только придает уникальности, но и позволяет поковыряться с уже построенным макетом. Так и я, посмотрев какое-то время на пустующую грузовую платформу, решил ее заполнить.


Самодельный груз бревна

Начинаем с простого. Круглые палочки для суши вполне походят на бревна в масштабе. Берем самые доступные палочки, красим морилкой в один слой, отпиливаем под размер платформы, и вот, готов вагон, перевозящий лес. В качестве бонуса, у меня остался огромный запас этих палочек. Для полноты картины бревна можно перетянуть ниткой или цепочкой. Так же можно красить с солью, прилипшие крупинки дадут текстуру коры и сучков, а отлипшие - просветы. 

Самодельный груз ящики

Дальше интереснее. Берем модель деревянного ящика, увеличиваем в размерах так, что была пригодна для вагона (примерно 20 мм. в ширину), распечатываем с максимально возможным качеством и увеличенной до 3 линий толщиной стенок, чтоб не проступал рисунок заполнения. Модель грунтуем, красим акрилом древесного цвета. Для большей правдоподобности можно использовать разные цвета дерева или разбавить тот, что есть. Затем акриловый лак и чуть-чуть черной смывки. Ну и финальный штрих - переводилки (или по-современному декали) для придания окончательного вида. У меня нашлись только от старой модельки в масштабе 1:72, но подошли вполне сносно.

Самодельный груз маховик

Ну и самый интересный вариант. Специальная модель необычного груза. Она печатается в виде двух одинаковых деталей и склеивается. Наружный радиус нужно пройти наждачкой, чтоб сгладить слоеность после печати. Далее окраска акрилом разных цветов, так же акриловый лак, и смывка из краски цвета ржавчины. Для большей реалистичности можно дополнить крепежным брусом на платформе, сделанным из спичек.

 

]]>
Мониторинг скорости интернета без MRTG https://aleksandr.ru/blog/monitoring_skorosti_interneta_bez_mrtg https://aleksandr.ru/blog/monitoring_skorosti_interneta_bez_mrtg#comments Fri, 15 Sep 2023 11:24:38 +0300 https://aleksandr.ru/blog/monitoring_skorosti_interneta_bez_mrtg nonadult aleksandr.ru Linux RRDtool Мониторинг скорости интернета без MRTG

Speedtest graph

Популярный много лет назад MRTG давно ушел в историю и уступил место collectd в связке с RRDtool, или другим, более удобным решениям для мониторинга. Но тут пойдет речь о метрике, до которой collectd не смог дотянуться, а именно о реальной скорости подключения к Интернет.


Есть хорошо известный Speedtest от Ookla, который привычно использовать в виде приложения или на сайте, чтоб узнать скорость после смены тарифа или провайдера, но что делать, когда хочется понимать какая скорость была на протяжении времени, если канал от провайдера оставляет желать лучшего?

Именно с этим я столкнулся, когда перешел на домашний интернет от мегафона (он же нет-бай-нет), вечером скорость заметно проседала, а днем вроде все работало нормально, мне нужны были данные, чтоб мотивировать провайдера заниматься поблемой.

Как выяснилось, существует Speedtest CLI, который было решено использовать для сбора данных. Этот инструмент умеет выдавать результаты в разных форматах, включая JSON и CSV (см. актуальный хелп в приложении, а не тот что от 2018 года разбросан по интернету, с тех пор все немного изменилось).

Завести этот инструмент в collectd через exec-plugin не получилось, приложение speedtest, запускаемое collectd насыпает в STDERR и в результаты exec-plugin попадает не пойми что. Зато оно прекрасно работает чрез cron от текущего пользователя. Поскольку сбор метрик от speedtest нужен совсем не часто, раз в 10 минут или реже, и разбираться с collectd было совсем неохота, то остановился на решении, которое по крону собирает метрики скорости и записывает в RRD. А данные из RRD рисуются на страничке мониторинга рядом с графиками собранными collectd.

Для реализации задуманного понадобится rrdtool и nginx, предполагается, что это все уже было установлено вместе с collectd.

Создаем базу для хранения данных (краткий мануал тут, подробнее тут):

rrdtool create /var/lib/collectd/rrd/speedtest.rrd \
        --step 10m \
        DS:download:GAUGE:30m:0:U \
        DS:upload:GAUGE:30m:0:U \
        RRA:AVERAGE:0.5:10m:7d \
        RRA:AVERAGE:0.5:1h:2M \
        RRA:AVERAGE:0.5:1d:3y

И ставим в крон раз в 10 минут скрипт:

#!/bin/sh

TEST=$(/usr/bin/speedtest -f csv)
RET=$?

if [ $RET -eq 0 ]; then
    D=$(echo \"$TEST\" | cut -d, -f6 | tr -d '\"')
    U=$(echo \"$TEST\" | cut -d, -f7 | tr -d '\"')
else
    D="0"
    U="0"
fi

rrdtool update /var/lib/collectd/rrd/speddtest.rrd N:$D:$U

Важный момент, Speedtest CLI в машинных форматах скорости загрузки и скачивания выдает в байтах в секунду (Bps), поэтому чтоб получить привычные мегабиты из, например, CSV, нужно значение умножить на 8 и поделить на 1000000 (ну или просто поделить значение на 125000). Это будет сделано ниже при рисовании графика.

На веб сервере в конфиге убеждаемся что есть для нужного хоста:

location ~ \.cgi {
        fastcgi_pass unix:/var/run/fcgiwrap.socket;
        include fastcgi_params;
    }

И создаем или изменяем файл collectd.cgi (он должен лежать где-то в document_root и быть исполняемым):

#!/usr/bin/rrdcgi
<RRD::GOODFOR 60>
<RRD::SETENV LANG ru_RU.UTF-8>
<RRD::SETENV LC_TIME ru_RU.UTF-8>
<RRD::SETVAR dt '<RRD::TIME::NOW "%d.%m.%Y %H:%M">'>

<RRD::SETVAR graph_w 900>
<RRD::SETVAR graph_h 200>
<RRD::SETVAR graph_path "graph">
<RRD::SETVAR font "DEFAULT:9:">
<RRD::SETVAR start "-12 hours">

<RRD::SETVAR data_dir "/var/lib/collectd/rrd">
<RRD::SETVAR speedtestdb "<RRD::GETVAR data_dir>/speedtest.rrd">
<!DOCTYPE html>
<html lang="ru-RU">
<head>
    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <meta http-equiv="refresh" content="60">
    <title><RRD::GETVAR dt></title>
</head>
<body>

<RRD::GRAPH <RRD::GETVAR graph_path>/speedtest-<RRD::CV show>.png
    --lazy
    --imginfo '<img src="<RRD::GETVAR graph_path>/%s" width="%lu" height="%lu">'
    --title="Speedtest"
    --vertical-label="Mbits"
    -w <RRD::GETVAR graph_w> -h <RRD::GETVAR graph_h>
    --slope-mode
    --font <RRD::GETVAR font>
    --start "-1 <RRD::CV show>" --end "-0"
    --lower-limit 0

    DEF:down=<RRD::GETVAR speedtestdb>:download:AVERAGE
    DEF:up=<RRD::GETVAR speedtestdb>:upload:AVERAGE
    CDEF:in=down,125000,/
    CDEF:out=up,125000,/

    AREA:in#6afff380:"Download" GPRINT:in:MIN:"Min\: %1.1lf%s" GPRINT:in:MAX:"Max\: %1.1lf%s" GPRINT:in:AVERAGE:"Avg\: %.1lf%s" GPRINT:in:LAST:"Last\: %.1lf%s\j"
    LINE2:out#bf71ff:"Upload" GPRINT:out:MIN:"Min\: %.1lf%s" GPRINT:out:MAX:"Max\: %.1lf%s" GPRINT:out:AVERAGE:"Avg\: %.1lf%s" GPRINT:out:LAST:"Last\: %.1lf%s\j"
    LINE:in#00b3a4
>

</body>
</html>

Подробнее по работе с rrdcgi можно посмотреть в официальном мануале. А обращаться к нему нужно по ссылкам вида http://myhost/collectd.cgi?show=[hour|day|week|month|year]. Результат такого графика в самом верху.

]]>
Другая голова Anet ET4 Pro https://aleksandr.ru/blog/drugaya_golova_anet_et4_pro https://aleksandr.ru/blog/drugaya_golova_anet_et4_pro#comments Wed, 26 Jul 2023 23:32:42 +0300 https://aleksandr.ru/blog/drugaya_golova_anet_et4_pro nonadult aleksandr.ru Железо 3D Marlin Anet Другая голова Anet ET4 Pro

Дурная голова... нормально печатать не дает!
(с) старинная 3д-пословица

Anet ET4 Pro Titan Aero

Вот и пришло время заменить печатающую головку на моем Anet ET4 Pro. Пришел я к этому не только потому, что мне хотелось попробовать директ экструдер и попалась подходящая голова, но и от того, что не хотел больше мириться с недостатками родной головы, к которым можно отнести:


  1. Бесполезный емкостной датчик положения по оси Z, мало того, что принтер после автоматической калибровки не запоминает его результаты, так еще и от раза к разу он показывает весьма разные результаты измерений, что в свою очередь, приводит к лотерее при каждом запуске печати.
  2. Неправильная конструкция хотенда и, в частности, системы охлаждения, из-за которой деградирует трубка подачи пластика и образуются пробки.
  3. Быстрая деградация сопла обдува пластика (производитель печатает его из ABS), особенно при использовании чехла для нагревателя, который получается с ним почти в плотную. На качество печати это вроде не особо влияет, но до кучи пусть будет.

Часть проблем решабельна отказом от автоматического датчика положения в пользу микро выключателя, но вот с охлаждением все сложнее и нужно радикальное решение.

E3D Titan Aero

Когда мне на глаза попался китайский клон E3D Titan Aero - полностью собранный директ экструдер на тележке под профиль 2020, да еще и по цене около 3000 руб., то заказал его без колебаний. Идея дорогостоящей замены принтера превратилась в бюджетное приключение по замене головы.

От аналогов эту конструкцию с надписью "Kingroon" отличает уменьшенный, а значит более легкий, мотор экструдера. Это важно, особенно для принтеров, которые не были спроектированы таскать тяжелый экструдер на печатающей головке.

Хорошо, что в комплекте идет провод-удлиннитель для подключения мотора на головке от старой проводки. Не очень хорошо, что провода никак не подписаны, поэтому вентиляторы придется искать "методом тыка".

Все провода длинные с хорошим запасом. Провода нагревателя заметно толще, на конце просто залужены, видимо предполагается их подключение в клеммную колодку, а не в разъем. Для подключения вместо родного нагревателя Anet ET4 Pro, их придется обжать в разъем JST XH 2.54mm. Поскольку провода толстые, то для их обжима потребуется не только обжималка с тонкими губами, но еще терпение, сноровка и точный размер зачистки провода. Я запорол 3 клеммы перед тем, как вышло нормально.

Если лень возится с обжималкой или просто не получается, можно взять готовый обжатый разъем и припаять к нему, полярность для нагревателя значения не имеет. Так же можно использовать нагревательный элемент с правильным разъемом от родной головки.

Подключение новой головы производится в те же разъемы на плате. Маркировка разъемов там не особо для меня очевидная, поэтому вот пара картинок и описание что к чему:

Anet ET4 Pro adapter board

Маркировка Назначение
S-Z Концевик оси Z (впаять разъем если нет)
END Нагреватель хотенда
BL Вентилятор обдува сопла
MAT Датчик конца филамента
LV Автоматический датчик уровня (не исползуется)
TMP Датчик температуры хотенда
FAN  Вентилятор охлаждения радиатора хотенда
E-M Мотор экструдера
S-X X-M Совмещенный разъем концевика оси X и мотора оси X

Anet ET4 Pro adapter board pinout

Огромная благодарность авторам картинки с детальным описанием пинов выше за то, что они ее сделали, она единственная в интернете и очень полезная!

К сожалению, просто так поставить новую головку на место старой не получится, придется снять пассивный ролик ремня на оси X, после чего тележка достаточно туго оденется на рельсу, но это не страшно, разработается. Если совсем не лезет, нужно проверить втулку нижнего ролика, она должна быть правильно установлена и утоплена в отверстие на тележке. Для того, чтоб натянуть приводной ремень на новую тележку, придется ослабить крепление мотора на оси X, и почти полностью сдвинуть его к центру, поскольку расстояние между креплениями ремня на новой тележке меньше, чем на родной. Ну или использовать другой более длинный ремень (тип GT2, ширина 6 мм., но его по краям придется обжать вот в такие скобы или что-то аналогичное).

Когда я все собрал и установил, то заработало все, кроме экструдера: вместо подачи пластика он подергивался или вообще не шевелился. Причина в том, что на новом экструдере установлен (предположительно тк нет маркировки) мотор 17HS4023, а на старом был 42SHDC3025-24B (по ссылке идентичный).

Эксперимент по подключению 17HS4023 вместо 42SHDC3025-24B

При внешней схожести моторов, у них по-разному разведены разъемы на корпусе. Просто подключив один вместо другого, он не заработает, как ожидается. Изучив характеристики обоих моторов, получилось вот что:

Пин Провод 42SHDC3025-24B 17HS4023 Должно быть Получилось у меня
1 Красный A+ A+ Красный Зеленый
3 Синий A- B+ Зеленый Красный
4 Зеленый B+ A- Синий Черный
6 Черный B- B- Черный Синий

Фактически, нужно просто поменять местами центральные провода в разъеме и все заработает. Но так получилось, что у меня в результате экспериментов с проводами вышла инвертированная версия. Мне было легче инвертировать направление мотора экструдера в прошивке, чем еще раз перебирать разъем, который для таких операций не предназначен.

Разъем мотора 17HS4023 с измененным положением проводов

Разница электрических характеристик моторов минимальна: у 42SHDC3025-24B опорное напряжение 3.96V, ток 0.9A, а у 17HS4023 - 4.1V и 1.0A соответственно. Если почитать описание замены экструдеров в интернете, то при замене мотора обычно делается настройка драйвера под новые параметры, но у Anet ET4 Pro на плате нет подстроечных резисторов для драйверов, поэтому этот шаг пропускаем, уповая на минимальную разницу характеристик.

Разобранный экструдер с разными моторами

В процессе упражнений с моторами мне пришлось несколько раз собрать-разобрать новую головку до основания. Этот процесс сильно облегчило описание от производителя оригинала. От себя в конструкцию китайского клона добавил (видимо забытую) гровер-шайбу на третий винт крепления радиатора и обычную плоскую шайбу на вал мотора между шестерней и прижимным рычагом. Эта модификация позитивно сказалась на процессе загрузки пластика в экструдер, пруток перестал упираться в трубку сразу после шестерен и стал заходить с первого раза. Плюс большая пластиковая шестерня теперь вообще не касается железного прижимного рычага при работе, целее будет. Этого можно было так же добиться смещением на 1 мм. шестерни на вале мотора, но уж очень не хотелось опять все разбирать до основания. Сам вал мотора по длине впритык для такой конструкции и не заходит даже в отверстие под него в радиаторе, он кончается ровно там, где заканчивается прижимной рычаг, был бы длиннее на 5-10 мм. - было бы идеально.

Когда эксперименты с моторами закончены и голова вновь собрана и установлена, выясняется, что сопло теперь слишком высоко и не достает до стола примерно на 10-15 мм. даже в самом низком положении оси Z. Стол придется поднимать. Для этого штатные винты М4х30 нужно заменить на М4х40 (можно и 45 лишь бы ремень не задело), а недостаток высоты пружин компенсировать широкополыми кузовными шайбами М5 и гайками М6. Понадобится 3 шайбы и 2 гайки на каждую опору, итого 12 шайб и 8 гаек. Можно убрать по одной из гаек и поставить более длинные пружины, но цена вопроса возрастет на стоимость новых пружин против стоимости гаек.

Подъем стола Anet ET4 Pro

После всех этих изысков, механическая часть пригодна для работы и можно браться за конфигурацию прошивки под новую аппаратную часть. Суть изменений, помимо замены емкостного датчика на концевик, заключается в том, что поскольку у новой головы сопло расположено иначе, то принтеру нужно объяснить новую геометрию в которой он будет работать. И, поскольку механика экструдера теперь другая, то изменить количество шагов на миллиметр для подачи пластика. Это значение я взял из той же оригинальной инструкции, контрольно измерил линейкой, примерно совпало - для старта достаточно, тюнинг потом, см. в конце статьи. Получившаяся конфигурация доступна на моем гитхабе, а все изменения от оригинала видны в диффе, но хочется отметить, что из-за новой головы пришлось заметно уменьшить размер стола по Y.

Пробная печать V6 Titan Aero на Anet ET4 Pro

И вот, наконец, первая пробная печать. Кубик вышел так себе, нужно будет поправить температуру, ретракт и количество шагов экструдера, но это все уже делается вне принтера. На этом работу по замене печатающей головки можно считать успешной.

Калибровка нагревателей и прочий тюнинг

После замены нагревателя специалисты настоятельно рекомендуют калибровать его пропорционально-интегрально-дифференцирующий регулятор так же известный как PID-регулятор. И это обязательно нужно делать, если качество печати после замены не устраивает. Вот статья об этом процессе, относительно прошивки Marlin. В моем случае требуется откалибровать нагреватель хотенда, поскольку он был заменен вместе с головой, и нагреватель стола, поскольку после замены прошивки этого не делалось. Все буду делать через Pronterface, хотя команды можно отправлять и через Cura. Настройки по-умолчанию, скорость соединения 115200.

Настройки Pronterface

Для калибровки хотенда отправляем команду M303

M303 E0 C10 S200

И дожидаемся окончания, в выводе будет что-то вроде

#define DEFAULT_Kp 16.62
#define DEFAULT_Ki 1.21
#define DEFAULT_Kd 57.16

Устанавливаем полученные параметры с помощью M301 и сохраняем командой M500

M301 P16.62 I1.21 D57.16
M500

Теперь калибровка нагревателя стола, для этого используется та же M303, но с другими параметрами

M303 E-1 C10 S60

Так же дожидаемся окончания и результата вроде

#define DEFAULT_bedKp 104.30
#define DEFAULT_bedKi 20.06
#define DEFAULT_bedKd 361.59

Устанавливаем параметры теперь с помощью M304 и сохраняем M500

M304 P104.30 I20.06 D361.59
M500

Для контроля можно перезагрузить принтер и спросить у него настройки с помощью M503

Вывод M503 после перезагрузки принтера

В выводе должны быть цифры, полученные выше (см Hotend PID и Bed PID). После этого качество печати действительно улучшается, а так же в моем случае, стол стал нагреваться значительно быстрее.

В последней строке видна команда M603, отвечающая за длину загрузки и выгрузки филамента. Значения остались от старого экструдера - 350 мм., для нового можно поставить 25 мм. при загрузке и 40 мм. при выгрузке:

M603 L25.00 U40.00
M500

И последнее, количество шагов мотора экструдера все же пришлось поменять. Опытным путем с маркером и линейкой не удалось достичь желаемого результата и пришлось обратиться к расчетам на основании характеристик мотора:

Характеристики мотора 17HS4023

Формула расчета шагов экструдера Titan Aero

В моем случае получается Standard motor steps / rev = 360 / 1.8 = 200, остальные значения стандартные. Рассчитываем:

200 * 16 * 3 / (7.3 * 3.142) = 418.54

Получилось 418.54 против 837 из оригинальной инструкции к экструдеру. Заносим значения в принтер и сохраняем:

M92 E418.54
M500

С этим значением качество печати значительно улучшилось

Пример печати с разными значениями шагов экструдера

Серый кубик - оригинальная голова, берем его за эталон; белый - новая голова, шаги подобраны линейкой, хорошо видна переэкструзия; синий - шаги рассчитаны по формуле выше, очень близок к эталону. Теперь можно сказать, что принтер вполне сносно печатает 

]]>
Marlin для Anet ET4 Pro https://aleksandr.ru/blog/marlin_dlya_anet_et4_pro https://aleksandr.ru/blog/marlin_dlya_anet_et4_pro#comments Tue, 18 Jul 2023 14:13:27 +0300 https://aleksandr.ru/blog/marlin_dlya_anet_et4_pro nonadult aleksandr.ru Железо 3D STM32 Marlin Anet Marlin для Anet ET4 Pro

Marlin в работе

Когда я решил отказаться от емкостного датчика на голове принтера, то сделал это не просто так. Сначала был поиск всяческих решений проблем с ним, который привел к статье от производителя принтера по его отключению и замене на микровыключатель.


Производитель предлагает распечатать пару деталей и с их помощью добавить концевик на ось Z. А потом прошить специальную прошивку, которая вместо емкостного датчика будет использовать концевик. Выглядит все примерно так

Видео на youtube

Так же набор всех необходимых деталей можно купить за 25$, но это не наш метод. А теперь то, о чем производитель забыл упомянуть 

Размеры концевика 20х10 мм., например, подойдет вот такой. Однако, заявленные винты М3х10 слишком толстые для концевика и его держателя, нужно что-то поменьше и лучше саморезы, например, подойдут М1.7х12 по размеру отверстий в держателе или М2.5х16 по размеру отверстий в концевике.

Распечатанная деталь под концевик будет упираться в ножки на плате, ее придется доработать напильником или взять мою подправленную.

Limit Switch Adapter for Z Axis Mod

Разъема на плате вполне может не оказаться, его придется припаивать, хорошо хоть разводка под него есть. Тут может пригодится вот такой набор разъемов JST XH 2.54 mm.

Родные винты крепления платы после установки крепления концевика окажутся слишком короткими, их придется заменить на более длинные М3х10 или М3х12 мм.

Винты крепления упора на направляющей не должны превышать М4х8 мм., иначе упрутся в железо и упор будет болтаться. Если коротких нет, то под упор можно что-то подложить или использовать мой подправленный для винтов М4х10.

Ну и самое главное, если у вас установлена прошивка версии 3.0, то так просто сменить ее у вас не получится. Дело в том, что с этой прошивкой принтер перестает считать себя ET4 Pro, пишет, что он обычный ET4. При этом переименование файлов из et4p.* в et4n.* не спасает: с переименованными файлами принтер показывает что прошивается, но никаких изменений это не приносит, прошивка так и остается старая 3.0.

Справедливости ради надо заметить, что есть альтернативное решение от индусов, как подключить концевик в разъем емкостного датчика и не перепрошивать принтер

Видео на youtube

Но я счел этот способ недостаточно элегантным и решил все же прошить принтер нормальной прошивкой, чтоб не оставаться в тупике с непрошиваемым принтером.

В основе принтера лежит микроконтроллер STM32, а значит для его прошивки потребуется программатор ST-Link. Хорошо, что на плате есть выводы для его подключения.

Процесс замены прошивки через программатор много где описан, включая даже официальный сайт производителя. И в большинстве случаев он описан в ключе замены родной прошивки на Marlin. И раз дело дошло до программатора, то и я решил попробовать что такое Marlin для расширения кругозора.

Производитель предлагает готовый образ Marlin для прошивки, но настораживает, что ссылка там идентичная с ET5X, и учитывая неприятный опыт с прошивкой 3.0, я буду собирать образ сам. Тем более нужно научится конфигурировать для того, чтоб заменить емкостной датчик на концевик, а потом еще и настроить параметры для нового экструдера.

Сама прошивка Marlin состоит из 2 частей: непосредственно прошивки и кучи конфигураций под всевозможные принтеры, включая Anet ET4 Pro. Для упрощения жизни обывателя есть также расширение Auto Build Marlin для Visual Studio Code. Ну а чтоб всем этим воспользоваться понадобится либо фирменная ST-Link utility под Windows, либо открытая STlink Tools под нормальные ОС. Под MacOS ставится через brew, на всякий случай инструкция, которая даст понимание процесса в общих чертах.

Перед тем, как что-то делать с принтером, а заодно, и чтоб проверить, что все работает, стоит сделать резервную копию того, что сейчас прошито в принтере. Нужно подключить программатор к пинам на плате принтера:

  SWD Header on ET Series motherboard
     ___
  U | o |  (not connected)
    |---|
    | o |  SWDIO
    |---|
    | o |  SWCLCK
    |---|
  G | o |  GND
     ---

Подробная инструкция есть по нескольким ссылкам выше, но мне больше всего понравилась та, что из репозитория конфигураций Marlin. Когда все подключено запускаем команду

st-flash read backup.bin 0x08000000 0x100000

В результате создастся файл backup.bin в текущей папке. Если же в процессе будут ошибки, то с 90% вероятностью неверно подключены провода от программатора к принтеру.

Теперь можно приступать к прошивке. Распаковываем скаченную прошивку в любое место, потом в ней в папке Marlin заменяем файлы Configuration.h и Configuration_adv.h на те, что скачали из репозитория конфигурация для своего принтера. Важно, чтоб версия прошивки и версия конфигурации совпадали (в репозитории конфигов есть ветки для каждой версии).

Запускам VS Code и ставим расширение Auto Build Marlin. Оно затянет за собой PlatfomIO. Теперь в студии открываем папку, куда распаковали прошивку (не ту куда положили конфиги, а на уровень выше). Если все сделали правильно, то запустив расширение, увидите примерно вот такой экран:

Marlin Auto Build Visual Studio Code

На этом экране нужно выбрать Build напротив Anet_ET4_OpenBLT. Это запустит процесс сборки прошивки, в результате которого откроется папка, содержащая файл firmware.srec. Этот файл нужно скопировать на пустую microSD-карту. Затем нажимаем Upload, это запишет загрузчик OpenBLT в память принтера, это нужно сделать один раз, больше не понадобится.

Или можно просто скачать свежий OpenBLT bootloader for Anet ET4/ET5 series printers и прошить его командой

st-flash write openblt_et4.bin 0x08000000

Когда загрузчик записан, о чем будет свидетельствовать новый вид экрана принтера, выключаем принтер и отключаем программатор. Вставляем  microSD-карту с файлом прошивки и включаем принтер. Загрузчик обнаружит файл прошивки на карте памяти и запишет его в память принтера, после чего нас поприветствует логотип Marlin и загрузится прошивка.

OpenBLT в действии

А вот теперь начинается самое интересное  Нужно накрутить конфигурацию прошивки так, чтоб принтер более не пытался использовать емкостной датчик, а пользовался концевиком на оси Z, плюс еще много чего можно покрутить в процессе, как говорится, "аппетит приходит во время еды". Не просто так в принтер на предыдущем шаге был зашит загрузчик, умеющий обновлять прошивку с карточки. В процессе подгонки прошивки под новые нужды, скорее всего, придется много раз обновлять ее в принтере, конечно, можно держать принтер подключенный через программатор к компьютеру и загружать собранную прошивку непосредственно в него через пункт Anet_ET4_no_bootloader, но схема с карточкой в такой ситуации выглядит более удобной.

Если вкратце, то суть изменений сводится к тому, чтоб отключить автоматическую пробу положения по оси Z и заменить ее на ручную, плюс подкрутить параметры ручной пробы, чтоб головка не выезжала за стол в процессе. В качестве бонуса, мне пришлось так же подправить параметры подогрева, чтоб принтер на сваливался в красный экран "heating failed printer halted" в процессе подготовки к печати, возможно это проблема только моего конкретного принтера или связана с массивным стеклом ультрабазы, которое сложнее прогреть, но тем не менее.

Конфиги, которые у меня получились, можно посмотреть на моем гитхабе. Для особо интересующихся ниже дифф оригинального конфига ET4 Pro и того, что сделал я для работы без емкостного сенсора.

Marlin config Anet ET4 Pro Z-stop diff

После смены прошивки стала более раздражающей проблема вытекающего из сопла филамента перед печатью, для этого пришлось немного освоить G-код и дописать кусочек для очистки сопла перед началом печати. За основу взял вот эту статью. Идем в Cura, меню "Настройки" -> "Принтер" -> "Управление принтерами" -> выбираем свой принтер и кнопка "Параметры принтера". Далее в поле стартовый G-код надо вставить вот это:

G28 ;Home
G0 X5 Y0 F9000 ; Go to front
G0 Z0.15 ; Drop to bed
G92 E0 ; zero the extruded length
G1 Y40 E20 F500 ; Extrude 20mm of filament in a 4cm line
G92 E0 ; zero the extruded length
G1 E-1 F500 ; Retract a little
G1 Y100 F4000 ; Quickly wipe away from the filament line
G1 Z15.0 F2000 ;Move the platform

В отличие от оригинала из статьи выше, в моем случае головка при нулевых значениях выходит за пределы стола, поэтому пришлось сменить направление очистки (у меня вдоль оси Y, чтоб сопло не цепляло о крепежи ультрабазы), а выход головки за пределы стола используется для улучшения эффективности очистки. И это сработало, детали стали печататься без мусора на первых слоях.

В результате всех этих манипуляций удалось получить приемлемое, а главное предсказуемое качество печати. Теперь стала очевидна кривизна ультрабазы, купленной в фирменном магазине на али, по сравнению с родным стеклом. На некоторое время мне показалось, что вот теперь все стало хорошо и можно больше ничего не делать, но примерно через 2 часа печати эти мысли развеялись от до боли знакомых звуков образования пробки из пластика... все же голову надо менять!

P.S.

Немножко впечатлений об использовании марлина после родной прошивки. Те, кто говорят, что марлин более функционален, немого лукавят. Да, там можно много чего накрутить, но через конфиги и сборку прошивки, а интерфейс же оставляет желать. Он подкупает красочностью основного экрана, но за ним стоит неудобное меню, которое гораздо меньше ориентировано на тачскрин и пальцы, нежели родная прошивка Anet. Хотя, для принтеров с LCD-экраном и крутилкой меню марлин вполне будет удобным. Очень понравилась возможность настроить параметры предварительного подогрева для разных типов пластика и сохранить их в памяти. Но очень не хватает кнопки прерывания текущей операции, например, при перемещении головки "домой" или загрузке филамента, принтер  показывает экран с описанием того, что он делает и отменить это никак нельзя.

]]>
Биметаллическое горло для Anet ET4 Pro https://aleksandr.ru/blog/bimetallicheskoe_gorlo_dlya_anet_et4_pro https://aleksandr.ru/blog/bimetallicheskoe_gorlo_dlya_anet_et4_pro#comments Fri, 14 Jul 2023 11:37:54 +0300 https://aleksandr.ru/blog/bimetallicheskoe_gorlo_dlya_anet_et4_pro nonadult aleksandr.ru Железо 3D Anet Биметаллическое горло для Anet ET4 Pro

Биметаллическое горло

Спустя чуть более года и килограмма отпечатанного пластика, проблема образования пробки при печати стала возвращаться. Пластик стал опять тяжело и вязко заходить в хотенд. Разбор показал, что опять в районе перехода горло-сопло образовалась вязкая мерзость, мешающая печати. 


Но в этот раз я обратил внимание, что вся тефлоновая трубка подачи пластика, находящаяся в горле, стала липкая, ну и соответственно, внутренняя поверхность горла так же. Внимательный осмотр конца трубки, который подходит почти вплотную соплу, показал, что трубка деградировала и банально подгорела. И это при том, что температура печати не поднималась выше 215 градусов, вот тебе и оригинальная трубка из фирменного магазина (здравствуйте, алиэкспесс)!

Подгоревшая трубка

Чтоб избавится от подгорания трубки, я решил установить заблаговременно приобретенное биметаллическое горло, в котором трубка подачи пластика соприкасается лишь с холодной частью в радиаторе, а все остальное из металла. Так же такое горло должно уменьшить размер температурного перехода, что должно улучшить качество печати. 

Биметаллическое горло с размерами с али

На деле все оказалось совсем не так. Конструкция хотенда такова, что бОльшая часть горла находится вне радиатора, а в радиаторе всего порядка 8-10 мм. При использовании родного горла с трубкой внутри, трубка выполняет роль теплоизоляции для пластика и не дает ему нагреться по дороге от радиатора к соплу. Ну а охлаждается лишь кончик горла, почему-то китайские инженеры сочли это достаточным. При замене горла на биметаллическое без трубки внутри хрупкий температурный баланс нарушился и пластик стал застревать.

Биметаллическое горло в хотенде

Немного осмыслив описанное выше, принял единственное верное решение - увеличить радиатор так, чтоб вся медная часть горла была внутри. Для этого использовал старый радиатор, оставшийся от предыдущей замены хотенда. От него ножовкой была отрезана небольшая секция под размер оголенной части горла, и при помощи напильника и такой-то матери приведена в состояние пригодное для монтажа, не только обработать место отреза, но сточить угол, который мешал винту на тележке. Пришлось так же расширить отверстия для винтов и пройти сверлом отверстие для горла, чтоб оно не сужалось в районе места отреза.

Отрезок радиатора Anet

Конструкция была собрана с применением термопасты, чтоб распределить тепло с маленькой части радиатора на большую. Оба радиатора получились плотно прижаты друг к другу благодаря крепежным винтам и выступу на медной части горла. Ну и маленькая секция была дополнительно прижата к горлу скрытым винтом по центру так же как большая часть.

Сборка из двух радиаторов

Результат оправдал ожидания, печатать стало нормально. Но счастье закончилось через пол часа. Точнее через пол часа печати принтер опять переставал выдавливать пластик, если же деталь печаталась быстрее, то все было хорошо, если две подряд детали менее получаса на каждую то тоже все хорошо. Изучение проблемы показало, что при проталкивании пластика есть небольшая как бы ступенька примерно в районе перехода из горла в сопло. Это похоже на дефект то-ли горла, то-ли сопла, то-ли резьбы в кубике нагревателя (снова здравствуйте, алиэкспресс). Решить удалось путем замены сопла на более дорогое (из официального магазина на али), после замены ступенька стала менее заметной, и уменьшением ретракта с 4,7 мм. (как рекомендует производитель пластика) до 4,5 мм. (как было по-умолчанию в cura). Забегая немного вперед, это решение оказалось тоже не идеальным, а лишь отодвинуло время образования пробки до примерно 2 часов печати. Тут надо либо брать другое горло, кубик, сопло, либо читайте далее.

В процессе сборок-переборок постоянно приходилось перекалибровывать зазор от стола до сопла, это, можно сказать, стало привычкой перед каждой печатью. Но когда конструкция наладилась, необходимость калибровки никуда не ушла. Принтер упорно по-разному выставлял голову на разном расстоянии от стола при каждой новой печати. Чтоб начать печатать с нормальным зазором между столом и соплом, приходилось предварительно выставить смещение по оси Z с помощью бумажки, и почти каждый раз цифры плавали в обе стороны в достаточно больших пределах. И это не всегда гарантировало, что принтер после калибровки начнет печатать нормально. 

Эти танцы с бубном стали сильно раздражать и виновником всех проблем был назначен емкостной датчик, по которому принтер определяет расстояние до стола (и которого как раз нет в обычном ET4). Возможно свою роль еще сыграла ультрабаза, которая заметно толще родного стекла и тем самым влияет на точность датчика, который, вроде как, измерят расстояние до металла, хотя и реагирует на лист бумаги под ним.

Оценив возможные варианты в данной ситуации я решил пойти по пути отказа от датчика на голове в пользу концевика на оси Z. А осмотрев рассыпающийся кожух обдува сопла на печатающей головке, еще и по пути замены головки целиком на головку с директ экструдером, но это уже другая история...

]]>
Командная станция DCC своими руками https://aleksandr.ru/blog/komandnaya_stanciya_dcc_svoimi_rukami https://aleksandr.ru/blog/komandnaya_stanciya_dcc_svoimi_rukami#comments Sun, 12 Mar 2023 12:11:19 +0300 https://aleksandr.ru/blog/komandnaya_stanciya_dcc_svoimi_rukami nonadult aleksandr.ru Android Bluetooth Arduino DCC Командная станция DCC своими руками

Командная станция DCC++

Построив дома макет железной дороги, появилась потребность завести еще одну командную станцию для управления моделями. Чтоб поковыряться с моделькой на столе нужно либо демонтировать КС из подмакетного пространства, либо убирать с макета остальные модели и использовать его в качестве стола. То и другое крайне неудобно, а покупать еще одну КС банально дорого.


Готовые командные станции известных производителей за сотни евро хороши, но дороги, потому, что реализуют много функционала "в железе", который не очень-то и нужен или куда удобнее может быть сделан на компьютере, где больше экран и больше ресурсов. Так я пришел к мысли, что идеальная КС - это максимально простое железо, которое умеет понимать какой-то простой протокол и переводить его в DCC. А вся логика управления, красота интерфейса и другие возможности должны быть реализованы на другом, более подходящем по возможностям устройстве. На роль такого устройства идеально подходит телефон: там и интерфейс можно красивый и удобный сделать, и ресурсов для всего хватит, и коммуникационных возможностей масса.

На лицо аналогия с Roco MultiMaus, когда вся командная станция в пульте, что у вас в руке, а к рельсам подключается бустер для усиления сигнала. Но цена рокомышки даже на вторичном рынке далеко не бросовая. Плюс эта система изобилует проводами, а при использовании телефона, конечно, хотелось беспроводного соединения.

Для беспроводного соединения можно использовать Wi-Fi или Bluetooth. Например проект ESP32 Command Station предлагает использовать Wi-Fi и встроенный веб интерфейс. Прекрасное готовое решение, но из-за слабости железа есть проблемы с соединением. Плюс все недостатки веб-интерфейса, который не может соперничать по отзывчивости с нативным приложением. Ну а чтоб управлять через какое-либо приложение понадобится еще одна аппаратная прослойка.

Следующий вариант проект DCC++ и его развитие DCC-EX. Здесь уже сама станция и контроллер (крутилка) разнесены, для их взаимодействия предлагается открытый описанный протокол, ставший уже стандартом. Взаимодействие происходит через последовательный порт (serial) и, соответсвенно, есть возможность работы не только по проводу, но и через все, что угодно: Wi-Fi, Ethernet и Bluetooth. Авторы проекта делают упор на работу по Wi-Fi, это сильно удорожает аппаратную часть. Но если не использовать Wi-Fi, а проводное соединение заменить на Bluetooth-serial модуль, то получится беспроводной интерфейс на самом дешевом железе. И это мой выбор.

Аппаратная часть

Для сборки беспроводной командной станции DCC++ понадобится железки, которые можно приобрести на алиэкспресс за доступную цену, а если сравнивать с ценой фирменной КС, то это просто бесплатно. Ссылки привожу просто для ориентира "что нужно", по цене, скорее всего, можно поискать варианты подешевле.

  1. Arduino UNO R3 с чипом ATmega328P
  2. Arduino motor shield L298HN (оригинальный Arduino Motor Shield R3 так же подойдет)
  3. Bluetooth UART HC-06 (подойдет так же HC-05, но он дороже и избыточен по функциям)
  4. Понижающий преобразователь LM2596
  5. Блок питания 18В 2А (удивительно, на озоне было дешевле, чем на али)
  6. Разъемы 5.5х2.1 мм. и провода (без разъемов, в принципе, можно обойтись)

В ардуино нужно записать прошивку базовой станции DCC-EX.

Перемычка питания на моторшилде

На моторшилде нужно перерезать перемычку питания ардуино, иначе вы спалите ардуино!

Так же на моторшилде нужно установить перемычки на пины 13=5 и 12=10, это позволит станции понимать текущее потребление питания, если этого не сделать, она не даст включить питание путей.

Понижающий преобразователь до подключения к нему чего-либо, нужно настроить так, чтоб он давал напряжение более 5В и менее 12В, например 9В, иначе вы спалите ардуино!

Блютус модуль нужно настроить на скорость 115200 бит/сек, иначе взаимодействовать с КС не получится.

Сборка

Нужно еще раз убедится, что перемычка питания на моторшилде перерезана (см. выше) и насадить его на ардуино.

Подключаем блютус модуль, пин RX в TX, а TX в RX. Питание берем с пинов 5V и GND.

Подключение питания к моторшилду

Делаем две линии от блока питания. Первая идет напрямую к моторшилду. А вторя идет на понижающий преобразователь, а уже с него на разъем питания ардуино. Нужно еще раз убедиться, что понижающий преобразователь настроен на напряжение менее 12В.

Включаем блок питания в розетку и, если ничего не сгорело, а блютус модуль мигает лампочкой, то все собрано правильно.

Если есть 3D-принер, то можно распечатать плату для размещения всех компонентов.

P30423-145501.jpg P30423-145513.jpg

Что можно оптимизировать и удешевить

Arduino UNO бывают двух видов: с длинной съемной микросхемой в корпусе DIP-28 и с квадратным чипом в корпусе TQFP-32, распаянном на плате. Второй вариант идентичен по функционалу, но при этом дешевле первого.

Блок питания можно заменить на менее мощный с силой тока 1А, его должно хватить на то, чтоб поиграться с одним локомотивом.

Если вы дружите с мультиметром, то понижающий преобразователь можно заменить на более дешевый без индикации.

Если у вас более мелкий масштаб, чем H0 1:87, например, TT 1:120 или N 1:160, то блок питания можно заменить на 12В, при этом перемычку на моторшилде резать не надо, линию подключения питания к ардуино через понижающий преобразователь тоже делать не надо. Теоретически, с блоком питания 12В, локомотив в масштабе H0 тоже может поехать, но я не пробовал.

Программная часть

Поковырявшись в интернете, мне удалось найти всего одну программу для Android, работающую с DCC++ через Bluetooth. DCCpp CAB разговаривает строго по-испански, у нее неудобный интерфейс, да и вообще она похоже застряла где-то в прошлом столетии.

Эта ситуация стала толчком к реализации давней хотелки - попробовать себя в качестве андроид-разработчика. И вот, после прошествия некоторого времени кодинга и гуглинга, у меня получилось приложение DCC++Throttle, которое умеет управлять поездами и аксессуарами, а так же обладает большей эргономичностью, чем другие приложения схожей тематики, на мой взгляд.

Поскольку Google всячески препятствует тому, чтоб я оплатил им свой разработческий аккаунт, то плей маркета в ближайшее время моему приложению не видать, и жить оно будет на GitHub.

Итак, скачиваем свежую версию приложения и ставим APK себе на телефон. Если попросит, то нужно предоставить разрешение на Bluetooth, иначе не сможет подключиться к командной станции.

На телефоне штатными средствами Bluetooth добавляем модуль HC-06, подключенный к КС, в список сопряженных усройств. Это нужно сделать всего один раз для того, чтоб можно было работать с командной станцией.

Запускаем на телефоне приложение DCC++Throttle и в списке устройств выбираем добавленное выше устройство. Жмем подключиться. Если приложение смогло подключиться, то считаем, что все работает. На всякий случай, можно в приложении зайти в консоль и посмотреть обмен данными с КС, там как минимум, должна быть строка информации, полученная от командной станции.

На этом все, теперь можно играться 

]]>
Роликовый стенд для моделей https://aleksandr.ru/blog/rolikoviy_stend_dlya_modeley https://aleksandr.ru/blog/rolikoviy_stend_dlya_modeley#comments Fri, 10 Mar 2023 23:38:47 +0300 https://aleksandr.ru/blog/rolikoviy_stend_dlya_modeley nonadult aleksandr.ru Хобби H0 1:87 3D Роликовый стенд для моделей

20230307_181701.jpg

Дошли, наконец, руки сделать роликовый стенд для упражнений с моделями поездов. Аналог того, что продается на али, только, как минимум, вдвое дешевле.


Конструкция крайне простая и, за счет этого, весьма эффективная. Для сборки понадобится распечатать детали на 3D-принтере и заказать железки на али или аналогичные еще где-то:

20230307_181715.jpg

Для работы с большинством моделей будет достаточно 6 тележек, для сборки которых потребуется:

20230310_233409.jpg

Подключение питания удобно делать разъемами типа банан 4 мм., ну и, конечно, понадобятся провода. 

20230307_181709.jpg

Длинна стенда 50 см., это с хорошим запасом для большинства моделей, но и добавляет сложностей при хранении, поэтому, если есть желание, можно обрезать трубки до комфортной длинны.

20230307_181719.jpg

]]>
Труженики песчаного бункера на макете https://aleksandr.ru/blog/truzheniki_peschanogo_bunkera_na_makete https://aleksandr.ru/blog/truzheniki_peschanogo_bunkera_na_makete#comments Sat, 18 Feb 2023 20:06:56 +0300 https://aleksandr.ru/blog/truzheniki_peschanogo_bunkera_na_makete nonadult aleksandr.ru Хобби H0 1:87 Preiser Noch Труженики песчаного бункера на макете

P30214-234228.jpg

Работа кипит вокруг бункера с песком на ближнем углу правого модуля. Это завершающая сценка в создании макетного населения, и она же, наверное, первой попадает в поле зрения подходящего к макету человека.


P30214-234517.jpg

Наборы Noch 15279 и неизвестный набор Preiser, купленный россыпью.

]]>
Туристы на макете железной дороги https://aleksandr.ru/blog/turisti_na_makete_zheleznoy_dorogi https://aleksandr.ru/blog/turisti_na_makete_zheleznoy_dorogi#comments Thu, 16 Feb 2023 22:38:55 +0300 https://aleksandr.ru/blog/turisti_na_makete_zheleznoy_dorogi nonadult aleksandr.ru Хобби H0 1:87 Preiser Туристы на макете железной дороги

Главный турист

На моем макете есть место разной деятельности, в том числе и туризму.


Туристы

Путники идут по тропинке в углу около туннеля на левом модуле. Набор Preiser 10290.

P30214-234544.jpg

И в противоположном углу на правом модуле по лесной тропинке идут туристы из того же набора. Теоретически, они должны встретиться где-то в середине макета 

]]>
Персонал макетного депо https://aleksandr.ru/blog/personal_maketnogo_depo https://aleksandr.ru/blog/personal_maketnogo_depo#comments Wed, 15 Feb 2023 21:45:01 +0300 https://aleksandr.ru/blog/personal_maketnogo_depo nonadult aleksandr.ru Хобби H0 1:87 Preiser Noch Персонал макетного депо

Выпивон на бочках

Вокруг депо можно наблюдать несколько его сотрудников, праздно и не очень проводящих время, пока депо пустует.


Перерыв на работе

Механик в ожидании паровоза

P30120-144616.jpg

P30120-144620.jpg

P30214-234616.jpg

P30214-234204.jpg

Использовал Noch 15278, Preiser 10558 и 10416, а так же неизвестные наборы, купленные когда-то россыпью.

]]>