Marlin на стероидах. Часть первая, выбор платформы и проектирование.

Подписаться на 3Dtoday
jmz
Идет загрузка
Загрузка
15.03.19
2776
30
печатает на FLSUN 3D Metal Frame Prusa i3 DIY KIT
Техничка
34
d54a95ea4dd7a54da936dd68172d3abb.jpg
История про Marlin, STM32F407VET6 и волшебный сизый дым. Начало.

Сапожник без сапог

У меня есть две платы на STM32, на обеих успешно запущен Marlin и ни одну из них я не могу использовать в своем принтере. Минималистичная синяя таблетка на STM32F103C8T6 страдает от недостатка ног, а жертвовать комфортом во имя прогресса как-то не хотелось. MKS Robin этого недостатка лишена, но ее экран не помещается в раму принтера.
Вот и получается, что результатом бессонных ночей, потраченных на дружбу Marlin и STM32, является чувство глубокого морального удовлетворения, а принтер так и продолжает работать на 8-ти битной MKS Gen L.

В англоязычном мире есть устойчивое выражение “you have to eat your own dog food”, поэтому, вооружившись длинным списком претензий к MKS Robin, я сел проектировать плату, которую смогу поставить в свой принтер.

Выбор платформы, хотелки и проектирование

Конкурс главную роль выиграла “черная” STM32F407VET6 (10$), обойдя прежнюю фаворитку на STM32F103RET6 (7$). За дополнительные 3 доллара F407VE предложила больше ног, мегагерц, слот для SD карты, 4КБ памяти с питанием от батарейки и возможность использовать в сиквеле “черную” STM32F407ZET6 (14$) с минимальными доработками программной части.

Хотелки
  • фабричное производство платы, т.к. при таком количестве мелких дорожек и переходных отверстий травление в домашних условиях выйдет дороже из-за большого количества брака
  • самостоятельная сборка. Я искренне восхищаюсь джедаями паяльника, способных вручную паять SMD элементы 0402, но для моих дрожащих рук типоразмер 0603 - это уже подвиг
  • умеренная цена и детали из ближайшего магазина (ЧИП и ДИП в трех кварталах), сочетаются так себе, но хотеть-то можно
  • поддержка трех основных экранов - 2004 smart, full graphic smart и MKS Mini 12864
  • всего и побольше
И что из этого получилось
  • размеры платы: 100x81мм
  • двухсторонний монтаж
  • питание 12 или 24 вольта, один вход на все
  • 5 шаговых двигателей
  • 4 аналоговых датчика температуры - стол, два хотенда, термокамера
  • 3 нагревателя - стол и два хотенда, в идеале хотелось получить возможность подключать стол 200x200 с питанием от 12 вольт непосредственно к плате, без внешнего силового модуля
  • 6 концевиков
  • 4 управляемых вентилятора с выбором (общим для всех) напряжения 12/5 (или 24/5, если плата запитана от 24 вольт)
  • 2 разъема для сервоприводов с выбором (общим) напряжения питания 5/3.3, ШИМ сигнал всегда 3.3 вольта
  • стандартные EXP1/EXP2 разъемы
  • 2 SPI разъема
  • I2C разъем и I2C EEPROM
  • опциональные COM порт и USB порт, можно использовать и разъемы на плате с MCU
  • целая одна свободная GPIO нога для безграничного полета фантазии
Из пункта “всего и побольше” не поместились
  • светодиодная индикация нагрева стола и хотендов, попробую найти для нее место в следующей ревизии
  • RMII разъем для подключения к сети, для него катастрофически не хватает ног
  • выводы ног, задействованных под кнопки, диоды и SPI flash на плате с MCU
Производство плат заказал у PCBWay, т.к. зеленая паяльная маска ультрабюджетных плат от JLCPCB дисгармонировала с благородным черным цветом платы с STM32F407VET6. Приятным сюрпризом оказалась разовая скидка в 5$, что как раз соответствует стоимости изготовления 10-ти плат.

Вопросы без ответов

