Преобразователь для термопары типа К

Электросхема
Сборка платы
Тестовый стенд
Калибровка
Что нужно для проекта
Тестовый скетч

Фото преобразователя
Версия для печати

Вернуться на главную

В современной промышленности и судоходстве наибольшее распространение получили термодатчики на базе термосопротивлений и термопар различных видов. Для подключения к контроллерам они требуют специальных преобразователей, один из которых, для термопары типа К, представлен на этой страничке.

Фото. Преобразователь для термопары типа К

Преобразователь для термопары типа К

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

В чем же трудности при создании преобразователя для термопары? Во-первых, большой коэффициент усиления : поднять напряжение с термопары необходимо более чем в 100 раз. От сюда вытекают проблемы, связанные с характеристиками применяемых операционных усилителей : усиливается не только полезный сигнал, но и шумы, наводки и напряжение смещения ОУ. Во-вторых, термо-ЭДС в термопаре возникает благодаря разнице между температурами холодного и рабочего спая, то есть замерив это напряжение, мы узнаем только разницу между температурами спаев, а чтобы определить полную величину, нам нужно знать еще и температуру холодного спая (или ее эквивалент напряжения), а значит нужен еще один датчик. В-третьих, термо-ЭДС нужно пересчитать в температуру, что требует от контроллера много памяти или вычислительных мощностей, если воспользоваться таблицами или полиномами из ГОСТ Р 8.585-2001.

Ниже представлена попытка решить или обойти эти проблемы.

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

ЭЛЕКТРОСХЕМА

Как работает схема. Термопара подсоединяется к клеммнице K-TYPE (1-плюс, 2-минус). Сигнал с разъема 1 фильтруется, усиливается в операционном усилителе LM358.1, снова фильтруется, после чего подается на аналоговый вход Arduino. Нижняя часть схемы на базе усилителя LM358.2 и микросхемы TL431A служит для создания опорного напряжения, чтобы "приподнять" сигнал с датчика. Это нужно для возможности замера отрицательных температур, а также, чтобы решить проблему напряжения смещения ОУ. Для компенсации температуры холодного спая используется термистор MF52. Он выполнен отдельным модулем и на этой схеме не показан.

Электросхема преобразователя для термопары типа К

Электросхема преобразователя для термопары типа К

Рассмотрим назначение элементов схемы подробней.

  • Термопара подсоединяется к клеммнице K-TYPE (1-плюс, 2-минус).
  • RC-фильтра : R1-C1, R5-C3, R7-C5.
  • Конденсаторы C2, C6 и С4 также используются для фильтрации.
  • Коэффициент усиления ОУ задается резисторами POTI1+R3 и R2. Как рассчитать их номиналы :
    1. Определяемся с диапазоном замера, например -10ºС ... +200ºС.
    2. Накидываем запас -20ºС ... +220ºС.
    3. Это диапазон относительно 0ºС (как в таблицах ГОСТ). Термопара же меряет относительно температуры холодного спая. Возьмем для расчетов эту температуру за +25ºС (типичная комнатная). Тогда наш диапазон превратится в -45ºС ... +195ºС.
    4. По таблице из ГОСТ Р 8.585-2001 для термопары типа К находим соответствующую этим температурам термо-ЭДС : -1,709 мВ ... +7,939 мВ.
    5. Соответственно, полный диапазон в милливольтах 1,709+7,939=9,648.
    6. Для уменьшения коэффициента усиления возьмем внутреннее опорное напряжение Arduino 1,1 вольт, тогда коэф. усиления будет равен 1100/9,648=114.
    7. Подбираем резисторы : 1,5К и 170К. Для возможности регулировки усиления вместо 170К берем два последовательно соединенных резистора : 120К и подстроечный 100К, выставленный на 50К.
  • Далее, для замера отрицательных температур, нам нужно "приподнять" напряжение с термопары на 1,709 мВ. Если делать по простому, то можно взять напряжение 1,1 вольта с пина AREF Arduino (оно там появится при установке внутреннего опорного 1,1 вольта в скетче), а затем пустить его на делитель напряжения, который снизит его до нужных нам 1,709 мВ. Но здесь есть две проблемы : во-первых, пин AREF будет занят под датчик температуры холодного спая, во-вторых, делитель напряжения должен иметь коэффициент ослабления 1100/1,709=643, что очень много. Поэтому я решил разбить ослабление на два этапа, а также сделать его регулируемым.
    1. Сначала напряжение 5 вольт с Arduino или шилда через резистор R4 подается на микросхему TL431A, представляющую из себя источник опорного напряжения. Если замкнуть контакты Reference (1) и Сathode (3), то на выходе мы получим 2,5 вольта.
    2. Далее эти 2,5 вольта пойдут на делитель напряжения R8 - POTI2, который снизит напряжение в 11 раз. Благодаря наличию подстроечного резистора можно менять коэффициент делителя.
    3. Затем сигнал фильтруется в RC-фильтре R7-C5.
    4. После чего поступает в операционный усилитель LM358.2, который выполняет функцию повторителя напряжения (буфера).
    5. На выходе с ОУ стоит еще один делитель напряжения R9 - R6. Номиналы резисторов обеспечивают снижение напряжения со степенью приблизительно, как на усилителе LM358.1.
    6. Конденсатор С4 обеспечивает дополнительную фильтрацию сигнала.
  • Номиналы резисторов в схеме опорного напряжения подбираются так, чтобы 2,5 вольта напряжения с TL431A снизить до 1,709 мВ отрицательного напряжения (по модулю).
  • Питание на усилитель LM358 подается с Arduino или питания аналоговых пинов, если вы используете шилд. Там напряжение более стабильное.
  • В схеме есть возможность использовать двухполярное напряжение для питания ОУ. В этом случае снимите перемычку, идущую на 4-ю ножку LM358 и подайте на нее отрицательное напряжение, например с такого модуля, представленного на сайте. Внимание! Использование двухполярного питания в этой схеме несет определенную опасность : при случайном обрыве провода положительного питания LM358 (ножка 8) на вход Arduino прийдет отрицательное напряжение в несколько вольт, что может вывести контроллер из строя.

