Недавно, в первоапрельском обзоре
ништяков из хлама, кто-то заинтересовался системой управления печкой для пайки SMD компонентов. Самоделка далеко не новая, но в ней есть ряд оригинальных решений, которые кому-то могут быть полезны. Время у пенсионера есть, опять же впереди у нас вечность — почему бы не сделать для хороших людей что-то полезное?
Базой послужила лидловская мини-духовка, доставшаяся мне за 5 евро на местной интернет-барахолке. Хотелось бы всю электронику разместить внутри, но размеры не позволили.
На Али приобрел
дисплей на базе SPFD5408
У таких дисплеев обычно есть резистивный touch screen, но работает он с ардуино отвратительно. Немного поигравшись, плюнул на него и поставил обычный энкодер — дешево, сердито и надежно.
Тут первая полезная идея — когда у ардуины ног не хватает — для энкодера можно использовать единственный аналоговый вход.
Ресурсов такой ввод практически не отнимает, если все сделать в прерывании:
Дополнительная информация
#include "scmRTOS.h"
#include "processes.h"
#include "Arduino.h"
#include "encoder.h"
void encoder_init(void)
{
ADCSRA = 0xAF; // Enable ADC, interrupt, auto trigger, clock clk/12
ADCSRB = 0x05; // Timer/Counter1 compare match B
ADMUX = 0x47; // A& input, Vref=Vcc
// Set up TIMER 1 - ADC sampler
TCNT1=0;
OCR1B = 32000;
ICR1 = 64000;
TCCR1A = 0x00;
TCCR1B = 0x19;
}
ISR(ADC_vect)
{
static bool encoder_A_prev;
static bool encoder_switch_prev;
bool encoder_A = false;
bool encoder_B = false;
bool encoder_switch = false;
uint16_t ADC_value;
uint8_t EncMsg;
TIFR1 = 1<<OCF1B;
ADC_value = ADC;
if (ADC_value<100) encoder_switch = true;
else
{
if (ADC_value<470)
{
// both
encoder_A = true;
encoder_B = true;
}
else
{
if (ADC_value<615) encoder_A = true; // pin A
else
{
if (ADC_value<815) encoder_B = true; // pin B
}
}
}
if(encoder_switch)
{
if(!encoder_switch_prev)
{
OS::TISRW ISR;
EncMsg=0; // switch
EncoderMsg = EncMsg;
EncoderMsg.send_isr();
}
}
else
{
if(!encoder_A && encoder_A_prev)
{ // positive ->0
OS::TISRW ISR;
if(encoder_B) EncMsg=1; // CW
else EncMsg=2; //CCW
EncoderMsg = EncMsg;
EncoderMsg.send_isr();
}
encoder_A_prev = encoder_A;
}
encoder_switch_prev = encoder_switch;
}
Если кто-то не поленился открыть код — он увидел еще одну идею, реализованную в этой печке — в ардуино используется многозадачная операционная система.
Это моя любимая система, которую я ставлю куда можно и куда нельзя — scmRTOS. Система в исходниках лежит
здесь
Занимает она меньше килобайта и я не вижу причин не использовать ее где только можно. Где нельзя, впрочем, тоже.
Документация на великом могучем
здесь, операционку писали уже давно наши люди, авторов всегда можно найти
здесь.
Как смог, адаптировал эту систему для ардуино.
В качестве датчика используется термопара, примотанная к сетке внутри печки
синей изолентой термостойким каптоновым скотчем.
Еще одно неплохое решение использовано для генерации прерываний при переходе фазы сетевого напряжения через ноль. Файлов симуляции найти не смог, хотя они где-то были.
Система управления собрана на двух платах — силовая и управление. Силовая была заказана в Китае (просто одну и ту же плату я использовал для нескольких разных устройств), управление сделано на макетке.
Коробочка, как обычно, напечатана на 3D принтере.
К сожалению, когда делал — ничего не сфотографировал. А сейчас разбирать не хочется: если что-то работает — не трогай.
Размер EEPROM AVR позволяет сохранить несколько профилей пайки.
Печка не нагревается быстро, поэтому тепловые профиля пайки, как правило, не соответствуют рекомендуемым — но тем не менее у меня до сих пор с ней проблем не было. Время от времени печку берут попользоваться знакомые — тоже никто не жаловался. А попробуй пожалуйся — в другой раз ведь не дам :)
Трафареты для нанесения пасты делаю из майлара с помощью CO2 лазера — но большой мощности не требуется, думаю что и полупроводникового лазера должно хватить.
Когда плата небольшая или лень делать трафарет — пасту можно нанести экструдером.
В итоге получается примерно так
Котя проверяет качество пайки
Буду рад, если кто-то найдет что-нибудь полезное для себя.
Один галогеновый прожектор и всё то же самое — и процесс будет занимать менее 2 минут.
Пайка, если честно, не очень:
Гугл сообщает что:
Если не секрет, чем именно это лично у Вас обусловлено?
(Любопытствую, замечая что в свои 56 и при весьма неплохой общей спортивной кондиции руки при пайке имеют тенденцию трястись в разы интенсивнее, чем бывало по молодости).
P.S. Мы с вами одного возраста.
Благо что длится это недолго.
На у возрастная дальнозоркость (пресбиопия) легко обходится пайкой в очках нужных диоптрий.
С молодости хожу в очках и в них зрение единица. При пайке очки нужно снимать и кроме того брать линзу.
Бегать в темноте с фонариком: зрение привыкает фокусироваться на небольшой дистанции.
ЗЫ Шутка :) У меня от такого голова болеть начинает, но есть люди, которым норм.
ЗЗЫ сам бегаю 3-7км 2-3 раза в течение рабочей недели и 8-12 (редко больше) по субботам, темп примерно ваш.
P.S. Термопрофили — они придумываются вовсе не потому, что производители не знакомы с номенклатурой прожекторов…
А вот мощность нагрева мала, поэтому долго выходит на режим, отсюда и несоответствие термопрофилю. Тут бы ТЭНов еще добавить…
Оказывается есть рекомендации производителя по температурному профилю пайки. Так чтобы компонент хорошо припаялся но при этом минимальный риск перегрева. Твой же совет из разряда «По рецепту нужно запекать курицу полтора часа при 180 градусах, но это очень долго. Давай вместо этого запекать 20 минут при 600 градусах».
На свинцовых — велик риск получить «холодную пайку» крупных SMD-элементов.
Суть предварительного подогрева — перевести паяльную пасту в текучее состояние, чтобы она хорошо смочила контактные площадки и выводы. Затем, в «горячей» фазе пайки, высокая температура расплавляет уже само олово, которое быстро растекается по смоченным поверхностям, обеспечивая электрический контакт. Дальнейшее медленное остывание предотвращает вскипание жидкой фракции пасты и образование в пайке микропузырьков воздуха (т.е. площадь электрического контакта вывода с площадкой уменьшится).
Убираем предварительный подогрев — и в горячей фазе расплавленное олово «зависает» в слое канифоли. Если к этому добавить еще и быстрое остывание — то канифоль из паяльной пасты вскипит и не даст олову создать надежную электрическую цепь между выводом и площадкой платы.
Свинцовые припои значительно более текучи, поэтому с ними гораздо проще — но крупные SMD элементы сами по себе неплохой теплоотвод, и не факт что их выводы успеют достаточно нагреться за время «горячей» фазы.
Пруфов не подскажу, я уже больше 10 лет к производству отношения не имею :)
Даже если принять 2 минуты буквально, то есть и другие компоненты с другими профилями.
Речь была о том, что в случае конструкции с мощной галогенкой и отражателями и контроллером можно добиться быстрого и точного нагрева (по профилю, по профилю), чего нельзя сделать в духовке с тенами.
Ну а в серийном производстве плату просто протаскивают через конвеерную печь с многозонным нагревом (в каждой зоне — своя температура)
У меня в нижнем подогревателе плат тоже стоят на вид галогенки, только там нити накала гораздо длиньше и при нагреве едва светятся красным.
И греть они должны не саму плату, а конвекционную пластину (в теории композитную, у китайцев не удивит и просто металл). И уже пластина передает тепло паяемой плате.
mySKU.me/blog/diy/85449.html#comment3818897
Утащил.
Про печку — лучше галогенку с отражателем — и быстрее будет и качество лучше, и светить можно только на определенное место.
Я пробовал по двум слоям каптонового скотча, минимальная ширина реза около 0.5 мм получалась и то, через два слоя криво, только по одному слою красиво было.
В промышленных печках на выходе стоят мощные вентиляторы холодного воздуха.
С какой целью?
Реальный примерно как и запланированный, остывание затянуто даже при открытой дверце.
у вас есть *.ino файл и потом еще main.cpp с одинаковым кодом? зачем дубляж?
в процессе 01 у вас закоментирован Ардуино стиль объявление/инициализация SPI (сточка 59) и используется прямой способ через регистры. почему так?
спрашиваю, тк интересно попробовать scmRTOS с Ардуино. вы так же писали что допиливали scmRTOS, что конкретно и зачем? не компилировалось Ардуино? в заранее спасибо.
Скорее всего, что-то быстро потестировать надо было, а потом убрал. Регистры предпочитаю — по крайней мере все предсказуемо.
Там допилок — несколько строк в одном файле, поищите «arduino» в комментариях.
А зачем — наверно, так полагается :) Я его допиливал и для stm32duino для stm32f1 и stm32f4, и для platformio без arduino.
Есть ещё вопрос по управлению динистором. Как я понял вы в своём коде ищите переход через ноль, потом запускаете таймер равный одному полупереуду сети и открываете динистор на весь таймер или его часть. Не проще было бы тупо открывать/закрывать динистор с началом нуля и регулировать мощность путем пропуска полупереудов. Я щас переделываю под себя hot air gun reflow station и там как раз именно второй подход. Увидел ваш и теперь не знаю.
Вы случайно фен не писали smcRTOS?
Но фазовая регулировка быстрее и при нормальной реализации, лучше.
Фен у меня лет десять назад купленный, вполне устраивает — так что не писал.
последний вопрос. посмотрел примеры для smcRTOS для AVR там используется Timer1 для RTOS. я прав или можно использовать что-то другое? дело в том что Timer1 для ATmega328P завязан на D9 и D10 и ломает «analogWrite()» на этих пинах. остальные таймеры у Arduino тоже в работе. можно ли как то наш любимый «millis()» прикрутить в качестве опорника для ticks?
И, насколько помнится, после этого delay не работал — нужно менять на sleep из smcRTOS
Для ардуины я где-то здесь еще только smcRTOS выкладывал, может даже более поздняя версия.
И вобще не очень понял, есть же PID контроллер температуры REX-C100, цена не безумная, неплохо работает, как раз заточен под грелки.
Если только хобби, слепить аналог на ардуине, тогда понятно
Регуляторы видел. Даже лежит один промышленный, но управление и информативность у него желает лучшего. Оно и понятно. Их используют по принципу один раз настроил на одну температуру и забыл на 10 лет.
И опять же, для работы просто покупается оборудование, после подсчёта экономики. Никто не ваяет на коленке то что есть готовое и не стоит безумных денег. Считается окупаемость и целесообразность, после чего выбирается вариант.
А он температурные профиля для пайки поддерживает?
А реально — это минимальная система, где есть именно необходимый минимум. Когда более-менее сложную программу пишешь — все равно делаешь что-то типа диспетчера. А зачем каждый раз писать, если есть готовый?
Кстати, здесь, например, тоже scmRTOS крутится, только между нами :)
Когда-то тоже хотел сделать печку подобную сабжевой,
но для меня она не подходит т.к. некоторое количество деталей
при обжиге смещаются и вернуть их на место лучше
пока припой находится в расплавленном состоянии.
Применил готовое китайское изделие с минимальными доработками
под свои нужды: добавлен колпак с подсветкой для вытяжки
и управление периферией(подсветка, вытяжка, отключение ТЭНа).
Вот что получилось:
Производительность относительно невысокая ~2мин. на стандартную
плату(100*100).
За раз обжигаются сразу 2 платы, но можно и 4 если проворства хватит))
Для меня в приоритете было минимизировать необходимость перепайки
убежавших деталей в процессе обжига, чем нажечь много в кривь и в кось.
Разумеется очень нужен хороший вентилятор для вытяжки.
Да, эстетическая составляющая оставляет желать лучшего)
Но пока, если честно, не вижу что еще имеет смысл переделывать.
При пайке детали должны наоборот, сами приползать на место за счет поверхностного натяжения, даже если криво установлены. Если не приползают — что то не то с разводкой.
Видимо, фирма совсем дешевка.
Объясните там непонятливым (плиз): mySKU.me/blog/misc/85223.html#comment3820876
С другой стороны, в кармане у каждого телефоны, набитые в том числе их микросхемами. Выкинуть их в знак протеста?
По личным причинам, я стараюсь не использовать в своих последних разработках изделия TI. Но не всегда получается. Иногда найти замену сложно.
Капать клей, это дополнительная операция и расходы времени и средств.
Не очень рентабельно получится
Долго, трудоёмко и не красиво.
Заказать платы у нас можно, но для мелкой серии вместо заработка придётся приплачивать)
Утомлять подробностями не буду, но у нас монтаж дороговат пока.
В Китае наверняка делать дешевле, но заработать на кусочек хлебушка хотелось бы самому, а не отдавать все китайцам.
Феном греть платы 100*100мм будет совсем тяжело, да и у меня же сделана вытяжка что бы дымом не дышать.
Ещё понятно макеты, какой то эксклюзив, но производство совсем неинтересная тема в плане денег
Но на платах иногда детали все равно уползают.
Возможно, что дело в низкотемпературной пасте, которую я использую в последнее время. Температура ее плавления от 138°С, а это гораздо ниже, чем температура плавления привоя которым залужены вывода SMD-компонентов.
Жаль нет возможность попробовать обычную пасту и печку вроде вашей.
Возможно получится быстрее.
Хотя, тратить на процедуру обжига не час, а половину, не большая получится экономия времени.
Я брал вот эту вот.
Вполне нормальная паста.
Ссылка№1
Ссылка№2.
Так должно работать.
была предыдущая печка полностью самодельная, собранная из подручных средств и по своему разумения.
ТЭН от внутрянки теплоизолировать достаточно хорошо не получилось в результате чего корпус прогревался градусов до 50-60.
При таком нагреве пластиковые кнопки себя не очень хорошо чувствовали)
Уменьшение температуры — затрудняло и затягивало процесс обжига.
С новой печкой обычная паста спекалась нормально, но низкотемпературная не требует такого нагрева ТЭНа, что логично.
В обоих случаях за деталями нужен присмотр и требуется корректировка.
Хотя… всей этой эпопее предшествовала пробная печка с транспортной лентой. Там вообще получался полуавтоматический режим обжига. Но возникшие затруднения решить не получилась и она отправилась на шкаф)
На самом деле можно легко скрестить с обозреваемым.
Почти
Если энкодер будет шевелиться около точки изменения канала А (дребезг по каналу А, канал B не меняется), код будет воспринимать это как вращение в одну сторону. Так как обрабатывается только переход из 1 в 0. Обратный переход игнорируется, а он может быть следствием дребезга контакта. И тогда следующий переход 1 в 0 будет воспринят как ещё один шаг, а по факту его не было.
А на STM таймер аппаратно энкодер обрабатывает — вообще задумываться особо не о чем.
Да, и трафарет обязательно нужно растром резать — по периметру не получается. Края сильно оплавляются.
Еще бы трафаретный принтер — руками очень тяжело ровно положить и потом ровно снять, ничего не размазав.
Mylar это бренд DuPont, под которым они продают плёнки из полиэтилентерефталата, он же лавсан
Ссылка появилась — утюг, оказывается. У какого утюга такой большой и плоский нагреватель?
Автор, твое изделие, в таком виде, опасно. А «выстрелит» оно или нет, дело случая.