К аппаратной части есть изрядное несколько вопросов, ответы на которые можно получить только опытным путем.
  • справятся ли дорожки и полевой транзистор с нагрузкой, создаваемой нагревателем стола
  • справятся ли мелкие (SOT-23) полевые транзисторы с нагрузкой от вентиляторов
  • как будут работать полевые транзисторы паре с буферными элементами для согласования уровней (у буферного элемента при питании от 5в пороговое значение 3.5в, а MCU выдает только 3.3в)
  • хватит ли мелких клемм (шаг 3.5мм) для проводов нагревателей хотендов
К програмной части вопросов еще больше - в Marlin добавлен новый HAL_STM32, использующий новые библиотеки STM32 Core, а синяя таблетка и MKS Robin использовали HAL_STM32F1 и библиотеки libmapple.

Продолжение следует...
7ddc96fe999c563d98ddb7e186ffb159.jpg
Подписаться на 3Dtoday
34
Комментарии к статье

Комментарии

15.03.19 в 13:49
0
Отлично! Вы планируете продавать смонтированные платы? Если да, то какой приблизительно будет ценник?
15.03.19 в 21:00
2
Собранные - не планирую, только излишки печатных плат.
OpenSource Hardware не предусматривает возможности запрета на коммерческого использования исходников, поэтому производить, собирать и продавать платы может любой желающий.
Исходники (KiCAD + Gerber) и BOM выложу ближе к написанию второй части.
Исходники будут под лицензией CC BY 4.0
15.03.19 в 15:17
1
А где обратноя сторона платы ?? Судя по фоткам проца то на плате нету. Фикция.
Если вам нехватает ног у проца - непонятно почему не взяли STM32F4 старшие модели или F7 ?
Получается опять какой то урезанный компромис. Хочу много. А реализовать ни как - т.к. не тот проц выбрал.
И чем вас не устраивают готовые решения ?
Все что вы перечислили есть в - BIGTREETECH SKR V1.3 самые гуманные по цене 32 бита под Марлин 2,0. и Смузи.
И не надо городить кучу заморочек с дизайном, распайкой и программированием.
15.03.19 в 16:12
0
Судя по фоткам проца то на плате нету. Фикция.
Конечно нету, это же шилд. Читайте внимательно.
15.03.19 в 21:08
3
Про шилд уже ответили.

Более старшие модели сильно увеличивают стоимость производства и трудозатраты на разработку, базовая плата уже поддердживалась STM32 Core на момент начала проектирования. Итоговое решение способно полность заменить типовые 8-ми битные наборы электроники за сравнимые деньги.

На STM32 нет нормальных готовых решений.

Все что вы перечислили есть в - BIGTREETECH SKR V1.3
4 управляемых вентилятора, 4 датчика температуры, I2C, EEPROM?

И не надо городить кучу заморочек с дизайном, распайкой и программированием.
Используйте готовые, никто ж не неволит. На этом сайте не все деньги делают на 3D печати, для некоторых это просто хобби.
16.03.19 в 10:53
1
Более того у них на подходе вот это:
16.03.19 в 19:21
0
А где можно посмотреть и почитать про данную плату SKR PRO ??
23.03.19 в 23:19
0
15.03.19 в 15:45
0
Почем у Вас вышла сборка, если не секрет (можно в личку) ? По железу трудно предметно отвечать надо знать какие Вы детали используете. По дорожке есть например калькулятор http://radioaktiv.ru/raschet-shiriny-dorozhki-pechatnoy-platy.html . Слой у Вас на плате 35 мкм, если специально ничего другого не заказывали. Клеммы просто посмотрите даташит. Ток нагревателя 4А. По буферам, я б поменял на то что точно откроется. Иначе будете ловить ошибки. На одной партии так, на другой по другому. По софту - не хотите скооперироваться ?
15.03.19 в 21:16
0
Если считать, что все 10 плат пойдут в дело, то полный набор электроники с покупной черной STM32F407VET6 получился где-то между 20 и 30 долларами. Если плата из партии используется только одна, то на стоимость партии дороже.
BOM c точными рассчетами будет ко второй части истории.
15.03.19 в 21:49
0
Я наверное не правильно Вас понял. Я думал Вы сборку плат у тех же PCBWay заказывали. Вот и интересно было сколько они берут за сборку.
15.03.19 в 22:26
0
Сборка самостоятельная.
Я пытался оценить стоимость монтажа SMD компонентов у PCBWay, но или я неправильно их вопросы понял или стоимость для мелкой партии у них специально такая, что бы с мелкими глупостями к ним не приходили.
Что вполне возможно, так как трудозатраты на создание кода для расстановщика не зависят от числа плат и для нескольких тысяч плат это уже все не так страшно получится.
15.03.19 в 16:27
1
Для такой компактной платы может есть резон силовой ключ стола сделать "выносным" - чуть больше проводов, зато разгрузит плату и можно будет не переживать, выгарает чаще изза больших токов стола - самая дорогая электроника в безопасности ну и на любой вкус можно стол сделать 220, от отдельного БП и т.п., для больших столов может удасться выделить 2 канала для двух зон нагрева

