Безопасная пайка

Введение
Начну с того, что: а вы знали, что есть техника безопасности при пайке паяльником? Она действительно существует, и написана не просто так. Помимо забавных строк вроде «не хвататься за жало, потому что оно горячее», есть и очень дельные, например: не следует паять более 1 часа без перерыва, нужна пауза. И нужно делать перерывы каждые час хотя бы на 5 минут.
Так вот, все эти сменные жала имеют свой ресурс, и цена у них не очень маленькая. И еще, случалось ли у вас такое: когда вы паяете, вас позвали (или телефон зазвонил) срочно, прямо миссия №1, и вы все бросили и побежали куда-то, а то, что у вас паяльник работает, вы вспоминаете в лучшем случае через 2 часа? Уверен, было! А это еще и пожарная опасность.
Чтобы выполнить все эти пункты, нужна простая самоделка на четыре модуля и две кнопки.
Что нужно сделать?
- Не работать более 1 часа без перерыва
- Вытягивать дым при пайке (об этом будет следующая статья)
- Беречь ресурс жала
- Контролировать время работы паяльника и вытяжки
Необходимые материалы
Схема подключения

Я решил для себя, и вам советую, использовать настольное питание, у меня это 24 В. Почему 24 В? Потому что все современные модули питаются от этого напряжения (лабораторный блок питания, паяльник, модуль для зарядки телефона).
Это в случае, если ваш паяльник питается от постоянного напряжения. Если остались еще люди, которые паяют паяльниками от 220 В, то нужно немного переделать схему, вместо понижающего преобразователя поставить блок питания на 5 В, а вместо входа 24 В подавать 220 В.
Скетч
#include#include #include #define SCREEN_WIDTH 128 #define SCREEN_HEIGHT 32 #define OLED_RESET -1 #define SCREEN_ADDRESS 0x3C Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, OLED_RESET); #define RELAY_PIN 4 // Пин для реле #define ADD_TIME_BTN 5 // Кнопка добавления времени #define SUB_TIME_BTN 6 // Кнопка вычитания времени #define MAX_TIMER_DURATION 3600000 // Максимальная длительность таймера (1 час) #define addTime 600000 // Добавление времени (10 минут) #define subtractTime 300000 // Вычитание времени (5 минут) unsigned long timerDuration = 150000; // Начальная длительность (2:30) unsigned long startTime; bool timerRunning = false; void setup() { pinMode(RELAY_PIN, OUTPUT); pinMode(ADD_TIME_BTN, INPUT_PULLUP); pinMode(SUB_TIME_BTN, INPUT_PULLUP); digitalWrite(RELAY_PIN, HIGH); // Изначально выключено Serial.begin(9600); if(!display.begin(SSD1306_SWITCHCAPVCC, SCREEN_ADDRESS)) { Serial.println(F("SSD1306 allocation failed")); for(;;); // Не продолжаем, если дисплей не инициализировался } display.clearDisplay(); display.setTextSize(1); display.setTextColor(SSD1306_WHITE); display.setCursor(0, 0); display.println("Ready to solder!"); display.display(); delay(2000); startTimer(); } void loop() { // Проверка кнопок if (digitalRead(ADD_TIME_BTN) == LOW) { if (timerDuration < MAX_TIMER_DURATION) { timerDuration += addTime; if (timerDuration > MAX_TIMER_DURATION) { timerDuration = MAX_TIMER_DURATION; } } delay(200); // Дебаунсинг } if (digitalRead(SUB_TIME_BTN) == LOW) { if (timerDuration > subtractTime) { timerDuration -= subtractTime; } delay(200); // Дебаунсинг } // Проверка таймера if (timerRunning) { unsigned long elapsedTime = millis() - startTime; if (elapsedTime >= timerDuration) { // Таймер закончился timerRunning = false; digitalWrite(RELAY_PIN, LOW); displayTimeUp(); } else { // Обновление дисплея updateDisplay(timerDuration - elapsedTime); } } } void startTimer() { startTime = millis(); timerRunning = true; digitalWrite(RELAY_PIN, HIGH); } void updateDisplay(unsigned long remainingTime) { display.clearDisplay(); // Показать остаток времени int minutes = remainingTime / 60000; int seconds = (remainingTime % 60000) / 1000; display.setTextSize(1); display.setCursor(0, 0); display.print("Time left: "); display.print(minutes); display.print(":"); if (seconds < 10) display.print("0"); display.println(seconds); // Анимация паяльника static int frame = 0; frame = (frame + 1) % 4; display.setCursor(0, 16); display.print("Soldering"); for (int i = 0; i < frame; i++) { display.print("."); } // Анимация вытяжки display.setCursor(70, 16); display.print("Fan: ON"); display.display(); } void displayTimeUp() { display.clearDisplay(); display.setTextSize(2); display.setCursor(20, 8); display.println("TIME!"); display.display(); }
В коде можно изменить начальное значение после включения, у меня это 2 минуты 30 секунд. Это настройка задается timerDuration. Кнопка на пине 5 добавляет 10 минут addTime.
Кнопка на пине 6 вычитает 5 минут subtractTime. Ну и максимально можно установить время 1 час MAX_TIMER_DURATION, потом перерыв, и можно снова запускать.
Инструкция по сборке и настройке
Ниже приведена пошаговая инструкция для сборки и настройки нашего таймера для безопасной пайки. Следуйте указаниям в правильном порядке для успешного завершения проекта.
Подготовка компонентов — Убедитесь, что у вас есть все необходимые компоненты: Arduino Nano, OLED-дисплей 0.91" (I2C), понижающий DC-DC преобразователь, 2 кнопки и реле.
Подключение дисплея — Подключите OLED-дисплей к Arduino Nano:
• VCC дисплея → 5V Arduino
• GND дисплея → GND Arduino
• SCL дисплея → A5 Arduino
• SDA дисплея → A4 Arduino
Подключение кнопок — Подключите кнопки к Arduino:
• Одна ножка первой кнопки → пин 5
• Одна ножка второй кнопки → пин 6
• Другие ножки обеих кнопок → GND
Подключение реле — Подключите реле к Arduino:
• VCC реле → 5V Arduino
• GND реле → GND Arduino
• IN реле → пин 4 Arduino
Подключение DC-DC преобразователя — Настройте DC-DC преобразователь:
• Вход: 24В от вашего блока питания
• Выход: настройте на 5В для питания Arduino
• Подсоедините выход преобразователя к Vin и GND Arduino
Установка библиотек — Установите необходимые библиотеки в Arduino IDE:
• Wire.h (стандартная библиотека)
• Adafruit_GFX.h (через менеджер библиотек)
• Adafruit_SSD1306.h (через менеджер библиотек)
Настройка скетча — Откройте скетч в Arduino IDE и настройте параметры:
• timerDuration = 150000; — начальное время работы (2:30)
• addTime = 600000; — добавляем 10 минут при нажатии кнопки
• subtractTime = 300000; — вычитаем 5 минут при нажатии кнопки
• MAX_TIMER_DURATION = 3600000; — максимальное время работы (1 час)
Загрузка скетча — Загрузите скетч на Arduino Nano:
• Подключите Arduino к компьютеру
• Выберите правильную плату и порт в Arduino IDE
• Нажмите "Загрузить"
Тестирование — Проверьте работу устройства:
• После загрузки скетча и подачи питания на дисплее должно появиться приветствие "Ready to solder!"
• Через 2 секунды таймер начнет отсчет
• Проверьте работу кнопок добавления и вычитания времени
• Проверьте срабатывание реле после окончания отсчета
Финальная сборка — Закрепите компоненты в корпусе:
• Разместите все компоненты в корпусе (можно использовать коробку от любого устройства)
• Выведите дисплей и кнопки на переднюю панель
• Обеспечьте надежное соединение всех компонентов
• Зафиксируйте провода, чтобы предотвратить их случайное отсоединение
Логика работы устройства
Разберем основную логику работы таймера для безопасной пайки согласно скетчу:
- Инициализация: При запуске Arduino происходит настройка пинов, инициализация дисплея и показ приветствия "Ready to solder!" на 2 секунды.
- Запуск таймера: После инициализации автоматически запускается таймер с начальным значением timerDuration (2 минуты 30 секунд).
- Управление реле: При запуске таймера реле активируется (HIGH), включая паяльник и вытяжку.
- Отображение информации: На дисплее показывается остаток времени в формате "минуты:секунды", а также анимация работы паяльника и вытяжки.
- Управление временем: Кнопкой на пине 5 можно добавить 10 минут к текущему отсчету, но не более MAX_TIMER_DURATION (1 час).
- Уменьшение времени: Кнопкой на пине 6 можно уменьшить время на 5 минут, но не менее чем subtractTime.
- Завершение отсчета: Когда время заканчивается, реле деактивируется (LOW), выключая паяльник и вытяжку, а на дисплее появляется надпись "TIME!".
- Перезапуск: Для перезапуска таймера после его завершения необходимо перезагрузить Arduino (отключить и подключить питание).
loop()
постоянно проверяется состояние кнопок и оставшееся время. Если нажата кнопка, время добавляется или вычитается. Если время истекло, реле выключается.
Практическая реализация
После того как скачали все библиотеки для дисплея, собрали все по схеме, на практике это выглядит так:

Это пока недоделанная версия, собрано на скорую руку для испытания. После сборки и успешной прошивки на дисплее должны увидеть следующее:

А также на дисплее добавил анимацию, что паяльник греется, а вытяжка крутится. И время, которое осталось до отключения реле, если нужно добавить время, то зажимаем кнопку, и время добавляется, если другую кнопку, то вычитается время. Когда время закончится, реле выключается, и на дисплее будет написано TIME!.
Пробовал сделать этот девайс на датчике движения, и тут свои коррективы вносят домашние питомцы, дети и т.д. Поэтому лучше ручная настройка времени, самая надежная безопасность присутствия.
Желаю и вам сделать безопасную пайку вместе с myproject.com.ua. А также следите в Telegram-канале за анонсами новых публикаций.
© 2025 Мій Проект. Автор: Ardu_miha. Использование материалов разрешено только с ссылкой на источник.
Написать комментарий