Onewire arduino это

Датчик температуры DS18B20,Arduino и библиотека OneWire.

Так исторически сложилось, что на текущий момент одним из самых популярных цифровых температурных датчиков является датчик DS18B20 корпорации Dallas Semiconductor. Конечно же и мы не можем обойти его стороной.

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

Особенности датчика :

  • Простой интерфейс подключения 1-Wire .
  • Наличие уникального 64-битного адреса датчика, для использование систем с большим числом датчиков.
  • Напряжение питания от 3 V до 5.5 V .
  • Точность в ±0,5 С, для диапазона -10…+85 С . Для диапазона -55… +125 точность ± 2 С.
  • Возможность паразитного питания (Parasite power).

Более подробно можно почитать в Datasheet или на русском . Мы не будем заморачиваться с паразитным питание и подключим датчик всем тремя проводами. Если у вас не готовый модуль о вам придется поставить еще подтягивающий резистор для работы по 1-Wire.

Вся память DS18B20 включает в себя оперативную (SRAM) и энергонезависимую (EEPROM) память. В EEPROM хранятся регистры TH, TL и регистр конфигурации. Если функция тревожного сигнала не используется, то регистры TH и TL могут использоваться как регистры общего назначения. В режиме термостата TH содержит значение верхнего порога температуры, TL соответственно нижнего порога.

Кодинг.

Первым делом нам потребуется библиотека OneWire которая нам очень упростит жизнь. Скачать можно с GitHub или с нашего сайта.

Любое общение с датчиком начинается с команды Reset . То есть МК прижимает шину данных в состояние логический «0» на 480 µs, потом отпускает ее. Датчик отвечает на это сигналом присутствия, после чего мы отправляем команду Skip ROM ( 0xCC ) . Тое сть обратимся ко всем датчика которые присутствуют на шине.

Конструктор, Pin – номер вывода, к которому подключен датчик.

Инициализация операции на шине. С этой команды должна начинаться любая операция обмена данными. Возвращает:

  • 1 – если устройство подключено к шине (был ответный импульс присутствия);
  • 0 – если устройство отсутствует на шине (ответного импульса не было).

Запись байта. Передает байт в устройство на шине.

  • v – байт;
  • power – признак выбора режима питания;
    power = 0 – питание от внешнего источника.
    power = 1 – “паразитное” питание.

Отправим команду 0x44 инициализации измерения температуры.

Пауза 1 сек . Ожидание на время, необходимое для выполнения датчиком преобразования температуры. Это время зависит от выбранной разрешающей способности датчика. Разрешение 12 бит установлено в датчике по умолчанию. Время преобразования для него – 750 мс.

Затем мы отправляем команду Reset , Skip ROM ( 0xCC ) , а замет команду 0xBE чтения памяти датчика.

uint8_t.read_bytes(buf, 9) — Чтение 9 ти байтов данных.

Основные команды библиотеке OneWire :
  • search(addressArray) – ищет температурный датчик, при нахождении в массив addressArray записывается его код, в ином случае – false.
  • reset_search() – производится поиск на первом приборе.
  • reset() – выполнение сброса шины перед тем, как связаться с устройством.
  • select(addressArray) – выбирается устройство после операции сброса, записывается его ROM код.
  • write(byte) – производится запись байта информации на устройство.
  • write(byte, 1) – аналогично write(byte), но в режиме паразитного питания.
  • read() – чтение байта информации с устройства.
  • crc8(dataArray, length) – вычисление CRC кода. dataArray – выбранный массив, length – длина кода.

Вот и сам код из библиотеке :

Собственно это библиотека подходить для всех датчиков семейства DS18 (DS18B20, DS18S20, DS1820, DS1822) подключение ни чем не отличается. Ну а некоторые различия можно уже узнать из datesheet к ним.

Ошибка в тексте? Выделите её и нажмите «Ctrl + Enter»

Источник

RoboCraft

Сегодня мы познакомимся с интересным протоколом 1-Wire и даже сразу попробуем поработать с устройством, использующим этот протокол. «Как?» — спросите Вы – «мне не нужно будет покупать детали в радиомагазине?»
«Нет» — отвечу я 🙂 С большой долей вероятности, Вы пользуетесь устройством 1-Wire и, возможно, даже не догадываетесь об этом 🙂 Это всего-навсего – ключ-таблетка от домофона (iButton)!

Неужели?
Достанем ключи из кармана и примемся их пристально разглядывать 🙂
У меня контактная площадка сильно затёрта, но какие-то надписи проглядывают.

Потёр площадку фломастером и становится видна заветная надпись:

iButton.com
00000F67CE41
1-Wire
0744 UB1 DS1990A#F5

Ага! 1-Wire!
Так что же это за интерфейс?
Это однопроводной интерфейс, разработан фирмой Dallas Semiconductor (ныне MAXIM) в конце 90-х годов.