на плате не понятно куда будет подключаться нагреватель термокамеры

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

в связи с недостатком ног может есть смысл ориентироватся на SPI / I2C олед дисплеи - стоят недорого, есть уже варианты покрупнее, и минимум проводов (особено I2С) если еще и для энкодера сделать подтяжки сразу на плате - так вообще красота - 4 провода на дисплей 4 на энкодер (с питанием) и заводской модуль дисплея вообще не нужен (ну да немного работы паяльником но если энкодер голый брать) SDIO - ну да тоже отдельный считыватель за 3 копейки зато можно разместить удобно а не в дебрях принтера
15.03.19 в 22:19
0
Выносной ключ - это сколько угодно, и меня реле для грелки 220в запитано как раз от разъема стола.
Хотелка заключается в том, что бы для самых простых вариантов принтера можно было бы обойтись без дополнительных модулей.

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

Подтягивающие резисторы неактуальны - на STM32 подтяжка входа вверх и вниз задается програмно для любой ноги в режиме GPIO входа.

Токоограничивающие ставить не хочу - голые оптопары относительно мало распостранены, а объем пайки увеличится.
У меня эти резисторы для X стоят в комутационной плате каретки, а для Y и Z - на проводах в термоусадке в змеиной коже. Мне такой вариант подключения видится менее трудозатратным.


Недостаток ног был актуален для синей таблетки. На этой плате более чем ног достаточно для замены типовых вариантов электроники.
Отказ от поддержки EXP1/EXP2 сильно поднимет порог вхождения и сократит количество потенциальных пользователей.

Но все желающие могут подключить I2C или SPI экран и использовать ноги из разъемов EXP1/EXP2 под другие задачи.


Разъем для подключения внешней SDIO находится между разъемами концевиков и вентиляторов.
Распиновка срисована с MKS Robin v2.4 для подключения MKS Slot2 с 9-ти пиновым кабелем, но мне самой платки у меня нет, проверить нечем.
15.03.19 в 16:41
0
зачетный почин. а я все думал - почему никто не делает шилды на разные стм типа нуклео-144 и прочих. и вот пожалуйста
15.03.19 в 17:04
0
Катострофически не хватает 2 разъемов.

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

Servo PWM, это 5V, или 3.3V или VIN ?
Ну и за компанию, а где разъем датчика? Ведь, почти 80% серво привод, это BlTouch.
Целых 4 вентилятора, а где разъемы датчиков температуры? Наверное, это T0, T1, TB, TC, но смущают конденсаторы.
15.03.19 в 22:39
0
управление вентилятором обдува драйверов
На плате
4 управляемых вентилятора с выбором (общим для всех) напряжения 12/5 (или 24/5, если плата запитана от 24 вольт)
Для обдува модели, двух термобарьеров и самой платы.

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

Servo PWM, это 5V, или 3.3V или VIN ?
Как бы
2 разъема для сервоприводов с выбором (общим) напряжения питания 5/3.3, ШИМ сигнал всегда 3.3 вольта


а где разъем датчика? Ведь, почти 80% серво привод, это BlTouch.
Опять же любая незадействованная нога, например PD11, находися в 2-х контактном разъеме около разъемов сервоприводов. Второй контакт - земля. Или один из неиспользуемых разъемов концевиков, что больше нравится.

смущают конденсаторы
За всех производителей не поручусь, китайцы разные бывают, но конденсаторы в цепи датчиков температуры - нормальное явление.
18.03.19 в 08:07
0
Посмотрел я схему, по ссылке. Честно, меня смущают именно наличие электролитических конденсаторов. У них запас заряда больше, чем у простого конденсатора. Тем самым, схема более вяло реагирует на изменение показаний датчиков температуры. У меня 2 принтера. Anicubic I3 Max на 8-ми битовой плате и ZAV, на Lerdge. На первом, температура стола прыгает +/- 1..2 градуса (попугая). На втором, +/- 0.1..0.2 градуса (попугая). На плате Lerdge не применяется электролитический конденсатор. Соответственно, система более чувствительна к изменению нагрева. В целом, более стабильная. Если у вас открытая модель принтера, ваша схема оптимальна. Если у вас закрытая модель принтера, оптимальнее будет обычный конденсатор поверхностного монтажа.
"Любая не задействованная нога" говорит о том, что вы забыли или поленились вынести эти элементы. При обслуживании готового принтера любая мелочь вылазит боком, особенно, при вибрациях, во время печати. Если вы делаете исключительно для себя, вы решаете, как вам удобно. Если предполагаете использование другими, лучше добавить разъемы.
18.03.19 в 13:28
0
"Любая не задействованная нога" говорит о том, что прошивка открытая и пользователь может сам назначить любую удобную ему функцию на любую неиспользованую GPIO ногу любого разъема.

Если подключение условного датчика наличия филамента к условному разъему Z+ у пользователя вызывает трудности или внутреннее отторжение, то имеет смысл посмотреть в сторону комплексных решений, на рынке достаточно таких предложений.


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

Выход за габариты 100мм ведет к скачкообразному увеличению стоимости, из-за чего плата теряет свою привлекательность в сравнении с коммерческими решениями.
18.03.19 в 14:55
0
Вы поймите, я всего лишь хочу вас направить на использование нормальных унифицированных разъемов. Вот, мой жизненный опыт с новым принтером Zav. Приобрел стол подогрева для принтера. Датчик температуры имел dupon разъем. Ура, он без проблем встал в разъем платы. Отработал у меня принтер уже более месяца и вот, вот, только что закончил печать очередной детали. Дождался я, когда деталь отлипнет от стола. Включаю принтер, жму предварительный нагрев, а температура стола - 0 градусов. И вместо того, что бы печатать, я начинаю вертеть свой принтер, крутить кучу винтов, что бы добраться до платы. Проверяю сопротивление датчика. Потом, кусачками отрезаю штатный dupon и обжимаю ответный разъем X24.3 (кажись, так называется). В результате, почти час возни.
Для мото-шилда, типа рампс, такой мазохизм, считаю, нормальным решением. Для контроллера, который стоит, как вся 8-ми битная электроника, такое решение отпугнет потенциального желающего. Надо все разъемы делать с фиксацией, не допускающей самопроизвольного выпадения разъема. Ведь основная цель 32-х битового управления, это увеличение производительности системы. Соответственно, возрастают механические нагрузки. Идея и реализация, хорошие. Как обычно, важны мелочи.
18.03.19 в 16:25
0
Ваш пример скорее о том, что стоит использовать попарно использовать разъемы одного типа, а не о том, что dupont - это плохо.
Контакты dupont длиннее, чем xh2.54 и на неродных штырях он действительно держится так себе.
Если же в процессе эксплуатации dupont сваливается c родного длинного штыря, то менять его надо не на xh2.54, а на разъемы с винтовой фиксацией. Но это, скажем так, не самые типовые условия эксплуатации.

