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

Вывод с DS18B20 на LCD дисплей

Задача

  • Вывести показания с датчика температуры DS18B20 на LCD дисплей 1602
  • Усложнить задачу, вывести изменение температуры с момента перезагрузки
  • Вывести температуру с двух датчиков и разницу между ними

Базовые уроки

Подключение

  • Дисплей подключается к питанию и шине I2C
  • Датчик подключается на любой цифровой пин
    • Можно подключить несколько датчиков на один пин

Библиотеки

Программа 1

Для начала просто выведем температуру с датчика на дисплей.

Программа 2

Теперь будем выводить такую строку: “температура с момента запуска программы” -> “текущая температура”. Может быть полезным для исследования изменения температуры. Нам нужно завести переменную для хранения первого значения, назовём её prevT . При запуске программы запросим температуру с датчика, подождём, запишем результат в переменную и будем выводить на дисплей как в предыдущем примере:

Также можно вывести время, прошедшее с момента запуска программы, например в формате часы:секунды.

  • У нас есть функция millis() , которая возвращает время работы программы в миллисекундах.
  • millis() / 1000 даст нам секунды, запишем в переменную sec .
  • Чтобы получить количество секунд в пределах одной минуты, разделим секунды на 60: sec / 60
  • Чтобы получить количество минут из общего количества секунд – нужно выполнить операцию остаток от деления, опять же на 60: sec % 60
  • Чтобы выводить значения с ведущим нулём (например 03 вместо 3), сделаем простое условие: if (минуты
  • Обернём вывод времени в функцию для лучшей читаемости кода

Программа 3

Следующая задача – опросить два термометра и вывести их текущие показания и разность.

  • Для начала прошьём пример address_read из библиотеки microDS18B20
  • Поочерёдно подключим два датчика, увидим их адреса и скопируем в блокнот

Далее аналогично примеру one_pin_many_sensors записываем полученные адреса в массивы и создаём два датчика. Дальнейшая работа ведётся с двумя датчиками:

Домашнее задание

  • Избавиться от delay() , использовать асинхронную конструкцию с millis()
  • Выводить на дисплей сообщение, если температура выше заданного “порога”
  • Подключить два датчика без адресации (на разные пины)

Полезный пример?

25 Комментариев

Простой проект. Более того, мой первый. Чуть не наложил себе в руки из-за того что сделал всё чётко по инструкции, но на экране ничего не отображалось. Не буду описывать свои ухищрения, дело оказалось в настроечной крутилке позади экрана. Подкрутил и всё высветилось.

Именно поэтому в самом начале статьи дана ссылка на базовый урок по дисплею

Да мне ж быстрее-быстрее начать хотелось)

б….. Ты мой герой. Чуть не прослезился. Спасибо родной.

Мужики, значиться так. С Библиотекой microDS18B20 не хочет работать. Показывает температуру 0 градусов. С onewire (примеры) все хорошо. Причем месяц назад собирал, все работало. Подскажите, где косячу. Единственное что поменялось из условий – ядро и другой пк. Поставил gyvercor. Гугл говорит ставь резистор если 0, понятное дело ставил. Мультиметром тыкался все ок, напруга наваливает, все проходит и все контачит. Библа не отрабатывает.

попробуй на стандартном ядре, вдруг гуверкор слишком быстрый. Микродс18б20 актуальной версии работает отлично, даже на есп8266

microDS18B20 не работает на GyverCore!

починили, нужно обновить ядро и библу

плохой контакт с подтягивающим резистором (у меня тоже такое было)

на уно не работает пробовал перезагружать

поэтому паять надо

Алекс, почему в 1 примере 2 значения?

потому что первое запрос температуры а второе получение

Спасибо за подробный урок! Все сработало вместе с деталями из GyverKit PRO. Единственное, было бы классно для совсем новичков поизучать основы электрических законов. Что такое эти подтягивающие резисторы, почему они располагаются в схеме. Может быть добавлять в уроки принципиальную схему? Или ссылку на какой-то пакет с симуляцией электро деталей?

базовые уроки по электронике будут. А резисторы – требование из документации к датчику =)

Не понимаю в чём проблема. Упираюсь в это..