СБОРКА ПЛАТЫ

Схема пайки элементов преобразователя температуры представлена на рисунке ниже. За базу взята макетная плата 45х60 мм. Конечно вы можете расположить элементы по другому и более компактно.

Схема пайки преобразователя температуры на макетной плате

Схема пайки преобразователя температуры на макетной плате

Примечания :

  1. Микросхема LM358 устанавливается в панель DIP8. Хотя вы можете сразу впаять ее в плату.
  2. Все подводы и отводы кроме термопары выполнены в трех вариантах : клеммница, штыревой соединитель "папа" и "мама" для проводов Dupont.
  3. Мощность резисторов 0,25 ватт.
  4. Конденсаторы керамические.
  5. Клеммницу для подсоединения термопары выбирайте самую большую и прочную.

ТЕСТОВЫЙ СТЕНД

Для проверки работы преобразователя температуры вы можете собрать тестовый стенд, схема которого представлена ниже.

Схема подключения преобразователя температуры

Схема подключения преобразователя температуры

Управлять системой можно с помощью трех кнопок : НАСТРОЙКИ, ВВЕРХ, ВНИЗ. Рассмотрим их функции подробно :

Кнопка НАСТРОЙКИ

При нажатии этой кнопки вы попадете в меню настроек. Продолжая нажимать эту кнопку, вы будете последовательно переходить по пунктам меню. После последнего пункта вы снова выйдите в основной экран. Изменение параметров осуществляется кнопками ВВЕРХ и ВНИЗ. Изменение цифровых параметров сразу принимается системой, подтверждение не нужно.

Пройдемся по пунктам меню Настройки.

  • MinVolt=XXX (minimum voltage) : вольтаж с аналогового порта датчика температуры, переведенный в цифровой вид, соответствующий нижней точке температурной характеристики.
  • MinTemp=XXXºC : (minimum temperature) : соответствующая нижней границе характеристики температура в ºC. На самом деле это разница между температурой рабочего спая и холодного спая.
  • MaxVolt=XXX (maximum voltage) : вольтаж с аналогового порта датчика температуры, переведенный в цифровой вид, соответствующий верхней точке температурной характеристики.
  • MaxTemp=XXXºC : (maximum temperature) : соответствующая верхней границе характеристики температура в ºC. На самом деле это разница между температурой рабочего спая и холодного спая.
  • To=XX.XºС : номинальная температура термистора в ºС (берется из datasheet). Обычно 25ºС.
  • Ro=XXXXX.X Om : сопротивление термистора при номинальной температуре, Ом (берем из datasheet).
  • B=XXXX.X : константа термистора (берем из марки или datasheet).
  • Rdiv=XXXXX.X Om : сопротивление потенциометра POTI1 на плате термистора MF52, Ом. Его нужно замерить на плате.
  • SaveSet. (UP) : нажав кнопку ВВЕРХ, вы сохраните настройки программы в память контроллера. При перезагрузке контроллера (выключение - включение) именно эти настройки загрузятся в программу.
  • ReadSet. (UP) : нажав кнопку ВВЕРХ, вы перенесете настройки из памяти контроллера в программу.
  • Default (UP) : загрузка значений по умолчанию. При нажатии кнопки ВВЕРХ параметры, определенные в начале скетча, загрузятся в оперативную память PLC (в текущие настройки). Эта функция может быть полезна, когда вы запутались в регулировках и хотите все вернуть в исходное положение. Но есть и еще одна причина ее использования. Если вы на одну и ту же плату Arduino постоянно записываете скетчи разных проектов, возможна ситуация, когда параметры одного проекта запишутся в настройки другого. Конечно, это можно исправить, но представьте, что в параметре, где должно быть, например, число 10, стоит 32000. Вручную кнопками ВВЕРХ или ВНИЗ корректировать это очень долго, проще сбросить настройки к заводским, а уже затем их подправить.

