Электронный термометр на четыре канала (Arduino UNO, LM235)
Принципиальная схема самодельного четырехканального термометра на Arduino UNO, 1602А и термодатчиках LM235, описание работы и программа. В некоторых случаях необходимо измерять температуру одновременно в нескольких местах. Например, в четырех -дома, на улице, на входе котла отопления, на выходе котла отопления.
Такой прибор очень просто и недорого можно сделать используя универсальный микроконтроллерный модуль ARDUINO UNO и двухстрочный ЖК-дисплей типа 1602А (на основе контроллера HD44780), а так же, четыре недорогих аналоговых термодатчика LM235. Все это автор приобрел на сайте «Aliexpress» за сумму ниже 600 рублей с учетом доставки.
Но, прежде всего, хочу напомнить, что ARDUINO UNO это относительно недорогой готовый модуль, - небольшая печатная плата, на которой расположен микроконтроллер ATMEGA328, а так же вся его «обвязка», необходимая для его работы, включая USB-программатор и источник питания. Тем, кто незнаком с ARDUINO UNO, советую сначала ознакомиться со статьями Л.1 и Л.2.
Принципиальная схема
Схема четырехканального термометра показана на рис. 1. Он предназначен для измерения температуры от -40°С до +120°С (согласно параметрам используемых датчиков). Как видно из схемы, к цифровым портам D2-D7 платы ARDUINO UNO подключен модуль жидкокристаллического индикатора Н1 типа 1602А. Питается ЖК-индикатор от стабилизатора напряжения 5V, имеющегося на плате стабилизатора напряжения 5V.
Рис. 1. Принципиальная схема четырехканального термометра на Arduino UNO, 1602А и термодатчиках LM235.
Термодатчки LM235 представляют собой физически, термозависимые стабилитроны. Напряжение на них численно равно температуре по шкале Кельвина, при расчете 0,01 V на один градус. То есть, при 0°С (273К) на них 2,73V.
Поэтому, фактически, остальная схема представляет собой четырехканальный вольтметр постоянного напряжения, с вычислителем, переводящим данные об измеренном напряжении в данные о температуре в градусах Цельсия.
Таблица 1.
Рис. 2. Исходный код программы для четырехканального термометра на Arduino UNO.
Измеряемые напряжения от термодатчиков Т1,Т2, Т3 и Т4 поступают на четыре аналоговых входа А1, А2, А3 и А4. Всего аналоговых входов шесть, - А0-А5, можно было выбрать любые четыре из них. В данном случае, выбраны А1, А2, А3, А4.
Напряжение на аналоговых портах может быть только положительным и только в пределах от нуля до напряжения питания микроконтроллера, то есть, номинально, до 5V. Выход аналогового порта преобразуется АЦП микроконтроллера в цифровую форму.
Для получения результата в единицах вольт, нужно его умножить на 5 (на опорное напряжение, то есть, на напряжение питания микроконтроллера) и разделить на 1024. Но, нам, во-первых, нужно получить результат не в единицах вольт, а в единицах равных 0,01 V, а во-вторых, перевести его в градусы Цельсия. Поэтому результат умножается на 5 и делится на 10,24, а затем из него вычитают 273.
Программа на языке C++ приведена в таблице 1. Для управления ЖК-индикатором решено было использовать порты с D2 по D7 платы ARDUINO UNO. В принципе, можно и другие порты, но я вот так, решил использовать именно эти. Для того чтобы индикатор взаимодействовал с ARDUINO UNO нужно в программу загрузить подпрограмму для его управления.
Такие подпрограммы называются «библиотеками», и в программном комплекте для ARDUINO UNO есть много разных «библиотек». Для работы с ЖК-индикатором на основе HD44780 нужна библиотека LiquidCrystal. Поэтому программа (таблица 1) начинается с загрузки этой библиотеки:
#include
Эта строка дает команду загрузить в ARDUINO UNO данную библиотеку. Затем, нужно назначить порты ARDUINO UNO, которые будут работать с ЖК-инди-катором. Я выбрал порты с D2 по D7. Можно выбрать другие. Эти порты назначены строкой:
LiquidCrystal led (2, 3, 4, 5, 6, 7);
После чего, программа переходит собственно к работе термометра. Для измерения температуры решено было использовать аналоговые входы А1, А2, АЗ и А4. Эти входы заданы в строках:
int analogInput=l;
int analogInputl=2;
int analogInput2=3;
int analog!nput3=4;
Для чтения данных с аналоговых портов используется функция analogRead. Чтение данных с аналоговых портов происходит в строках:
vout=analogRead(analogInput);
voutl=analogRead(analoglnputl);
vout2=analogRead(analogInput2);
vout3=analogRead(analogInput3);
Затем, производится вычисление значения температуры, выраженной в градусах Цельсия:
temp=vout*5.0/10.24-273.0;
templ=voutl*5.0/10.24-273.0;
temp2=vout2*5.0/10.24-273.0;
temp3=vout3 * 5.0/10.24-273.0;
В этих строках число 5.0 - это напряжение на выходе стабилизатора платы ARDUINO UNO. В идеале должно быть 5V, но для точной работы вольтметра это напряжение нужно предварительно измерить.
Подключите источник питания и измерьте достаточно точным вольтметром напряжение +5V на разъеме POWER платы. Что будет, то и вводите в эти строки вместо 5.0, например, если будет 4.85V, строки будут выглядеть так:
temp=vout*4.85/10.24-273.0;
templ=voutl*4.85/10.24-273.0;
temp2=vout2*4.85/10.24-273.0;
temp3=vout3 * 4.85/10.24-273.0;
Таким образом, в текст программы нужно внести изменения соответственно фактическому напряжению на выходе 5-воль-тового стабилизатора платы ARDUINO UNO. После этого прибор будет работать точно, и никакого налаживания или калибровки не потребует.
Каравкин В. РК-06-17.
Литература:
- Каравкин В. -Ёлочная мигалка на ARDUINO как средство от боязни микроконтроллеров. РК-11-16.
- Каравкин В. - Частотомер на ARDUINO. РК-12-16.
- PCBWay - всего $5 за 10 печатных плат, первый заказ для новых клиентов БЕСПЛАТЕН.
- Сборка печатных плат от $30 + БЕСПЛАТНАЯ доставка по всему миру + трафарет.
- Проекты с открытым исходным кодом - доступ к тысячам открытых проектов в сообществе PCBWay!
- Схема управления телевизором через приставку DVB-T2 с помощью ARDUINO UNO
- Схема термометра-приставки к мультиметру
- Внешние RС и LC-генераторы
- Детекторы радиоизлучения и микроконтроллер
