Как работает водонепроницаемый датчик DS18B20. Какие у него технические характеристики. Для чего используется DS18B20. Как правильно подключить датчик к Arduino или Raspberry Pi. Какие преимущества у DS18B20 перед аналоговыми датчиками.
Что такое герметичный датчик температуры DS18B20
DS18B20 — это цифровой датчик температуры, выпускаемый компанией Maxim Integrated (ранее Dallas Semiconductor). Его ключевые особенности:
- Герметичный корпус, позволяющий использовать датчик в условиях высокой влажности и даже погружать в жидкости
- Цифровой интерфейс 1-Wire для подключения и передачи данных
- Возможность подключения нескольких датчиков на одну линию связи
- Высокая точность измерений: ±0,5°C в диапазоне от -10°C до +85°C
- Широкий диапазон измеряемых температур: от -55°C до +125°C
Благодаря своим характеристикам DS18B20 стал очень популярным датчиком для различных проектов на базе Arduino, Raspberry Pi и других микроконтроллеров.
Технические характеристики DS18B20
Рассмотрим подробнее основные параметры герметичного датчика DS18B20:
- Диапазон измеряемых температур: от -55°C до +125°C
- Точность измерений:
- ±0,5°C в диапазоне от -10°C до +85°C
- ±2°C во всем рабочем диапазоне
- Разрешение АЦП: 9-12 бит (настраиваемое)
- Время преобразования при 12-битном разрешении: 750 мс
- Напряжение питания: от 3,0В до 5,5В
- Потребляемый ток:
- 1,5 мкА в режиме ожидания
- 1 мА при проведении измерения
- Интерфейс: 1-Wire (требуется всего один вывод микроконтроллера)
- Уникальный 64-битный серийный код, позволяющий подключать несколько датчиков на одну шину
- Длина кабеля: 1 метр
Области применения DS18B20
Герметичный датчик DS18B20 находит применение во многих сферах благодаря своей надежности и простоте использования:
- Системы «Умный дом» для контроля температуры в помещениях
- Метеостанции
- Системы вентиляции и кондиционирования
- Контроль температуры в аквариумах
- Мониторинг температуры почвы в теплицах
- Системы управления отоплением
- Холодильное оборудование
- Промышленные системы мониторинга температуры
Водонепроницаемость датчика позволяет использовать его даже в агрессивных средах, например, для измерения температуры различных жидкостей.
Как подключить DS18B20 к Arduino
Подключение датчика DS18B20 к Arduino несложное, но требует соблюдения некоторых правил:
- Подключите черный провод (GND) датчика к выводу GND Arduino
- Красный провод (VDD) подключите к выводу 5V Arduino
- Желтый или белый провод (DQ) — это линия данных. Подключите его к любому цифровому выводу Arduino, например, D2
- Между линией данных и питанием нужно установить подтягивающий резистор 4,7 кОм
Схема подключения будет выглядеть следующим образом:
- DS18B20 GND (черный) -> Arduino GND
- DS18B20 VDD (красный) -> Arduino 5V
- DS18B20 DQ (желтый/белый) -> Arduino D2
- Резистор 4,7 кОм между VDD и DQ
Для работы с датчиком потребуются библиотеки OneWire и DallasTemperature. Их можно установить через менеджер библиотек Arduino IDE.
Преимущества DS18B20 перед аналоговыми датчиками
Цифровой датчик DS18B20 имеет ряд преимуществ по сравнению с аналоговыми термисторами и термопарами:
- Не требует калибровки — выдает значение температуры сразу в градусах Цельсия
- Высокая точность измерений во всем диапазоне температур
- Нет необходимости в АЦП — датчик сам преобразует аналоговый сигнал в цифровой
- Возможность подключения нескольких датчиков на одну линию
- Большая длина кабеля не влияет на точность измерений
- Встроенная защита от помех
- Энергоэффективность — низкое энергопотребление в режиме ожидания
Эти особенности делают DS18B20 отличным выбором для многих проектов, где требуется надежное и точное измерение температуры.
Особенности программирования DS18B20
При работе с датчиком DS18B20 следует учитывать некоторые нюансы программирования:
- Инициализация датчика занимает некоторое время, поэтому первое измерение рекомендуется делать через 1-2 секунды после подачи питания
- Время преобразования температуры зависит от выбранного разрешения АЦП. При максимальном 12-битном разрешении оно составляет 750 мс
- Каждый датчик имеет уникальный 64-битный адрес. При работе с несколькими датчиками на одной шине необходимо считывать и хранить эти адреса
- Для повышения точности измерений рекомендуется делать несколько последовательных замеров и вычислять среднее значение
- В библиотеке DallasTemperature есть функции для установки разрешения, проверки наличия датчика на шине, получения адреса и другие полезные возможности
Правильное использование этих особенностей позволит создать надежную систему измерения температуры на базе DS18B20.
Типичные проблемы при работе с DS18B20 и их решение
При использовании датчика DS18B20 иногда возникают определенные трудности. Рассмотрим наиболее распространенные проблемы и способы их решения:
- Датчик не определяется микроконтроллером:
- Проверьте правильность подключения, особенно наличие подтягивающего резистора
- Убедитесь, что используется подходящее напряжение питания (3-5,5В)
- Попробуйте уменьшить длину проводов или использовать экранированный кабель
- Некорректные показания температуры:
- Проверьте целостность кабеля и качество соединений
- Убедитесь, что датчик не находится рядом с источниками электромагнитных помех
- Попробуйте увеличить разрешение АЦП до 12 бит
- Медленная работа при использовании нескольких датчиков:
- Используйте режим «паразитного питания», если это возможно
- Оптимизируйте код, чтобы не опрашивать все датчики одновременно
Большинство проблем с DS18B20 решается правильным подключением и корректной настройкой программного обеспечения.
Альтернативы DS18B20: сравнение с другими популярными датчиками температуры
Хотя DS18B20 является очень популярным выбором, существуют и другие датчики температуры, которые могут быть более подходящими для определенных задач. Сравним DS18B20 с некоторыми альтернативами:
- DHT11/DHT22:
- Преимущества: измеряют также влажность, более низкая цена
- Недостатки: меньшая точность, не водонепроницаемые, медленнее в работе
- LM35:
- Преимущества: аналоговый выход, простота использования
- Недостатки: требует АЦП, меньший диапазон измерений, менее точный
- PT100/PT1000:
- Преимущества: высокая точность, широкий диапазон температур
- Недостатки: требуют сложной схемы подключения, дороже
- MAX31855 (для термопар):
- Преимущества: подходит для очень высоких температур
- Недостатки: сложнее в использовании, требует термопару
Выбор датчика зависит от конкретной задачи, требуемой точности, условий эксплуатации и бюджета проекта. DS18B20 остается отличным выбором для большинства любительских и многих профессиональных применений благодаря сочетанию точности, надежности и простоты использования.
Исправление ошибок, аппаратно вносимых цифровыми датчиками температуры DS1820
|
|
|
Серия 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 месяцев |
Подключите до 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, и хранить данные таким образом. Если вы добавите временную метку к данным, вы сможете просматривать данные в будущем и сравнивать любые изменения.