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

jmz
Идет загрузка
Загрузка
20.03.2019
5236
44
печатает на FLSUN 3D Metal Frame Prusa i3 DIY KIT
Техничка

Подпишитесь на автора

Подпишитесь на автора, если вам нравятся его публикации. Тогда вы будете получать уведомления о его новых постах.

Отписаться от уведомлений вы всегда сможете в профиле автора.

24
Продолжение истории про Marlin, STM32F407VET6 и волшебный сизый дым.

Часть первая.Раньше SMD компоненты в таких объемах мне паять не приходилось и вполне получалось обойтись обычным паяльником. На этот раз пришлось признать, что D2-PAK можно распаять и паяльником, но фен для этой цели намного удобнее. Искренне ваш, К.О.

В следующий раз попробую использовать для этой цели утюг.

Для управления нагревателями стола и хотендов были выбраны транзисторы

IRLR8726PBF (30В 85А) с управлением через буферный элемент SN74AHC1G125DBVR.

Буферный элемент используется для повышения открывающего напряжения на затворе транзистора и снятия токовой нагрузки с вывода микроконтроллера. Схема управления честно подсмотрена на плате STEVAL-3DP001V1.

Для первичных испытаний на плату были установлены преобразователь 5V с обвязкой, транзистор стола с “обвязкой” и винтовые клеммы на 16 ампер. К выходу был подключен стандартный 12-ти вольтовый алюминиевый стол 200x200мм, ко входу - 20-ти амперный блок питания, разогнанный до 14.7 вольт.

“Smoke test” был быстрым и результативным - при включении блока питания в сеть из полевого транзистора дым тут же вышел. Расследование по обжигающе горячим следам показало, что буферный элемент с висящим в воздухе входом подобен коту Шредингера, а напряжение на его выходе во-первых есть, а во-вторых катастрофически недостаточно для нормального открытия полевого транзистора. На плате ST эта проблема успешно решена стационарно распаянным микроконтроллером, а на съемный шилд стоит добавить подтяжку к земле.

Также стало понятным, почему ST используют буферные элементы с пороговым напряжением 3.5 вольт. При наличии на входе напряжения в 3.3 вольта на выходе буферного элемента напряжение несколько ниже 5-ти вольт, но его достаточно для полного открытия полевого транзистора.

Для IRLR8726PBF уже 4-х вольт на затворе достаточно для пропускания 100А, при номинале транзистора 85А.

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

Для управления вентиляторами используются мелкие (SOT-23) транзисторы IRLML0030TRPBF (30В 5.3А) с пороговым напряжением 1.3-2.3 вольта. Преобразователь уровней для них не требуется, вполне достаточно пары резисторов - подтянуть затвор к земле и ограничить ток с ноги микроконтроллера. С нагрузкой от вентиляторов эти транзисторы справились на ура. Теоретически они справились бы и с нагрузкой от хотенда, но используемые для вентиляторов разъемы на такой ток не рассчитаны.

Наука о контактах

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

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

Дальнейшее тестирование выявило еще две ошибки в разводке платы. Линия E1_enable недосчиталась короткого, на пару милиметров, участка непосредственно перед колодкой драйвера. В разъеме SPI отсутствует дорожка между контактами CLK, из-за чего один из контактов висит в воздухе. Обе проблемы обходятся пробросом перемычек.

Итоговая errata:
  • лишняя дорожка, соединяющая землю и 3v3
  • дорожка E1_Enable не дотянулась пару миллиметров до разъема драйвера
  • потерянная дорожка между CLK контактами SPI разъема

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

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

Исправленный вариант платы доступен на github. BOM ценами из ChipDip.

Стоимость комплектующих на одну плату в Чип и Дип - 1072 рубля, что означает стоимость самосборного набора из шилда и управляющей платы в районе 29$.

В моем случае расходы на электронику были несколько ниже, так как самый дорогой компонент (стабилизатор 5V) был заранее заказан на али по цене “два доллара пучок”.

Общая сумма расходов, с учетом стоимости производства 10-ти плат со скидкой для нового клиента, составила 34$. Сюда уже входит черная плата STM32F407VET6 за 9.5$

