Датчик температуры ds1820: Герметичный датчик температуры DS18B20 / Купить в Москве и СПБ с доставкой по России / Амперка

Содержание

Исправление ошибок, аппаратно вносимых цифровыми датчиками температуры DS1820

Геоинформационная система «Метео измерения онлайн» * Прогнозы погоды *

 Москва

 Санкт-Петербург

 Петрозаводск

 Мурманск

 Другие города. ..

 Архив погоды (СНГ)

 Погодная статистика

 Карта осадков

 Алатырь

 Анапа

 Канаш

 Краснодар

 Краснодар-2

 Лоухи

 Междуреченск

 Москва

 Москва-2

 Новороссийск

 Новочебоксарск

 Оренбург

 Петрозаводск

 Ростов-на-Дону

 Самара

 Санкт-Петербург

 Санкт-Петербург-2

 Сегежа

 Тольятти

 Тулун

 Чебоксары

 Архив графиков (П-ск)

 Комфорт. температура

 Индекс жары

 Другие статьи

 Стартовые странички

 Давление и здоровье

 Температурная карта

 Сотрудничество

 Другие проекты

 Ссылки

 История создания

 Коллектив lab127

 Священное место

 Форум


Сервер функционирует благодаря спонсорской помощи фирмы «Диаско».

Исправление ошибок, аппаратно вносимых цифровыми датчиками температуры DS1820

На главную

О сайте


   Датчик температуры DS1820 производства фирмы Dallas Semiconductors имеет малую погрешность измерений только в диапазоне от 0 до 70°. Для того, чтобы узнать, чему соответствуют его показания, скажем, при -30°, нужно построить градуировочную кривую. В документации, сопутствующей DS1820, приведен следующий график зависимости ошибки измерителя от реальной температуры.

    Красная линия на нем отображает отклонение от истинного значения температуры для нашей партии датчиков. Для того, чтобы программно скорректировать показания измерителей, нужно данную кривую выразить в математической форме, т.е. аппроксимировать ее полиномом. В данном случае был использован степенной ряд. Коэффициенты при степенях иксов были подобраны с помощью MS Excel (модуль «поиск решения»). На графике синяя линия соответствует полиному третьей степени, уравнение которого написано под ним. Таким образом, полученные данные с измерителя каждый раз поправляются на ту или иную величину с учетом именно этой формулы.

Tотклон.=-0.027-0.01889*T+0.

0008159*T2-0.00000749*T3

   Отнимая от значений измерителя величину поправки, получаем истинное значение температуры. Т.е.

Tистин.=Т-Tотклон., или

Tистин.=0.027+1.01889*T-0.0008159*T2+0.00000749*T3



 Поддержка: Lab127 team

Design by SMITANA

Серия ds18b20 (Maxim Integrated)

Maxim Integrated

Общие характеристики

РазделИнтегральные датчики температуры
Диапазон измеряемых температур
Интерфейс

