uReflow - микро паяльная станция для СМД монтажа

Уже давно назрел вопрос о том, чтобы ускорить пайку мелких смд компонентов.
Иметь печку я не могу по причине отсутствия места, да и как позже выяснилось, с микро печкой оказалось еще и удобней.
Размер устройства всего 13см.
Размер нагревателя 4х4см. Это не много, но для всех моих проектов этого достаточно (не получается у меня делать большие платы с смд компонентами). 😎

Сердце станции - Ардуина Нано и управление температурой при помощи PID:

В качестве дисплея выбран маленький OLED 128x32 пикселей.
Управление устройством при помощи энкодера.
И сама плата, куда всё это собирается разработана в KiCad и можно заказать на OSHPark (3 штуки всего за $7).

Питается приборчик от БП на 12В. По току желательно 4А. Хотя у меня был блок на 1А и тянул (с просадкой конечно). Сейчас на 3А и тоже норм вытягивает. Сижу-пишу и подумал, а чего это я до сих пор не померил, сколько там реально плитка потребляет… 😃

В основном, плитка рассчитана для пайки одной стороны (компонентами вверх). Хотя я и паял двухсторонние. Сначала надо запаять одну сторону. Затем нанести пасту и компоненты на другую и поставить на печку на небольшие проставки, чтобы нижние компоненты не касались плитки. И снова жарить, но поднять температуру градусов на 20. Можно помогать феном. Или если есть паста с разной температурой плавления, то первую сторону делаем с более высокой температурой плавления, а вторую с низкой (но печка должна давать слегка больше тепла, чем предназначено для пасты (ведь плата у нас т.с. в воздухе висит).

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

Наверно самый ответственный момент в этой печке - размещение термистора.
Самым удачным решением оказалось засунуть его под нагреватель.
То есть, я взял простой коричневый упаковочный картон - 2-3 слоя и обернул его фольгой. По краям обмотал каптон скотчем, чтобы не топорщился.
Затем положил хлопковый (или какой он там) утеплитель от экструдера 3Д принтера.
На утеплитель положил термистор и затем плитку. Всё это прижал согнутыми буквой Г кусочками железного прутка (по-моему его диаметр 1.2мм). Он плотно входит в МДФ основу и плотно прижимает плитку к термистору.

Термистор тоже взял от 3Д принтера (написано, что до 300гр он выдерживает, а нам больше и не надо).

В прошивке предусмотрены два режима - ручной и автоматический.
В ручном режиме просто поддерживается заданная температура. Её можно заранее задать в настройках и записать в постоянную память, а можно менять прямо на ходу.
Автоматический режим поддерживает стандартный профиль пайки.

Время и температура настраиваются и хранятся в постоянной памяти, или можно их корректировать на ходу.

Больше информации можно найти на GitHub.

  • 4295
Comments
Andrew1978

Так и не понял что за нагреватель…

banggood.com/XD-JR80-12V24W-24V24W-12V48W-Ceramic-…

nppc

Да, он. 12в, 48вт

Vitaly

Сильно удобнее фена?

nppc

Для выпайки определенных компонентов с большой платы, фен вне конкуренции.
Но для пайки мелких smd плат, лучше этой печки я для себя не нашёл.
Удобство в том, что когда руками наносишь паяльную пасту, то она не лежит равномерно, и при запекании, компоненты иногда перекашиваются. Вот как раз в этом случае эта печка незаменима. Можно зубочисткой поправить перекошенные элементы. Феном не так удобно, так как рука занята, да и сдувает иногда компоненты. А в большую закрытую печку вообще не залезть. 😃

Vitaly

Понял, спасибо за науку 😃. А вы какие типоразмеры запаиваете? 0805 или мельче?

nppc

В основном 0402 и всякие dfn подобные.

alezalez

Доброго дня. Понравился Ваш проект, но хочу помощнее собрать, примерно на таком: (не реклама) ru.aliexpress.com/item/…/32789703758.html?src=crit… Вы использовали К-датчик от 3д принтера, в керамический нагреватель по ссылке уже встроен похожий датчик. В связи с этим вопрос: корректно ли будет работать этот датчик, или нужно будет дополнительно настраивать? Управлять включением керамики буду стандартным способом, опторазвязка+симистр, т.е. это не вопрос.
С уважением, Александр

Vitaly

Откуда вы взяли про К-датчик? Буквами обозначают термопары. А в описании написано 100K NTC 3950 - обычный терморезистор. Нет, воткнуть одно вместо другого нельзя.

Кстати, Павел, а не будет удобнее использовать PT100 и подобное? В отличие от терморезистора, у этого линейная характеристика и по идее не должно быть разброса характеристик.

alezalez

Упс, таки не заметил, что там ntc…

nppc

У меня PT1000 стоит в шкафу для запекания карбона. Но PT100 и подобные, если не изменяет память, не имеют достаточного диапазона измерения. Тут надо хотя бы до 250гр. Вечером проверю, какой там у них диапазон…

alezalez

У термистора 100K NTC 3950 макс диапазон по ДШ -55…+125 градусов. У РТ1000 -60… +200 (но реально работает и до +350)

Vitaly
nppc;bt158521

Но PT100 и подобные, если не изменяет память, не имеют достаточного диапазона измерения. Тут надо хотя бы до 250гр. Вечером проверю, какой там у них диапазон…

RTD нормальные продавцы на али предлагают нескольких классов (точности?), есть до 100 градусов, есть до 400. Сейчас в принтерах пытаются ввести моду на них, вместо терморезисторов. Интерфейсные платы на maxim есть готовые, но в вашем случае наверное практичнее на борту развести.

Про качество ничего не скажу. Так руки и не дошли подключить. Надо либо нормальное питание с контроллера вытаскивать, либо SPI свободный, ни того ни другого нет 😃

nppc

@Александр. Те что я использовал - от 3Д принтера. Там нагрев 250-260 это обычное дело. И эти термисторы работают нормально. Продавцы их заявляют до 300гр. Я свою плитку разгонял до 280. Датчик давал адекватные показания.

@Виталий. Спасибо за наводку. Не знал про RTD датчики. Надо будет больше почитать про них.

Я использовал датчик от принтера, потому, что он был под рукой и достаточно миниатюрный. РТ1000 у меня диаметром 5мм. Куда его втыкать в моей печке… 😃

Vitaly

@npcc Мелкие PT100 действительно не в ходу, обычно около d5mm*30мм.

Вот d3mm*10мм. “Принтерные” 15мм, но их под 10 баксов задвигают, маркетинг. Вроде на али мелкие плоские тоже были.

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

nppc

Оказывается мой РТ1000 и есть RTD датчик 😃
Да я его и использую с ардуиной на прямую с резистором 3.2К в плече, в своем термошкафу.
Для повышения точности Ардуины использовал ADC oversampling.
Сейчас глянул код своего термошкафа, там я использовал таблицу. Но смотрю свежим взглядом и вижу, что она там лишняя (данные вполне линейны).
И для этой печки такой точности больше, чем за глаза.

Могу внести в код печки поддержку РТ1000 если кому нужно. Но тестировать мне не с чем. Покупать датчик нет смысла - у меня полно ещё NTC датчиков от принтера. 😃

alezalez

Павел, ваш контроллер просто меряет температуру и по достижении отключает, или реализована ПИД-регулирование? Просто хочу взять модуль на 400 Вт с К-датчиком, так он (модуль) достаточно инерционный, при отключении еще нагреется градусов на 10-20

nppc

Да, регулировка при помощи PID.

alezalez

Павел, доброго дня. При попытке скомпилить ругается на отсутствующий файл <PID_v1.h> и U8g2lib.h. На гитхабе в Вашем проекте их нет, можете скинуть? И еще вопрос - можно ли переделать код под К-датчик, на МАХ6675? К-датчик просто есть в керамическом нагревателе, хотелось бы его задействовать. И насколько тяжело вообще переделать индикацию под более распространенный экран OLED 128x64 0.96’’ (такой есть в наличии, а Ваш нужно заказывать и ждать месяц)?

alezalez

Сам спросил, сам ответил 😃 Библиотеки скачал стандартные, с ними все скомпилировалось. При подключении дисплея 128х64 картинка просто растягивается по вертикали, и выглядит тоже отлично. Вопрос остался по переделке кода на К-датчик с преобразователем на МАХ6675

nppc

Алексей, посмотрите у меня на гите проект фена. Там как раз К датчик заведен на максовскую микросхему. В принципе перенести код датчика с фена в печку не трудно. На днях постараюсь глянуть. Но вам тестировать 😃

nppc

Ой… Сейчас глянул, а в фене у меня MAX31855. Надо будет погуглить, что за чип у вас…

Vitaly

Не проще термопару заменить на RTD? На али можно любые размеры подобрать. Или взять первую попавшуюся и через термопасту посадить.

nppc

Мне тоже больше нравятся RTD или NTC датчики. Их можно подключать напрямую без дополнительного чипа.

Кстати я мельком глянул МАХ6675. Он очень похож на MAX31855. Там другая разрядность получаемого результата. Так что можно будет просто перенести код из фена и считывать меньше бит.

nppc

Добавил поддержу обоих МАХ-ов. Надо #define-ом указать, под какой сенсор компилировать. Пины для подключения чипа:
7 - SCK_PIN
8 - CS_PIN
9 - DO_PIN

alezalez

Павел, спасибо!

Vitaly

А на 220v подобные нагреватели реально использовать?

  • сильно ли у них греется задняя часть?
  • будут ли проблемы из-за горбатой поверхности?
  • или из-за неравномерного прогрева (если он есть)?

Вроде под датчик там есть круглая дырка в центре.

alezalez

Я как-раз на таком (только с К-датчиком) и собираю 😃 Такие нагревалки стоят в китайских ИК-станциях, и вроде даже работают 😃

Vitaly

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

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

Vitaly

Во, нашел бакелит на али, нагреватель крепить. До 300 градусов.

alezalez

Павел, доброго дня. Не могу разобраться с проблемой: 1) вхожу в режим рег-ки пидов длинным нажатием. После этого перехожу на строку “сохранить и выйти”, нажимаю на энкодер, возникает надпись “Saving…” и все - зависает проц. Только передергиванием питания или ресетом. Также зависает при длительном( 2 сек и больше) нажатии на энкодер, когда внутри меню в автом(или ручном) режиме. Код компилится нормально (компилю в последней ардуино найт), после elf. заливаю через атмел студио. Т.е. что делаю не так, не могу понять… Или, как вариант, можете мне скинуть рабочий хекс для проверки?