Разводка платы, после устранения обнаруженных ошибок.
Планы на вторую ревизию
  • подтягивающие резисторы на буферные элементы
  • светодиодная индикация включенных нагревателей
  • фильтрующие конденсаторы в обвязке LM2596-5.0
  • диод на 2-3А на входе LM2596-5.0
  • перенос гребенок разъемов COM и USB в центральную часть
  • (возможно) отказ от использоваться EEPROM или перенос ее на темную сторону
  • оптимизация стоимости, с учетом возможности заказа компонент на lcsc и али



Новая порция вопросов без ответов
  • На плате RAMPS у шаговых двигателей присутствует подтяжка конфигурационного пина M0 к земле. У M1 и M2 такой подтяжки нет. Почему подтяжка нужна только для одного пина?
  • У ATmega2560 размер EEPROM - 4КБ. На различных платах встречается внешние микросхемы EEPROM размерами 8КБ и более. Если ли практическая ценность от EEPROM размером более 4КБ?

Продолжение следует...

Подпишитесь на автора

Подпишитесь на автора, если вам нравятся его публикации. Тогда вы будете получать уведомления о его новых постах.

Отписаться от уведомлений вы всегда сможете в профиле автора.

24
Комментарии к статье

Комментарии

20.03.2019 в 17:47
0

Забыл добавить.

У меня есть еще 9 нераспаянных плат, с упомянутыми в статье ошибками проектирования.
Если есть желающие поэкспериментировать - отдам за стоимость доставки или самовывозом.

jmz
20.03.2019 в 19:48
0

Я б взял. Писать в личку?

20.03.2019 в 17:51
0

Марлина в чём собираете?
Я бы взял платку для бесчеловечных опытов. Как с вами связаться?

20.03.2019 в 23:27
0

Для сборки Marlin использую PlatformIO + Atom.
Теоретически можно использовать PlatformIO + VSCode, но я не пробовал и дополнительны скрипты под VSCode не тестировал.

jmz
21.03.2019 в 02:56
1

Можете выложить проект? На гитхабе у Вас не нашел. Ну или что там нужно для новой платы... boards.h,  pins_*.h, platformio.ini
Прежде чем пускаться во все тяжкие, хотелось бы попробовать просто собрать (у меня VSCode). Если 'что-то пойдет не так' - будет хоть у кого спросить. )) (сам я, вряд ли разберусь)

Или, возможно, будет третья часть, т.с. 'программная'? Для повторения проекта 'простым народом', мне кажется, она необходима. Где что брать, чем шить и пр.

21.03.2019 в 14:26
0

Код выложу ближе к третьей части, про сборку Marlin под эту плату.
Мне нужно сначала проверить, что мои правки не ломают сборку под старый HAL_STM32F1.

20.03.2019 в 18:13
2