Скетч использует 5978 байт (19%) памяти устройства. Всего доступно 30720 байт.
Глобальные переменные используют 272 байт (13%) динамической памяти, оставляя 1776 байт для локальных переменных. Максимум: 2048 байт.
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 1 of 10: not in sync: resp=0xad
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 2 of 10: not in sync: resp=0xad
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 3 of 10: not in sync: resp=0xad
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 4 of 10: not in sync: resp=0xad
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 5 of 10: not in sync: resp=0xad
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 6 of 10: not in sync: resp=0xad
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 7 of 10: not in sync: resp=0xad
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 8 of 10: not in sync: resp=0xad
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 9 of 10: not in sync: resp=0xad
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 10 of 10: not in sync: resp=0xad
Problem uploading to board. See https://support.arduino.cc/hc/en-us/sections/360003198300 for suggestions.
Неверная библиотека найдена в D:\Arduino\libraries\firmware: нет заголовочных файлов (.h), найденных в D:\Arduino\libraries\firmware
Неверная библиотека найдена в D:\Arduino\libraries\libraries: нет заголовочных файлов (.h), найденных в D:\Arduino\libraries\libraries
Неверная библиотека найдена в D:\Arduino\libraries\schemes: нет заголовочных файлов (.h), найденных в D:\Arduino\libraries\schemes
Неверная библиотека найдена в C:\Users\holod\OneDrive\Документы\Arduino\libraries\firmware: нет заголовочных файлов (.h), найденных в C:\Users\holod\OneDrive\Документы\Arduino\libraries\firmware
Неверная библиотека найдена в C:\Users\holod\OneDrive\Документы\Arduino\libraries\libraries: нет заголовочных файлов (.h), найденных в C:\Users\holod\OneDrive\Документы\Arduino\libraries\libraries
Неверная библиотека найдена в C:\Users\holod\OneDrive\Документы\Arduino\libraries\schemes: нет заголовочных файлов (.h), найденных в C:\Users\holod\OneDrive\Документы\Arduino\libraries\schemes

библиотеку переустанови и проверь точка запятые поставлены везде

У меня такая штука была, при чём на одних картинках было нормально, на других сбой синхронизации (так вроде это называется, где-то нагуглил). Помогло заменой загрузчика на “Old Bootloader”

Alex помоги прикрутить датчик без i2c. СПАСИБО.

Как к этому скетчу прикрутить HC-SR04 чтоб работали в паре

В примере 1 и 2 выводит температуру 2.00 вместо 20.00 или 24.00 в чем проблема?

Разобрался сам, надо использовать библиотеку вместо

Источник

Считывание показаний датчиков с помощью Arduino

Легкость, с которой Arduino может получить значения с датчиков, является одной из особенностей, которая делает эти платы такими полезными.

Датчики – это устройства, которые преобразуют физические величины, например, яркость света или температуру, в электрическую величину. Например, термопара выдает напряжение, пропорциональное её температуре. Существует множество различных датчиков:

  • датчик освещенности;
  • датчик движения;
  • датчик температуры;
  • датчик магнитного поля;
  • датчик силы тяжести;
  • датчик влажности;
  • датчик вибрации;
  • датчик давления;
  • датчик электрических полей;
  • звуковой датчик;
  • датчик положения.

Эти датчики используются в тысячах различных применений, включая промышленность, машины, космонавтику, автомобили, медицину и робототехнику.

Эксперимент 1: датчик расстояния

В этом эксперименте мы будем использовать датчик расстояния Sharp GP2Y0A21YK для управления яркостью светодиода.

Инфракрасный (IR) датчик SHARP

Необходимые комплектующие

  • 1 x Arduino Mega2560;
  • 1 x макетная плата;
  • 1 x светодиод;
  • 5 x перемычка;
  • 1 x резистор 470 Ом;
  • 1 X датчик расстояния Sharp GP2Y0A21YK.

Схема соединений

Датчик расстояния Sharp может обнаруживать объекты на расстояниях от 10 до 80 см. Он излучает импульс инфракрасного света, а затем определяет угол, на котором отражается этот свет. Чем дальше объект, тем ниже выходное напряжение. Если датчик не принимает отраженный свет, то напряжение на его выходе составит 0 В. Если объект находится на расстоянии 10 см или ближе, выходное напряжение будет равно 5 В (в этом эксперименте мы подаем на датчик напряжение питания 5 В).

Выход датчика подключается к аналоговому входу Arduino. Аналого-цифровой преобразователь (ADC) Arduino затем преобразует это напряжение в значение от 0 до 1023. Затем это значение преобразуется в значение от 0 до 255, и это число используется для установки коэффициента заполнения сигнала на широтно-модулированном (ШИМ) выходе, который управляет яркостью светодиода. В результате, чем ближе объект к датчику расстояния, тем ярче светит светодиод.

Видео

Эксперимент 2: датчик температуры

В этом эксперименте Arduino будет измерять температуру с помощью микросхемы датчика LM35. LM35 – это низковольтная микросхема, которая требует питания постоянным напряжением от +4 до +20 вольт. Это идеально, потому что мы можем подключить датчик к выводу +5V на плате Arduino. LM35 имеет всего 3 вывода: два для питания и один для аналогового выхода. Выходной вывод представляет собой аналоговый выход, напряжение на котором линейно пропорционально температуре в градусах Цельсия. Выходной сигнал находится в диапазоне от 0 до 1,5 вольта. Выходное напряжение 9 В соответствует температуре 0°C, и при каждом повышении температуры на один градус оно увеличивается на 10 мВ. Чтобы преобразовать выходное напряжение в температуру, вам необходимо просто разделить выходное напряжение в мВ на 10. Например, если выходное напряжение равно 315 мВ (0,315 В), температура равна 31,5°C.

Назначение выводов микросхемы LM35

Необходимые комплектующие

  • 1 x датчик температуры LM35;
  • 2 x светодиод;
  • 1 x коробок спичек;
  • 2 X резистор 470 Ом;
  • 1 x Arduino Mega2560;
  • 1 x макетная плата;
  • 10 x перемычка.

