Маленькая паяльная станция своими руками v2

Привет.
Некоторое время назад я собрал маленькую паяльную станцию, о которой хотел рассказать. Это дополнительная упрощенная паяльная станция к основной, и конечно не может ее полноценно заменить.


Основные функции:
1. Паяльник. В коде заданы несколько температурных режимов (100, 250 и 350 градусов), между которыми осуществляется переключение кнопкой Solder. Плавная регулировка мне тут не нужна, паяю я в основном на 250 градусах. Мне лично это очень удобно. Для точного поддержания температуры используется PID регулятор.
Заданные режимы, пины, параметры PID можно поменять в файле 3_Solder:

struct {
  static const byte   termistor   =  A2;  // пин термистора
  static const byte   pwm         =  10;  // пин нагревателя
  static const byte   use         =  15;  // A1 пин датчика движения паяльника
  int                 mode[4]     =  {0, 150, 250, 300}; // режимы паяльника
  byte                set_solder  =  0; // режим паяльника (по сути главная функция)
  static const double PID_k[3]    =  {50, 5, 5};    // KP KI KD
  static const byte   PID_cycle   =  air.PID_cycle; // Цикл для ПИД. Участвует в расчетах, а также управляет частотой расчетов ПИД
  double PID_in;  // входящее значение
  double PID_set; // требуемое значение
  double PID_out; // выходное значения для управляемого элемента
  //unsigned long time;
  unsigned long srednee;
} sol;


2. Фен. Также заданы несколько температурных режимов (переключение кнопкой Heat), PID регулятор, выключение вентилятора только после остывания фена до заданной температуры 70 градусов.
Заданные режимы, пины, параметры PID можно поменять в файле 2_Air:

struct {
  static const byte   termistor     =  A3; // пин термистора
  static const byte   heat          =  A0; // пин нагревателя
  static const byte   fan           =  11; // пин вентилятора
  int                 mode_heat[5]  =  {0, 300, 450, 600, 700}; // быстрые режимы нагревателя
  byte                set_air       =  0; // режимы фена (нагреватель + вентилятор) по сути главная функция
  static const double PID_k[3]      =  {10, 2, 10}; // KP KI KD
  static const byte   PID_cycle     =  200; // Цикл для ПИД. Участвует в расчетах, а также управляет частотой расчетов ПИД
  double PID_in;  // входящее значение
  double PID_set; // требуемое значение
  double PID_out; // выходное значения для управляемого элемента
  unsigned long time;
  unsigned long srednee;
  boolean OFF = 0;
} air;


Нюансы:
1. Паяльник применил от своей старой станции Lukey 936A, но с замененным нагревательным элементом на китайскую копию Hakko A1321/
2. Кнопка отключения отключает сразу все что было включено.
3. Можно одновременно включать и паяльник и фен.
4. На разъеме фена присутствует напряжение 220В, будьте осторожны.
5. Нельзя отключать паяльную станцию от сети 220В пока не остынет фен.
6. При отключенном кабеле паяльника или фена, на дисплее будут максимальные значения напряжения с ОУ, пересчитанные в градусы (не ноль). Поясню: если например просто подключить кабель холодного паяльника должен показывать комнатную температуру, при отключении покажет например 426. Какой в этом плюс: если случайно оборвется провод термопары или терморезистора, на выходе ОУ будет максимальное значение и контроллер просто перестанет подавать напряжение на нагреватель, так как будет думать что наш паяльник раскален и его нужно охладить.
7. Защиты от КЗ нет, поэтому рекомендую установить предохранители.
8. Стабилизатор на 5В для питания Arduino используйте любой доступный с учетом напряжения питания вашего БП и нагрева в случае линейного стабилизатор. Так как у меня напряжение 20В установил 7805.
9. Паяльник прекрасно работает и при 30В питания, как в моей основной паяльной станции. Но при использовании повышенного напряжения учитывайте все элементы: стабилизатор 5В и то что напряжение вентилятора 24В.

Основные узлы и состав:
1. Основная плата:
— Arduino Pro mini,
— сенсорные кнопки,
— дисплей от телефона Nokia 1202.
2. Плата усилителей:
— усилитель терморезистора паяльника,
— полевой транзистор нагрева паяльника,
— усилитель термопары фена,
— полевой транзистор включения вентилятора фена.
3. Плата симисторного модуля
— оптосимистор MOC3063,
— симистор со снабберной цепочкой.
4. Блок питания:
— блок питания от ноутбука 19В 3.5А,
— выключатель,
— стабилизатор для питания Arduino.
5. Корпус.
А теперь подробнее по узлам.
1. Основная плата.
sx76d7tmphifhgcqyi8wxvpnbkg.gif
Обратите внимание наименование сенсорных площадок отличается от фото. Дело в том, что в связи с отказом от регулировки оборотов вентилятора, в коде я переназначил кнопку включения фена. В самом начале регулировка оборотов была реализована, но так как напряжение моего БП 20В (увеличил на 1В добавлением переменного резистора), а вентилятор на 24В, решил отказаться.
Сигнал с сенсорных кнопок TTP223 (включены в режиме переключателя Switch, на пин TOG подан 3.3В) считывается Arduino. Дисплей подключен через ограничительные резисторы для согласования 5В и 3.3В логики. Такое решение не совсем правильное, но уже работает несколько лет в разных устройствах.
Основная плата двухстороннего печатного монтажа. Металлизацию оставлял по максимуму, чтобы уменьшить влияние помех, а также для упрощения схемы сенсорных кнопок (для TTP223 требуется конденсатор по входу на землю для уменьшения чувствительности. Без него кнопка будет срабатывать просто при приближении пальца. Но так как у меня сделана сплошная металлизация этот конденсатор не требуется). Сделан вырез под дисплей.

Фото платы без деталей
1daejcjxtfdnh8x_zfkpmmuocw4.jpeg
kiw2qfrpgpjix2ma11msmfhmnbm.jpeg


На верхней стороне находятся площадки сенсорных кнопок, наклеена лицевая панель, припаивается дисплей. Площадки сенсорных кнопок и дисплей подключены к нижней стороне через перемычки тонким проводом. Типоразмер резисторов и конденсатора 0603.

Изготовление лицевой панели
Лицевую панель, по размерам из 3Д модели, я сначала нарисовал в программе FrontDesigner-3.0_rus, в файлах проекта лежит исходник.
ea7bf27lkpzfwckvoqgati0ghx0.jpeg
Распечатал, вырезал по контуру, а также окно для дисплея.
Далее заламинировал самоклеящейся пленкой для ламинирования и приклеил к плате. Дисплей за также приклеен к этой пленке. За счет выреза в плате дисплей получился вровень с основной платой.


На нижней стороне находится Arduino Pro mini и микросхемы сенсорных кнопок TTP223.
2. Плата усилителей.
sh6xzdedbbdrlmxsqqmm1xgob5q.gif
Схема паяльника состоит из дифференциального усилителя с резистивным мостом и полевого транзистора с обвязкой.
1. Для увеличения «полезного» диапазона выходного сигнала при низкоомном терморезисторе (в моем случае в китайской копии Hakko A1321 56 Ом при 25 градусах, для сравнения в 3д принтерах обычно стоит терморезистор сопротивлением 100 кОм при 25 градусах) применен резистивный мост и дифференциальный усилитель. Для уменьшения наводок параллельно терморезистору и в цепи обратной связи стоят конденсаторы. Данная схема нужна только для терморезистора, если в вашем паяльнике стоит термопара, то нужна схема усилителя аналогичной в схеме фена. Настройка не требуется. Только измерить сопротивление вашего терморезистора при 25 градусах и поменять при необходимости резистор 56Ом на измеренный.
2. Полевой транзистор был выпаян из материнской платы. Резистор 100 кОм нужен чтобы паяльник сам не включился от наводок если ардуина например отключится, заземляет затвор полевого транзистора. Резисторы по 220 Ом для ограничения тока заряда затвора.
Схема фена состоит из неинвертирующего усилителя и полевого транзистора.
1. Усилитель: типовая схема. Для уменьшения наводок параллельно термопаре и в цепи обратной связи стоят конденсаторы.
2. Обвязки у полевого транзистора ME9926 нет, это не случайно. Включение ничем не грозит, просто будет крутится вентилятор. Ограничения тока заряда затвора тоже нет, так как емкость затвора небольшая.
Типоразмер резисторов и конденсаторов 0603, за исключением резистора 56 Ом — 1206.,
Настройка не требуется.
Нюансы: применение операционного усилителя LM321 (одноканальный аналог LM358) для дифферециального усилителя не является оптимальным, так как это не Rail-to-Rail операционный усилитель, и максимальная амплитуда на выходе будет ограничена 3.5–4 В и максимальная температура (при указанных на схеме номиналах) будет ограничена в районе 426 градусов. Рекомендую использовать например MCP6001. Но нужно обратить внимание что в зависимости от букв в конце отличается распиновка:
iwdiidvwelwh4m-mnqerfow7gyq.jpeg
3. Плата симисторного модуля.
vwixzod1wgnvsvddhlnkensd30s.gif
Схема стандартная с оптосимистором MOC3063. Так как MOC3063 сама определяет переход через ноль напряжения сети 220В, а нагрузка — нагреватель инерционный элемент, использовать фазовое управление нет смысла, как и дополнительных цепей контроля ноля.
4. Блок питания.
Выбор был сделан по габаритным размерам и выходной мощности в первую очередь. Также я немного увеличил выходное напряжение до 20В. Можно было и 22В сделать, но при включении паяльника срабатывала защита БП.
5. Корпус.
Корпус проектировался под мой БП, с учетом размеров плат и последующей печати на 3Д принтере. Металлический даже не планировался, приличный алюминиевый анодированный корпус дороговато и царапается, и куча других нюансов. А гнуть самому красиво не получится.
Разъемы:
1. Фен — «авиационный» GX16–8.
2. Паяльник — «авиационный» GX12–6.

Немного фото


Исходники лежат тут.
На этом все.
P.S. Первую версию я сохранил в черновиках на память.

© Habrahabr.ru