На плате RAMPS у шаговых двигателей присутствует подтяжка конфигурационного пина M0 к земле. У M1 и M2 такой подтяжки нет. Почему подтяжка нужна только для одного пина?
Видимо дань традиции, в первых драйверах Pololu было так (https://www.pololu.com/product/1201):

MS2 and MS3 have internal 100kΩ pull-down resistors, but MS1 does not, so it must be connected externally.

20.03.2019 в 20:29
0

Спасибо!

20.03.2019 в 18:31
0

С точки зрения железа EEPROM можно не ставить совсем. Для записи параметров использовать внутреннюю флэш контроллера. При этом из-за power loss recovery потребуется 2 сектора (они там есть по 16 К). Можно так же воткнуть внешнюю флэшку - что-то типа 25P16/32/64/128 . Там тоже 2 сектора уйдут под параметры. В остальное можно напихать красивых картинок или вэб морду. Что для этого сделать в Марлине я х.з.

20.03.2019 в 20:34
0

Для параметров мне больше нравится вариант использовать внутреннюю SRAM с питанием от батарейки, ее в этом микроконтроллере 4 килобайта стоит.
Скорость высокая, ресурс безграничный, батарейка в комплект входит.
Отсюда, собственно, и был вопрос - существует ли, в реалиях Marlin, реальная потребность в EEPROM, размером больше 4-х килобайт.

jmz
20.03.2019 в 20:45
0

Батарейка имеет свойство кончаться. Про 407 не скажу, но на 103 она кончается довольно быстро.

20.03.2019 в 21:32
0

А вы как батарейку на F103 подключали?
Ток в режиме VBAT у F103 и F407 примерно одинаковый - 2 микроампера. Емкость батарейки CR1220 - 300 миллиампер-часов, это примерно на 17 лет работы. Половину можно списать на саморазряд, но все равно получается небыстро.

jmz
20.03.2019 в 21:52
0

Просто на вход Vbat. У меня там правда кроме регистров еще часы шли. Хватало где-то на больше года, на полтора уже не хватало. Девайсы юзались 2 раза в год на соревнованиях (регистраторы финиша). Так что точнее не знаю. Когда надоело кнопки щелкать заново настраивая девайсы (про батарейки конечно вспоминали уже на месте - далеко от города), переписал на сохранение параметров на флэшке.

20.03.2019 в 22:23
0

Спасибо, учту. Год для постоянной памяти маловато будет.

20.03.2019 в 20:31
0

Думаю, к третьей ревизии вы поймете, что буферные элементы != драйверы mosfet. Вас не смущает что характеристики транзисторов приводятся для VGS=10В? То что он в теории может и то как надо делать может существенно отличаться. Судя по заказным платам, вы хотели сделать хорошо, иначе тут всплыл бы очередной квазимодо, выглядывающий из под лазерного утюга. Контроллер взят хороший, жирненький. В целом все сделано хорошо и тут такое. Не надо так, китайских кипятильников у нас и так на али гора и еще маленькая тележка. Поставьте, пж, долбаный FAN3100 или копеечный IRS44273L. 

XOR
20.03.2019 в 22:26
0

Тогда согласно Вашей логике нужно и стабилизатор на 10-12В для питания этих самых драйверов чтоб по ВСЕМ правилам было. Многим то ведь нужно чтоб от БП24В принтер м. б.  запитать а для Ugs как правило не более 20 а это заморочки. Частота управления нагревом 15 Гц (на репериере у марлин не знаю но не думаю что больше 500) тоесть не большая соответственно можно обойтись мосфетм с низким напряжением включения без огорода с питанием ключей для всего остального выносные ключи которые если Очень нужно можно и с высоким напряжением управления

20.03.2019 в 22:45
0

Разумеется. И еще раз хочу сказать: не важно какая у вас там частота переключения, если канал не открывается полностью, вы его включИте и не выключайте - все равно будет кипятильник. Может я что-то упустил? Автор решил сделать хорошую плату. Скорее всего (это мое допущение) он хотел сделать что то лучше или то, чего не предлагают в готовом виде. Иначе зачем нужен очередной Ramps кипятильник ? И раз уж мы проектируем новую плату, логично сделать ее как подобает. Пристроить туда промежуточный преобразователь не составляет труда, если жалко денег - MC33063 и обвес на 10-12В. Я так делал (не в принтере) и решение хорошо себя показало. Паровоз из модулей с алиэкспресса может сделать почти каждый из нас. Была бы мотивация и свободное время. Я говорю о том что если делать что-то новое то оно должно быть лучше/удобнее/продуманнее чем то что уже есть. Был франкенштейн из рампса, дополнительного выносного транзистора к нему и еще всякими приблудами, теперь крокодил из F4 и опять выносного транзистора? А зачем?

XOR
20.03.2019 в 23:18
0

у меня на рампс 1.5 для DUE распаяны irl3803 от 3.3 V для экструдера вполне нормально работает, а для стола - внешний BTS555

у него при 4.5 М RDS 0.009 Ом - для небольшого стола вполне нормально без дополнительной линии питания. У автора задача - компактная недорогая плата 32 бит без лишних наворотов он ее и сделал а если мало - внешний ключ на любой вкус и цвет (кому-то вообще столы на 220В нравятся но вот распаивать симисторы на плату никто не спешит) да есть ПРАВИЛЬНОе управление мосфетом - но драйвер нужен прежде всего для быстрого открытия при больших частотах управления, а для управления на принтерах повторюсь достаточно просто правильно выбрать ключ и не перегрузить выход МК на 32 бит никах  они  все таки слабее чем у AVRmega. и это работает

PS IRLR8726PBF при 4.5 V имеет сопротивление менее 0,008 Ом - вполне прилично так зачем больше если  все  и так хорошо

XOR
20.03.2019 в 23:12
0

Это, собственно, и есть аналог дешевого китайского кипятильника с али, только на STM32.

Что буферный элемент не является заменой полноценному драверу сомнений не вызывает.
Сомнения есть по поводу целесообразности использования драйвера для управления нагревателями в 3D принтере.
1.5-2 ампера тока на затвор не нужны. 5-ти вольтовая электроника зачастую обходится двумя резисторами - ограничить ток с микроконтроллера и подтянуть затвор к земле.

При выборе такой схемы управления учитывались не только параметры при референсных 10-ти вольтах, но и при более низких напряжениях.
Для используемых транзисторов Rds составляет 4-5.8 мОма при Vgs 10 вольт и 5.8-8 мОма при Vgs 4.5 вольт.
Ожидаемый ток через транзистор в 4-8 раз меньше номинального.
На плате есть только три напряжения - 3.3в, 5в и Vin, которое может быть от 12-ти до 24-х вольт и потенциально превышает максимально допустимое Vgs (20 вольт)
Частота ШИМ составляет единицы герц, поэтому нет необходимости очень быстро открывать и закрывать транзистор.

В запасе так же было три варианта решения проблемы перегрева транзистора, если таковой произойдет
- установка радиатора от TMC2100, они хорошо подходят по размеру
- использование активного охлаждения, которое все равно нужно делать для драйверов шаговых двигателей
- замена более дорогой вариант IRLR7843PBF (цена почти вдвое выше, сопротивление почти вдвое ниже)

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

Соответственно, у меня пока нет ответа на вопрос 'какую проблему решит замена буферных элементов на драйвера полевых транзисторов'?
Без ответа на этот вопрос мне кажется нецелесообразным ставить элементы, существенно повышающие конечную стоимость.

jmz
22.03.2019 в 13:09
0

Буферный элемент можно вполне заменить двумя транзисторами плюс пару резисторов, а питание для управления полевого транзистора взять с того же источника что и питает стол и экструдер.

22.03.2019 в 13:38
0

Нельзя. Максимально допустимое напряжение на затворе - 20 вольт, а питание бывает 24 вольта.
И опять же - 'какую проблему решит замена буферных элементов на пару транзисторов и пару резисторов'?

jmz
22.03.2019 в 14:25
0

Скорость открытия и закрытия, неплохая нагрузочная характеристика драйвера.
Из недостатков несколько больше габариты так как для мощных полевых используют sot89 и пары типа 2SD882 2SB772, но вы можете попробовать и sot23 и менее мощные транзисторы. Если используются 24 в можно предусмотреть мелкий модуль на 28в dc-dc down от узкоглазых, главное не перепутать его с 23в который в 2-3 раза дешевле ;).