Кнопки ВВЕРХ-ВНИЗ

Этими кнопками меняются значения параметров.

Индикация LCD

Верхняя строчка
"X=XX.X (XXX)" - разница температур между рабочим и холодным спаем в ºС. В скобках - входной сигнал с усилителя термопары, переведенный в цифровой вид (0...1023).

Нижняя строчка
"Т=XX.X (XX.X)" - итоговая температура датчика с компенсацией температуры холодного спая в ºС. В скобках - температура холодного спая в ºС, полученная с датчика MF52.

КАЛИБРОВКА ДАТЧИКА

В теории, для того, чтобы рассчитать температуру в точке замера, необходимо замеренное напряжение на термопаре перевести в разницу температур между рабочим и холодным спаем (по таблице из ГОСТ Р 8.585-2001 или по формуле из того же ГОСТа), а затем прибавить к полученному результату температуру холодного спая, полученного с датчика MF52. Для этого понадобится забить таблицу из ГОСТ в контроллер, на что его памяти может не хватить, или придется воспользоваться довольно пространной формулой, что может сильно загрузить PLC. Можно ли обойтись без этого и применить простую интерполяцию по двум точкам?

Давайте проверим точность замера при таком допущении. По расчетам выше, крайние точки диапазона замера напряжения лежат в пределах от -1,709 мВ до +7,939 мВ при температурах рабочего спая от -45ºС до +195ºС (температуру холодного спая берем за 0ºС, как в таблице). Если предположить, что характеристика термопары линейная, то в ее центре мы получим +3,115 мВ при +75ºС. Сверимся с таблицей : при +3,115 мВ по таблице мы получим +76,35ºС. Разница в 1,35ºС, что составляет 0,56% от всего диапазона замера (240ºС).

Посмотрев на график характеристики термопары типа К, можно заметить, что небольшой перелом линейности происходит в нулевой точке. Если калибровать датчик только по положительной части характеристики от 0 мВ до +7,939 мВ при температурах рабочего спая от 0ºС до +195ºС, то в средней части этого диапазона мы должны иметь +3,9695 мВ при температуре +97,5ºС. Сверившись с таблицей, при +3,9695 мВ мы получим +96,94ºС. Погрешность составляет 0,56ºС или 0,28% от диапазона измерения.

Я думаю, что такая погрешность не является критичной при обычном использовании данного преобразователя температуры (нагревательные приборы, котлы). К тому же всегда можно применить программную поправку для корректировки температуры в рабочей области прибора.

Фото. Проверка преобразователя для термопары типа К

Проверка преобразователя для термопары типа К

Итак, опишем процесс калибровки преобразователя. Прежде всего, установите модуль термистора MF52 как можно ближе к месту подсоединения проводов термопары (холодный спай). После включения контроллера проверьте показания температуры термистора. При необходимости скорректируйте. Туда же поднесите датчик термопары (рабочий спай), чтобы температуры обоих спаев и термистора были одинаковы. В этом случае термо-ЭДС термопары будет равна нулю. Но так как мы "подняли" напряжение с термопары, чтобы иметь возможность замерять отрицательные температуры, в верхней строчке в скобках будет какое-то число - это вольтаж с аналогового порта датчика температуры, переведенный в цифровой вид. Занесите это число в MinVolt, а в MinTemp 0ºС (ноль). Это будет нижняя точка температурной характеристики датчика.

Далее нагрейте чайник или потер с водой, доведя ее до кипения, и опустите в нее датчик. Цифру в скобках верхней строчки экрана занесите в MaxVolt. В MaxTemp вбейте температуру, равную 100ºС минус температура холодного спая. Ее можно взять из нижней строчки экрана в скобках. Если все прошло нормально, в нижней строчке под буквой "Т" вы получите итоговую температуру датчика (разница температур между рабочим и холодным спаем плюс температура холодного спая, полученная с датчика MF52).