Этот интерфейс интересен тем, что для двустороннего обмена требуется всего одна линия! (отсюда и название 🙂

Подробнее об интерфейсе здесь.

Возвращаемся к нашему ключу 🙂 На самой таблетке указан тип устройства и, похоже, уникальный номер микросхемы 😉

DS1990A – это и есть название нашего устройства.

Смотрим варианты iButton-ов на сайте производителя
Наш ключ — это самая первая модель в списке 🙂
DS1990A — 64 Bit ID — уникальный серийный номер-ключ
Страничка этого ключика здесь, а здесь можно скачать датащит 😉

Число после # определяет форм-фактор ключа – у меня F5.

Итак, наш ключ хранит 64 бита уникальной информации
Питается от 2.8V до 6.0V
К центральной контактной площадке подключается линия данных, а к боковой каёмке – землю.
Ключ может работать в диапазоне температур от -40°C до +85°C – впрочем, это нам не нужно 🙂

Читаем датащит далее 🙂

Величина подтягивающего резистора рекомендуется в 2.2k
Так… запомним 🙂

Каждый DS1990A прошивается уникальным 64-битным номером

первые 8 бит — номер серии устройства (01h)
следующие 48 бит — уникальный серийный номер
последние 8 бит — CRC-код предыдущих 56 бит информации 🙂

(Cyclic redundancy code, CRC — циклический избыточный код) — способ цифровой идентификации некоторой последовательности данных, который заключается в вычислении контрольного значения её циклического избыточного кода.

Далее в датащите перечислены команды, которые понимает ключ:
33h — считать ROM — команда позволяет считать заветные 64-бита данных ключа
F0h — поиск ROM — т.к. к сети 1-wire может быть подключено несколько устройств данная команда используется для идентификации подключённых устройств.
55h — соответствие ROM / CCh — пропуск ROM
— данные команды входят в минимальный набор необходимых команд 1-wire-устройств. Т.к. в ключе DS1990A эти команды не требуются — он на них не отвечает.

Arduino/CraftDuino/Freeduino может работать с 1-Wire, используя библиотеку Jim Studt-а – OneWire.

Настало время пообщаться с нашим ключиком! 🙂

Схема подключения – крайне проста (это ведь 1-Wire! 🙂

Далее нужно скачать библиотеку OneWire и поместить её в свою директорию libraries.

Происходит постоянный поиск устройств на линии 1-Wire. Пока ключ не подключён – выдаётся:
No more addresses.
При подключении ключа-таблетки – считывается её номер и выдаётся в COM-порт.
Например, вот что выдаётся при подключении ключа-таблетки, с которого начиналась эта статья:

Первая цифра – номер серии – 01h
Далее, как видим, действительно ключ хранит номер, нанесённый на своём корпусе 😉
Только этот номер выведен наоборот – как и положено по протоколу 1-Wire – начиная с младшего байта 😉
Последний байт –B6h — CRC-код предыдущих байт.

Ура! Вот мы и считали наш ключ 🙂

Теперь можно самостоятельно сделать замок для комнаты или разблокировать свой компьютер по ключу 🙂 Фантазируем 🙂

Cсылки:
Интерфейс 1-Wire — данная замечательная статья использовалась при написании заметки об интерфейсе 1-Wire

Источник

OneWire

Доступ к 1-проводным датчикам температуры, памяти и другим чипам.

Автор: Джим Студт, Том Поллард, Робин Джеймс, Гленн Тревитт, Джейсон Дангел, Гильермо Ловато, Пол Стоффреген, Скотт Робертс, Бертрик Сиккен, Марк Тиллотсон, Кен Батчер, Роджер Кларк, Лав Нистром
Сопровождающий: Пол Стоффреген
Сайт: http://www.pjrc.com/teensy/td_libs_OneWire.html
Github: https://github.com/PaulStoffregen/OneWire
Архитектура: любая

Скачать

Файл Дата выхода Размер
OneWire-2.3.5.zip 2019-09-16 21.56 KiB
OneWire-2.3.4.zip 2018-03-15 20.14 KiB
OneWire-2.3.3.zip 2017-02-07 18.37 KiB
OneWire-2.3.2.zip 2016-01-05 17.62 KiB
OneWire-2.3.1.zip 2015-12-06 17.06 KiB
OneWire-2.3.0.zip 2015-03-26 16.78 KiB

В соответствии со ст. 1259 ГК РФ все материалы данного сайта являются объектом авторского права. Исключительные права на его использование принадлеждат владельцу данного сайта, согласно п.1 ст.1229 ГК РФ. Любое копирование материалов данного сайта без разрешения владельца сайта запрещено законом.

© АрдуиноПлюс.ру, 2017—2022 ( 31–0,049 )

Источник

ntruchsess/arduino-OneWire

Use Git or checkout with SVN using the web URL.

Work fast with our official CLI. Learn more.

Launching GitHub Desktop

If nothing happens, download GitHub Desktop and try again.

Launching GitHub Desktop

If nothing happens, download GitHub Desktop and try again.

Launching Xcode

If nothing happens, download Xcode and try again.

Launching Visual Studio Code

Your codespace will open once ready.

There was a problem preparing your codespace, please try again.

Latest commit

Git stats

Files

Failed to load latest commit information.

README.md

Copyright (c) 2007, Jim Studt (original old version — many contributors since)

Version 2.3: Modifications by Norbert Truchsess, January 2013 add search_alarms() to find only devices in alarmed state.

Version 2.1 and 2.2 of this library was taken from: http://www.pjrc.com/teensy/td_libs_OneWire.html

OneWire has been maintained by Paul Stoffregen (paul@pjrc.com) since January 2010. At the time, it was in need of many bug fixes, but had been abandoned the original author (Jim Studt). None of the known contributors were interested in maintaining OneWire. Paul typically works on OneWire every 6 to 12 months. Patches usually wait that long. If anyone is interested in more actively maintaining OneWire, please contact Paul.

Version 2.2: Teensy 3.0 compatibility, Paul Stoffregen, paul@pjrc.com Arduino Due compatibility, http://arduino.cc/forum/index.php?topic=141030 Fix DS18B20 example negative temperature Fix DS18B20 example’s low res modes, Ken Butcher Improve reset timing, Mark Tillotson Add const qualifiers, Bertrik Sikken Add initial value input to crc16, Bertrik Sikken Add target_search() function, Scott Roberts

Version 2.1: Arduino 1.0 compatibility, Paul Stoffregen Improve temperature example, Paul Stoffregen DS250x_PROM example, Guillermo Lovato PIC32 (chipKit) compatibility, Jason Dangel, dangel.jason AT gmail.com Improvements from Glenn Trewitt:

  • crc16() now works
  • check_crc16() does all of calculation/checking work.
  • Added read_bytes() and write_bytes(), to reduce tedious loops.
  • Added ds2408 example. Delete very old, out-of-date readme file (info is here)

Version 2.0: Modifications by Paul Stoffregen, January 2010: http://www.pjrc.com/teensy/td_libs_OneWire.html Search fix from Robin James http://www.arduino.cc/cgi-bin/yabb2/YaBB.pl?num=1238032295/27#27 Use direct optimized I/O in all cases Disable interrupts during timing critical sections (this solves many random communication errors) Disable interrupts during read-modify-write I/O Reduce RAM consumption by eliminating unnecessary variables and trimming many to 8 bits Optimize both crc8 — table version moved to flash

Modified to work with larger numbers of devices — avoids loop. Tested in Arduino 11 alpha with 12 sensors. 26 Sept 2008 — Robin James http://www.arduino.cc/cgi-bin/yabb2/YaBB.pl?num=1238032295/27#27

Updated to work with arduino-0008 and to include skip() as of 2007/07/06. —RJL20

Modified to calculate the 8-bit CRC directly, avoiding the need for the 256-byte lookup table to be loaded in RAM. Tested in arduino-0010 — Tom Pollard, Jan 23, 2008

Jim Studt’s original library was modified by Josh Larios.

Tom Pollard, pollard@alum.mit.edu, contributed around May 20, 2008

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the «Software»), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED «AS IS», WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

Much of the code was inspired by Derek Yerger’s code, though I don’t think much of that remains. In any event that was.. (copyleft) 2006 by Derek Yerger — Free to distribute freely.

The CRC code was excerpted and inspired by the Dallas Semiconductor sample code bearing this copyright. //————————————————————————— // Copyright (C) 2000 Dallas Semiconductor Corporation, All Rights Reserved. // // Permission is hereby granted, free of charge, to any person obtaining a // copy of this software and associated documentation files (the «Software»), // to deal in the Software without restriction, including without limitation // the rights to use, copy, modify, merge, publish, distribute, sublicense, // and/or sell copies of the Software, and to permit persons to whom the // Software is furnished to do so, subject to the following conditions: // // The above copyright notice and this permission notice shall be included // in all copies or substantial portions of the Software. // // THE SOFTWARE IS PROVIDED «AS IS», WITHOUT WARRANTY OF ANY KIND, EXPRESS // OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. // IN NO EVENT SHALL DALLAS SEMICONDUCTOR BE LIABLE FOR ANY CLAIM, DAMAGES // OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, // ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR // OTHER DEALINGS IN THE SOFTWARE. // // Except as contained in this notice, the name of Dallas Semiconductor // shall not be used except as stated in the Dallas Semiconductor // Branding Policy. //—————————————————————————

About

OneWire lets you access 1-wire devices made by Maxim/Dallas, such as temperature sensors and ibutton secure memory. Library for arduino

Источник

Adblock
detector