Паяльная станция с феном на ардуино своими руками схема

Паяльная станция с феном на ардуино своими руками схема
Паяльная станция с феном на ардуино своими руками схема Паяльная станция с феном на ардуино своими руками схема

Все началось с того, что у меня помер от старости паяльник. Паяльник этот был (не)отъемлемой частью паяльной станции неведомого китайского производителя, паял сносно и я им пользовался уже долгое время.  Словно предчувствуя его скорую кончину, я даже купил у китайцев некий клон паяльника hakko 907, в тайне надеясь, что удастся его как-нибудь приколхозить к своей паяльной станции. Только руки все не доходили, и он с пол-года валялся в столе, ожидая своего часа.

Час, как обычно, пробил самым неожиданным образом. Задача прикручивания инородного паяльника из категории "когда делать нечего" перепрыгнула в раздел "необходимо позарез". Начались поиски решений.  Простой перепайкой (старинным 40вт паяльником) разъема отделаться не удалось. Станция не признала термодатчик нового паяльника и принялась разогревать последний, похоже, до полного расплавления. Ситуация осложнилась еще тем, что в старом паяльнике выяснить тип термодатчика не представилось возможным, т.к. перегоревшие провода просто вывалилсь из нагревателя и где какой был стало уже не узнать.

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

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

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

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

К слову сказать, паяльник замечательно паяет и при более низких напряжениях, но за это приходится платить большим временем на разогрев и снижением максимально возможных температур. Это я к тому, что не всегда может оказаться под рукой 24в источник питания и в таких случая можно запитаться то ли от компьютерного БП, а то и вовсе от ноутбучного адаптера (они обычно идут на 15-20в). Я прикрутил для этих целей универсальный адаптер для ноутбуков, который умеет выдавать ряд напряжений от 12 до 24 вольт. Главное, что бы по току подходил, а ток, как я уже говорил, не менее двух амер.

Теперь немного о конструкции паяльника -- обычно в разъем приходят пять проводов: два от нагревателя, два от термодатчика и один это антистатический повод, который имеет непосредственный электрический контакт с жалом и предназначен для снятия статического электричество с паяемого устройства.  Чтобы выяснить где там нагреватель, а где термодатчик, придется прибегнуть к прозвонке. Прозвонка операция не хитрая. Если между проводами сопротивление в районе 50 ом (может быть 45 или под 60, роли не играет), то это термодатчик, а когда прибор показывает несколько ом, то это явно нагреватель. Один провод прозванивается лишь на корпус паяльника, это ранее упомянутая антистатическая линия. Ее можно впоследствии подключить на землю.

Тут бы хотелось отдельно коснуться такой темы, что не все паяльники имеют термосопротивление в качестве термодатчика. Если два провода звонятся, как 1-2 ома (еще оно может показывать разное сопротивление, если менять провода местами), то это скорее всего термопара и такой паяльник для нашего случая не подходит. До недавних пор паяльники с таким типом термодатчика преобладали, но после того, как китайцы научились сносно клонировать hakko, покупать паяльник с термопарой совсем ни к чему. Цены опустились на тот уровень, что весьма сносный паяльник можно купить совсем не за дорого:

Собственно, такой паяльник я и использовал. Цветовая маркировка проводов в моем случае оказалась таковой: красный и белый это термодатчик, синий и черный -- нагреватель, зеленый -- антистатик. Скорее всего она стандартна -- китайцы становятся страшно педантичными и копируют предельно внимательно. :)

С проводами у меня вышел забавный курьез. После того, как я в очередной раз пределал схему на макетке, паяльник перестал давайть нужный разогрев. Греться стал долго и сколько ни накручивай мощность, хватает только чтобы едва-едва плавить припой. Проверил напряжения, схему, управление -- все на месте. Ну не греет и все тут. Наваждение. Только все необъяснимые чудеса имеют обыкновенно самое незатейливое объяснение, что подтвердилось и на этот раз -- я перепутал местами подключение датчика и нагревателя. Выяснилось, что датчик без ущерба для собственного здоровья может подрабатывать еще и нагревателем, если это очень сильно потребуется. :) Сгореть ему мешает высокое собственное сопротивление,  ровно это же обстоятельство заодно портит ему карьеру в качестве нагревателя. :)

Разъем на паяльнике чем-то напоминает т.н. микрофонный (широко применялся в аппаратуре советских времен), но с ним не совместим. Разъем разборный и был снят до лучших времен, т.к. ответной части у меня все равно нет. Китайские паяльные станции широко используют стандартный PS/2, т.ч. я тоже посматриваю в эту сторону. Найти не проблема, т.к. старых материнских плат и клавиатур много где есть. :)

Переходим от паяльника к схеме. Вот иллюстрация в исполнении Fritzing:

Три сопротивления, четыре конденсатора, один мосфет (N-канальный, лучше вольт на 50, с управлением от логических уровней),  один стабилизатор на 5 вольт (7805 в данном случае), одно переменное сопротивление, два разъема и собственно ардуино -- вот и вся схема. Единственное, что стоит отметить отдельно, стабилизатор нуждается в радиаторе, т.к. разницу между 24 и 5 вольтами он будет сбрасывать в тепло и тепла этого может оказаться достаточно, чтобы нагреть его до температуры разрушения кристалла.

Номиналы резисторов соответствуют цветовой маркировке -- 47 ом, 10 килоом и 220 ом. Переменник любой с сопротивлением от 1 килоома до 100 килоом. Конденсаторы в форме синих квадратиков имеют емкость 100нф, бочки-электролиты на 100мкф. Левый электролит на напряжение не ниже 25вольт, а лучше больше, правый не меньше, чем на 6.3в рабочего напряжения. В случае острого затруднения, конденсаторы (все) можно не ставить вообще. Они в схеме для улучшения параметров. Будет работать и без них с небольшим ухудшением фунционала.

Оранжевые провода -- линии 24в, красные -- 5в, черные земля. Желтый провод -- управление затвором мосфета, синие к термодатчику, зеленый снимает показания с переменного резистора. Разъем слева для подключения паяльника. Собственно, разъем можно и не ставить, если подключить термодатчик паяльника к синему и черному проводу, а нагреватель к оранжевому и серому.

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

Будем считать, что схема есть и она собрана правильно. Теперь немного о том, как это все будет управляться. Выше я уже писал, что задача управления сводится к тому, что нужно в определенные моменты подключать паяльник к 24 вольтам, а при достижении нужной температуры отключать. Единственным способом следить за температурой возможно на основании данных измерения сопротивления терморезистора. Для этого терморезистор совместно с сопротивлением 220 ом включается по схеме резистивного делителя и аналоговым входом ардуины измеряется напряжение в средней точке. Зная напряжение на входе и выходе резистивного делителя, а также номинал верхнего сопротивления (у нас он 220 ом) легко высчитать сопротивление терморезистора по формуле Rt=220/(5/Uизм - 1). Для моего случая сопротивление на холодном паяльнике 52 ома, точка плавления олова 87 ом, раскаленный до 480 градусов паяльник 170 ом.

Я сначала в алгоритме старательно пересчитывал данные с АЦП в температуру, но потом узрел (зоркий глаз, блин) очевидное, что это вобщем-то делать и незачем. Можно сразу отталкиваться от отсчетов АЦП. Если analogRead() возвращает что-то ниже величины 285, то паяльник припой плавить не будет, а если значение приближается к 440, то паяльник скоро сгорит. :) В стандартной библиотеке ардуины есть замечательная функция map, которая отображает значение в одном диапазоне на пропорциональное ему в другом. Чтобы с отсчетов АЦП сразу получать температуру оказалось достаточным один раз вызывать функцию map в следующем виде: map(analogRead(pinNo), 285, 440, 180, 480). Все это справедливо для моих условий, где величины были получены экспериментальным путем, и если кто-то возмется повторять конструкцию, то значения диапазонов могут получиться близкими, но немного другими.

Данные о положении потенциометра, которые точно так же получаются через analogRead(), разумно тем же образом через функцию map вписать в температуры паяльника и нулевой точкой выбрать именно температуру плавления олова. Ноль отсчетов с потенциометра приводим к величине 285 (олово начинает плавиться), а крайне правое положение, соответствующее 1023 отсчетам, отображаем на 440 (паяльник собирается сгореть). Все, что между этими точками будет отображаться пропорционально: map(analogRead(pinNo), 0, 1023, 285, 440). Теперь весь рабочий диапазон паяльника равномерно распределен по дуге потенциометра. Можно даже индикацией температуры не заморачиваться, ориентируясь исключительно по шкале переменника.

Несколько строк о погрешностях. При вышеописанном способе, шаг регулировки равняется примерно двум градусам. Градусы эти довольно абстрактные. Дело в том, что температура паяльника очень сильно отличается в разных точках (и в разные моменты) этого самого паяльника. На кончике жала она одна, в середине жала другая, ближе к корпусу она третья, а нагреватель имеет свою собственную температуру, которая от температуры жала может быть так далека, что вроде и не подумаешь. Совсем развеселая картина начинается при пайке массивных элементов, когда температура одного лишь жала может различаться в разных точках на сотню градусов. Добавить сюда инертность разогрева, когда нагреватель уже отключился по достижению нужной температуры, а тепло до жала еще и не дошло. На какую температуру ориентироваться? А ни на какую. Путем измерений было получено, что при сопротивлении терморезистора 87 ом олово на какой-то части жала плавится, вот это и будет некой виртуальной температурой пайки, своего рода условной реперной точкой. Строго говоря, можно лишь приблизительно ориентироваться, что температура, скажем, в районе 250 градусов где-то неподалеку от области пайки.  Точнее для наших условий никак. При таком положении дел, измерение разниц в миллиомы и регулировки в доли градусов лишаются всякого смысла, чтобы на это тратить силы. Признаемся, что погрешности неприлично велики, но работать, тем не менее, можно.

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

