Датчик температуры без калибровки на PT100 с HX711

SergeyR7
Идет загрузка
Загрузка
27.10.2020
5410
20
Техничка

Подпишитесь на автора

Подпишитесь на автора, если вам нравятся его публикации. Тогда вы будете получать уведомления о его новых постах.

Отписаться от уведомлений вы всегда сможете в профиле автора.

8

Датчик температуры без калибровки на PT100 с HX711

Есть много различных решений по подключению термосопротивления PT100. Сложность применения таких датчиков заключается в том, что их нельзя подключить напрямую к обычному АЦП микроконтроллера из-за их малого изменения сопротивления в зависимости от температуры.

Схемотехническое решение 

Относительно простой вариант схемы измерения сопротивления PT100, это использование специальной микросхемы, например, MAX31865. Принцип работы примерно такой: последовательно с термосопротивлением включается один прецизионный резистор, термосопротивление подключается ко входу АЦП, а опорное напряжение для АЦП берётся с прецизионного резистора. В этом случае, АЦП измеряет отношение сопротивления датчика к сопротивлению прецизионного резистора. Так как резистор достаточно точный, то и измерение сопротивления датчика получается достаточно точным. 

Решил попробовать применить для измерения температуры дешёвый дельта-сигма АЦП HX711 применяемый для весов. Но у него нет возможности подключить внешний источник опорного напряжения, зато есть два канала с большим коэффициентом усиления - вот это можно использовать для измерения сопротивления датчика. 

Схема подключения датчика PT100 выглядит примерно так: 

Датчик температуры без калибровки на PT100 с HX711

Единственная и необходимая прецизионная деталь в этой схеме - резистор R4. Жёстких требований к источнику питания не предъявляется. 

Тонкости HX711 

Процесс цикла измерения сопротивления датчика заключается в следующем: сначала измеряется падение напряжения на датчике, потом измеряется падение напряжения на прецизионном резисторе. Зная точный номинал резистора, вычисляем ток в измерительной цепи. Затем, зная ток в цепи и напряжение на датчике, вычисляем сопротивление датчика PT100. По сопротивлению датчика вычисляем температуру. 

Теперь об особенностях HX711. Если использовать АЦП без внешнего генератора, то на выбор есть две частоты выборки - 10 Гц и 80 Гц 

Учитывая, что нужно переключать каналы для измерения, получаем в 4 раза меньше частоту выборки. Оказывается, при переключении канала, АЦП запускает несколько циклов измерения для стабилизации значения, что отражено в документации. Следовательно, выбираем вариант с максимальной частотой выборки - 80 Гц. При необходимости, можно ещё поднять частоту выборки, подключив внешний генератор.

Применение для 3D принтера

Как обычно, просто измерять температуру не интересно. Нужно сделать что-то полезное. Как вариант, сделать цифровой преобразователь температуры для 3D принтера. Подключение HX711 напрямую к плате, требует изменения прошивки, на что я ещё не готов, т.к. прошивок много. Могу сделать преобразователь, у которого на входе PT100, а на выходе напряжение, соответствующее температуре с определённой зависимостью. Можно было бы имитировать работу стандартного для принтера датчика температуры NTC3950 100 кОм, но у него пологая характеристика на высоких температурах. Датчик PT100 позволяет измерять температуры в более широком диапазоне и для экструдера принтера будет достаточно температуры до +500 °С. В моей статье Вариант установки термосопротивления Pt100 на термоблок в комментариях, уже было обсуждение параметров такого цифрового преобразователя, поэтому решил сделать его сразу на 2 канала. Применение такого преобразователя требует изменение прошивки только в указании типа датчика температуры - установить кастомный датчик и указать для него таблицу преобразования напряжения в температуру. 

На плате предусмотрел два выхода с разным диапазоном выходного напряжения 3,3 В и 5,0 В - на разных платах управления 3D принтером разные диапазоны. Для плат на Atmega - 5,0 В, для плат на ARMах - 3.3 В. Это не точно, нужно проверять по схемам конкретных плат. 

Плата была давно разработана и заказана, на сборку не хватало сначала компонентов, а потом и времени. 

Датчик температуры без калибровки на PT100 с HX711

На плате предусмотрен интерфейс UART и CAN, свободные выводы микроконтроллера выведены на разъёмы.

Сравнение с NTC3950 

Чтобы проверить корректность работы преобразователя, решил сделать так. Одна плата работает с датчиком NTC3950 и нагревает сопло принтера до рабочей температуры 235 градусов. На второй плате (клиппер) вместо датчика NTC3950 подключил плату преобразователя, а датчик PT100 установлю на тот же термоблок. 

Ещё один вариант, подключить на одну плату с двумя каналами E0 и E1. Но как обычно, получился третий вариант. Плата подключена к COM порту и в логе видно, какая температура на датчике. Преобразование температуры в напряжение сделал пока по линейному графику, 0 °С соответствует 0 В, +500 °С соответствует +3,3 В на выходе с диапазоном до 3,3 В и 5,0 В соответственно, на выходе с диапазоном 5,0 В.

В клипере добавил свой тип сенсора с соответствующей таблицей преобразования: 

Датчик температуры без калибровки на PT100 с HX711

Датчик температуры без калибровки на PT100 с HX711

Дальше всё пошло не по плану… При подключении выхода преобразователя к входу датчика температуры выяснилось, что применённый операционный усилитель LM2904 не “тянет” выход, т.к. на входе датчика температуры стоит подтягивающий резистор на 1 кОм или 4,7 кОм. Вместо 0,15 В на выходе преобразователя, после подключения к плате с клиппером становится 0,66 В, что сильно искажает показания температуры. Напряжение 0,66 В соответствует 100 °С, но клипер почему-то показывает 168 °С, что выглядело ещё более странным. Надо разбираться с клипером, почему такие показания...

Итоги можно подвести следующие:

  • Применение HX711 для измерения температуры с помощью термосопротивления PT100 допустимо.
  • Получился преобразователь с цифровым выходом (интерфейс UART + CAN). 
  • Для прямого подключения преобразователя на вход для датчика температуры NTC3950 требуется замена ОУ на ОУ с более мощным выходом, либо снятие подтягивающего резистора на входе датчика, что не желательно.
  • Остаётся проблема с заданием графика преобразования значений АЦП в температуру на клипере. Нужно разбираться дальше с клипером. 

Подпишитесь на автора

Подпишитесь на автора, если вам нравятся его публикации. Тогда вы будете получать уведомления о его новых постах.

Отписаться от уведомлений вы всегда сможете в профиле автора.

8
Комментарии к статье