leoniv.diod.club
Паяльная станция: паяльник DSS-90 и фен DFS-90

Основные характеристики DSS-90:

• диапазон задания температуры:100…480°C
• шаг установки температуры:0.1…25.5°C
• количество предустановок температуры:до 20
• мощность паяльника:50 Вт
• рабочее напряжение паяльника:24 В
• тип датчика:термопара K-типа
• тип датчика холодного спая:DS18B20 (не обязательный)
• способ управления:фазовый, дельта-сигма
• питание:сеть 220 В ±10%, 50 Гц
• габариты:149 х 130 х 50 мм (корпус Z-4)

Основные характеристики DFS-90:

• диапазон задания температуры:100…480°C
• шаг установки температуры:0.1…25.5°C
• количество предустановок температуры:до 20
• мощность нагревателя фена:700 Вт
• рабочее напряжение нагревателя фена:220 В
• тип датчика:термопара K-типа
• тип датчика холодного спая:DS18B20 (не обязательный)
• способ управления:фазовый, дельта-сигма
• рабочее напряжение вентилятора:24 В
• диапазон задания скорости вращения:до 9900 об./мин. (RPM)
• питание:сеть 220 В ±10%, 50 Гц
• габариты:149 х 130 х 50 мм (корпус Z-4)

Предупреждение! Проект этой паяльной станции является незаконченным и заброшенным. Причина - резкое отличие ральных характеристик от заявленных. Для паяльника разность температуры кончика жала и температуры датчика достигает 100°C, в таких условиях нельзя говорить ни о какой точности. Есть идеи компенсации теплового сопротивления, но они не реализованы. Поэтому повторять эту конструкцию не рекомендую.

Паяльная станция состоит из двух отдельных блоков: блока управления паяльником DSS-90 и блока управления феном DSS-90. Оба блока выполнены в одинаковых пластмассовых корпусах Z-4. Внешне блоки похожи: на передней панели каждого блока расположен сетевой выключатель, разъем для подключения инструмента (для паяльника 5-штырьковый, для фена 8-штырьковый), светодиод индикации нагрева, трехразрядный светодиодный индикатор и энкодер с кнопой. Блоки содержат одинаковую плату управления, выполненную на микроконтроллере ATmega168. Программное обеспечение у блоков разное.

Блок управления паяльником DSS-90 содержит тороидальный трансформатор, который обеспечивает переменное напряжение 24 В для питания нагревателя паяльника. Это напряжение выпрямляется с помощью синхронного выпрямителя на полевых транзисторах и поступает на полевой ключ, который управляет нагревателем. От этого же трансформатора питается и плата управления.

Блок управления феном DFS-90 питает нагреватель фена непосредственно от сети. Управляющим элементом является симистор. Еще один симистор применен для блокировки сетевого выключателя. Это необходимо для реализации режима быстрого охлаждения фена. По окончании работы с феном блок можно просто выключить выключателем. При этом он включает вентилятор на максимальные обороты и продолжает работать до тех пор, пока температура фена не упадет ниже заданного порога. После этого блок отключается. Для питания вентилятора блок содержит маломощный понижающий трансформатор. от него же питается и плата управления.

Оба блока используют одну и ту же плату управления. На ней расположен процессор, трехразрядный светодиодный индикатор, энкодер с кнопкой, звуковой излучатель, светодиод индикации нагрева. Установка температуры осуществляется с помощью энкодера. Значение температуры отображается на индикаторе. Дискретность отображения - 1°C. Для фена энкодером устанавливается еще и скорость вращения вентилятора. Она тоже отображается на индикаторе в тысячах RPM, дискретность - 10 RPM.