А по поводу унификации - в бюджетном сегменте электроники ее почти не наблюдается.
Термисторы продаются с dupont, xh2.54 и без разъемов.
BL Touch - dupont и xh2.54
EXP1/EXP2 каждый крутит как хочет.

Что бы не играть в эту угадайку, все основные разъемы (термодатчики, концевики, вентиляторы, сервоприводы, шаговые двигатели, EXP1/EXP2 и SDIO) сделаны по образу и подобию MKS.
Неосновные разъемы - I2C, SPI, USB, COM и разъем питания внешнего чего-нибудь (3V3/5V/Gnd) в любом случай потребуют индивидуально изготовленного кабеля.
18.03.19 в 17:47
0
Дело хозяйское. На плате Lerdge нет штатного USB type B разъема для управления принтером. Это дополнительная плата. Там, как бы, самим производителем, разъем унифицирован. У меня, буквально через неделю, эта плата приподнимается на штатных разъемах. А всё потому, что производитель не предусмотрел дырки под болтик, для жесткой фиксации. При достаточно большой ширине основной платы, придумать что-то, типа пластиковой стяжки, очень сложно. Фиксировать USB разъемы с помощью конструктивных элементов корпуса, это мазохизм. Временно, снял, хотя эта плата служит продолжением, для установки WiFi модуля. Были бы разъемы с фиксацией или внешняя фиксация, не было бы у меня конфуза.
Поймите, даже, если принтер работает достаточно тихо на больших скоростях, это не значит, что нет вибрации на корпусе.
Разъем xh2.54 имеет фиксаторы, достаточные для удержания разъема. Посмотрите внимательно профиль выступов.
15.03.19 в 18:36
0
А что за STM32 CORE? Я выпал из программирования SMT32 на пару лет, сначала там было SPL, потом КУБ, теперь какой-то CORE?
15.03.19 в 20:06
0
CORE это просто набор библиотек совместимый с библиотекам Arduino, а так там тот же КУБ и LL
16.03.19 в 11:08
0
Идея использовать STM32F407xxxx очень заманчева, только в Marlin 2 HAL_STM32F1 протестирован на Malyan M200 (103CBT6), Chitu 3d (103ZET6), custom boards(103VET6) а вот для HAL_STM32F4 нет ни какой информации.
В моих хотелках 4 головы, tmc2130 spi, ps_on.
Сколько осталось свободных ног?
16.03.19 в 21:40
0
HAL_STM32F4 (на libmapple) неактуален. Для этой платы используется HAL_STM32 (на STM32 Core).
Под 4 головы надо или сильно специализоваронную плату или очень большую универсальную.

Не разведены на шилде: 2 ноги светодиодов, 3 ноги встроенных кнопок , 4 ноги SPI флеша, 2 ноги SWD и PB2/BOOT1.
Если не использовать SDIO, освобождается еще 7 ног.
При наличии паяльника и большого желания, все эти ноги можно задействовать, предварительно сдув SPI флеш и подтягивающие резисторы.

Если использовать MKS Mini 12864 или I2C дисплей, освободится еще несколько ног в EXP1 разъеме.
Еще можно пожертвовать SD_Detect и COM портом, или оставить COM И отказаться от USB.
17.03.19 в 13:44
0
  • справятся ли мелкие (SOT-23) полевые транзисторы с нагрузкой от вентиляторов
Полагаю, что легко справятся. Мелкие карлсоны с током 200мА точно - у меня уже годы работает.
17.03.19 в 16:50
0
По даташиту транзистор тянет 5.3А, но поскольку это был первый опыт троектирования такой платы, а на заводских платах я таких решений не всречал, имели место некоторые сомнения.

Для написания комментариев, пожалуйста, авторизуйтесь.

Читайте в блогах

Новый обдув: с блек джеком и подсветкой

Закрытый корпус для FlyingBear P905 (размер стола 220х220)

Устраняем раздражающие моменты Marlin

Видео: Как создать 3D модели для 3D принтера ? 3D Редактор Fusion 360.

ПАО «Ил» открыло лабораторию цифровых технологий

Держатель филамента