Почистил исходники, снабдил комментариями на ломаном английском. Програмист я на уровне любителя, т.ч. слабонервным профессионалам советую запастись валидолом. :) На всякий случай оставил в коде вычисления по сопротивлению терморезистора для отладочных и калибровочных действий.

/ Simlple soldering station prototype. v0.01a September, 14, 2013 by a5021. / // Pinout const int heaterSensorPin = A0; // pin that the soldering iron's thermistor is attached to const int potSensorPin = A1; // pin that the potentiometer is attached to const int mosfetPin = 10; // pin that the gate of MOSFET is attached to const double Vref = 5.00; // Reference ADC voltage const double dV = Vref / 1024; // Volts per measure unit const double R1 = 220.00; // Upper voltage divider's resistor // variables: int tempRead = 0; // Measured temperature. int tempSet = 0; // Required temperature. int i = 0; // loop count void setup() { // make some light to show it is alive pinMode(13, OUTPUT); digitalWrite(13, HIGH); pinMode(mosfetPin, OUTPUT); digitalWrite(mosfetPin, LOW); // serial output init Serial.begin(115200); } void loop() { // read cuurent temperature sensor tempRead = getOversampled(heaterSensorPin); // convert to voltage double heaterSensorVoltage = (double) tempRead dV; // calculate value of lower resistor in resistive voltage divider // R2 = R1 / (Uin / Uout - 1) // double heaterSensorResistance = R1 / (Vref / heaterSensorVoltage - 1.00); // read curent pot value and map it // to soldering temp range 180°C - 480°C tempSet = map(getOversampled(potSensorPin), 0, 1023, 285, 440); if (++i == 100) { // print debug info every 100th loop i = 0; Serial.print("Heater: "); Serial.print(tempRead); Serial.print(", "); Serial.print(heaterSensorVoltage, 4); Serial.print(";, "); Serial.print(heaterSensorResistance, 4); if (tempRead >= 285) { Serial.print(", t="); Serial.print(map(tempRead, 285, 440, 180, 480)); Serial.print("°C"); } else { Serial.print(", Temperature below 180°C"); } Serial.print(". Pot: "); Serial.print(tempSet); Serial.println("."); } if (tempSet > tempRead) { // main regulation point: if temperature value that set by pot is higher than // the temperature read from the soldering iron sensor digitalWrite(mosfetPin, HIGH); // start heating digitalWrite(13, HIGH); // toggle LED on } else { // in case the soldering iron is hot enough digitalWrite(mosfetPin, LOW); // stop heating digitalWrite(13, LOW); // turn LED off } } // Oversampling and averaging data from sensor. int getOversampled(int sensorPin) { unsigned long int res = 0; for (int i = 0; i < 64; i++) res += analogRead(sensorPin); return res >> 6; // divide result by 64. }

Конструкция испытывалась больше недели в тех или иных модификациях и особых проблем не выявлено. Ардуина у меня Mega 2560 r3 и честно говоря не исключено, что на других ардуинах может повылазить какая-нибудь несовместимость. Впрочем, это лишь несовместимость, но не дефект самой идеи. Всегда подправить можно.

В  рекомендациях по деталям я указал мосфет на 50в, но у самого такого не оказалось. Существует распространенное мнение, что мосфет должен иметь полуторакратный запас по коммутируемому напряжению, но пока и тридцативольтовый у меня держится. Это семиамперный IRF7201 в корпусе SO8. Ничего похожего на разогрев не наблюдается, хотя производитель даже не позиционирует этот прибор, как logic level. Ни в коем случае этот мой личный опыт не советую воспринимать, как руководство к действию. Риск спалить ардуину возрастает многкратно. Я скорее привожу эти данные, как некое подтверждение устойчивости конструкции.

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

Паяльная станция с феном на ардуино своими руками схема Паяльная станция с феном на ардуино своими руками схема Паяльная станция с феном на ардуино своими руками схема Паяльная станция с феном на ардуино своими руками схема Паяльная станция с феном на ардуино своими руками схема Паяльная станция с феном на ардуино своими руками схема Паяльная станция с феном на ардуино своими руками схема Паяльная станция с феном на ардуино своими руками схема Паяльная станция с феном на ардуино своими руками схема