Схема соединений

Выходной вывод LM35 (вывод 2) подключен к выводу A0 Arduino. Код использует функцию analogRead() для преобразования выходного напряжения в число между 0 и 1023. Умножение этого числа на 0.48828125 преобразует его в градусы Цельсия, которые и отображаются в мониторе последовательного порта.

Видео

Источник

Как вести мониторинг температуры процессора, видеокарты, диска в режиме реального времени (т.е. видеть датчики с показателями в системном трее)

Я приобрел новый ноутбук и заметил, что он временами начинает сильно шуметь и становится горячим. Как можно не просто посмотреть температуру, а отслеживать ее в режиме реального времени (чтобы можно было увидеть датчики температуры в системном трее, рядом с часами). То есть, чтобы свернуть любую игру по кнопке Windows и тут же увидеть температуру. Можно ли так?

Конечно, можно. Что касается того, что ноутбук шумит и греется — то наверняка это происходит во время запуска различных игр (кодировании видео, работе с графикой и пр.). Кстати, возможно вам поможет также статья, касающаяся высокой температуры и перегрева устройства — https://ocomp.info/greetsya-noutbuk.html

Теперь ближе к теме.

Примерно вот такое окно мы выведем на панель задач || в качестве примера

Отслеживание и мониторинг температуры в режиме реального времени

Вариант 1: HWiNFO64

Окно с информацией о ЦП (HWiNFO64)

Отличная бесплатная утилита для просмотра характеристик компьютера (единственный минус: в ней достаточно много различных показателей, который могут «запутать» начинающих пользователей).

Чем примечательная утилита HWiNFO64 — в ее арсенале есть целый раздел «Sensors» , в котором представлены многие показатели нагрузок и данные с датчиков, которые можно мониторить в режиме реального времени.

Покажу на примере их настройку.

Итак, после запуска программы — откройте меню «Sensors» . 👇

HWiNFO64 — смотрим показания сенсоров

Далее перед вами предстанет большая таблица с различными показателями: температурой, вольтажом, загрузкой ЦП, ОЗУ, таймингом и т.д. Показываются не только текущие значения (см. колонку Current), но и максимальные, минимальные, и средние (Average).

Чтобы вынести нужные показатели в трей — откройте настройки (см. скрин ниже). 👇

Настройки — HWiNFO64 / Кликабельно

Далее перейдите в раздел «System Tray» и выберите нужный показатель (просто выделите эту строчку), поставьте галочку «Show in Tray» (показать в трее).

В своем примере я вынес показатель «CPU (Tcti/Tdie)» —т.е. текущий показатель температуры процессора. Разумеется, вынести можно сразу 5÷10 показателей датчиков в трей.

Выносим нужные показания в трей

Ниже на скрине показано, как будут выглядеть эти датчики (вполне наглядно и удобно 👀). 👇

Температура, загрузка ЦП, ОЗУ и пр. показатели — HWiNFO64

Если вам утилита HWiNFO64 показалась запутанной, рекомендую обратить на AIDA64 (это аналогичное приложение, но не такое нагруженное и на русском языке. ).

Видео-инструкция

Вариант 2: AIDA64

Одна из самых известных утилит для просмотра характеристик компьютера. Что касается температуры — то для ее просмотра достаточно открыть вкладку «Компьютер/Датчики» . См. скрин ниже. 👇

AIDA64 — просмотр температуры (вкладка датчики)

Чтобы вынести нужные датчики в трей: откройте настройки программы, затем перейдите в раздел «Значки датчиков» и отметьте галочками те из них, которые нужны. После сохранения настроек — в трее появятся показания датчиков (пример приведен на скрине ниже). 👇

Датчики с нужными показателями выносятся в трей — AIDA64 / Кликабельно

Если вы хотите, чтобы AIDA64 загружалась автоматически при включении компьютера — то в разделе настроек «Общие» поставьте галочку напротив пункта «Загружать AIDA64 при старте Windows» (таким образом, после включения ПК — вы сразу же сможете мониторить за показаниями температуры).

AIDA64 — загружать утилиту при старте Windows

Вариант 3: что касается игр

Для мониторинга за температурой видеокарты и процессора непосредственно в играх — есть одна замечательная утилита FPS Monitor (аналог: PlayClaw 6).

FPS Monitor

Температура ЦП и видеокарты — утилита FPS Monitor

С помощью этой утилиты можно определить нагрузку на каждое ядро процессора, видеокарту, ОЗУ, сеть. Кроме того, она показывает температуры видеокарты (GPU) и ЦП (CPU) в режиме реального времени. Пример ее работы можете увидеть на фото выше/ниже.

FPS Monitor отлично помогает диагностировать причину тормозов в играх — достаточно посмотреть, на загрузку основных компонентов (кстати, утилита также подсвечивает красным те компоненты, которые уже загружены на 80-100%).

Макс. нагрузка на ядро ЦП

Диагностика. Как узнать из-за чего тормозит игра: из-за процессора, видеокарты или ОЗУ — https://ocomp.info/tormozit-igra-diagnostika.html

Дополнения, как всегда, приветствуются.

Источник

Adblock
detector