Датчик температуры без калибровки на PT100 с HX711
Есть много различных решений по подключению термосопротивления PT100. Сложность применения таких датчиков заключается в том, что их нельзя подключить напрямую к обычному АЦП микроконтроллера из-за их малого изменения сопротивления в зависимости от температуры.
Схемотехническое решение
Относительно простой вариант схемы измерения сопротивления PT100, это использование специальной микросхемы, например, MAX31865. Принцип работы примерно такой: последовательно с термосопротивлением включается один прецизионный резистор, термосопротивление подключается ко входу АЦП, а опорное напряжение для АЦП берётся с прецизионного резистора. В этом случае, АЦП измеряет отношение сопротивления датчика к сопротивлению прецизионного резистора. Так как резистор достаточно точный, то и измерение сопротивления датчика получается достаточно точным.
Решил попробовать применить для измерения температуры дешёвый дельта-сигма АЦП HX711 применяемый для весов. Но у него нет возможности подключить внешний источник опорного напряжения, зато есть два канала с большим коэффициентом усиления - вот это можно использовать для измерения сопротивления датчика.
Схема подключения датчика PT100 выглядит примерно так:
Единственная и необходимая прецизионная деталь в этой схеме - резистор 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 В. Это не точно, нужно проверять по схемам конкретных плат.
Плата была давно разработана и заказана, на сборку не хватало сначала компонентов, а потом и времени.
На плате предусмотрен интерфейс UART и CAN, свободные выводы микроконтроллера выведены на разъёмы.
Сравнение с NTC3950
Чтобы проверить корректность работы преобразователя, решил сделать так. Одна плата работает с датчиком NTC3950 и нагревает сопло принтера до рабочей температуры 235 градусов. На второй плате (клиппер) вместо датчика NTC3950 подключил плату преобразователя, а датчик PT100 установлю на тот же термоблок.
Ещё один вариант, подключить на одну плату с двумя каналами E0 и E1. Но как обычно, получился третий вариант. Плата подключена к COM порту и в логе видно, какая температура на датчике. Преобразование температуры в напряжение сделал пока по линейному графику, 0 °С соответствует 0 В, +500 °С соответствует +3,3 В на выходе с диапазоном до 3,3 В и 5,0 В соответственно, на выходе с диапазоном 5,0 В.
В клипере добавил свой тип сенсора с соответствующей таблицей преобразования:
Дальше всё пошло не по плану… При подключении выхода преобразователя к входу датчика температуры выяснилось, что применённый операционный усилитель LM2904 не “тянет” выход, т.к. на входе датчика температуры стоит подтягивающий резистор на 1 кОм или 4,7 кОм. Вместо 0,15 В на выходе преобразователя, после подключения к плате с клиппером становится 0,66 В, что сильно искажает показания температуры. Напряжение 0,66 В соответствует 100 °С, но клипер почему-то показывает 168 °С, что выглядело ещё более странным. Надо разбираться с клипером, почему такие показания...
Итоги можно подвести следующие:
- Применение HX711 для измерения температуры с помощью термосопротивления PT100 допустимо.
- Получился преобразователь с цифровым выходом (интерфейс UART + CAN).
- Для прямого подключения преобразователя на вход для датчика температуры NTC3950 требуется замена ОУ на ОУ с более мощным выходом, либо снятие подтягивающего резистора на входе датчика, что не желательно.
- Остаётся проблема с заданием графика преобразования значений АЦП в температуру на клипере. Нужно разбираться дальше с клипером.
Еще больше интересных статей
Снятие экструдера на Qidi Plus 4 и небольшой, но полезный нюанс от Qidi
Подпишитесь на автора
Подпишитесь на автора, если вам нравятся его публикации. Тогда вы будете получать уведомления о его новых статьях.
Отписаться от уведомлений вы всегда сможете в профиле автора.
Замена керамического нагревателя в 3D принтере QIDI X Plus 4 (франкенштейн)
Подпишитесь на автора
Подпишитесь на автора, если вам нравятся его публикации. Тогда вы будете получать уведомления о его новых статьях.
Отписаться от уведомлений вы всегда сможете в профиле автора.
Не происходил нагрев. Датчик...
G-CODE по-русски для 3D печати (Мини-справочник)
Подпишитесь на автора
Подпишитесь на автора, если вам нравятся его публикации. Тогда вы будете получать уведомления о его новых статьях.
Отписаться от уведомлений вы всегда сможете в профиле автора.






Комментарии и вопросы
Согласен, тут сразу врубиться....
Тоже решил такую штуку собрать...
Это дело уже персональное. Есл...
Доброго времени суток, товарищ...
Здравствуйте!!! Возник вопрос...
Здравствуйте уважаемые любител...
Вот такой почти детектив. На п...