nppc

Проблема в ардуине. В ней кривой бутлоадер. Для этого случая у меня в прошивке есть #define SOFTRESET. разкомментируйте его и всё заработает.
Я свои ардуинки по получению сразу перешиваю на optiboot. У него эта проблема исправлена.

alezalez

О, спасибо. Я вообще бут не юзаю (знаю о кривизне), сразу прошку заливал в камень из AS. Сегодня раскоментирую и залью. Еще раз спасибо Вам, Павел!

alezalez

Павел, доброго дня. Перешел на макс6675, компилю последней едешкой, но получаю варнинг:

eeprom.ino:3:10: note: in expansion of macro ‘constrain’
warning: comparison of unsigned expression < 0 is always false [-Wtype-limits]
#define constrain(amt,low,high) ((amt)<(low)?(low)😦(amt)>(high)?(high):(amt)))

При этом код компилится, но макс ни в какую не видится. На SCK нет строба, смотрю осциллом с момента включения (т.е. на физическом выводе 11 атмеги328). Что-то можете по этому поводу подсказать?

nppc. Спасибо Вам за разработку.
Повторил данное устройство с датчиком NTC, так как данный датчик в стекле он имеет инертность и рабочею температуру до 270 градусов. Делаю для оплавления паяльно пасты (не хватает рабочей температуры, большая инертность, перебег. Использую нагреватель низа 120*60мм 500W) решил использовать термопару.
Подключил датчик МАХ6675, скетч HeaterControlV2. Arduino 1.8.5
в коде закоментировал NTC и подключил MAX6675
//#define MAX31855
#define MAX6675
//#define NTC // using Temperature table
Записалось в Ардино без ошибок, на дисплеи 0 градусов. На изменения температуры не реагирует.
Пробовал на базе этой схеме тестовый скейтч от MAX6675 library (by Adafruit версия 1,0,0) /serialthermocouple с выводом в информации на терминал (ноги переназначил), MAX6675 работает коректно.
Подскажите что я делаю не так. Спасибо.

Fox1024
;bt161874

nppc. Спасибо Вам за разработку.
Повторил данное устройство с датчиком NTC, так как данный датчик в стекле он имеет инертность и рабочею температуру до 270 градусов. Делаю для оплавления паяльно пасты (не хватает рабочей температуры, большая инертность, перебег. Использую нагреватель низа 120*60мм 500W) решил использовать термопару.
Подключил датчик МАХ6675, скетч HeaterControlV2. Arduino 1.8.5
в коде закоментировал NTC и подключил MAX6675
//#define MAX31855
#define MAX6675
//#define NTC // using Temperature table
Записалось в Ардино без ошибок, на дисплеи 0 градусов. На изменения температуры не реагирует.
Пробовал на базе этой схеме тестовый скейтч от MAX6675 library (by Adafruit версия 1,0,0) /serialthermocouple с выводом в информации на терминал (ноги переназначил), MAX6675 работает коректно.
Подскажите что я делаю не так. Спасибо.

Нужно подтянуть к + через 10к два вывода MAX6675 SCK, CS. Как на схеме в другом проекте автора github.com/nppc/…/Schematic.pdf