Результаты замеров в скетче могут выглядеть подобным образом :

  • float Min_Volt = 151;
  • float Min_Temp = 0;
  • float Max_Volt = 464;
  • float Max_Temp = 72;

Внимание! Если после замера температуры в кипящей воде вы захотите и дальше продолжить измерения и калибровку, обязательно тщательно просушите датчик термопары, особенно, если он выполнен в оплетке. Иначе испаряющаяся с датчика вода даст сильные искажения (остудит термопару ниже реальной температуры воздуха).

Если вам надо поднять или опустить характеристику термопары, воспользуйтесь потенциометром POTI2. Чтобы расширить или сузить диапазон работы преобразователя, измените коэффициент усиления с помощью потенциометра POTI1.

ЧТО НУЖНО ДЛЯ ПРОЕКТА

Термопреобразователь

  • макетная плата под пайку 45х60 мм - 1 шт
  • клеммница двойная с шагом 5,08 мм - 3 шт
  • клеммница двойная с шагом 7,62 мм (для подсоединения термопары) - 1 шт
  • резистор 470 Ом (0,25 Вт) - 1 шт
  • резистор 1K (0,25 Вт) - 1 шт
  • резистор 1,5K (0,25 Вт) - 1 шт
  • резистор 2,2K (0,25 Вт) - 1 шт
  • резистор 10K (0,25 Вт) - 3 шт
  • резистор 52K (0,25 Вт) - 1 шт
  • резистор 120K (0,25 Вт) - 1 шт
  • резистор подстроечный многооборотный типа 3296 (datasheet) на 20К - 1 шт
  • резистор подстроечный многооборотный типа 3296 на 100К - 1 шт
  • конденсатор керамический 100 нФ - 3 шт
  • конденсатор керамический 4,7 мкФ - 3 шт
  • операционный усилитель LM358 (datasheet) - 1 шт
  • панелька DIP-8 - 1 шт
  • источник опорного напряжения TL431 (datasheet) - 1 шт
  • провод типа AWG - 15 см
  • штыревой соединитель - 6 шт
  • разъем PBS - 6 шт
  • перемычка (jumper) - 1 шт

Тестовый стенд

  • PLC Arduino UNO (datasheet) - 1 шт
  • Sensor Shield v 5.0 (datasheet) - 1 шт
  • понижающий DC-DC преобразователь типа LM2596 (не менее 2А) (datasheet) - 1 шт
  • LCD-дисплей 1602 (datasheet) + модуль I2C - 1 шт
  • кнопка тактовая с колпачком (datasheet) - 3 шт
  • макетная плата под пайку 35х50 - 1 шт (для монтажа кнопок)
  • резистор 10 кОм (0,25 Вт) - 3 шт
  • стойка мама-мама М3х15 - 8 шт (для монтажа LCD-дисплея и самодельного термопреобразователя)
  • стойка мама-мама М3х10 - 7 шт (для монтажа термопреобразователя и модуля термистора)
  • гайка М3 - 50 шт и более в зависимости от способа крепления вышеуказанных элементов
  • болт М3х15, М3х10 - 20 шт и более
  • провод Dupont мама-мама или папа-мама (20 см) - 20 шт и более в зависимости от типа пинов соединяемых элементов
  • провод типа AWG - 50 см (соединение штекер - DC-DC преобразователь - Sensor Shield)
  • штекер питания DC 2.1 мм с клеммной колодкой папа и мама - 1 пара (для подключения шилда)

ТЕСТОВЫЙ СКЕТЧ

Ниже представлен скетч системы управления. В этом окне он неудобочитаем, поэтому скачать его в формате ino вы можете по этой ссылке. Обратите внимание, если вы захотите подать на LM358 двухполярное питание, то его отрицательную часть можно сформировать с помощью ШИМ-сигнала от Arduino и специального модуля. Для его работы в скетче есть несколько закомментированных строк.

Для работы этого скетча вам понадобятся дополнительные библиотеки :

  • EEPROM.h - библиотека работы с памятью (она нужна для чтения и записи наших настроек в энергонезависимую память Arduino). Это стандартная библиотека, она входит в комплект среды программирования Arduino IDE.
  • Wire.h - библиотека для работы с протоколом I2C. Это тоже стандартная библиотека, ее устанавливать не нужно.
  • math.h - библиотека с математическими формулами. Это стандартная библиотека, ее устанавливать не нужно.
  • LiquidCrystal_I2C.h - библиотека для работы с LCD по протоколу I2C. Скачать.

Если есть возможность, проверьте эти библиотеки на наличие обновлений.