22.03.2019 в 14:41
0

Скорость открытия и закрытия, неплохая нагрузочная характеристика драйвера.
Частота ШИМ для нагревателей - единицы герц. Как уже писал выше, 1.5-2 ампера тока на затвор не нужны.

20.03.2019 в 23:39
0

Интересная платка получилась
года назад взял бы себе, а так уже трудится DUE+RAMPS 1.5   (1.6 plus опять же тогда еще не было)  прошивка repetier

кардинальных преимуществ нет и смысла менять соответственно нет

PS
если будет доработка ревизии как вариант предусмотреть возможность подключения PT 100 с усилителем (дополнительный пин питания усилителя соответственно в клеммнике термодатчика)

в первой статье по проекту было написано что на МК не осталось свободных ног, а судя по разводке и схеме - их еще ОГОго - вывести на клеммник кому что нужно нестандартное - внешней платой

21.03.2019 в 11:10
0

их еще ОГОго
К сожалению, это только видимость. Кроме nRST на нижней гребенке нет уникальных контактов - то же самое есть на правой или левой гребенке.
Совсем свободных ного у микроконтроллера не осталось, но есть несколько 'несвободных': 2 ноги светодиодов, 3 ноги встроенных кнопок , 4 ноги SPI флеша, 2 ноги SWD и PB2/BOOT1.
При этом одна нога SPI флеша на гребенки не выведена, а вторая используется при отладке для SWO.
От SWD и SWO отказываться мне не хотелось бы, а на остальные есть планы вывести на какой-нибудь разьем, но как (и можно ли) это сделать я пока еще не смотрел.

