Цифровой термометр на Arduino и датчике температуры LM35

Термометры – это полезные устройства, которые используются человечеством уже долгое время. В этой статье мы спроектируем цифровой термометр на базе платы Arduino Uno и датчика температуры LM35, который будет измерять температуру окружающей среды в режиме реального времени и выводить ее значение на жидкокристаллический (ЖК) дисплей 16x2.

Цифровой термометр на Arduino и датчике температуры LM35: внешний вид

Данное устройство условно можно разделить на три модуля: первый измеряет температуру используя температурный датчик LM35, второй конвертирует измеренное значение температуры в привычную нам шкалу Цельсия (выполняется с помощью Arduino), а третий отображает это значение температуры на ЖК дисплее. Условно весь этот процесс можно представить в виде следующей диаграммы:

Диаграмма работы устройства

Все процессы на этой диаграмме проходят под контролем Arduino. Датчик температуры LM35 используется для измерения окружающей температуры и обеспечивает при изменении температуры на 1 градус изменение напряжения на 10 мВ на своем выходном контакте. Этот факт можно достаточно просто проверить с помощью вольтметра, подсоединив Vcc к pin 1, землю (Ground) к pin 3 и выходное напряжение к контакту pin 2 датчика LM35. К примеру, если напряжение на выходе датчика LM35 равно 250 мВ, то это означает, что температура окружающей среды примерно равна 25 градусам Цельсия.

Arduino считывает выходное напряжение датчика температуры со своего аналогового контакта A0 и выполняет вычисления, направленные на конвертацию этого аналогового значения напряжения в цифровое значение температуры. После проведения вычислений Arduino передает полученное значение температуры на ЖК дисплей 16x2.

Необходимые компоненты

Arduino

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

Внешний вид платы Arduino Uno

Датчик температуры LM35

LM35 (купить на AliExpress) представляет собой датчик температуры с 3 контактами, который обеспечивает изменение напряжения на своем выходе на 10 мВ при изменении температуры на 1 градус Цельсия. Верхний предел измерения температуры у него составляет около 150 градусов Цельсия. На 1-й контакт датчика подается питающее напряжение, 2-й контакт – выход датчика, а на 3-й подается земля.

Номер контакта Функция Обозначение
1 Питающее напряжение; 5V (+35V to -2V) Vcc
2 Выходное напряжение (+6V to -1V) Output
3 Земля (0V) Ground

Внешний вид датчика температуры LM35 и обозначение его контактов

ЖК дисплей

ЖК дисплеи 16x2 (купить на AliExpress) широко используются в различных проектах поскольку они дешевы, легко доступны, относительно небольшие по размеру и просты в подключении. ЖК дисплей 16x2 имеет 2 строки и 16 столбцов, что означает что он состоит из 16 блоков по 5x8 точек в каждом. Он имеет 16 контактов, из которых 8 контактов для передачи данных (D0-D7) и 3 контакта для управления, которые обозначаются как RS, RW and EN. Остальные контакты используются для подачи питания, контроля яркости и подсветки.

Внешний вид ЖК дисплея 16x2

Питание

Плата Arduino уже имеет встроенный модуль подачи питания, поэтому здесь нам необходимо только подсоединить адаптер на 9 или 12 вольт к плате, или можно запитать ее от USB-порта компьютера или ноутбука.

Работа схемы

Схема устройства представлена на следующем рисунке.

Схема цифрового термометра на Arduino и датчике температуры LM35На представленной схеме ЖК дисплей 16x2 напрямую подсоединен к плате Arduino в 4-битном режиме. Контакты ЖК дисплея с обозначениями RS, EN, D4, D5, D6, D7 подсоединены к цифровым контактам Arduino 7, 6, 5, 4, 3, 2. Датчик температуры LM35 подсоединен к аналоговому контакту A0 платы Arduino.

Исходный код программы

Чтобы написать код программы для нашего цифрового термометра, мы должны написать код для Arduino, датчика температуры LM35 и ЖК дисплея 16x2. Сначала подключим библиотеку для ЖК дисплея, а затем определим контакты данных и управления для подключения ЖК дисплея и датчика температуры.

Код для инициализации ЖК дисплея

После получения аналогового значения напряжения на аналоговом входе A0 мы считываем это значение и сохраняем его в переменной с помощью команды float analog_value=analogRead(analog_pin). После этого мы преобразуем его в цифровое значение температуры по следующей формуле:

float Temperature=analog_value*factor*100

где factor=5/1023, analog_value – аналоговое значение напряжение с выхода датчика температуры.

То есть получаем код вида:

Код для преобразования значения температуры

Символ градуса формируем используя стандартный метод с помощью следующего кода:

Код для формирования символа градуса

Далее представлен полный исходный код программы нашего цифрового термометра.

Видео, демонстрирующее работу термометра

(1 голосов, оценка: 5,00 из 5)
Загрузка...
2 198 просмотров

Комментарии

