Всем привет! Как-то я затронул тему паяльной станции на Arduino и сразу меня завалили вопросами (как/где/когда). Учитывая массовость запросов, я решил написать обзор простой паяльной станции (только паяльник) на базе Arduino. Почему Arduino? Ведь существует уйма контроллеров быстрее и дешевле. В таких случаях я обычно отвечаю: — Дёшево, практично, быстро. Действительно, ведь Arduino Pro Mini сейчас стоит 1,63$ за 1 шт (недавно прислали), а atmega8 стоит 1$ (оптовая цена). Получается, что плата Pro Mini с обвесом (кварц, конденсаторы, стабилизаторы) стоит не так-то и дорого, плюс ко всему экономит время. Также время очень сильно экономит IDE-оболочка для Arduino, легко и быстро в ней справляется даже школьник. Учитывая популярность и дешевизну я решил собрать именно на Arduino. Для создания паяльной станции нам первым делом нужна ручка паяльной станции, зачастую это китайские станции типа 907 A1322 939.
Для управления ручкой паяльника нам первым делом нужно снимать данные с датчика температуры, в этом нам поможет LM358N. Эта схема уже работает у меня почти 2 года.
Далее нам нужно управлять(включать и выключать) нагревательный элемент паяльника, в этом на поможет импульсный транзистор IRFZ44. Его подключение очень простое:
Обратите внимание, разъём на панели станции, а не на ручке.
Очень настаиваю: проверяйте ручки перед пуском, раскрутите и проверьте целостность нагревательного элемента, а также правильность распайки проводов на разъёме.
Далее нам нужен контроллер. Для демонстрации я выбрал Arduino Uno – как самый популярный и удобный. Заметьте, что паяльную станцию я делаю блочной и это даёт возможность самому выбрать контроллер. Также нам нужны две кнопки подтянутые к +5В сопротивлениям 10кОм и 7-ми сегментный индикатор на три разряда. Выводы сегментов я подключил через сопротивления 100 Ом.ANODES:
D0 — a D1 — b D2 — c D3 — d D4 — e D5 — f D6 — g D7 — dp (точка)CATHODES:
D8 — cathode 3 D9 — cathode 2 D10 — cathode 1 Хочу также заметить, что кнопки мы сажаем на аналоговые пины 3 и 2. И в программе я их опрашиваю как аналог. Сделал я это для того, чтобы не вводить в заблуждение молодое поколение. Не каждый знает где найти пин 14, 15 и 16. А учитывая, что скорости достаточно и памяти в контроллере много, то так будет проще. Давайте посмотри что получилось:Зачем оно вам?
Реклама Никаких подозрительных скриптов, только релевантные баннеры. Не релевантные? Пиши на: [email protected] с темой «Полундра»Зачем оно вам?
Рекламаgeektimes.ru
В этой статье я хочу рассказать о своей версии паяльной станции выполненной на базе микросхемы ATmega328p, которая используется в arduino UNO. За основу был взят проект с сайта http://d-serviss.lv. В отличии от оригинала дисплей подключил по протоколу i2c: во-первых он у меня был, заказывал несколько штук на AliExpress для других проектов, во-вторых осталось больше свободных ножек МК, которые можно использовать для каких-либо других функций. Фото дисплея с переходником на протокол i2c ниже.
Температура паяльника, фена и обороты куллера регулируются энкодерами:
Включение и выключение паяльника и фена происходит нажатием на энкодер, причём после выключения в память МК сохраняются температура паяльника, фена и обороты куллера.
После выключения паяльника или фена в соответствующей строке отображаются температура, вплоть до остывания до 500С. После выключения фена, кулер охлаждает его до 500С на 10% оборотах, что делает его почти бесшумным в выключенном состоянии.
Для питания схемы на aliexpress был приобретён импульсный блок питания на 24в и 9А, как в последствии понял, слишком мощный. Стоит поискать с выходным током 2-3 А – этого более чем достаточно, он будет дешевле, да и места в корпусе будет занимать меньше.
Для питания схемы использовал DC-DC преобразователь на LM2596S, подключаем его к 24в и выставляем построечным резистором 5 вольт.
Паяльник и фен также приобрёл на aliexpress, ВАЖНО выбрать их на термопаре, а не на терморезисторе. Фен выбрал от станций 858, 858D, 878A, 878D и 878D, паяльник от станций 852D +, 853D, 878AD, 898D, 936B, 937D. Если брать на терморезисторе то схему и прошивку необходимо доработать. К паяльнику прикупил комплект из 5 жал. Паяльник попался бракованный, был перебит где-то внутри провод. Пришлось менять, хорошо подошел провод от USB удлинителя.
Так же понадобятся дополнительно разъёмы GX16-5 и GX16-8, для подключения паяльника и фена к корпусу прибора.
Теперь корпус: с проблемой выбора корпуса я провёл много времени, сначала использовал от компьютерного блока питания металлический, но в последствии отказался от него, т.к. были помехи от ИБП, из-за которых зависал МК и LCD. Пробовал экранировать БП, основную плату и дисплей. МК перестал зависать а вот дисплей так и показывал периодически непонятные иероглифы. Решил использовать корпус из пластмассы, все проблемы с помехами сразу прошли, ничего не экранировал. Корпус решил так же приобрести у китайцев. Немного погорячился с размерами и взял как оказался очень маленький (150 мм x 120 мм x 40 мм), туда я конечно всё уместил, сделал специально плату под него, но вот на лицевой панели всё оказалось слишком компактно, и регулировать особенно фен не очень удобно.
Доработанная схема и печатная плата ниже на картинке, от оригинала она отличается подключением дисплея, заменой переменных резисторов и кнопок включения на энкодеры. Так же на схеме я убрал стабилизатор на 12 вольт, т.к. фен у меня работает от 24в, и убрал стабилизатор на 5 вольт, заменив его DC-DC преобразователем.
Печатная плата делалась классическом способом – ЛУТ'ом, лудил сплавом розе в растворе лимонной кислоты.
Симистор поставил на небольшой радиатор, силовые мосфеты без радиатора, т.к. за ними нагрева не замечено. Штырьки пришлось выпаять из-за плохого контакта, провода припаял непосредственно к плате. Переменные резисторы рекомендую использовать многооборотные для более плавной настройки температуры.
Микроконтроллер прошивал через Arduino UNO, МК подключаем по классической схеме: 1 вывод МК к 10 выводу Arduino, 11 вывод МК к 11 выводу Arduino, 12 вывод МК к 12 выводу Arduino, 13 вывод МК к 13 выводу Arduino, 7 и 20 выводы к +5 вольтам, 8 и 22 к GND, к 9 и 10 подключаем кварц на 16 МГц. Схема подключения ниже.
Схема подключения
Arduino UNO
Осталось запрограммировать МК.
1) Заходим на сайт https://www.arduino.cc/en/main/software, выбрав свою ОС скачиваем программу ARDUINO IDE, после чего устанавливаем её.
2) После установки необходимо добавить библиотеки из архива, для этого в программе выбираем Скетч – Подключить библиотеку – Добавить .ZIP библиотеку. И подключаем по очереди все библиотеки.
3) Подключаем Arduino UNO и присоединённый к ней МК к компьютеру через USB, при первом включении установятся необходимые драйвера.
4) Заходим в программе Файл – Примеры – ArduinoISP – ArduinoISP, в пункте Инструменты выбираем нашу плату и виртуальный порт, к которому подключилась ардуино, затем нажимаем загрузить. Этими действиями мы превращаем нашу ардуино в полноценный программатор.
5) После загрузки скетча в ардуино открываем скетч из архива, выбираем пункт Инструменты – записать загрузчик. Сам загрузчик в МК нам конечно не нужен, но этимы действиями в МК прошьются фьюзы и наша микроконтроллер будет работать от внешнего кварца на частоте 16МГц.
6) После загрузки загрузчика выбираем Скетч-Загрузка через программатор.
Осталось всё собрать и настроить температуру фена и паяльника, я делал при помощи термопары мультиметра. Также незабываем настроить контрастность дисплея. Регулируется переменным резистором на переходнике дисплея.
cxem.net
/* Arduino IDE 1.5.4
Паяльник на Arduino Pro Mini v0.4
Alex link http://www.youtube.com/c/AlexLink-Free http://vk.com/linklife http://www.facebook.com/groups/Arduno.life/ // Пины еодключения индикаторов ANODES(CATHODES): D1 — a D2 — b D4 — c D6 — d D7 — e D5 — f D3 — g
D0 — dp (digital point) Я НЕ подключал — резерв… индикатора :)))
a1 ******** * * f * * b2 5 * g3 * ******** * * e * * c4 7 * d6 *
******** # dp0
CATHODES(ANODES): D16 — cathode 3 D15 — cathode 2 D12 — cathode 1
*/
// ———————————————————————————————— int indicator = 1; // 0 = Катод 1 = Анод — Выбрать под Ваш индикатора !!!!
byte digits[] = { B00001001,B11101011,B00110001,B10100001,B11000011,B10000101,B00000101,B11101001,B00000001,B10000001};
int digit_common_pins[]={16,15,12}; // пины для разрядов сегментов(при изменении убедитесь что Ваш порт не используется) int refresh_delay = 5; int count_delay = 1000; // COUNTING SECONDS IF count_delay = 1000 long actual_count_delay = 0; long actual_refresh_delay = 0; int increment = 0; //Стартовое значение на сегментах int max_digits =3; // Кол-во знакомест int current_digit=max_digits-1; int increment_max = pow(10,max_digits);
// ————————————————— не изменять, это для Сегментов ————————————————
//——————— переменные паяльника —————————— int knopka = 3; //Пин кнопки
int tin = 0; // Пин Датчика температуры IN Analog через LM358N int pinpwm = 11;// порт нагревательного элемента(через транзистор)PWM
int tempust = 230; // установленная температура int tempmin = 200; // минимальная температура int tempmax = 480; // максимальная температура int tempreal = 250; // переменная датчика текущей температуры int temppwmmin = 40; // минимальное значение PWM нагревателя int temppwmmax = 180; // максимальное значение PWM нагревателя int temppwmreal = 0; // текущее значение PWM нагревателя
int airreal = 100; // стартовое значение PWM вентилятора(если нужно)
int temperror = -50; // разница температур(установленная — реальная)
int temprazn = 0; // переменная разницы температуры(установленная — текущая)
void setup(){
if(indicator == 0){ //Если вначале был выбран общий Катод for(int i=0; i 3) { temppwmreal = 80; // Понижаем мощность нагрева (шим 0-255 мы делаем 99) — таким образом мы убираем инерцию перегрева
}
else if ((tempust — tempreal) < 4 ) { temppwmreal = 45; // Понижаем мощность нагрева (шим 0-255 мы делаем 99) — таким образом мы убираем инерцию перегрева } else { temppwmreal = 230; // Иначе Подымаем мощность нагрева(шим 0-255 мы делаем 230) на максимум для быстрого нагрева до нужной температуры } analogWrite(pinpwm, temppwmreal); //Вывод в шим порт (на транзистор) значение мощности } else { //Иначе (если температура паяльника равняется или выше установленной) temppwmreal = 0; // Выключаем мощность нагрева (шим 0-255 мы делаем 0) — таким образом мы отключаем паяльник analogWrite(pinpwm, temppwmreal); //Вывод в шим порт (на транзистор) значение мощности } if(millis() — actual_count_delay > count_delay) // это для сегментов
{ actual_count_delay = millis();
// Здесь мы пишем нашу прогу по считыванию состояния кнопок (это место в счетчк не будет тормозить вывод на сегменты)
tempreal = analogRead(0);// считываем текущую температуру
tempreal=map(tempreal,-50,700,0,500); // нужно вычислить increment=tempreal;
//———————————————————- Кнопки ————————————————————————- if (analogRead(knopka) == 0) // Если нажата вниз кнопка то понизить температуру на 5 { if( tempust =tempmax) { tempust= tempmax; } increment = tempust;
show(increment); // Вывести значение переменной на экран(LED)
}
} }
void show(int value) { //——————————- подпрограмма для вывода на сегменты — лучше не изменять ——————————————— int digits_array[]={}; int y=0;
boolean empty_most_significant = true;
if(millis() — actual_refresh_delay >= refresh_delay) {
for (int z=max_digits-1;z>=0;z—) {
digits_array[z] = value / pow(10,z); //rounding down by converting from float to int
if(digits_array[z] != 0 ) empty_most_significant = false; // DON’T SHOW LEADING ZEROS
value = value — digits_array[z] * pow(10,z);
if(z==current_digit) {
if(!empty_most_significant || z==0){ // DON’T SHOW LEADING ZEROS EXCEPT FOR THE LEAST SIGNIFICANT
PORTD = digits[digits_array[z]]; } else { if(indicator == 0){ //Если вначале был выбран общий Катод PORTD = B00000000; } else{ PORTD = B11111111; }
}
if(indicator == 0){ digitalWrite(digit_common_pins[z], LOW); } else{ digitalWrite(digit_common_pins[z], HIGH); } }
else{
if(indicator == 0){ digitalWrite(digit_common_pins[z], HIGH); } else{ digitalWrite(digit_common_pins[z], LOW); }
}
}
current_digit—; if(current_digit < 0) { current_digit= max_digits; // NEED AN EXTRA REFRESH CYCLE TO CLEAR ALL DIGITS
}
actual_refresh_delay = millis(); }
}
[свернуть]
my-project.link
Всем привет, собрал паяльную станцию на ардуино.
Автор проекта: Oleg A. ссылка на статью
Cебестоимость 35$ (детали покупал на али) — рекомендую к повторению, весьма бюджетно и не хуже заводских аналогов, хотя есть недостаток в отсутствии защиты, при КЗ симистора либо транзистора происходит максимальный нагрев фена либо паяльника и как следствие — небольшой пожар :-) Не стоит оставлять станцию без присмотра, когда не пользуемся — выключаем из розетки, либо обрываем фазу выключателем. Также в процессе сборки не стоит забывать о возможном наличии фазы на корпусе симистора.
Станция работает отлично, требуется лишь отстроить температуру используя термопару мультиметра
Список компонентов
Операционный усилитель LM358 (1 — шт.) ПерейтиПотенциометр 10К (3 — шт.) ПерейтиПотенциометр крутилка (3 — шт.) ПерейтиПодстроечный резистор 3362 10К (3 — шт.) ПерейтиРезистор 0805 220К (2 — шт.) ПерейтиРазъем питания IEC320 C (1 — шт.) ПерейтиРазъем PLS 40 (1 — шт.) ПерейтиГнездо GX16-8 (1 — шт.) ПерейтиГнездо GX16-5 (1 — шт.) ПерейтиБлок питания Импульсный 24В, 4А (1 — шт.) ПерейтиПаяльник 24В с К термопарой (1 — шт.) ПерейтиФен с К термопарой с вентилятором на 12 либо 24 вольта (1 — шт.) ПерейтиЭкран LCD дисплей 16х2 (1 — шт.) ПерейтиКварц 16 Мгц (1 — шт.) ПерейтиРезистор 0,5Вт 22К (1 — шт.) ПерейтиСветодиод: 3 мм красный 20мА (2 — шт.) ПерейтиРезистор 0805 10К (4 — шт.) ПерейтиМикроконтроллёр Atmega328p (1 — шт.) ПерейтиОпторазвязка MOC3063 (1 — шт.) ПерейтиМосфет N-канал IRFZ44N (2 — шт.) ПерейтиСимистор BT-138-600B (1 — шт.) ПерейтиСтабилизатор L7812CV (1 — шт.) ПерейтиСтабилизатор L7805CV (1 — шт.) ПерейтиРезистор 0805 220 (2 — шт.) ПерейтиКонденсотор 0805 1 мкф (3 — шт.) ПерейтиПереключатель SWR-45-B-B (2 — шт.) Перейти
Atmega328p прошивал через ардуино уно (Arduino as ISP) + SinaProg 2.1.1
фьюзы
Полный размер
мой программатор
Схема подключения
www.drive2.ru