По поводу усилителя PT100
Не подскажите, в каком диапазоне у него меняется выходной сигнал - что он выдает при отключенном датчике и что - при коротком замыкании? И может ли он работать от 3.3 вольт?

jmz
21.03.2019 в 11:37
0

Себе такое еще не ставит

сейчас бусинка и уже купил термисторы до 350 гр

- это да самые ходовые варианты

термопара хорошо но реально имеет смысл использовать при температурах свыше 400 и к ним или не дешевые предусилители или SPI сто не так интересно для непрерывных измерений как мне кажется

а PT100 - относительно свежий вариант с подачи E3d есть предусилитель https://wiki.e3d-online.com/File:PT100_Schematic_(v1).png
недорогой и подключаемый на обычный вход ADC. технические подробности думаю лучше читать по ссылке. сам повторюсь еще не покупал и не пробовал

jmz
22.03.2019 в 13:15
0

pt100 это платиновый терморезистор у которого при 0 градусов 100ом и например при 100 градусах 138,51ом и т.д.

22.03.2019 в 13:44
0

Я знаю, что такое PT100 и почему без усилителя предпочтительнее использовать PT1000.
Вопрос был про выходной сигнал (в вольтах) с усилителя, т.к. АЦП STM32 работает в диапазоне 0-3 вольта.

jmz
22.03.2019 в 14:43
0

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

22.03.2019 в 14:58
0

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

21.03.2019 в 09:17
0

По даташиту у данного буффера(SN74LVC1G125) минимальный входной Hi-сигнал = VCC*0,7 =5*0,7=3,5V // А у stm32 выходная логика 3,3V , поэтому использовать его бессмысленно) Обычного транзистор справился бы лучше чем он)

21.03.2019 в 11:38
0

Буферный элемент используется SN74AHC1G125DBVR, не SN74LVC1G125. Они похожи, но не идентичны.

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

jmz
21.03.2019 в 13:33
0

Ну да, после буффера решил просто пролистать, прошу пардон) 
А в целом, если уж и делать так, то лучше использовать триггер SN74LVC1G17DCKR  3,9 рублей за штуку

21.03.2019 в 12:06
0

Если проектировать правильную плату, то я бы на вашем месте добавил spi & uart на драйвера через перемычки, как это сделано например в BIGTREETECH SKR V1.3.

21.03.2019 в 19:54
0

Я управление транзисторами сделал через оптопары. Перемычками устанавливается напряжение управления, 5В или 12В. Можно управлять внешним реле.

22.03.2019 в 09:09
0

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

22.03.2019 в 14:06
0

За ширину дорожек спасибо.

Четыре слоя - это совсем другой ценовой диапазон, шилд делать в 4 слоя получается дорого и довольно бестолково из-за геометрических ограничений, налагаемых гребенками контактов.

А в чем подтягивающий резистор провинился?

jmz
22.03.2019 в 15:40
0

Когда юсб хочу программно отключить, то комп не находит устройство и ругается. В процике резистор уже вмонтирован. И удобно программно отключить юсб с помошью встроенной подтяжки. Да можно то ведь и хостом прикидываться через этот разьем. А так платка зачетная. Много чего полезного на ней есть. Я обычно на ней спи флеш выкидываю и надуваю на 256мбит. Можно много графики заливать.

jmz
27.03.2019 в 15:51
0

ограничений, налагаемых гребенками контактов.
так есть smd гребенки ;)

29.03.2019 в 07:45
0

Халк сильный, smd гребенки не переживут снятия шилда.

27.03.2019 в 15:50
0

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

29.03.2019 в 07:49
0

.

31.03.2019 в 23:45
0

а почему такая распиновка у STM? исторически сложилась, или?
вбил в куб первый разъем....

01.04.2019 в 07:02
0

Геометрически так схожилось, в порядке убывания приоритетов.
Сначала 12-ти вольтовая часть, за ней термодатчики (АЦП), нагреватели и вентиляторы (ШИМ), SPI, SDIO, а потом все, что осталось.

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

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

Моя первая законченная миниатюра :)

Центрифуга(миксер) для паяльной пасты

Анонс тизер трейлера 2

Промышленные 3D принтеры большого формата печати

Angelina Jolie as Lara Croft прототип.

Сила прижима магнитов (тяги и подшипники в дельта принтере).