Цифровой термометр на Arduino и датчике температуры LM35 — 18 комментариев

  1. DHT11 - определение температуры 0–50 °С. Использовал такой датчик - погрешность более 2-х градусов при заявленной 2%. Не пойдет.
    Можно попробовать LM35 в помещении, устройство будет по типу термостата, но программа будет на мой взгляд сложнее, так как больше будет условий.
    Также нужно отображение ступеней регулирования на светодиодном индикаторе от 0 до 19.
    По ссылке посмотрите индикаторы, которые у меня есть
    https://disk.yandex.ru/d/7n9J0SywQYsegQ
    На мой взгляд лучше использовать 8-ми разрядный на MAX7219, чтобы сразу отображалась температура и ступень регулирования. Но это на Ваше усмотрение.

    • Может быть вам просто неудачный экземпляр DHT11 попался, ведь заявленная погрешность у него ведь небольшая, по вашим же словам. Посмотрел ваши индикаторы, но пока не могу сказать ничего конкретного - вы из меня какого то монстра электроники делаете, а я таковым не являюсь )) У меня на сегодняшний день достаточно много пробелов в современной электронике. Да, в процессе работы над данным сайтом я их достаточно быстро устраняю, но все равно пробелов осталось немало.
      Мне кажется, вашим индикатором нам стоит заняться в последнюю очередь. Сначала работу датчика температуры вместе с Ардуино нужно проверить, потом добиться правильной регулировки электронного потенциометра в зависимости от температуры. Все эти процессы удобнее отладить, на мой взгляд, с помощью монитора последовательного порта, а уж потом переходить к вашему индикатору

      • Вы понимаете в программировании Arduino, а эти индикаторы соединяются с ним по двум и трем проводам.
        Датчик DHT11 все же не пойдет. LM35 и MCP41010 уже отправлены.
        Возможная проблема с MCP41010. У него минимальное сопротивление может быть от 50 до 100 Ом согласно даташиту, А нужен 0, как у обычного переменного резистора в крайнем левом положении при включении по схеме потенциометра.
        В том, как Вы видите начало работы, я полностью согласен.

  2. Заказал LM35 и MCP41010 (10кОм).
    Пределы соответствия (примерные):
    температура - 40 ... + 17 градусов С - 20 значений сопротивления на выходе электронного потенциометра (количество ступеней регулирования конкретного электронного потенциометра привести к 0 и 19 значениям сопротивления);
    +17 градусов С - максимальное сопротивление электронного потенциометра - отопление отключено;
    - 40 градусов С - минимальное сопротивление электронного потенциометра - отопление максимально.
    Проверка изменения температуры:
    если изменение на 3 градуса (от предыдущего значения), то регулировка на одну ступень;
    время, через которое начинается регулировка при изменении температуры на 3 градуса, 5 секунд.
    Выводы на Ваше усмотрение.

    • Я примерно суть понял, но давайте делать это последовательно. Сначала проверим работу датчика температуры с помощью монитора последовательной связи, потом попробуем осуществить пару крайних регулировок вашего электронного потенциометра и так далее. А то мы далеко друг от друга, рядом сесть не получится, поэтому сразу с места в карьер вашу задачу у нас решить не получится. Сколько примерно до вас LM35 будет ехать?

      • Про доставку не могу сказать, сейчас долгая отправка, но думаю максимум 3 недели.

        • Он в спам попал, вызволил его оттуда. Спамеры - ужасное зло современного мира, сколько из-за них нормальных людей страдает. Я бы для спамеров смертную казнь ввел

  3. И желательно бы индикатор 4-х разрядный светодиодный (крайний правый разряд - значок градуса).

    • Вам индикатор нужен семисегментный с 4-мя разрядами или обычный светодиодный. Смотрите, в данной статье ведь описан способ, с помощью которого можно вывести значок градуса на экран обычного ЖК дисплея 16х2. Вам это подойдет или нужно что то другое?

      • Семисегментный с 4-мя разрядами для отображения температуры без запятой, левый крайний разряд для знака минус, правый крайний для знака градус.

          • Индикатор такой подойдет.
            А вот LM35 вряд ли подойдет, т.к. соединительный кабель должен быть не менее 4-5 м, а этот датчик аналоговый, и из-за этого возникают проблемы в виде неустойчивых (скачущих) показаний при длинных соединениях особенно при больших отрицательных температурах в отличие от цифрового DS18B20. Вы знаете об этом?

            • Нет, к сожалению я об этом не знал. Я могу, конечно, попробовать посмотреть информацию о подключении датчика DS18B20 к плате Ардуино на других сайтах, но мне в этом случае посложнее будет вам помочь в программировании. А датчик DHT11 вам может подойти или нет? Чем он хуже DS18B20? Просто с сайта, откуда я большую часть статей перевел, почему то нигде не используется датчик DS18B20, а ребята на том сайте статьи пишут достаточно талантливые, знают толк в электронике

  4. Датчик LM35 никогда не использовал и опыта никакого. Какой электронный потенциометр думаете использовать, чтобы мне заказать вместе с датчиком?

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

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *