- 3Управление преобразователемMAX31865 по SPI
- Регистр конфигурации MAX31865 (адрес 0x00)
- Регистр статуса (или ошибок) MAX31865 (адрес 0x07)
- Регистры данных с термодатчика MAX31865 (адреса 0x01, 0x02)
- Конструктивные особенности датчиков температуры
- Виды датчиков температуры
- 4Управление преобразователем MAX31865c Arduino без библиотек
- 2Подключение преобразователяMAX31865 к Arduino
- Схемы подключения датчиков температуры
3Управление преобразователемMAX31865 по SPI
Конвертер MAX31865 управляется по интерфейсу SPI в режиме 1 (MODE1) или 3 (MODE3). Можно читать из и передавать в MAX31865 как по 1 байту, так и сразу по несколько.
Для управления необходимо знать карту его регистров. Регистров всего восемь:
Карта регистров преобразователя MAX31865
Здесь POR – это состояние регистра после подачи питания или сброса.
В первом столбце названия регистров. Во втором их адреса для чтения, а в третьем – для записи. В четвёртом столбце приведены исходные состояния регистров после сброса. В последнем – можно ли записывать в регистр (R/W, read/write) или только читать из него (R, read). Рассмотрим кратко все регистры.
Регистр конфигурации MAX31865 (адрес 0x00)
Первый из регистров – регистр конфигурации. Он задаёт режим работы чипа MAX31865, в том числе, включает измерение температуры.
Регистр конфигурации преобразователя MAX31865
Регистр статуса (или ошибок) MAX31865 (адрес 0x07)
В регистр статуса преобразователь MAX31865 выставляет следующие признаки (если они возникают):
Регистр статуса преобразователя MAX31865
Сбросить значение регистра состояния можно указав лог. “1” в разряде D1 регистра конфигурации, рассмотренного выше.
Регистры данных с термодатчика MAX31865 (адреса 0x01, 0x02)
Сюда MAX31865 записывает измеренные значения с термодатчика. Эти регистры доступны только для чтения. Преобразование считанного значения в градусы Цельсия рассмотрим чуть позже.
Можно настроить диапазон температуры, при выходе за который чип MAX31865 оповестит об этом событии (запишет в регистр статуса соответсвующий признак). По умолчанию используется весь доступный диапазон от 0x0000 до 0xFFFF.
Теперь, имея необходимую информацию о регистрах чипа, применим эти знания на практике. По традиции, сначала научимся работать с чипом MAX31865 посредством микросхемы FT2232 или аналогичной и программы SPI via FTDI.
Подключим модуль к порту A микросхемы FT2232 стандартным образом:
Должно быть как-то так. Правда, несмотря на то, что у меня 4-проводный датчик, в данном случае я подключил его по схеме 2-проводного. Т.е. 2 дополнительных провода на тех же клеммах, что и выводы терморезистора. Перемычки на модуле уже распаяны, и не было времени перепаивать их для 4-проводного режима. При таком подключении, конечно, теряется преимущество 4-проводного модуля, но для задачи тестирования и демонстрации принципов управления преобразователем это допустимо.
Модуль MAX31865 подключён к отладочной плате с FT2232
Теперь запустим программу SPI via FTDI. В меню «Устройство» выберем интерфейс SPI, если выбран не он. Программа произведёт поиск подключённых устройств FTDI и добавит их во вкладки. Нас будет интересовать порт A, который появится в первой вкладке. Нажмём на ней правой кнопкой мыши и нажмём «Подключить». Теперь зададим режим SPI: MODE1 (п.1 на рисунке). Остальные параметры здесь можно не трогать. В разделе записи поставим флажок «Команда» и введём команду 80 C6 (п.2 ). Нажмём кнопку «Записать», и программа отправит эту команду чипу MAX31865.
Настройка программы для работы с MAX31865
Почему команда 80 C6? Здесь 80 – это адрес для записи в регистр конфигурации, см. таблицу с картой регистров. А C6 – это значение регистра конфигурации. В двоичном виде 0xC6=1100_0110. Как было описано выше, здесь мы подаём ток на термодатчик, выставляем непрерывный режим измерения, указываем, что датчик подключён по 2-проводной схеме, что ошибки нужно обрабатывать автоматически, а также сбрасываем регистр статуса.
Физически на линиях данных интерфейса SPI во время отправки команды происходит вот что. Линия CS опускается в логический “0”. На линии CLK генерируются 16 тактовых импульсов для передачи 2-х байт информации (16 бит). Мастер (в данном случае микросхема FT2232H) в это время на линию SDI выставляет данные (это и есть наша команда 0x80 0xC6).
Временная диаграмма записи по SPI в регистр конфигурации MAX31865
После этого можно начать вычитывать данные температуры. Для этого в разделе чтения указываем команду 00 (п.3 ) (это адрес регистра, с которого начинаем читать), укажем размер вычитываемых данных 8 (п.4 ). Это количество регистров чипа MAX31865. Можно прочитать данные один раз, а можно в поле количества раз поставить 0 (п.5 ), что будет означать непрерывное чтение из MAX31865. Нажмём кнопку «Прочитать». Чтобы увидеть принимаемые данные, нажмём на кнопку с изображением таблицы, расположенную слева от кнопки чтения (п.6 ). Откроется окно с принимаемыми данными (п.7 ).
В данных нас в первую очередь интересуют байты по адресам 1 и 2. Это, собственно, и есть значение температуры в «попугаях», а точнее – в отсчётах АЦП. В данном случае 0x43FC. Байт 7, как мы помним, это значение регистра статуса. В примере он 0, а значит работа идёт без проблем и замечаний. Байты со 2 по 6 – это пороги температуры. Мы их не задавали, поэтому они имеют значения по умолчанию 0xFFFF и 0x0000.
Во время чтения физически на линиях: CS опускается в лог.”0″, на линии CLK генерируется столько тактовых импульсов, сколько байтов нужно прочитать и отправить, умноженное на 8. Например, в данном случае мы отправили однобайтовую команду 0x00, а затем запросили 8 байтов. Т.е. в сумме обмен состоит из 9-ти байтов. Значит, тактовых импульсов 9×8=72. Первый байт передаётся по линии SDI от ведущего (FT2232H) к ведомому, а следующие 8 уже от ведомого (MAX31865) к ведущему на линии SDO. И эти 8 байт как раз и есть содержимое 8-ми регистров MAX31865. На временной диаграмме это 0xC1 0x44 0x0E 0xFF 0xFF 0x00 0x00 0x00.
Временная диаграмма чтения по SPI всех регистров MAX31865, начиная с 0-го
Теперь нужно перевести полученное значение в температуру. MAX31865 возвращает код напряжения, измеренного аналого-цифровым преобразователем на терморезисторе. Сначала необходимо посчитать сопротивление термодатчика по формуле:RRTD = (ADC_Code × RREF) / 215 / 2, где ADC_Code – прочитанное из регистров 1 и 2 значение, RREF – сопротивление опорного резистора, а 215 – диапазон 15-разрядного АЦП. В приведённом случае, например, получим:
RRTD = 0x440E * 430 Ом / 32768 / 2 = 114,3 Ом.
Теперь, зная сопротивление термодатчика RTD, можно определить температуру. Обычно это делается по таблицам или рассчитывается по формулам. Но проще всего воспользоваться т.н. коэффициентом α. Это коэффициент, который показывает на сколько Ом изменяется сопротивление RTD при изменении температуры на 1°C. Обычно «альфа» равняется 0,385 или 0,392 (точное значение указывается в документации на датчик). В моём случае α=0,3851.
Указание коэффициента α на датчик PT100
Использование α рекомендуется в диапазоне температур от 0 до 100°C.
Таким образом, чтобы вычислить температуру по коэффициенту α, необходимо:
TRTD = (RRTD − 100) / α или
TRTD = (114,3 – 100) / 0,3851 = 37,13°C.
Конструктивные особенности датчиков температуры
По типу исполнения температурные датчики представлены сегодня в различном исполнении. В первую очередь это зависит от вида датчика и его применения в той или иной области, но чаще всего встречаются двух типов: с кабельным выводом и с коммутационной головкой.
Датчик с кабельным выводом представляет собой чувствительный элемент, выполненный из меди или платины, заключенный в корпус из латуни либо нержавеющей стали и имеющий кабельный вывод определенной длины с ПВХ либо силиконовой изоляцией. Могут быть как погружного, так и накладного типа.
В зависимости от модели сама монтажная часть имеет разную длину, также могут иметь резьбовое крепление.
Датчики с коммутационной головкой конструктивно выполнены в виде гильзы с накидной гайкой, в которую вставлен чувствительный элемент и коммутационной головки с клеммными выводами.
Головки могут быть как пластиковыми, так и металлического исполнения. Кроме того головки могут быть стандартного или увеличенного исполнения. Увеличенные головки применяются для встраиваемых нормирующих преобразователей, преобразующих значение измеренной температуры в унифицированный выходной сигнал постоянного тока, как правило 4-20мА.
По типу защиты они могут быть обычного исполнения и взрывозащищенного, в этом случае в маркировке присутствует обозначение Ex — знак соответствия стандартам взрывозащиты.
Также как и термосопротивления, термопары могут быть представлены в виде исполнения с коммутационной головкой и с кабельным выводом.
По исполнению рабочего спая относительно защитного корпуса бывают с изолированным рабочим спаем и неизолированным.
Для удобства монтажа в трубопроводы и быстрой замены датчика в случае необходимости, выпускается специальная арматура в виде бобышек и защитных гильз.
Бобышки ввариваются в трубопровод и в них вставляется защитная гильза, в которую уже в свою очередь вставляется датчик. Вместе с бобышкой в комплекте идет уплотнительная прокладка для обеспечения герметичности.
Виды датчиков температуры
Термосопротивления (ТС, RTD, Термометры сопротивления) — работа данного типа датчиков основана на изменении электрического сопротивления материалов в зависимости от внешней температуры. Такая зависимость называется номинальной статической характеристикой НСХ.
Основными материалами, из которых изготавливаются датчики являются платина, либо медь, иногда никель. Данные материалы обладают высоким температурным коэффициентом сопротивления и близкой к линейной зависимостью сопротивления от температуры. Наиболее часто встречаются датчики типа Pt100, Pt500, Pt1000, 50П, 100П, 50М, 100М . Буквы, указанные в характеристике обозначают материал, который лежит в основе датчика (Pt, П — платина, М — Медь), цифры обозначают сопротивление датчика при 0 градусов Цельсия.
Основными техническими характеристиками, на которые стоит обращать внимание при выборе термосопротивлений, являются точность измерений (класс допуска), диапазон измерений температур, номинальная статическая характеристика.
Полупроводниковые термосопротивления (Терморезисторы, Термисторы) – принцип работы данного вида термосопротивлений также основан на изменении сопротивления в зависимости от температуры, но в отличии от предыдущего вида он может иметь как прямую, так и обратную характеристику в зависимости от типа:
PTC (Positive Temperature Coefficient ) — термисторы с положительным температурным коэффициентом сопротивления (ТКС). Для данного типа характерно свойство резко увеличивать свое сопротивление при достижении заданной температуры
NTC (Negative Temperature Coefficient) — термисторы с отрицательным температурным коэффициентом сопротивления (ТКС) . Являются противоположностью PTC, при достижении заданной температуры их сопротивление резко уменьшается
Датчики на основе данных типов термисторов обладают большим температурным коэффициентом, но при этом имеют нелинейную характеристику.
Термопары ( Термоэлектрические преобразователи) — в основе работы данного типа лежит термоэлектрический эффект или эффект Зеебека. Он основан на возникновении при нагреве термо-ЭДС между концами двух разнородных по составу проводников, соединенных между собой. Под действием термо-ЭДС в замкнутой цепи начинает протекать электрический ток, пропорциональный разности температур.
Цепь, состоящая из двух различных проводников, или как их называют термоэлектродов, и будет называться термопарой. Спаянные концы проводников носят название горячий или рабочий спай, свободные концы проводников холодным спаем. Термо-ЭДС будет зависеть от разности температур между горячим и холодным спаями, а также от материала проводников. Подключив измерительный прибор к свободным концам, можно измерить разность потенциалов между двумя проводниками. При этом для компенсации погрешности нам необходимо знать температуру холодного спая.
В качестве материалов для проводников термопар широко используются хромель, платина, родий, константан, медь, железо, копель, алюмель. У любого соединения двух определённых сплавов есть своя зависимость между измеряемой температурой и напряжением на выходе термопары.
Обязательно надо отметить, что подключение термопар должно производиться компенсационными проводами, выполненными из тех же материалов, что и термопара, при этом соблюдая полярность подключения. Обычный медный провод в данном случае не подходит, так как создает дополнительную термо-ЭДС и тем самым вносит значительную погрешность в измерения. Обычно изоляция жил и оболочка провода в зависимости от материала маркируется разными цветами.
Цвет оболочки компенсационных проводов
Цвет изоляции жил компенсационных проводов
Некоторые сплавы, такие как копель, которые широко распространены у нас, в международном стандарте не указаны, так как не применяются при изготовлении термопар.
Термопары, наряду с термосопротивлениями, наиболее широко используются в различных промышленных технологических процессах. Во многом это объясняется их широким температурным диапазоном, кроме того, по сравнению с другими типами контактных датчиков, они способны выдерживать самые высокие температуры, что делает их порой просто незаменимыми.
Бесконтактные (Инфракрасные пирометры) — работа датчиков данного типа основана на способности тел излучать электромагнитную энергию в инфракрасном диапазоне. Хотя бесконтактные датчики применяются реже чем те же термопары или термосопротивления в следствии ряда причин, а именно их стоимости, чувствительности к состоянию измеряемой поверхности и т.д., тем не менее на сегодняшний день они все чаще используются в различных областях промышленности благодаря своим несомненным преимуществам — малое время отклика, соответственно высокое быстродействие, измерение температур в труднодоступных и опасных местах, измерение высоких температур вплоть до +3000°C.
Все вышеперечисленные виды датчиков, в той или иной степени, широко используются в различных технологических процессах. Помимо них существуют и другие виды температурных датчиков, например акустические или пьезоэлектрические, но их я рассматривать не буду, так как сталкиваться с ними приходилось очень редко.
4Управление преобразователем MAX31865c Arduino без библиотек
Итак, мы постигли основы работы с термодатчиком PT100 и преобразователем MAX31865. Наших знаний теперь хватит для того чтобы написать свою реализацию опроса резистивного температурного детектора. Подключим модуль с датчиком температуры к Arduino. Схема подключения была приведена выше в разделе 2.
Модуль с MAX31865 и термодатчиком PT100 подключены к Arduino Nano
Давайте немного разовьём идею. Один раз в секунду будем опрашивать температуру с MAX31865. Перед тем как возвращаеть измерение пользователю, будем смотреть вывод готовности данных DRDY и забирать данные только по готовности, а в случае неготовности данных оповещать об этом. Также добавим отключение датчика после каждого измерения до следующего.
Потому что если датчик работает в непрерывном режиме, протекающий по нему ток нагревает терморезистор, и показания температуры могут быть искажены.
Скетч будет такой.
После загрузки данного скетча в Arduino запустим монитор последовательного порта. В нём ежесекундно будет выводиться содержимое 8-ми регистров MAX31865, «сырые» показания АЦП чипа, сопротивление датчика PT100 и температура датчика:
Вывод скетча со значениями температуры датчика PT100
Конечно, весь вспомогательный вывод информации можно убрать из скетча, ведь нас интересует, по сути, только температура. Кроме того, в данный скетч можно добавить обработку ошибок из регистра статуса, управление настройками через конфигурационный регистр, выставление температурных порогов и т.д.
2Подключение преобразователяMAX31865 к Arduino
Есть несколько популярных библиотек Arduino для работы с MAX31865. Но наиболее популярная и проверенная, вероятнее всего, библиотека от Adafruit. Скачаем и установим её.
Откроем из примеров библиотеки единственный скетч для MAX31865 и загрузим его в память Arduino.
Загрузка примера из библиотеки для MAX31865
Текст скетча из библиотеки Adafruit (в будущем библиотека может измениться, как и пример в ней):
Обратите внимание, что в функции setup() необходимо указать, по какой схеме вы подключаете датчик. По умолчанию стоит трёхпроводная схема, что указывается константой MAX31865_3WIRE. Для 2- и 4-проводных подключений датчика названия констант, соответственно, MAX31865_2WIRE и MAX31865_4WIRE. Также следует обратить внимание на константы в начале скетча RREF и RNOMINAL, которые определяют референсное (опорное) сопротивление и номинальное сопротивление термодатчика, соответственно.
Теперь подключим модуль с MAX31865 к Arduino по такой схеме (соответствие выводов можно поменять в скетче):
Если запустить теперь монитор последовательного порта из Arduino IDE, то мы должны увидеть ежесекундно обновляющиеся показания термодатчика.
Схемы подключения датчиков температуры
У разных видов датчиков температуры различны и схемы подключения.
Так термосопротивления могут иметь 2-х проводную, 3-х проводную либо 4-х проводную схемы подключения. Такое разнообразие объясняется тем, что при измерении сопротивления датчика присоединенные провода имеют собственное сопротивление, которое вносит погрешность в измерения, особенно это актуально при измерении на больших расстояниях.
В случае двухпроводной схемы влияние этого дополнительного сопротивления не компенсируется, поэтому такую схему можно использовать там, где не требуется высокая точность измерений, либо на небольших расстояниях кабельных трасс.
Для уменьшения погрешности измерения применяют трехпроводную схему.
При такой схеме измеряется общее сопротивление датчика с проводами и сопротивление двух проводов и затем вычисляется разность этих значений, тем самым получается точное измеренное сопротивление датчика. Данная схема позволяет получить довольно высокую точность измерения даже при значительном влиянии сопротивления проводов. Но и в данной схеме может возникать погрешность измерения, связанная с разностью сопротивлений проводников из-за окисления контакта, неоднородности материалов, разного сечения проводов.
Четырехпроводная схема позволяет получить наиболее точные результаты измерений.
По такой схеме два провода подключаются к одному выводу датчика и два провода к другому выводу. На клеммы r1 и r4 подается измерительный ток от источника. Падение напряжения измеряется на клеммах r2 и r3, при этом если входное сопротивление измерительного прибора значительно больше сопротивления проводов (ток по этим измерительным проводам почти не течет) то значение этих сопротивлений практически не влияет на результат измерений.
Термопары подключаются к измерительным приборам по двухпроводной схеме компенсационными проводами, с соблюдением полярности подключения. Возможно также вместо компенсационных использовать провода, состоящих из материалов, сходных по своим термоэлектрическим характеристикам к материалам, из которых изготовлена термопара.
Датчики на основе PTC и NTC термисторов подключаются по стандартной двухпроводной схеме экранированным кабелем.
Такой способ передачи позволяет добиться высокой помехоустойчивости сигнала, усиления слабого сигнала с первичных датчиков, работать с сигналами с разным потенциалом за счет гальванической изоляции, передавать сигнал без потерь на значительные расстояния, обеспечить унификацию всех сигналов. Также в случае с термопарами, не требуется использование дорогостоящих компенсационных проводов, достаточно обычной медной пары.
Преобразователи могут быть выполнены в виде таблетки, встраиваемой в головку датчика, так и в виде отдельно устанавливаемого прибора.
Так как статья получилась довольно объемной и больше теоретической, примеры работы температурных датчиков с реальными устройствами, такими как ПЛК, терморегуляторы, Arduino, я оставлю на следующий раз.