Документация на серию ds18b20

  • найти ds18b20.
    pdf

    Товары серии ds18b20

    НаименованиеiУпаковкаТочностьКорпусТип
    DS18B20 (MAX)

     


    DS18b20 Waterproof temperature sensor (HKSHAN)

     

    1 шт
    DS18B20 LEAD (MAX)

     

    1 шт TO-92-3
    DS18B20+ (MAX)

     

    2000 шт TO-92-3
    DS18B20+PAR (MAX)

     

    2000 шт TO-92-3
    DS18B20+T&R (MAX)

     

     

    в ленте 2000 шт TO-92-3
    DS18B20+TCKJ (MAX)

     

     

    DS18B20-SL+T&R (MAX)

     

     

    1 шт TO-92-3
    DS18B20-SL+TCKJ (MAX)

     

     

    DS18B20-SL/T&R (MAX)

     

     

    DS18B20/GG8 (MAX)

     

     

    1 шт TO-92-3
    DS18B20U (MAX)

     

    1 шт uSOP-8
    DS18B20U+ (MAX)

     

    в линейках 50 шт uSOP-8 UMAX8
    DS18B20U+T&R (MAX)

     

    в ленте 3000 шт uSOP-8 UMAX8
    DS18B20U/T&R (MAX)

     

    DS18B20Z (MAX)

     

    в линейках 100 шт SO-8
    DS18B20Z+ (MAX)

     

    в линейках 100 шт SOIC8150
    DS18B20Z+T&R (MAX)

     

    в ленте 2500 шт SOIC8150
    DS18B20Z/T&R (MAX)

     

    1 шт

    ds18b20 публикации

    11 мая 2017

    статья

    Датчик температуры LMT01 производства компании Texas Instruments весьма популярен среди разработчиков. Он позволяет с высокой точностью – до ±0,5°С – измерять температуру в диапазоне –50…150°С. При этом главной особенностью сенсора… …читать

    12 ноября 2015

    статья

    За счет сочетания малых размеров, характеристик и цены датчики Холла являются «рабочими лошадками» для решений, где требуется измерение магнитного поля. Компания Texas Instruments выпустила первое поколение микросхем, построенных на эффекте… …читать

    12 ноября 2015

    статья

    Существует множество решений для измерения температуры – термисторы, металлические резистивные датчики (RTD), термопары, интегральные схемы. Компания Maxim Integrated предлагает широкий спектр уникальных решений для реализации любого метода… …читать

    02 октября 2015

    новость

    Компания Texas Instruments представила новый цифровой датчик температуры LMT01 с разрешающей способностью выше 0.1°С и работающий по двухпроводной линии. Температура выдается в виде количества импульсов, которое прямо пропорционально измеряемой. .. …читать

    08 сентября 2015

    новость

    Термореле RT–12–16 от известной российской компании Line Energy используется для установки и поддержания необходимой температуры в помещениях методом замыкания/размыкания электрических цепей нагревающих или охлаждающих приборов. Это… …читать

    03 октября 2012

    статья

    Известным феноменом метрологической науки является существенная неравномерность доли измерений различных физических величин в промышленности. Например, определение давления составляет приблизительно 10% от всех измерений, в то время, как… …читать

    Датчик — DS18B20

    О датчике

    Производитель — Maxim Integrated (Dallas Semiconductor).

    У каждого датчика DS18B20 есть уникальный адрес, который позволяет подключить несколько датчиков на одну общую линию связи. Это крайне удобно для использования в системах управления отоплением, мониторинга температуры в зданиях и холодильниках.

    Документация

    Технические характеристики

    Температура измеряемой среды (общепромышленное исполнение) -55…+125 °С
    Абсолютная погрешность измерения температуры ± 0,5°С – в диапазоне -10…85 °C
    ± 1 °C – в диапазоне -30…100 °C
    ± 2 °C – в диапазоне -55…125 °C
    Напряжение питания от +3.0 до +5.5В
    Длина кабеля 5,0 м
    Степень пылевлагозащиты IP65
    Поддерживаемые интерфейсы и протоколы 1-Wire
    Гарантийный срок 12 месяцев

    1s»> Как устроена система мониторинга

    Подключите до 10 датчиков
    температуры DS18B20 / DS18S20

    Контролируйте ситуацию
    с телефона и компьютера

    Расчет стоимости системы мониторинга

    Пустые строки

    Строки-разделы

    Итого:

    Заказать Копировать

    Сохранить в PDF

    Ссылки на этот калькулятор и результат расчетов.
    Предложение не явлется офертой — подтверждайте у менеджера.

    Нажимая кнопку «Отправить заявку», Вы соглашаетесь на обработку персональных данных

    Удобный интерфейс системы

    Простой интерфейс — ничего лишнего

    Простой интерфейс — ничего лишнего

    Вы сами можете выбрать показатели и элементы
    управления для основного экрана объекта.

    Хранение и выгрузка данных до 5 лет

    Кроме среднего значения, отображается минимум и
    максимум, что существенно упрощает восприятие
    графиков.

    Уникальная система обработки тревог

    У каждой тревоги есть свой собственный статус
    обработки. Оператор может отмечать принятые
    меры для устранения проблемы.
    Эти сообщения приходят на смартфон владельцу
    объекта, и он может отвечать на них.

    Отображение объектов на карте

    Наглядное отображение всех объектов на одном
    экране в реальном времени с быстрым просмотром
    активных тревог.

    Отображение показателей схеме объекта

    Простой механизм размещения показателей
    на картинке позволяет быстро создать
    мнемосхему без программистов.

    Таблица с актуальными показателями

    Все о текущем состоянии объектов в одном месте.
    Возможна сортировка по выбранному показателю.

    Простая самостоятельная настройка системы

    Мы оставили только самые нужные и
    интуитивно-понятные опции с подробным
    пояснением при наведение на вопросик.

    Получить демо-доступ к системе

    Приложения для iOS и Android

    9 преимуществ мониторинга с Unimon Преимущества


    мониторинга с Unimon

    Нет затрат на приобретение
    сервера, лицензий ПО и зарплату
    системному администратору

    Поддержку инфраструктуры для хранения
    и бесперебойного доступа к данным —
    мы берем на себя (SLA 99%)

    Для работы с системой
    достаточно браузера.

    Не надо устанавливать специальное ПО
    на рабочие компьютеры.

    Можно работать через
    приложение на смартфоне.

    Есть бесплатные мобильные
    приложения для Android и iOS.

    Доступ к системе из любой
    точки мира, где есть Интернет.

    добно для сотрудников в разъездах
    и руководства.

    Уникальный механизм
    обработки тревог.

    Оператор отражает действия по
    устранению, а руководитель видит
    это на мобильном.

    Территориально-распределенные
    объекты на одном экране.

    Не требуется много серверов
    и их синхронизации.

    Не надо заниматься
    обновлением ПО.

    У вас всегда актуальная и стабильная версия системы.

    Серверную инфраструктуру предоставляет
    «Mail.ru Group».

    Данные хранятся на территории РФ,
    в независимых ЦОДах уровня TIER III,
    с тройной репликацией.

    Возможность доработки системы
    под ваши задачи.

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

    Скачать презентацию

    8s»> Как мы работаем

    Подбираем оптимальный контроллер и датчики

    Настраиваем систему под Ваши задачи

    Доставка по РФ

    Монтаж системы «под ключ»

    Самовывоз в Москве

    Техподдержка и обновление

    Рассчитать стоимость доставки

    Рассчитать стоимость монтажа

    Нажимая кнопку «», Вы соглашаетесь на

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

    — водонепроницаемый (DS18B20) — SEN-11050

    4.

    6 из 5

    На основании 26 оценок:

    Сейчас просматриваются все отзывы покупателей.

    Показаны результаты со звездным рейтингом.

    3 из 3 нашел это полезным:

    не работал, пока я не добавил 10k подтягивания. Дух.

    от c2builder проверенный покупатель

    Компания SFE отправила мне электронное письмо с просьбой написать обзор этого датчика. Я подключил его (я думал) в соответствии с инструкциями, и он не работал. Я прочитал техническое описание внутренней части, и мне показалось, что подтягивающий резистор нужен только в том случае, если часть потребляет энергию от линии передачи данных. Поскольку я давал 5 В на красный провод, я не думал, что это относится ко мне. После того, как я ввел свой первоначальный (недовольный) отзыв, я прочитал некоторые другие отзывы. Я не видел, чтобы у других было (много) проблем, и один рецензент отметил, что ему пришлось добавить «подтягивание на 10 км». Я сделал это, и это сработало! Теперь я счастлив 🙂 и попытаюсь выяснить, как запустить 2 датчика с одного порта Arduino.

    6 из 6 нашел это полезным:

    Только что прибыл

    от участника #850053 проверенный покупатель

    Только что достал из коробки. Конечно, было бы неплохо, если бы был маленький кусочек бумаги, на котором было бы указано, какой провод какой. Я собираюсь угадать: Красный = В+ Черный = заземление Белый = данные Но зачем заставлять меня гадать?

    3 из 3 нашел это полезным:

    Отлично работает, но здесь нужно лучшее описание/подключение

    от Кейси проверенный покупатель

    Пример кода, поставляемый SparkFun, не самый лучший, но с небольшой настройкой он может работать нормально. Я бы скорее предложил эту библиотеку, поскольку она также поддерживает несколько датчиков (и не пытается использовать ЖК-дисплей): https://github.com/milesburton/Arduino-Temperature-Control-Library

    Также требуется стандартная библиотека One Wire в диспетчере библиотек Arduino.

    Это был мой первый реальный опыт работы с 1-Wire. Описание, похоже, указывает на то, что «никаких внешних компонентов не требуется», и вам просто нужно подключить его и работать. Не совсем. Между белой линией передачи данных и красной линией питания требуется подтягивающий резистор. Я бросил туда 10 тысяч, но я видел, что использовались более низкие значения. По какой-то причине мне не удалось настроить внутреннюю подтяжку AVR для работы с ним.

    Что хорошо в 1-Wire и этом компоненте, так это то, что вы можете подключить их все к одному контакту. У каждого из них есть уникальный 64-битный адрес (который вам нужно «обнаружить»). Например, я смог подключить 3 датчика, подключив питание, землю и все линии данных к контакту 7.

    1 из 1 нашел это полезным:

    люблю эту маленькую вещь

    от пользователя #780201 проверенный покупатель

    Облегчает измерение температуры. 1 проводная шина тоже хороша. Легко использовать

    от участника #653136 проверенный покупатель

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

    0 из 1 нашел это полезным:

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

    от пользователя #69093 проверенный покупатель

    Это отличное воплощение DS18B20. Мы купили бы его тысячами, если бы могли получить техпаспорт на него для UL. Мне сказали, что технических данных нет, поэтому нам придется использовать другое устройство.

    Отличный товар!

    от участника #779273 проверенный покупатель

    Простота подключения и высокая прочность. Имейте в виду, что вы должны учитывать тепловые характеристики пластикового покрытия. Очень гибкий кабель

    Очень шелушащийся

    от участника № 293912 проверенный покупатель

    В большинстве случаев этот датчик показывает правильную температуру, но. .. (1) Примерно в 1 из каждых 30 показаний датчик не отвечает на поиск устройства 1-Wire. (2) Примерно в 1 из каждых 50 показаний датчик возвращает 65 535. (3) Примерно в 1 случае из каждых 100 показаний датчик показывает отклонение от фактической температуры на 0–20°C.

    Прекрасный продукт

    от участника #830218 проверенный покупатель

    Почти идеально. Прочная конструкция. Очень легко настроить для использования с Raspberry Pi… максимум 5-10 минут. Этот датчик требует экранирования для использования на открытом воздухе, но это не имеет большого значения. Единственное, что меня разочаровало, так это то, что длина кабеля короткая. Было бы здорово, если бы они были разных размеров.

    Отличные датчики

    от участника № 758867 проверенный покупатель

    Они отлично работают, и мне нравится длина 6 футов. У меня были проблемы с чтением 3 более коротких, которые я купил в Adafruit.

    Эста Буэно

    от участника № 503050 проверенный покупатель

    Магнифика

    Очень хороший

    от пользователя #688742 проверенный покупатель

    Быстрая и простая установка и эксплуатация

    Просто билет

    Боб Джи во ФЛОРИДЕ! проверенный покупатель

    Я использую их для контроля температуры в камере для расстойки хлеба — одна встроена в электрически нагреваемый слой кирпичей, а другая — в кастрюле с водой, которая создает теплую влажную среду для выращивания хлеба. Он оснащен процессором PICAXE 18M2+ с OLED-дисплеем AXE133Y и включает и выключает питание (120 В переменного тока) на 150-ваттный кабель для таяния снега, встроенный в кирпичи.

    Отличный водонепроницаемый датчик!

    от участника #894311 проверенный покупатель

    Датчик легко подключился и начал считывать показания. Он постоянно обеспечивал стабильные показания температуры при погружении в воду.

    Отличный датчик температуры.

    от участника #1104791 проверенный покупатель

    Очень точный датчик температуры, очень простой в настройке и использовании. Пока использую с Arduino Uno.

    Чрезвычайно точный и простой в использовании датчик

    от участника #105072 проверенный покупатель

    Я использую этот датчик с «вещью» esp8266, и это было очень легко сделать с помощью onewire. Я использую этот датчик в аквариуме с морской водой, и он выглядит действительно хорошо герметичным, поэтому меня не беспокоит воздействие агрессивной среды.

    Хорошие результаты в конце концов

    от thecatsandi проверенный покупатель

    Не хватает одной важной детали, подтягивающего резистора 4. 7K для провода передачи данных. В противном случае датчик работать не будет.

    После этого датчик работает нормально.

    Работает идеально!

    от пользователя #332763 проверенный покупатель

    Это прекрасно работает на моей погодной станции Raspbery Pi! Работает уже 3 года, измеряет температуру каждые 15 минут и ни одной проблемы. Я заказал еще один, чтобы пойти с метеостанцией в другое место.

    отлично, будьте осторожны с размером резистора

    от участника № 353013 проверенный покупатель

    Отличные и надежные. Будьте осторожны, чтобы правильно подобрать подтягивающий резистор. У меня был резистор на 2 кОм меньше, и датчики работали с ним нормально, но, возможно, это нагрузило их, и в конце концов они перестали сообщать точные значения температуры. Исправление размера резистора вернуло точность.

    Кроме того, Sparkfun делает все возможное, чтобы обеспечить техническую поддержку и даже запасные части. Супер супер впечатлен.

    Отличный датчик, отличный сервис

    от участника #1469130 проверенный покупатель

    Первый датчик, который я получил, был неисправен по прибытии, однако Sparkfun быстро отреагировал и отправил замену в течение пары дней с бесплатной двухдневной доставкой! Фантастический сервис и второй датчик работал отлично. На самом деле, я заказываю еще! Отлично подходит для аквариума или других приложений с длинным кабелем и простой настройкой.

    Отличный товар

    от участника #799183 проверенный покупатель

    Я пробую более дешевые продукты с Amazon, но все они терпят неудачу, особенно при температуре ниже нуля, поэтому я возвращаюсь к использованию датчиков SparkFun, чтобы сэкономить время и деньги

    Эти отлично работают!

    от cap9qd проверенный покупатель

    Я протестировал их с RaspberryPi, и они отлично работают!

    отличный и стоит своей цены

    от kbowerma проверенный покупатель

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

    Тайлер31 проверенный покупатель

    Эти датчики температуры очень легко подключить, и они дают точные измерения.

    Датчик температуры 1-wire DS1820 на Raspberry Pi (напрямую GPIO)

    en|de

    Martin Kompf

    Существует несколько возможностей для измерения внутренней или наружной температуры с помощью Raspberry Pi. В этой статье описывается версия с минимальным количеством внешних компонентов. Это основано на датчике температуры DS18S20 и программной эмуляции протокола 1-wire.

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

    DS18S20 и родственные DS18B20 и DS1822 интегральные схемы в ТО-92 корпус с датчиком температуры, аналого-цифровым преобразователем и 1-проводным интерфейсом. Упомянутые типы совместимы по выводам и по программному обеспечению, существенно различаются по точности измерения и цене. Три разъема (см. рисунок слева) — это земля (GND, контакт 1), данные (DQ, контакт 2) и рабочее напряжение (V DD , контакт 3).

    1, 2 или 3 провода?

    Термин «1-wire», конечно, вводит в заблуждение. Для опорного потенциала GND требуется как минимум вторая линия. Вы можете подключить V DD и GND и эксплуатировать датчик с паразитным источником питания от 3 до 5 вольт. В этом случае подключение цепи возможно с помощью простого двухжильного кабеля с витой парой.

    Но также возможно эксплуатировать DS1820 с активным блоком питания. Для этого потребуется трехжильный кабель, который также подключает V DD к рабочему напряжению от 3 до 5 вольт.

    Вы можете подключить несколько DS1820 параллельно к одной шине 1-wire. Каждый датчик имеет уникальный код, присвоенный производителем для идентификации самого себя.

    Решение о выборе паразитного или активного источника питания должно быть принято до начала проекта и должно быть тщательно обдумано. Меньшее усилие материала для двухжильного кабеля говорит в пользу паразитного питания. Однако это может привести к проблемам с множеством параллельных датчиков на шине, высокими температурами и длинными кабелями. Были и иногда бывают проблемы с некоторыми версиями драйвера ядра 1-wire под Linux из-за более критичного тайминга в случае паразитного питания.

    В случае сомнений и при высоких требованиях к надежности я всегда выбираю активное питание и необходимый трехжильный кабель.

    Raspberry Pi и 1-wire

    Измерение температуры с помощью Raspberry Pi и датчика температуры 1-wire DS1820 содержит список различных способов управления шиной 1-wire от Raspberry Pi. В этой статье описывается решение (1) с наименьшим количеством внешних схем. Вам нужен кроме датчиков только один резистор, так как это решение полностью имитирует протокол 1-wire в программном обеспечении.

    Пассивное паразитное питание (двухпроводной кабель)

    Подключение DS18020 к порту GPIO Raspberry Pi с паразитным питанием (двухпроводной кабель)


    Порт данных DQ DS1820 подключается напрямую к порту GPIO4 интерфейса GPIO Raspberry Pi. GND и V DD находятся на клемме заземления GND. Паразитное питание осуществляется с помощью подтягивающего резистора 4k7 между 3,3-вольтовым соединением 3V3 и GPIO4.

    Активный блок питания (трехжильный кабель)

    Подключение DS18020 к порту GPIO Raspberry Pi с активным питанием (трехжильный кабель)

    На макетной плате еще достаточно места для расширения


    Порт данных DQ DS1820 также подключен напрямую к порт GPIO4 интерфейса GPIO. GND подключается к порту заземления GND, тогда как V DD подключается к порту 3,3 вольта 3V3. Резистор между 3V3 и GPIO4 теперь служит только в качестве подтягивающего резистора для установки определенного потенциала на линии данных.

    Резистор, гнездовой разъем для подключения к порту GPIO и однопроводное соединение припаяны к небольшой макетной плате, которая находится непосредственно на порту GPIO. 1-проводное соединение может быть реализовано с помощью компактного углового гнездового разъема. Все это укладывается в корпус Raspberry Pi.

    Программные драйверы 1-wire

    Сначала необходимо активировать наложение дерева устройств (dto) для 1-wire. Для этого отредактируйте файл /boot/config.txt (с помощью sudo nano или другого редактора по вашему выбору) и добавьте следующую строку:

    dtoverlay=w1-gpio,gpiopin=4,pullup=вкл.
     

    Параметр pullup=on необходим только при паразитном питании, при активном питании (3-проводном) строка выглядит соответственно:

    dtoverlay=w1-gpio,gpiopin=4
     

    После необходимой перезагрузки используйте команду lsmod, чтобы убедиться, что необходимые модули ядра w1_gpio и w1_therm загружены:

    lsmod | grep w1
      w1_therm 20480 0
    w1_gpio 16384 0
    провод 36864 2 w1_gpio,w1_therm 
     

    В противном случае необходимо загрузить модули вручную. В более старых версиях ОС Raspbian это все еще требовалось регулярно:

    sudo modprobe w1-gpio pullup=1
    sudo modprobe w1-therm
     

    Здесь также параметр pullup=1 необходим только для паразитного питания. Чтобы ядро ​​загружало модули автоматически при запуске системы в будущем, вы должны добавить их в файл /etc/modules:

    # /etc/модули
    w1-gpio подтягивание = 1
    w1-терм
     

    Как я уже сказал, это необходимо только для более старых версий Raspbian. Текущая ОС Raspberry Pi загружает модули автоматически, если показанная выше опция dtoverlay присутствует в config.txt.

    Модули создают подкаталог для каждого датчика, расположенного чуть ниже /sys/bus/w1/devices. Имя каталога состоит из кода семейства датчика и его уникального идентификационного номера. Датчики типа DS1820 и DS18S20 имеют код семейства 10, DS18B20 — код 28, а DS1822 — 22. В каждом подкаталоге находится файл w1_slave, содержащий состояние датчика и значение измеренной температуры:

    компакт-диск /sys/шина/w1/устройства
    cd 10-000801b5*
    кошка w1_slave
     
    0f 00 4b 46 ff ff 06 10 0c : crc=0c ДА
    0f 00 4b 46 ff ff 06 10 0c t=7375 
     

    Файл состоит из двух строк, каждая из которых содержит шестнадцатеричный регистр-дамп микросхемы датчика. В конце первой строки находится контрольная сумма (CRC) и информация о правильности чтения (YES). Вторая строка заканчивается значением температуры в тысячных долях градуса Цельсия. Таким образом, в примере температура составляет 7,375 °C. Точность до трех знаков после запятой, конечно, только кажущаяся; в техническом описании DS18S20 указано, например, что точность измерения составляет всего ± 0,5 ° C. Фактическая температура составляет от 6,8 до 7,9 ° C.° C.

    База данных Round Robin RRDtool

    Для долговременной записи показаний температуры и комфортного построения графиков рекомендуется использовать RRDtool. В статьях Сбор данных о погоде с помощью USB WDE1 и Измерение температуры с помощью Raspberry Pi (последовательный порт USB) подробно объясняется этот инструмент.

    Сначала вам нужно установить RRDtool с помощью диспетчера пакетов на Raspberry Pi:

    sudo apt-get установить rrdtool python-rrdtool
     

    Второй установленный пакет python-rrdtool — это интерфейс Python для RRDtool, который используется позже. В начале работы с RRDtool стоит определение базы данных. В следующем примере создается база данных для двух датчиков температуры temp0 и temp1 . Цель состоит в том, чтобы хранить одно значение за четверть часа (900 секунд). Через десять дней (= 960 значений) происходит уменьшение до одного среднего, минимального и максимального значения в день. Время хранения этих ежедневных значений составляет десять лет (= 3600 значений):

    rrdtool создать температуру.rrd --шаг 900 \
    DS:temp0:GAUGE:1200:-40:80 \
    DS:temp1:GAUGE:1200:-40:80 \
    RRA:СРЕДНИЙ:0,5:1:960 \
    РРА:МИН:0,5:96:3600 \
    РРА:МАКС:0,5:96:3600 \
    RRA:СРЕДНИЙ:0,5:96:3600
     

    Сбор данных с помощью Python

    Скрипты Python считывают специальные файлы w1_slave и вставляют значения температуры в циклическую базу данных:

    #!/usr/бин/питон
    # -*- кодировка: utf-8 -*-
    импортировать re, os, rrdtool, время
    # функция: чтение и разбор файла данных датчика
    защита read_sensor (путь):
      значение = "У"
      пытаться:
        f = открыть (путь, "r")
        строка = f. readline()
        если re.match(r"([0-9a-f]{2} ){9}: crc=[0-9a-f]{2} YES", строка):
          строка = f.readline()
          m = re.match(r"([0-9a-f]{2}){9}t=([+-]?[0-9]+)", строка)
          если М:
            значение = ул (с плавающей запятой (м.группа (2)) / 1000,0)
        е.закрыть()
      кроме (IOError), e:
        print time.strftime("%x %X"), "Ошибка чтения", path, ": ", e
      возвращаемое значение
    # определяем пути к данным датчика 1-wire
    пути = (
      "/sys/шина/w1/устройства/10-000801b5a7a6/w1_slave",
      «/sys/шина/w1/устройства/10-000801b5959d/w1_slave»
    )
    # прочитать данные датчика
    данные = 'N'
    для пути в путях:
      данные += ':'
      данные += read_sensor (путь)
      время сна(1)
    # вставляем данные в циклическую базу данных
    rrdtool.обновление(
      "%s/температура.rrd" % (os.path.dirname(os.path.abspath(__file__))),
      данные)
     

    Чтение w1_slave производится в функции read_sensor. Он проверяет, заканчивается ли первая строка на YES и, следовательно, существует ли действительная контрольная сумма. Если да, то функция извлекает значение температуры из второй строки файла и возвращает значение в градусах Цельсия. В случае ошибки он возвращает значение U, которое RRDtool интерпретирует как «Неизвестно».

    В основной программе сначала определяются пути к датчикам температуры — их конечно нужно менять! Затем скрипт считывает данные со всех датчиков, вызывая функцию read_sensor. Время ожидания в одну секунду предназначено для улучшения переходной характеристики паразитной мощности на шине данных. В конце выполняется вставка измеренных значений в базу данных циклического перебора. Построение пути к базе данных предполагает, что скрипт и база данных находятся в одном каталоге.

    Скрипт хранится в исполняемом файле gettemp.py, и вы можете запустить его из командной строки. Результат можно проверить с помощью rrdtool lastupdate. Это выводит отметку времени и значения последнего обновления базы данных:

    chmod +x gettemp.py
    ./gettemp.py
    Температура последнего обновления rrdtool.rrd
      темп0 темп1
    1386777156: 18,937 5,687 
     

    Вы можете поместить вызов скрипта в свой crontab:

    echo '2-57/5 * * * * $HOME/температура/gettemp. py >> $HOME/температура/gettemp.log 2>&1' | кронтаб -
     

    При таком определении демон cron выполняет скрипт каждые пять минут, начиная со второй минуты после часа. Перенаправление вывода отправляет сообщения об ошибках в файл gettemp.log . Поскольку база данных определена с наименьшим интервалом измерения в 15 минут, выполняется усреднение трех показаний.

    Графика и прочее

    Какое-то время аппаратное и программное обеспечение усердно собирало показания температуры, затем RRDtool может создавать красивые графики, например, визуализировать историю температуры за последнюю неделю в виде линейного графика:

    rrdtool график tempweek.png \
      -s 'сейчас - 1 неделя' -e 'сейчас' \
      DEF:temp0=температура.rrd:temp0:СРЕДНЯЯ \
      LINE2:temp0#00FF00:внутри \
      DEF:temp1=температура.rrd:temp1:СРЕДНЯЯ \
      LINE2: temp1 # 0000FF: снаружи
     

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

    Подробнее о «Графике с RRDtool» и создании веб-приложения для представления данных можно найти в блогах Сбор данных о погоде с помощью USB WDE1 и измерение температуры с помощью Raspberry Пи.

    Заключение

    Предлагаемый проект реализует станцию ​​измерения температуры на базе Raspberry Pi с минимальным внешним оборудованием. Для паразитного питания датчиков требуется только двухжильный кабель, но максимально возможная длина кабеля, вероятно, будет ограничена по сравнению с активным источником питания. Если вам необходимо измерить температуру выше 70°С, то обязательно предусмотрите активное питание с трехжильным кабелем. Порты GPIO на Raspberry Pi подключаются без дополнительной буферизации к шине 1-wire. Поэтому особенно следует избегать наложения помех параллельными линиями электропередач! Решение работает у меня дома уже несколько лет надежно с двумя датчиками и двухжильным кабелем длиной около десяти метров.

    Интересные ссылки

    Датчик температуры Raspberry Pi с использованием DS18B20

    В этом руководстве я расскажу, как настроить собственный датчик температуры Raspberry Pi.

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

    Я буду использовать водонепроницаемый датчик ds18B20, и этот датчик может измерять температуру по однопроводному интерфейсу. Более того, он водонепроницаем, что делает его идеальным, если вам нужно использовать датчик во влажной среде.

    Есть много других датчиков температуры, которые вы можете использовать с Raspberry Pi, но в этом руководстве мы сосредоточимся на ds18b20.

    Датчик температуры ds18b20 пригодится во многих ситуациях, особенно когда речь идет о контроле температуры поверхностей и жидкостей.

    Оборудование

    Оборудование, которое вам понадобится для этого датчика температуры Raspberry Pi, указано ниже.

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

    Рекомендуется

    Дополнительно

    • Чехол Raspberry Pi
    • USB-клавиатура
    • USB-мышь
    • Кабель Ethernet или Wi-Fi

    Видео

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

    Я рассказываю все, что нужно знать об этой крутой маленькой схеме в видео. Вы также можете найти полное письменное руководство прямо под видео.

    Adblock блокирует видео? Поддержите нас, подписавшись на наш сервис без рекламы.

    Сборка схемы Raspberry Pi ds18b20

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

    Датчик, который я использую в этом руководстве, представляет собой водонепроницаемую версию датчика DS18B20. Он просто выглядит как очень длинный шнур с толстой частью на одном конце. Если у вас просто обычная версия без проводки и гидроизоляции, то она выглядит именно как транзистор.

    Этот датчик довольно точен, погрешность в пределах 0,05°C от фактической температуры. Он может выдерживать температуры до 125°C (260°F), но рекомендуется поддерживать температуру ниже 100°C (210°F). Это устройство также имеет встроенный аналого-цифровой преобразователь, поэтому мы можем легко подключить его к цифровому выводу GPIO на Pi.

    Имейте в виду, что не все датчики температуры одинаковы. Что-то вроде TMP36 не просто заменит ds18b20 в этом уроке.

    TMP36 — это аналоговое устройство, поэтому его немного сложнее интегрировать с Pi. У TMP36 в основном та же проблема, что и у нас с датчиком освещенности, и это связано с тем, что у Raspberry Pi нет аналоговых контактов.

    Собрать эту схему очень просто, я быстро пройдусь по некоторым основным инструкциям ниже. Если у вас возникли проблемы с их выполнением, обратитесь к видео или схеме.

    Если вам нужна дополнительная информация о контактах GPIO, обязательно ознакомьтесь с моим руководством по началу работы с контактами GPIO Raspberry Pi.

    1. Сначала подключите контакт 3v3 от Pi к положительной шине, а контакт заземления — к шине заземления на макетной плате.

    2. Теперь поместите датчик DS18B20 на макетную плату.

    3. Поместите резистор 4,7 кОм между положительным проводом и выходным проводом датчика.

    4. Проложите провод от положительного провода к положительной шине 3v3.

    5. Подсоедините провод от выходного провода к контакту № 4 (контакт № 7, если используется физическая нумерация) Raspberry Pi.

    6. Проложите провод от провода заземления к шине заземления.

    После этого ваша схема должна выглядеть примерно так, как показано на рисунке ниже. Имейте в виду, что некоторые версии датчика температуры могут иметь больше проводов, чем три. Обратитесь к таблице данных для получения дополнительной информации для каждого из проводов.

    Датчик температуры Raspberry Pi Код

    Код для настройки датчика температуры немного сложнее, чем сама схема. Эта сложность просто из-за того, как нам нужно обрабатывать данные, поступающие от датчика.

    Поскольку мы используем Python, будет полезно изучить некоторые основы, поэтому я настоятельно рекомендую ознакомиться с нашим руководством для начинающих по Python.

    Прежде чем мы создадим скрипт Python, нам сначала нужно настроить Pi, чтобы он мог считывать данные с датчика. Для этого нам нужно добавить поддержку OneWire.

    1. Чтобы добавить поддержку OneWire, нам сначала нужно открыть файл конфигурации загрузки, и это можно сделать, выполнив следующую команду. Мне нравится использовать текстовый редактор nano.

    2. Внизу этого файла введите следующее.

    3. После этого сохраните и выйдите, нажав CTRL + X и затем Y . Теперь перезагрузите Pi, выполнив следующую команду.

    4. Вы можете перейти к загрузке кода на Pi или выполнить следующие несколько шагов, чтобы убедиться, что датчик действительно работает.

    5. После того, как Raspberry Pi снова загрузится, нам нужно запустить modprobe , чтобы мы могли загрузить правильные модули.

    6. Теперь перейдите в каталог устройств и используйте команду ls, чтобы просмотреть папки и файлы в каталоге.

    7. Теперь выполните следующую команду, измените нумерацию после cd на то, что появилось в вашем каталоге с помощью команды ls . (Если у вас несколько датчиков, будет более одного каталога)

    8. Теперь выполните следующую команду cat.

     cat w1_slave 

    9. Эта команда должна выводить данные, но, как вы заметили, она не очень удобна для пользователя.

    Первая строка должна иметь в конце ДА или НЕТ. Если ДА, то должна появиться вторая строка с температурой. Эта линия будет похожа на что-то вроде t=12323, и вам нужно будет немного посчитать, чтобы сделать это пригодной для использования температурой, которую мы можем легко понять. Например, градусы Цельсия вы просто делите на 1000.

    Теперь пришло время перейти к скрипту Python.

    Ниже я кратко объясню код, если вы хотите узнать о нем больше. Этот код был взят из руководства на Adafruit. Если вы хотите загрузить его, вы можете просто загрузить его на странице Pi My Life Up GIT или с помощью следующей команды.

    Чтобы запустить скрипт Python, мы импортируем три пакета: ОС, Glob и время.

    Затем мы запускаем команды modprobe, и эти команды такие же, как и те, которые мы использовали ранее.

    Мы объявляем три разные переменные, которые будут указывать на расположение данных нашего датчика. Вам не нужно менять ничего из этого.

    В функции read_temp_raw мы открываем файл, содержащий наши выходные данные температуры. Мы читаем все строки из этого, а затем возвращаем его, чтобы код, вызвавший эту функцию, мог его использовать. В этом случае функция read_temp вызывает эту функцию.

    В функции read_temp мы обрабатываем данные из функция read_temp_raw . Сначала мы убеждаемся, что первая строка содержит YES. Это означает, что будет строка с температурой в ней.

    Если есть температура, мы находим строку с t= , используя lines[1].find('t=') . Lines[1] означает, что мы смотрим на второй элемент массива, в данном случае на вторую строку.

    Когда у нас есть строка, мы просто получаем все числа после t= , и это делается на строках[1][equals_pos+2:] . Equals_pos — это начальная позиция температуры (t), и мы добавляем 2 к позиции, поэтому мы получаем только фактические значения температуры.

    Затем мы преобразуем число в температуру как в градусах Цельсия, так и в градусах Фаренгейта. Мы возвращаем оба из них в код, вызвавший эту функцию. Эта функция является печатью, расположенной в цикле while.

    Цикл while всегда верен, поэтому он будет работать вечно, пока программа не будет прервана ошибкой или пользователем, отменившим скрипт. Он просто вызывает read_temp в функции печати. Функция печати позволяет нам видеть результат на нашем экране. Затем скрипт приостанавливается на 1 секунду каждый раз, когда он считывает датчик.

    Тестирование кода

    После того, как вы загрузили или закончили написание кода, а также правильно настроили схему, теперь мы можем вызывать скрипт Python. Чтобы вызвать скрипт Python, просто выполните следующую команду.

    Теперь у вас должны быть выходные значения температуры как в градусах Фаренгейта, так и в градусах Цельсия. Вы можете изменить это только для отображения предпочтительной шкалы температуры.

    Это все, что вам нужно знать, чтобы настроить и запустить датчик температуры Raspberry Pi ds18b20.

    Если вы хотите сделать еще один шаг вперед, обязательно ознакомьтесь с моими советами ниже. Я рассмотрю возможность включения этого датчика в будущие проекты, так что следите за обновлениями.

    Возможна дальнейшая работа

    Есть еще несколько вещей, которые вы можете делать с этим датчиком температуры Raspberry Pi. Я быстро упомяну пару идей, и некоторые из них я, возможно, расскажу в будущем.

    Вы можете подключить сценарий Python к базе данных, такой как MYSQL, и хранить данные таким образом. Если вы добавите временную метку к данным, вы сможете просматривать данные в будущем и сравнивать любые изменения.

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

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