При включении питания блок управления паяльником DSS-90 сразу включает нагрев. Поворотом энкодера влево паяльник можно перевести в режим Stb, когда будет поддерживаться пониженная температура. Если опять повернуть энкодер влево, паяльник перейдет в режим OFF, когда нагрев полностью выключится. Из режима Stb есть и автоматический переход в режим OFF спустя некоторое запрограммированное время. Если в рабочем режиме повернуть энкодер вправо, то перейдем в режим выбора предустановок. Их количество может меняться, последними в списке пресетов стоят команды Add (которой можно создать пресет и добавить в него текущую температуру нажатием кнопки энкодера) и dEL (который удаляет последний пресет из списка нажатием кнопки энкодера). Для регулировки температуры надо находясь в рабочем режиме нажать кнопку энкодера. На дисплее появится значение установленной температуры, которое начнет мигать. После чего можно регулировать температуру поворотом энкодера. В конце регулировки надо нажать кнопку энкодера еще раз, или просто подаждать время 7.6 сек., тогда выход из режима установки произойдет автоматически. Если нажать кнопку энкодера в режиме Stb, то можно регулировать температуру для этого режима. Если в режиме OFF нажать кнопку энкодера и удерживать ее 1 сек., то появится значение таймера автоматического перехода в Stb, которое можно редактировать. При следующем нажатии кнопки появится значение таймера автоматического перехода из Stb в OFF, которое тоже можно редактировать. Для паяльника автоматический переход в Stb будет лишь в случае использования автоматического детектирования активности паяльника, параметры которого задаются из сервисной программы.

При включении питания блок управления феном DFS-90 нагрев не включается, а на индикаторе отображается OFF. Чтобы нагрев включился, фен надо снять с подставки (если он был снят, то положить, а затем снять). В остальном функции управления работают аналогично. Еще одно отличие заключается в том, что при нажатии кнопки энкодера после регулировки температуры на дисплее появляется заданная скорость вентилятора, которую тоже можно регулировать. Второе нажатие кнопки энкодера вызывает переход в рабочий режим. Для фена нет автоматического детектирования активности. Вместо этого используется датчик подставки. Если фен положить на подставку, то через заданное первым таймером количество минут он перейдет в режим Stb, а затем спустя интервал второго таймера - в режим OFF. При пеерходе в режим OFF включается ускоренное охлаждение фена, для чего вентилятор пережодит на повышенные обороты. Когда температура упадет ниже заданного порога, вентилятор отключается. Все параметры задаются из сервисной программы.

В качестве датчика температуры и паяльник, и фен используют термопару K-типа. Оба блока имеют одинаковые каналы измерения температуры и одинаковые алгоритмы управления нагревателями. Выходое напряжение термопары усиливается zero drift rail-to-rail операционным усилителем типа AD8551, который имеет очень малое смещение нуля и не требует двухполярного питания. Коэффициент усиления 100, при температуре +500°C термопара выдает примерно 20 мВ, полная шкала на выходе усилителя – примерно 2.06 В. Этот сигнал подается на вход АЦП микроконтроллера. В качестве опорного исочника на 2.5 В применяется микросхема TL431.

АЦП работает с периодом дискретизации T_SYS = 500 мкс. Поток данных с выхода АЦП поступает на цифровой FIR-фильтр с прямоугольным окном. Длительность окна TSAMPLE = 100 мс. Фильтр производит децимацию, период дискретизации на выходе фильтра составляет 100 мс. С таким периодом дискретизации работает PID-регулятор. Сначала производится преобразование кода измеренного значения AdcCode в микровольты Vtc с учетом коэффициента передачи усилителя термопары и опорного напряжения:

Vtc = (AdcCode * ADC_REF / ADC_RES) / (FIR_N * GAIN)

Далее производится проверка этого напряжения с целью определения обрыва термопары. Если оно выше V_BRK = 24000, то ошибка. Затем вычисляется эквивалентное напряжение холодного спая Vcj на основе показаний tcj термометра DS18B20. Применение термометра холодного спая не является обязательным. Если его не подключить, то будет использоваться постоянное значение температуры холодного спая из EEPROM, которое можно задать с помощью сервисной программы. Так как диапазон температур холодного спая невелик, вычисление производится по линейному закону с коэффициентом TCJ_K = 40.0 мкВ/°C:

Vcj = tcj * TCJ_K

Затем вычислятся выходное напряжение термопары с компенсацией холодного спая:

Vhj = Vtc + Vcj

Затем производится табличная лианеризация показаний термопары. Элементы таблицы Lin[TC_POINTS] рассчитаны с шагом 1000 мкВ. Находится элемент таблицы, меньший или равный измеренному напряжению. Индекс таблицы дает температуру ttab. Затем между точками таблицы проводится линейная интерполяция:

thj = ttab + DeltaV * DeltaT / 1000

Далее полученная температура подвергается процедуре цифровой калибровки:

t = thj * Gain / GAIN_NOM + Shift

Полученное значение температуры t поступает на PID-регулятор. Регулятор реализован в дифференциальной форме, т.е. пропорциональная составляющая превращается в дифференциальную, интегральная - в пропорциональную, а дифференциальная - во вторую производную. На выходе получаем дифференциал воздействия. Такой подход позволяет избавится от интегральной составляющей вместе с проблемой ее ограничения:

dP = Kp * (t[i] - t[i - 1]) - Ki * (tset - t[i]) + Kd * (t[i] - 2 * t[i - 1] + t[i -2])

Из дифференциала мощности и предыдущего значения мощности получаем текущее значение мощности, которую нужно подать на нагреватель:

P[i] = P[i-1] - dP

Управление нагревателем может осуществляться в фазовом режиме или в режиме Delta-Sigma модулятора. В любом случае требуется привязка к сети по фазе. Она реализована с помощью цифровой петли PLL. Импульсы с детектора перехода через ноль (ZCD) поступают на вход захвата ICP таймера 1. Используется спад импульса, так как он имеет большую крутизну. Схема захвата имеет аппаратный подавитель шумов, который включен с помощью бита ICNC1. В прерывании по захвату вычисляется текущая ошибка фазы:

dPh = ICR1 + Delay

Она является входной величиной для PI-регулятора, который служит петлевым фильтром PLL:

Period[i] = Period[i-1] - Kp * (dPh[i - 1] - dPh[i]) + Ki * dPh[i]

Выходной сигнал PI-регулятора представляет собой текущий период таймера 1, который загружается в регистр OCR1A. Таймер работает в режиме очистки по сравнению (CTC), причем TOP = OCR1A. В результате работа таймера оказывается синхронизированной с сетью с точностью до фазы (если точнее, с удвоенной частотой сети). PLL позволяет получить постоянный сдвиг Delay относительно сигнала ZCD, который позволяет скомпенсировать конечную длительность импульса ZCD и задержку срабатывания ZCD.

При работе в режиме фазового управления для управления ключом служит канал B аппаратного PWM, значение которого загружается в регистр OCR1B, а выходная последовательность формируется на выводе OC1B. Загрузка регистра OCR1B должна осуществляться как при изменении желаемого угла открывания ключа, так и при подстройке периода таймера (в прерывании по захвату). Регистры OCR1A и OCR1B имеют double buffering, поэтому их перезагрузка не нарушает текущий цикл управления ключом.

Желаемая мощность P задается в процентах от максимальной с дискретностью 0.1%. Далее эта мощность должна быть преобразована в угол открытия ключа, который и представляет собой код регистра OCR1B с точностью до постоянного множителя. При фазовом управлении мощность зависит от угла нелинейно: для угла f нормализованная мощность равна интегралу от f до pi от sin^2(x)dx, деленному на pi/2. Или

Pnorm = 1 - f / pi + sin(2 * f) / (2 * pi)

Если угол A задается в градусах, то

f = A * pi / 180

Аналитическое выражения для угла в зависимости от требуемой мощности я найти не смог. И это не arccos, как вычисляют в некоторых фазовых регуляторах. Поэтому численными методами была сгенерирована таблица с шагом по мощности 1%. Между точками таблицы производится линейная интерполяция:

angle = A[p] + DeltaP * DeltaA / 10

Найденный угол преобразуется в код для загрузки регистра OCR1B:

OCR1B = Half_Period * angle / MAX_ANGLE;

При работе в режиме Delta-Sigma модулятора мощность зависит от кода линейно, никакой специальной линеаризации не требуется. Частота дискретизации Delta-Sigma модулятора соответствует частоте сравнений COMPA таймера 1. Модулятор реализован следующим образом:

квантование:

if(Sigma > MAX_POW) { Delta = -MAX_POW; OutOn(); }
else { Delta = 0; OutOff(); }
суммирование:

Sigma = Sigma + Power + Delta;

При использовании в блоке управления паяльником импульсного БП вместо трансформатора, на выходе у него будет постоянное напряжение, и привязка к напряжению сети не нужна. В этом случае программную PLL можно отключить, заземлив вывод TACHO

В блоке управление феном дополнительно осуществляется управление вентилятором. С помощью PID-регулятора его частота вращения поддерживается равной заданной. Вентилятор не имеет датчика частоты вращения, поэтому ее измерение производится по частоте пульсаций потребляемого тока. Сигнал пульсаций выделяется на датчике тока, затем усиливается и фильтруется спомощью ОУ типа LM358, затем поступает на компаратор со следящим порогом, собранный на второй половинке этого ОУ. Прямоугольные импульсы с выхода компаратора поступают на вход прерывания INT0 микроконтроллера. Частота этих импульсов в 4 раза выше частоты вращения крыльчатки (для двигателей других типов это соотношение может быть другим).

Измерение частоты вращения использует принцип обратного счета (reciprocal counting). Прерывание срабатывает по спаду импульса. При этом происходит чтение системного времени с помощью функции Main_GetSysTime(). В начале измерения время считывается в переменную N_beg, в конце измерения - в переменную N_end. Разность этих значений дает количество импульсов заполнения N, которые следуют с частотой системного таймера F_CLK / DIV_SYS. Кроме того, в обработчике прерывания INT0 производится счет входных импульсов Count тахометра. Длительность измерения задана константой VSAMPLE. Когда измерение закончено, частота вращения вычисляется по формуле:

Vget[rpm] = F_CLK[Hz] / DIV_SYS * 60 / PPR * Count / N

Измеренное значение частоты вращения фильтруется с помощью FIR-фильтра с прямоугольным окном длиной VFIR_N = 4 точек. Для поддержания частоты вращения ротора вентилятора используется PID-регулятор. Желаемая скорость вентилятора Vset и измеренная скорость Vget поступают на вход PID-регулятора, который реализован в дифференциальной форме аналогично регулятору температуры. На выходе формируется необходимое значение PWM вентилятора, которое загружается в регистр сравнения OCR2A таймера 2. Таймер формирует 8-битный PWM на частоте 31.25 кГц, который подается на ключевой каскад, формирующий постоянное напряжение питания вентилятора необходимого для поддержания скорости уровня.

Описание будет дополнено.

Links:
  1. Обсуждение на форуме Diod.club
  2. Обсуждение на форуме Radiokot
  3. Демонстрационный ролик DSS-90 на Youtube
  4. Демонстрационный ролик DFS-90 на Youtube
  5. Посты в ЖЖ на тему DSS-90 и DFS-90: 1, 2
Downloads:
dss-90_v04.pdf (360 kB) - схема и плата DSS-90.
dfs-90_v04.pdf (392 kB) - схема и плата DFS-90.
pidlook.pdf (475 kB) - руководство пользователя сервисной программы.
history.zip (19 kB) - история изменений.
dxs-90_hex.zip (33 kB) - прошивки DSS-90 и DFS-90.
dxs-90_source.zip (105 kB) - исходник (EWAVR 6.12).
dxs-90_pcad.zip (334 kB) - печатные платы (PCAD 2006).
dss-90_gerber.zip (65 kB) - печатные платы DSS-90 (Gerber).
dfs-90_gerber.zip (171 kB) - печатные платы DFS-90 (Gerber).
dxs-90_bom.zip (148 kB) - перечни компонентов.
dss-90_cdr.zip (293 kB) - коллекция рисунков панелей DSS-90 (cdr).
dfs-90_cdr.zip (220 kB) - коллекция рисунков панелей DFS-90 (cdr).
dss-90_pdf.zip (257 kB) - коллекция рисунков панелей DSS-90 (pdf).
dfs-90_pdf.zip (243 kB) - коллекция рисунков панелей DFS-90 (pdf).
pidlook.zip (537 kB) - сервисная программа PidLook.
pidlook_source.zip (84 kB) - исходник сервисной программы (C++ Builder 6).
Ридико Леонид Иванович www.leoniv.diod.club e-mail: wubblick@yahoo.com