Датчик температуры DS18B20. Описание, характеристики, подключение, распиновка, datasheet
DS18B20 — цифровой датчик температуры фирмы Dallas. Отправляет данные о температуре, используя только один цифровой вывод и специальный протокол, называемый 1-Wire. Вы можете подключить несколько датчиков к одному контакту. Датчик измеряет температуру в градусах Цельсия.
Технические характеристики DS18B20
- Датчик можно питать напряжением от 3 до 5,5В
- Датчик может измерять температуру от -55 до 125 °C
- Датчик имеет цифровое разрешение от 9 до 12 бит
- Точность измерения +/- 0,5 °C в диапазоне от -10 до 85 °C
- Точность измерения: + /- 2 °C для диапазона от -55 до 125 °C
- Дрейф измерения +/- 0,2 °C
Распиновка DS18B20
Схема подключения DS18B20
Что такое разрешение?
В технических характеристиках сообщается, что датчик DS18B20 может измерять температуру с различным разрешением. Разрешение — это как у линейки: миллиметры между сантиметрами. Так же и c разрешением у DS18B20 — это шаг между последовательными ступенями градусов Цельсия.
Разрешение выбирается с помощью количества бит. Диапазон выбора от 9 до 12 бит. Выбор разрешения влечет за собой определенные последствия. Чем выше разрешение, тем дольше придется ждать результат измерений.
Для 9 битного разрешения есть 2 шага между последовательными уровнями:
То есть, вы можете прочитать температуру с разрешением 0,5 °C. Для 9 битного разрешения время измерения составляет 93,75 мс. То есть, вы можете выполнять 10,6 измерений в секунду.
Для 10 битного разрешения есть 4 шага между последовательными уровнями:
- 0,0 °C
- 0,25 °C
- 0,5 °C
- 0,75 °C
В этом случае мы считываем температуру с разрешением 0,25 °C. Время измерения для 10 битного разрешения составляет 187,5 мс, что позволяет выполнить 5,3 измерений в секунду.
Для 11 битного разрешения есть 8 шагов между последовательными уровнями:
- 0,0 °C
- 0,125 °C
- 0,25 °C
- 0,375 °C
- 0,5 °C
- 0,625 °C
- 0,75 °C
- 0,875 °C
То есть разрешение составляет 0,125 °C. Время измерения для 11 битного разрешения составляет 375 мс. Это позволяет выполнить 2,6 измерения в секунду.
Для 12 битного разрешения есть 16 шагов между последовательными уровнями:
- 0,0 °C
- 0,0625 °C
- 0,125 °C
- 0,1875 °C
- 0,25 °C
- 0,3125 °C
- 0,375 °C
- 0,4375 °C
- 0,5625 °C
- 0,625 °C
- 0,6875 °C
- 0,75 °C
- 0,8125 °C
- 0,875 °C
- 0,9375 °C
Следовательно, разрешение составляет 0,0625 °C. Время измерения для 12 битного разрешения в районе 750 мс. То есть вы можете сделать 1,3 измерений в секунду.
Что такое точность измерения?
Ничто в мире, и особенно в электронике, не является совершенным. Можно только приближаться к совершенству, тратя все больше и больше денег и сил. Так же и с этим датчиком. Он имеет некоторые неточности, о которых вы должны знать.
В технических характеристиках сказано, что в диапазоне измерения от -10 до 85 °C датчик DS18B20 имеет точность на уровне +/- 0,5 °C. Это значит, что, когда в комнате у нас температура 22,5 °C, то датчик может вернуть нам результат измерения от 22 до 23 °C. То есть, может показать на 0,5 °C больше или меньше. Все это зависит от индивидуальной характеристики датчика.
В диапазоне от -55 до 125 °C погрешность измерения может возрасти до +/- 2 °C. То есть, когда вы измеряете что-то с температурой 100 °C, то датчик может показать температуру от 98 до 102 °C.
Все эти отклонения могут несколько отличаться для каждой температуры, но при измерении одной и той же температуры, отклонение всегда будет одинаковым.
Что такое дрейф измерения?
Дрейф измерения — это наиболее худшая форма неточности. Суть дрейфа измерения заключается в том, что при измерении постоянной температуры — при одном измерении датчик может показывать одну температуру, а при последующем другую (на величину дрейфа).
Дрейф датчика температуры DS18B20 +/- 0.2 °C. Например, когда в комнате постоянная температура составляет 24 °C, датчик может выдавать результат в диапазоне от 23,8 °C до 24,2 °C.
Скачать datasheet DS18B20 (379,0 KiB, скачано: 1 509)
Ds1307 описание на русском
Автор: Сергей · Опубликовано 24.11.2016 · Обновлено 28.06.2019
DS1307 это небольшой модуль, предназначенный для подсчета времени. Собранный на базе микросхемы DS1307ZN с реализацией питания от литиевой батарейки (LIR2032), что позволяет работать автономно в течение длительного времени. Также на модуле, установлена энергонезависимая память EEPROM объемом 32 Кбайт (AT24C32). Микросхема AT24C32 и DS1307ZN связаны обшей шиной интерфейсом I2C.
► Напряжение питания: 5В
► Рабочая температура: – 40℃ … + 85℃
► Память: 56 байт (энергонезависимая)
► Батарейка: LIR2032 (автоматическое определение источника питания)
► Интерфейса: I2C
► Габариты: 28мм х 25мм х 8 мм
Использовании модуля DS1307 зачастую очень оправдано, например, когда данные считываются редко, интервалом более недели, использовать собственные ресурсы контроллера, неоправданно или невозможно. Обеспечивание бесперебойное питание, например платы Arduino, на длительный срок дорого, даже при использовании батареи.
Обмен данными с другими устройствами осуществляется по интерфейсу I2C с выводов SCL и SDA. Конденсаторы С1 и С2 необходимы для снижения помех по линию питания. Чтобы обеспечить надлежащего уровня сигналов SCL и SDA установлены резисторы R2 и R3 (подтянуты к питанию). Для проверки работоспособности модуля, на вывод 7 микросхему DS1307Z, подается сигнал SQ, прямоугольной формы с частотой 1 Гц. Элементы R4, R5, R6, VD1 необходимы для подзарядку литиевой батарейки. Так же, на плате предусмотрено посадочное место (U1), для установки датчика температуры DS18B20 (при необходимости можно впаять его), считывать показания, можно с вывода DS, который подтянут к пиатнию, через резистор R1 сопротивлением 3.3 кОм. Принципиальную схему и назначение контактов можно посмотреть на рисунках ниже.
На плате расположено две группы контактов, шагом 2.54 мм, для удобного подключения к макетной плате, буду использовать штырьевые разъемы, их необходимо впаять.
Первая группа контактов:
► DS: вывод DS18B20 (1-wire)
► SCL: линия тактирования (Serial CLock)
► SDA: линия данных (Serial Dфta)
► VCC: «+» питание модуля
► GND: «-» питание модуля
Вторая группа контактов:
► SQ: вход 1 МГц
► DS: вывод DS18B20 (1-wire)
► SCL: линия тактирования (Serial CLock)
► SDA: линия данных (Serial Dфta)
► VCC: «+» питание модуля
► BAT:
Подзарядка батареи
Как описывал ваше модуль может заряжать батарею, реализовано это, с помощью компонентов R4, R5, R6 и диода D1. Но, данная схема имеет недостаток, через резистор R4 и R6 происходит разряд батареи (как подметил пользователь ALEXEY, совсем не большой). Так как модуль потребляем незначительный ток, можно удалить цепь питания, для этого убираем R4, R5, R6 и VD1, вместо R6 поставим перемычку (после удаления компонентов, можно использовать обычную батарейку CR2032).
Необходимые детали:
► Arduino UNO R3 x 1 шт.
► Провод DuPont, 2,54 мм, 20 см x 1 шт.
► Часы реального времени RTC DS1307 x 1 шт.
Подключение:
Для подключения часы реального времени DS1307, необходимо впаять впаять штыревые разъемы в первую группу контактов. Далее, подключаем провода SCL (DS1307) к выводу 4 (Arduino UNO) и SDA (DS1307) к выводу 5 (Arduino UNO), осталось подключить питания VCC к +5V и GND к GND. Кстати, в различных платах Arduino вывода интерфейса I2C отличаются, назначение каждого можно посмотреть ниже.
Установка времени DS1307
Первым делом, необходимо скачать и установить библиотеку «DS1307RTC» и «TimeLib» в среду разработки IDE Arduino, далее необходимо настроить время, открываем пример из библиотеки DS1307RTC «Файл» —> «Примеры» —> «DS1307RTC» —> «SetTime» или копируем код снизу.
Микросхема DS1307 предназначена для счета времени – секунд, минут, часов, дней, месяцев и лет. То есть по сути, это часы с календарем.
Она тактируется от собственного кварцевого генератора с частотой 32768 Гц и может работать от двух источников питания – основного и резервного. Важная фишка этой микросхемы заключается в низком потреблении – меньше 500 nA в рабочем режиме. При таком потреблении DS1307 может проработать от трехвольтовой батарейки (типа CR2032 емкостью
200 мА*ч) несколько лет. Также DS1307 может генерировать на одном из выводов меандр и в ее составе есть 56 байт оперативной памяти, которую можно использовать для хранения данных.
Минимальная схема подключения DS1307 включает в себя часовой кварц и один источник питания. Обмен данными с микросхемой осуществляется по I2C, причем DS1307 может работать на шине только как подчиненное устройство (слейвом).
Подключение любой микросхемы начинается с изучения даташита. В случае DS1307 нам нужно выяснить: какую скорость обмена поддерживает микросхема, какой она имеет адрес, как выглядит карта памяти, есть ли у нее управляющие биты или регистры, как передать данные и как прочитать их. Ниже приведены скриншоты из даташита, в которых я нашел требуемую информацию.
Скорость обмена DS1307
Адрес, по которому DS1307 отзывается на I2C шине
Карта памяти DS1307
Карта памяти показывает, по каким адресам расположены регистры микросхемы и сколько их вообще.
По нулевому адресу располагается регистр секунд. Младшие 4 разряда регистра отведены для единиц, там может быть число от 0 до 9. Старшие – для десятков секунд.
Это так называемый двоично-десятичный формат представления чисел (BCD).При таком формате один байт может представить числа только от 0 до 99. Остальные регистры часов и календаря содержат данные в таком же формате.
7-й разряд регистра секунд – управляющий. 0 в этом разряде разрешает работу часов, 1 – запрещает. При подачи питания этот разряд устанавливается в 1.
По первому адресу расположен регистр минут. С ним все понятно.
По второму адресу располагается регистр часов. 6-й бит этого регистра задает формат представления времени. Если он установлен в 1 используется 12 часовой формат, если сброшен -24 часовой.
Далее идут регистры календаря.
По седьмому адресу располагается регистр, управляющий выводом SQW. На него можно выводить внутренний тактовый сигнал разной частоты. Значения битов описаны в даташите. Нас они сейчас не интересуют.
Ну и адреса с 8 по 63-й отведены для оперативной памяти. Их можно использовать для хранения данных.
Как записать данные в DS1307
DS1307 может работать в двух режимах: как подчиненный приемник и как подчиненный передатчик. В первом режиме ведущее устройство передает DS1307 данные, а DS1307 принимает их. Во втором – ведущее устройство принимает от DS1307 данные, а та в свою очередь передает их. (Но обмен в обоих случаях начинает ведущий!)
Для каждого режима в даташите есть описание и диаграмма обмена. Запись данных выполняется согласно следующей последовательности.
1. Ведущий формирует на шине состояние СТАРТ.
2. Ведущий выдает на шину адрес DS1307 с нулевым битом квитирования (адресный пакет), что сигнализирует ведомому о последующей записи данных.
3. Если на шине присутствует микросхема DS1307, она отвечает ведущему – ACK.
4. После получения ответа ведущий передает DS1307 адрес регистра, с которого начнется запись данных. Это значение записывается во внутренний счетчик адреса DS1307.
5. DS1307 снова отвечает ведущему.
6. Получив ответ, ведущий передает ведомому байт данных, который предназначен для записи в регистр DS1307.
7. DS1307 отвечает ведущему.
8. Шаги 6, 7 повторяются несколько раз.
9. Ведущий формирует на шине состояние СТОП.
Адрес, по которому выполняется запись в DS1307, автоматически увеличивается на единицу. Дойдя до последнего адреса, счетчик обнуляется. Записывать можно любое число байт – хоть один, хоть все.
Как прочитать данные из DS1307
1. Ведущий формирует на шине состояние СТАРТ.
2. Ведущий выдает на шину адрес DS1307 с установленным битом квитирования, что сигнализирует ведомому о последующем чтении данных.
3. DS1307 отвечает ведущему.
4. DS1307 передает ведущему байт данных, на который указывает внутренний счетчик адреса.
5. Ведущий отвечает, что принял данные.
6 . Шаги 4, 5 повторяются несколько раз.
7. DS1307 передает ведущему байт данных.
7. Ведущий неформирует ответ DS1307.
8. Ведущий выдает на шину состояние СТОП.
Поскольку чтение данных выполняется по адресу внутреннего счетчика, его значение нужно предварительно инициализировать. Это делается с помощью операции записи, которая обрывается после передачи адреса регистра.
Теперь можно перейти к коду. Нам понадобится минимум три функции:
– функция инициализации,
– функция записи данных,
– функция чтения данных.
Инициализация
Скорость задается с помощью макроса TWBR_VALUE. Здесь используется формула, разобранная в предыдущей части. При компиляции расчетное значение проверяется с помощью директив препроцессора, чтобы убедиться, что оно не выходит за диапазон.
Передача данных
Передача данных начинается с состояния СТАРТ. Чтобы сформировать его, нужно включить TWI модуль, установить бит TWSTA и сбросить флаг прерывания TWINT. Это выполняется в одну строчку, записью в управляющий регистр TWCR.
Когда микроконтроллер выдаст на шину состояние СТАРТ, установится бит TWINT и в статусном регистре TWSR изменится статусный код. Микроконтроллер должен дождаться установки бита TWINT, прежде чем перейдет к следующей операции. Ожидание в нашем случае выполняется циклическим опросом (тупо поллингом .. не путать с троллингом).
Каждая установка бита TWINT сопровождается определенным статусным кодом в регистре TWSR. По хорошему, мы должны проверять эти коды, чтобы контролировать успешность операций. Но поскольку код у нас торный (учебный), мы не будем этого делать.
Далее на шину нужно выдать адресный пакет. В регистр данных TWDR загружаем адрес, а бит квитирования устанавливаем нулевым. После загрузки адреса сбрасываем бит TWINT, инициируя дальнейшую работу TWI модуля, и дожидаемся, когда она завершится, опрашивая TWINT.
Посылаем на шину адрес, с которого будет производиться запись в DS1307. Для этого загружаем в регистр данных требуемое значение, сбрасываем бит TWINT и дожидаемся его установки.
Далее можно гнать остальные данные таким же методом, а когда надоест выдать на шину состояние СТОП.
Полный код функции записи будет выглядеть примерно так.
С помощью этой функции можно производить запись отдельных регистров и инициализировать внутренний регистр адреса DS1307 для последующей операции чтения данных. Пример использования функции есть в тестовых проектах.
Чтение данных из DS1307
Формируем состояние СТАРТ.
Посылаем на шину адресный пакет – адрес и установленный бит квитирования.
Получаем данные. Сбрасываем бит TWINT, инициирую работу TWI модуля. Бит TWEA должен быть установлен в 1, чтобы ведущее устройство сигнализировало ведомому о приеме очередного байта.
Когда бит TWINT снова установится в 1, в регистре данных будет байт принятый от ведомого.
Далее можно продолжать чтение или принять данные без подтверждения и выдать состояние СТОП.
Полный код функции чтения одного байта данный из DS1307 будет выглядеть примерно так.
Как обычно тестовый проект, объединяющий все выше сказанное. Программа простая. Инициализируем периферию, загружаем в DS1307 начальное значение. Далее в цикле считываем временя и выводим на LCD. Для общения с DS1307 используются всего три функции.
Остальные проекты выложу позже.
В следующих частях будет разбор работы со статусными кодами, а далее работа с TWI модулем через прерывания.
Автор: AntonChip. Дата публикации: 30 сентября 2012 .
DS1307 – микросхема часов реального времени с интерфейсом I2C(TWI). Часы / календарь хранят следующую информацию: секунды, минуты, часы, день, дату, месяц и год. Конец месяца автоматически подстраивается для месяцев, в которых менее 31 дня, включая поправку для високосного года. Часы работают в 24-часовом или 12-часовом формате с индикатором AM/PM. DS1307 имеет встроенную схему контроля питания, которая обнаруживает пропадание питания и автоматически переключает схему на питание от батареи.
Vbat – вход батареи для любого стандартного 3 Вольтового литиевого элемента или другого источника энергии. Для нормальной работы напряжение батареи должно поддерживаться между 2.5 и 3.5 В. Уровень, при котором запрещён доступ к часам реального времени и пользовательскому ОЗУ, установлен внутренней схемой равным 1.25 x Vbat. Литиевая батарея ёмкостью 35 mAh или больше достаточна для питания DS1307 в течение более чем 10 лет при отсутствии питания.
SCL (Последовательный Тактовый Вход) – SCL используется, чтобы синхронизировать передачу данных через последовательный интерфейс.
SDA (Вход/Выход Последовательных Данных) – SDA – вход / выход данных для 2-проводного последовательного интерфейса. Это выход с открытым стоком, который требует внешнего притягивающего резистора.
SQW/OUT (Меандр / Выходной Драйвер) – Когда бит SQWE установлен в 1, на выходе SQW/OUT вырабатываются импульсы в форме меандра одной из четырех частот: 1 Гц., 4 кГц., 8 кГц., 32 кГц. Вывод SQW/OUT – с открытым стоком, требует внешнего притягивающего резистора.
X1, X2 – выводы для подключения стандартного кристалла кварца 32.768 кГц. Внутренняя схема генератора рассчитана на работу с кристаллом, имеющим номинальную емкость (CL) 12.5 пФ.
GND – Земля.
VCC – питание 5 вольт.
DS1307 работает как ведомое устройство на последовательной шине. Для доступа к нему надо установить состояние START и передать код идентификации устройства, сопровождаемый адресом регистра. К последующим регистрам можно обращаться последовательно, пока не установлено состояние STOP. Когда VСС падает ниже 1.25 x Vbat, устройство прекращает связь и сбрасывает адресный счетчик. В это время оно не будет реагировать на входные сигналы, чтобы предотвратить запись ошибочной информации. Когда VСС падает ниже Vbat, устройство переключается в режим хранения с низким потреблением. При включении питания устройство переключает питание с батареи на VСС, когда напряжение питания превысит Vbat + 0.2V, и реагирует на входные сигналы, когда VСС станет более 1.25 x Vbat. Когда питание находится в пределах нормы, устройство полностью доступно, и данные могут быть записаны и считаны. Когда к устройству подключена трёхвольтовая батарея и VСС ниже 1.25 x Vbat, чтение и запись запрещены. Однако отсчёт времени при этом работает. Когда VСС падает ниже Vbat, питание ОЗУ и отсчёта времени переключается на внешнюю батарею 3 В.
Информацию о времени и дате получают, считывая соответствующие регистры. Регистры часов показаны в таблице ниже. Время и календарь устанавливаются или инициализируются путём записи байтов в соответствующие регистры. Содержание регистров времени и календаря хранится в двоично-десятичном (BCD) формате, поэтому перед выводом информации на LCD дисплей или семисегментный индикатор необходимо преобразовать двоично-десятичный код в двоичный или ANSII – код.
Бит 7 регистра 0 – это бит остановки хода часов (Clock Halt). Когда этот бит установлен в 1, генератор остановлен. Когда сброшен в ноль, генератор работает, а часы считают время.
DS1307 может работать в 12-часовом или 24-часовом режиме. Бит 6 регистра часов задаёт один из этих режимов. Когда он равен 1, установлен 12-часовой режим. В 12-часовом режиме высокий уровень бита 5 сообщает о послеполуденном времени. В 24-часовом режиме бит 5 – второй бит 10 часов (20-23 часа).
Регистр управления DS1307 предназначен для управления работой вывода SQW/OUT. Бит OUT – управление выходом. Этот бит управляет выходным уровнем на выводе SQW/OUT, когда генерация меандра запрещена. Если SQWE = 0, логический уровень на выводе SQW/OUT равен 1, если OUT = 1, и 0 – если OUT = 0. SQWE – Разрешение меандра. Когда этот бит установлен в 1, разрешается генерация меандра. Частота меандра зависит от значений битов RS0 и RS1. Эти биты управляют частотой меандра, когда его генерация разрешена. В таблице ниже показаны частоты, которые могут быть заданы RS битами.
DS1307 поддерживает двунаправленные 2-проводную шину и протокол передачи данных. Устройство, которое посылает данные на шину, называется передатчиком, а устройство, получающее данные – приемником. Устройство, которое управляет передачей, называется ведущим. Устройства, которые управляются ведущим – ведомые. Шина должна управляться ведущим устройством, которое вырабатывает последовательные такты (SCL), управляет доступом к шине, и генерирует состояния СТАРТ и СТОП. DS1307 работает как ведомое на 2-х проводной шине.
Для работы с DS1307 необходимо организовать функцию чтения из микросхемы и функцию записи.
1. Режим записи в DS1307. Последовательные данные и такты получены через SDA и SCL. После передачи каждого байта передаётся подтверждающий бит ASK. Состояния START и STOP опознаются как начало и конец последовательной передачи. Распознавание адреса выполняется аппаратно после приема адреса ведомого и бита направления. Байт адреса содержит семибитный адрес DS1307, равный 1101000, сопровождаемым битом направления (R/W), который при записи равен 0. После получения и расшифровки байта адреса DS1307 выдаёт подтверждение ASK на линии SDA. После того, как DS1307 подтверждает адрес ведомого и бит записи, ведущий передает адрес регистра DS1307. Тем самым будет установлен указатель регистра в DS1307. Тогда ведущий начнет передавать байты данных в DS1307, который будет подтверждать каждый полученный байт. По окончании записи ведущий сформирует состояние STOP.
2. Режим чтения из DS1307. Первый байт принимается и обрабатывается как в режиме ведомого приёмника. Однако в этом режиме бит направления укажет, что направление передачи изменено. Последовательные данные передаются по SDA от DS1307, в то время как последовательные такты – по SCL в DS1307. Состояния START и STOP опознаются как начало и конец последовательной передачи. Байт адреса – первый байт, полученный после того, как ведущим сформировано состояние START. Байт адреса содержит семибитный адрес DS1307, равный 1101000, сопровождаемым битом направления (R/W), который при чтении равен 1. После получения и расшифровки байта адреса DS1307 выдаёт подтверждение ASK на линии SDA. Тогда DS1307 начинает передавать данные, начинающиеся с адреса регистра, на которые указывает указатель регистра. Если указатель регистра не записан перед инициированием режима чтения, то первый адрес, который читается – это последний адрес, оставшийся в указателе регистра. DS1307 должен получить неподтверждение NOASK, чтобы закончить чтение.
Рассмотрим особенности работы с DS1307 на примере простых часов, которые будут показывать часы, минуты и секунды. Данные будут выводиться на LCD дисплей 16х2. Две кнопки «Часы+» и «Минуты+» позволят подвести нужное время. Микроконтроллер Atmega 8 тактируется от внутреннего генератора частотой 1 MHz, поэтому не забудьте поменять фьюзы. Ниже представлена схема подключения.
Управляющая программа включает в себя наборы функций работы с шиной TWI, часами DS1307, LCD дисплеем.
I2CInit – инициализация шины;
I2CStart – передача условия START;
I2CStop – передача условия STOP;
I2CWriteByte – запись данных;
I2CReadByte – чтение данных;
DS1307Read – функция чтения данных из DS1307;
DS1307Write – Функция записи данных в DS1307;
lcd_com – передача команды в LCD;
lcd_data – передача данных в LCD;
lcd_string – функция вывода строки в LCD;
lcd_num_to_str – функция вывода символа типа int;
lcd_init – инициализация LCD.
Ниже представлен код программы:
Установка fuse-битов микроконтроллера
Интерфейс 1-Wire: устройство и применение. элементная база электроники. Н.Елисеев, к.т.н.
Ds18s20 описание на русском
Ds18s20 описание на русском >>> Ds18s20 описание на русском Ds18s20 описание на русском В документации на термодатчик не указана точность значений вычисленных температур, поэтому радиолюбителям советую
ПодробнееIZ1990 КМОП БИС ДЛЯ ЭЛЕКТРОННОГО КЛЮЧА
КМОП БИС ДЛЯ ЭЛЕКТРОННОГО КЛЮЧА ОПИСАНИЕ КМОП микросхема представляет собой электронный носитель уникального 64-битного цифрового кода. Код хранится во внутренней энергонезависимой памяти. Обмен данными
ПодробнееКраткий обзор интерфейса I 2 C
Краткий обзор интерфейса I 2 C Статья основывается на технической документации компании Microchip Technology Incorporated, USA. ООО Микро-Чип Москва — 2001 Распространяется бесплатно. Полное или частичное
ПодробнееКупол FLEX 2 Руководство пользователя
Купол FLEX 2 Руководство пользователя 1.Общие сведения Программируемый контроллер Купол Flex 2 является универсальным устройством, позволяющим использовать его в различных областях, как то: охрана объектов,
ПодробнееОсновные характеристики: IN18В20D
IN18В20D МИКРОСХЕМА ЦИФРОВОГО ДАТЧИКА-ИЗМЕРИТЕЛЯ ТЕМПЕРАТУРЫ ПРО- МЫШЛЕННОГО ДИАПАЗОНА (функциональный аналог микросхема DS18B20 ф.»maxim-dallas Semiconductor») Микросхема IN18B20D — цифровой датчик-измеритель
ПодробнееАСИНХРОННЫЙ БИТОВЫЙ ИНТЕРФЕЙС (АБИ)
ЗАО НПО Пионер АСИНХРОННЫЙ БИТОВЫЙ ИНТЕРФЕЙС (АБИ) РУКОВОДСТВО ПО ЭКСПЛУАТАЦИИ ПРОВОДНОГО КАНАЛА СВЯЗИ (Версия протокола 1.2. — дифференциальный) Челябинск Данное руководство предназначено для определения
ПодробнееМодуль управления EL-U2
Модуль управления EL-U Инструкция по эксплуатации Назначение и функции модуля управления Модуль управления EL-U предназначен для ручного и дистан управления и индикации выходного напряжения и тока источников
ПодробнееУСТРОЙСТВО УПРАВЛЕНИЯ «РЕТЭЛ У102»
ОБЩЕСТВО С ОГРАНИЧЕННОЙ ОТВЕТСТВЕННОСТЬЮ «РЕТЭЛ» УСТРОЙСТВО УПРАВЛЕНИЯ «РЕТЭЛ У102» Инструкция по использованию протокола «MODBUS» для связи с устройствами управления У102. 00.00.000 ИИП 2013 СОДЕРЖАНИЕ
ПодробнееДатчик уровня топлива LLS
Датчик уровня топлива LLS Руководство по интеграции LLS РЭ Номер редакции 7 ООО «Омникомм Технологии» Россия, 127055 г. Москва, ул. Бутырский вал, д. 68/70 Тел.: 8-800-100-2442, 8-495-989-6220 E-mail:
ПодробнееProximity считыватели PR-H03, PR-H05
Интегрированная система безопасности ParsecNET 2 Proximity считыватели PR-H03, PR-H05 Паспорт и инструкция по установке Версия 4.4 Назначение Назначение Считыватели proximity карт PR-H03 и PR-H05 предназначены
ПодробнееPROXIMITY СЧИТЫВАТЕЛЬ PR-P03E
НПО РЕЛВЕСТ PROXIMITY СЧИТЫВАТЕЛЬ PR-P03E Руководство по эксплуатации ТУ 4372-310-18679038-2008.01 РЭ Руководство по эксплуатации Версия 5.3 ОГЛАВЛЕНИЕ 1. ОПИСАНИЕ СЧИТЫВАТЕЛЯ… 3 1.1. Общие характеристики…
ПодробнееДатчики уровня топлива Omnicomm LLS
Датчики уровня топлива Omnicomm LLS Руководство по интеграции 09.06.2017 Содержание 3 3 4 4 5 5 6 7 9 10 12 13 16 Общая информация Описание датчика уровня топлива Omnicomm Требования к внешнему устройству
ПодробнееИнструкция. Подключение к CAN-шине
Требуемые инструменты, приборы, материалы Для подключения терминала GalileoSky (далее — терминал) к CAN-шине транспортных средств (далее — ТС) необходимо иметь: 1. Электромонтажный инструмент. Рисунок
ПодробнееИНТЕРФЕЙСНЫЙ МОДУЛЬ ИМ-01
ОКП 42 5210 ИНТЕРФЕЙСНЫЙ МОДУЛЬ ИМ-01 Руководство по эксплуатации КЕЛН.421000.008 РЭ ООО НПП «Системы промышленного мониторинга» 111250, Москва, Красноказарменная 14 Тел/Факс 362-74-89 2003г. СОДЕРЖАНИЕ
ПодробнееProximity считыватели PR-M03
Интегрированная система безопасности ParsecNET 2 Proximity считыватели PR-M03 Паспорт и инструкция по установке Версия 2.2 Назначение Назначение Считыватели proximity карт PR-M03 предназначены для использования
Подробнее? Fm. АЦП м ЦАП
АЦП м ЦАП http://www.gaw.ru/html.cgi/txt/doc/adc/index.htm Общие сведения Параллельные АЦП Последовательно-параллельные АЦП Многоступенчатые АЦП Многотактные последовательно-параллельные АЦП Конвеерные
ПодробнееQ.raxx D slimline RS / EC
Серия Q.raxx slimline предназначена для монтажа в стойку 19, крейт с высотой 1 U предназначен для выполнения измерений с высоким уровнем гибкости, надежности и точности в сфере стендовых испытаний и производства.
ПодробнееСистема команд модуля «M-DMX»
Система команд модуля «M-DMX» 2014 1 Оглавление Общее описание… 3 Протокол MODBUS… 3 Адресация MODBUS… 3 Регистры хранения… 4 Стартовый кадр… 8 2 Общее описание Модули «M-DMX» подключаются в
ПодробнееПротокол для электронных ключей RW1990.
Протокол для электронных ключей RW1990. Протокол для электронных ключей RW1990. Рассматриваемый материал является результатом кропотливой работы по анализу протокола для ключей RW1990, проведённой Сергеем
ПодробнееИнтерфейс RS-485: описание, подключение
Интерфейс RS-485: описание, подключение Стандарт RS-485 это номер стандарта, впервые принятого Ассоциацией электронной промышленности (EIA). Cейчас этот стандарт назывется TIA/EIA-485 Electrical Characteristics
ПодробнееPW-5000 Основная плата контроллера
PW-5000 Основная плата контроллера Инструкция по установке PW5KIC Security House Export Основная плата контроллера PW-5000 Введение Основная плата контроллера PW5KIC (рис. ) является главным элементом
ПодробнееDHT11 Датчик влажности и температуры
С чего начать? База данных Главная Новости Проекты Скачать Обучение Ch-светомузыка Схемотехника О сайте Форум Файлообменник DHT11 Датчик влажности и температуры Измерение температуры и влажности при помощи
ПодробнееПриложение к руководству
` тел.: +375(01771)7-13-00 e-mail: [email protected] http://www.mechatronics.by Приложение к руководству ЗАО Мехатроника rev. 0.2 2 1. СОДЕРЖАНИЕ 1. СОДЕРЖАНИЕ 2 2. НАЗНАЧЕНИЕ И ТЕХНИЧЕСКИЕ ТРЕБОВАНИЯ
ПодробнееКонвертер интерфейса 1-Wire/RS-232 КИ-1-232
Общество с ограниченной ответственностью «Альфа-Галактика» Конвертер интерфейса 1-Wire/RS-232 КИ-1-232 Руководство по эксплуатации Редакция 1 ООО «Альфа-Галактика» 2019 СОДЕРЖАНИЕ Введение…3 1 Описание
ПодробнееРабочий диапазон температур
Proximity-cчитыватель Р40 Устройство «Р40» предназначено для применения в качестве бесконтактного считывателя в системах контроля и управления доступом (СКУД), либо как простая СКУД (с внешним источником
ПодробнееКонвертер интерфейса 1-Wire/RS-485 КИ-1-485
Общество с ограниченной ответственностью «Альфа-Галактика» Конвертер интерфейса 1-Wire/RS-485 КИ-1-485 Руководство по эксплуатации Редакция 1 ООО «Альфа-Галактика» 2019 СОДЕРЖАНИЕ Введение…3 1 Описание
ПодробнееПоследовательный интерфейс RS-485
Последовательный интерфейс RS-485 Протокол связи RS-485 является наиболее широко используемым промышленным стандартом, использующим двунаправленную сбалансированную линию передачи. Протокол поддерживает
ПодробнееТехническое руководство
Техническое руководство Версия 3.1 Proximity считыватели PR-A03 и PR-A05 Паспорт и инструкция по установке PR-A03 PR-A05 Назначение Считыватели proximity карт PR-A03 и PR-A05 предназначены для использования
ПодробнееПрограммируемый таймер КР580ВИ53
Программируемый таймер КР580ВИ53 (Отечественный аналог Intel i8253) Управление периферийными устройствами часто требует от микропроцессорной системы точного задания временных интервалов между управляющими
ПодробнееКонтроллеры доступа и считыватели
Контроллеры доступа и считыватели Контроллер доступа С2000-2, С2000-2 исп.01 Предназначен для управления доступом через одну или две точки доступа путем считывания кодов предъявляемых идентификаторов (карт
ПодробнееCPKS8. Внешний вид устройства.
CPKS8 Revised 7-feb-2003. Embedded software version 1. 1. Назначение и состав устройства Устройство предназначено для управления устройствами на основе широтноимпульсной модуляции в системах ускорительно-
ПодробнееРуководство по эксплуатации
Устройство ввода дискретных и аналоговых сигналов MIO ADI-1 Руководство по эксплуатации ООО «Церта», Киев 2018-02-16 MIO ADI-1 Оглавление 1. Назначение…2 2. Основные технические характеристики…2 3.
ПодробнееДатчики для безопасности дома | 220.lv
Датчики по интернету
Датчик движения – это устройство, которое фиксирует любое движение в охватываемой зоне, и тем самым, отлично помогает контролировать и охранять какую-либо территорию. Однако наш интернет-магазин может предложить вам большой ассортимент датчиков разных типов. Например, именно у нас вы найдете:
- Инфракрасный датчик движения. Определяет движение с помощью теплового излучения и оптического отражения. Это усовершенствованный вариант обычного датчика движения
- Датчик температуры или термодатчик. Помогает контролировать температуру помещения. А датчик влажности определяет уровень влажности воздуха.
- Датчик открытия окон и дверей. Помогает обезопасить помещение от злоумышленников. Многие модели таких датчиков очень маленькие, что делает их практически незаметными.
- Смарт-датчик. Беспроводные модели датчиков с сетью Wi-Fi.
В нашем ассортименте вы также найдете беспроводной датчик гаражных ворот, беспроводной смарт-сенсор, выключатель закрывания дверей, а также умный датчик движения, громкости, света и вибрации. Нажав на товар, вы увидите подробную информацию, а также оценки и отзывы других покупателей.
Купить датчик в Риге, Даугавпилсе и других городах Латвии по доступной цене
Наш интернет-магазин представляет широкий ассортимент разных датчиков по низкой цене от известных торговых марок. Например, от таких, как Ajax, HiSmart, Denver electronics, Xiaomi и многих других. Цены товаров варьируются в широком диапазоне, поэтому вы сможете найти идеальное устройство для безопасности вне зависимости от вашего бюджета. А благодаря различным супер предложениям, вы сможете купить датчик движения или датчик температуры еще дешевле!
Оформление заказа в интернет-магазине 220.lv займет у вас несколько минут. Ваш товар будет доставлен на указанный адрес в кратчайшее время по всей территории Латвии. Однако вы также можете забрать покупку бесплатно, в одном из наших физических магазинов в Риге и в Даугавпилсе.
Микроконтроллер Atmega2560: описание, характеристики, особенности
Современный человеческий социум окружен большим количеством вспомогательных механизмов, облегчающих жизнь индивидуума. С каждым годом техника все «умнеет», беря на себя множество рутинных задач, которыми ранее приходилось заниматься людям.
Самые элементарные вещи, сейчас воспринимающиеся как привычные, к примеру, работа светофора для регулировки транспортного движения, системы вентиляции или отопления в помещениях, лифты или же еще миллионы обыденных мелочей — ранее требовали непосредственного участия оператора-человека. Теперь управлением технологическими устройствами занимаются компьютеры и их младшие братья – микроконтроллеры, такие как, к примеру, ATMega2560.
Описание микроконтроллера
Сферы применения микроконтроллераОбщее описание
Микроконтроллер – маленький по габаритам, не очень быстрый компьютер, с ограниченным размером оперативной памяти, невысокой тактовой частотой, малой разрядностью обрабатываемых команд. Обычно он представляет собой 8 битный RISC процессор, расположенный на одном чипе с системами ввода-вывода, оперативной и перепрограммируемой памятью. Для обработки видео и аудио он, конечно, не предназначен, но в своей нише служит просто панацеей.
Область применения
Основная область применения – различные устройства, в которых требуется наличие реакций, описываемых логикой, на определенную внешнюю информацию или показания датчиков.
К примеру, можно назвать обычный лифт. Он должен перемещаться между этажами и вверх и вниз, при этом останавливаясь в зависимости от запросов людей снаружи, по пути своего следования, для забора пассажиров. В реальности пример хорош еще и тем, что используется достаточно сложная логика работы. Один из ключевых факторов – если лифт перегружен, то он не будет реагировать на вызов кабины по пути своего следования до момента частичной разгрузки, или если первый пассажир выбрал направление вверх, а желающие им воспользоваться хотят и жмут кнопку «вниз», то на этажах с подобным запросом подъемник не остановится. Микроконтроллеры применяются, в том числе, для организации работы светофоров
Опять же, можно вернуться к регулировке движения автотранспорта. В определенные часы трафик увеличивается в одну сторону, в другие – в обратную. Кроме того, необходимо учитывать частоту пешеходного движения. В обед и вечером количество людей больше, а значит, и разрешающие переход для них и блокирующие езду машин сигналы работают долгое время. В другие периоды наоборот, приоритет дается движению транспортного потока.
Для управления логикой работы устройств или их комплексов, объединенных в «умный» город или дом, и предназначены микроконтроллеры.
Имея достаточно скромные возможностями обработки информации, они, тем не менее, позволяют полностью покрыть весь объем требуемого контроля оборудования. При этом их более низкая цена, минимальное энергопотребление, пассивное охлаждение, крошечные размеры, сравнительно с «большими» компьютерами, – приоритетный плюс в данной области применения.
Характеристики
Внешний вид Arduino Mega2560Речь в статье пойдет о флагманском контроллере ATMega2560 фирмы ATMel. Он служит основой платформы Arduino Mega 2560, объединяющей на единой плате не только сам процессор, но и дополнительно программируемый адаптер USB-COM портов ATMega16u2, позволяющий использовать ATMega2560 в качестве USB HID устройства.
Ранее, в более простых вариантах платформ ATMel, для организации подобной возможности применялись микросхемы шотландской фирмы FTDI.
Характеристики микроконтроллера
Микроконтроллер представлен RISC процессором, разработанным AVR и функционирующим на частоте 16Мгц, которая максимальна из всей линейки продуктов ATMel. На кристалле его чипа расположены все устройства, относимые к общему понятию компьютерной системы: оперативная и перепрограммируемая постоянная, а также flash память, интерфейсные мосты, умножитель.
Процессор характеризуется, как вычислитель одного по времени отклика, на выполнение любой команды, вне зависимости от ее сложности. Разрядность шины адресов и внутренних регистров — 8 бит. Максимальный размер подключаемой, внешней памяти SRAM – 64 Кбайт. Задающий частоту генератор находится в составе самой микросхемы контроллера. Структурная схема ATMega2560
Рабочие характеристики и производительность
Наиболее точно характеристики выражены таблицей:
ЕEPROM (ППЗУ) |
4 Kb |
SRAM (ОЗУ) |
8 Kb |
FLASH ROM |
256 Kb |
Циклов перезаписи EEPROM |
100 000 |
Циклов перезаписи FLASH ROM |
10 000 |
Количество режимов ожидания процессора |
6 |
Таймеры |
|
8bit |
2 |
16bit |
4 |
RTC\Real Time Clock (реального времени) |
1 |
PWM (ШИМ-преобразователи 8bit, выход) |
4 |
Порты |
|
Порты ввода-вывода (общее количество) |
86 |
Аналоговые, по 10bit (вход) |
16 |
Последовательные USART |
4 |
Последовательный SPI, работающий (master/slave) |
1 |
Последовательный, побайтный |
1 |
Цифровые входы\выходы |
54 |
Частота процессора AVR |
16Мгц |
Питание платы Arduino Mega 2560 |
|
стартовое |
1,8В |
рабочее |
5В |
максимальное |
7-12В |
Выходные токи портов 5В |
800мА |
Выходные токи портов 3,3В |
150 мА |
Температурный режим |
-40ºС — +85ºС |
Заявленная скорость обработки команд при номинальной частоте ядра AVR – 16000000 инструкций в секунду.
Порты ввода и вывода
Назначение микроконтроллера – управлять внешним оборудованием, соответственно и для любого из них необходимо большое количество коммуникационных портов. ATMega2560, кроме стандартных, дискретных параллельных и последовательных входов\выходов, оснащен и преобразователями аналоговых сигналов, как в цифровые, так и из них.
Описание пинов
Ниже представлена полная распиновка контактов ATMega2560, с описанием на русском языке. Расположение выводов на Arduino Mega2560
Аналоговые входы разведены 16 портами, каждый из которых определяет 1024 градации мощности сигнала между 5В и общим контактом платы. Чувствительность на единицу показания уровня составляет 0,004В. Верхние пределы максимального напряжения можно менять функциями микроконтроллера и разницей с пином платы AREF.
Порты аналоговых входов:
Pin |
Примечание |
Адресация |
A0 |
|
54 |
A1 |
|
55 |
A2 |
|
56 |
A3 |
|
57 |
A4 |
TCK |
58 |
A5 |
TMS |
59 |
A6 |
TDO |
60 |
A7 |
TDI |
61 |
A8 |
PC INT 16h |
62 |
A9 |
PC INT 17h |
63 |
A10 |
PC INT 18h |
64 |
A11 |
PC INT 19h |
65 |
A12 |
PC INT 20h |
66 |
A13 |
PC INT 21h |
67 |
A14 |
PC INT 22h |
68 |
A15 |
PC INT 23h |
69 |
Цифровые каналы представлены 54 контактами (пинами), работающими, как на ввод, так и на вывод. Часть линий можно задействовать не только для цифровой дискретной выдачи 0 и +5В, соответствующих логическим 0 и 1, но и изменять программно их выходное напряжение, используя ШИМ(PWM) таймеры.
Pin |
Управление PWM(ШИМ) |
Примечание |
0 |
|
Последовательный RX |
1 |
|
Последовательный TX |
2 |
+ |
IN INT 0h |
3 |
+ |
IN INT 1h |
4-12 |
+ |
|
13 |
+ |
In board LED indicator |
14 |
|
Serial port 3 TX |
15 |
|
Serial port 3 RX |
16 |
|
Serial port 2 TX |
17 |
|
Serial port 2 RX |
18 |
|
Serial port 2 TX \ IN INT 5h |
19 |
|
Serial port 2 RX \ IN INT 4h |
20 |
|
I2C SDA \ IN INT 3h |
21 |
|
I2C SCL \ IN INT 2h |
22-23 |
|
|
44-46 |
+ |
|
47-49 |
|
|
50 |
|
MISO |
51 |
|
MOSI |
52 |
|
SCK |
53 |
|
SCL |
Дополнительно Arduino Mega2560 содержит контакт Reset, подавая низкий сигнал, на который вызывается перезагрузка микроконтроллера. Используется он для плат расширения, если они закрывают собой доступ к кнопке сброса.
Питание atmega2560
Блок питания для Mega2560Питание самого устройства выполняется или через внешнюю USB шину, или используя блок питания, подключаемый к специализированному входу 2.1, с центральной плюсовой жилой.
В случае применения разъема допустим люфт напряжений на вводе от 5 до 12В, – контроллеры, расположенные на плате, ограничат превышения 5В в шине питания процессора.
Подавать более 12В на ввод не рекомендуется – это может привести к выходу Arduino Mega2560 из строя.
На плате также разведен плюсовой ввод в виде отдельного пина, для возможности нестандартного подключения питания +7-12В. Он используется и как незащищенный вывод тока внешних устройств, если применяется БП.
На самой плате расположены выводы питания, которые можно применять для внешних устройств, если, конечно, ток потребителей не превышает установленных пределов. Это выход +5В с максимальной выдачей 800 мА, +3.3В с потолком в 150 мА.
Кроме них, рядом расположен общий GND, а также пин IOREF, дающий внешнему оборудованию информацию об используемом напряжении системы и необходимости применения ими отдельных источников питания.
Особенности
Один из множества наборов с микроконтроллером в продажеВ Datasheet к ATMega2560 его особенностями названы:
- непосредственный старт работы процессора при подаче питания и определения контроллером, чем был вызван запуск – появлением тока или же нажатием кнопки Reset;
- внутренний задающий генератор частоты;
- возможность использовать аппаратные прерывания, как от внешних источников, так и сформированные внутренними процессами схемы;
- шесть режимов ожидания процессора – Idle, ADC Noise Reduction, Power-save, Power-down, Standby и Extended Standby.
Отличительные преимущества
Наибольшие плюсы ATMega2560 сравнительно с моделями контроллеров других производителей – это универсальность, отработанная система разработки кода процессора Arduino IDE, документированность возможностей, наличие множества модулей расширения.
Также большое значение имеет время выполнения команд самим устройством – оно заявлено одинаковым для всех инструкций, вне зависимости от их сложности.
Кроме того, это один из самых быстрых контроллеров подобного класса – его частота в 16Мгц с трудом достижима конкурентами.
Хочется также в качестве преимуществ этой платы указать на ее легкое программирование, простое подключение к ПК, благодаря используемому ATMega16u2 или его аналогов в Arduino. Да и форм-фактор поставки с удобным, хорошо документированным расположением вводов\выводов дает большое преимущество именно этому продукту. Еще один из наборов в продаже
Си библиотека для работы с 1-Wire устройствами
Для работы с устройствами, поддерживающими 1-Wire протокол уже давным-давно написаны библиотеки. Поэтому нет смысла изобретать велосипед (лично я это уже делал, когда программировал на ассемблере) и писать что-то свое. На сайте фирмы ATMEL есть замечательный application note AVR318: Dallas 1-Wire, в котором рассмотрены два варианта реализации 1-Wire протокола на микроконтроллерах AVR – программная и аппаратная. Программная реализация позволяет использовать однопроводный протокол на любых микроконтроллерах. Аппаратная – только на тех, на которых есть модуль UART. Аппаратной поддержки 1-Wire протокола «в чистом виде» микроконтроллеры AVR не имеют, однако, используя модуль UART неким хитрым образом, эту поддержку можно организовать. К application note идет проект. Я взял из этого проекта исходные файлы библиотеки, добавил, изменил несколько функций и написал файл compilers.h, чтобы можно было использовать эту либу с любым из трех компиляторов – IAR AVR, GNU GCC (WINAVR), CodeVision.Библиотека состоит из следующих файлов
OWISWBitFunction.h
OWISWBitFunction.c
OWIUARTBitFunction.c
OWIHighLevelFunction.h
OWIHighLevelFunction.c
OWIPolled.h
compilers.h
OWIdefs.h
OWIdevicespecific.h
OWIcrc.h
OWIcrc.c
Процесс интеграции 1-Wire библиотеки с проектом заключается в следующем: — переписываем файлы библиотеки в папку проекта— подключаем сишные файлы к проекту
OWIHighFunction.c
OWISWBitFunction.c
OWIUARTBitFunction.c
— добавляем заголовочные файлы в main.c
#include «OWIPolled.h»
#include «OWIHighLevelFunctions.h»
#include «OWIBitFunctions.h»
#include «common_files\OWIcrc.h» — настраиваем файл OWIPolled.h— выбираем реализацию OneWire интерфейса – программную
#define OWI_SOFTWARE_DRIVER
//#define OWI_UART_DRIVER— задаем тактовую частоту микроконтроллера
#define CPU_FREQUENCY 16.000— задаем порт, к которому подключена OneWire шина
#define OWI_PORT PORTD //!< 1-Wire PORT Data register.
#define OWI_PIN PIND //!< 1-Wire Input pin register.
#define OWI_DDR DDRD //!< 1-Wire Data direction register.— в main.c задаем вывод, к которому подключена OneWire шина
#define BUS OWI_PIN_7
Для GCC проектов в makefile нужно будет добавить все сишные файлы.
Например, так:
SRC = $(TARGET).c bcd.c lcd_lib.c OWISWBitFunctions.c OWIHighLevelFunctions.c OWIUARTBitFunctions.c common_files/OWIcrc.c
Application note AVR318: Dallas 1-WireПроекты проверялись в железе и никаких нареканий не вызывали. В Proteus`е я их тоже запустил, но не сразу. Оказывается по умолчанию датчикам DS18B20 присваиваются одинаковые адреса. При использовании нескольких датчиков адреса нужно подправить ручками.
Подробное описание проектов будет уже в новом году…
AVR318: мастер шины 1-Wire | avr
• Поддерживается протокол Dallas 1-Wire® на стандартной скорости.
• Реализация совместима со всеми микроконтроллерами AVR.
• Может быть выбрана работа по опросу или по прерываниям.
• Вариант с опросом не требует никакой аппаратуры микроконтроллера.
Здесь приведен перевод даташита Atmel AVR318: Dallas 1-Wire® master [1].
[Введение]
Устройства Dallas 1-Wire® уникальны тем, что для обмена данными им требуется только один сигнальный провод и общий провод. И подача питания, и передача данных в обоих направлениях осуществляется только по 1 проводу (отсюда и пошло название шины 1-Wire). Устройства 1-Wire завоевали заслуженную популярность в качестве электронных ключей (ключи-таблетки iButton серий DS1990) и датчиков температуры (DS18B20).
Для того, чтобы микроконтроллер смог обмениваться данными по протоколу 1-Wire, нужен только 1 вывод порта ввода/вывода GPIO. Этот апноут показывает, как можно реализовать мастера шины 1-Wire на микроконтроллере AVR в двух вариантах: либо чисто программно (вариант с опросом), либо с задействованием модуля USART (UART).
[Немного теории: как работает протокол Dallas 1-Wire]
Как уже упоминалось, шина 1-Wire использует только 1 провод для передачи питания и сигналов. Обмен данными асинхронный и полудуплексный, и следует жесткой схеме master-slave (главный-подчиненный). Одно или сразу несколько slave-устройств могут быть подключены одновременно к одной шине, причем на этой шине может работать только один мастер.
В состоянии ожидания (idle) на шине высокий уровень, для этого должен присутствовать верхний нагрузочный резистор (pull-up), через который одновременно приходит питание. Чтобы определить величину pull-up резистора, загляните в даташит на slave-устройство. Все устройства, подключенные к шине, должны иметь возможность притянуть уровень шины к лог. 0. После master требуется наличие буфера с выходом в виде открытого коллектора или открытого стока, если у master нет возможности перевести порт подключения в третье состояние.
Обмен сигналами по шине 1-Wire разделен на слоты по 60 мкс. В течение одного слота передается один бит данных. На длительность слота существуют большие допуски от номинала, что позволяет упростить и удешевить изготовление slave-устройств. Однако все равно от master требуется высокая точность в формировании интервалов времени шины, чтобы обеспечить возможность обмена данными со slave-устройствами с разной базой времени. Так что очень важно укладываться в лимиты времени, описанные в следующих секциях. Более подробно про протокол 1-Wire на русском языке можно почитать в статье [2].
Базовые сигналы шины 1-Wire
Устройство master (микроконтроллер) начитает любую процедуру обмена на шине путем притягивания сигнала шины к лог. 0. Это означает, что при передаче каждого бита, независимо от направления передачи, мастер всегда инициирует передачу бита. Это всегда осуществляется переводом шины master-ом в лог. 0, что синхронизирует логику времени участников обмена шины. Имеется 5 базовых команд для обмена по шине 1-Wire: «Write 1», «Write 0», «Read», «Reset» и «Presence».
Write 1. Этот сигнал показан на рис. 1. Master переводит шину в состояние лог. 0 на время от 1 до 15 мкс. Затем master отпускает шину на оставшееся время слота.
Рис. 1. Команда-сигнал «Write 1».
Write 0. Этот сигнал показан на рис. 2. Master переводит шину в состояние лог. 0 на время как минимум 60 мкс, но не дольше 120 мкс.
Рис. 2. Команда-сигнал «Write 0».
Read. Команда чтения показана на рис. 3. Master переводит шину в лог. 0 на время от 1 до 15 мкс. После этого устройство slave удерживает шину в состоянии лог. 0, если оно хочет передать 0. Если slave хочет передать 1, то оно не будет захватывать шину, шина останется непритянутой к земле за время слота, и на ней будет прочитана лог. 1. Таким образом, master должен прочитать состояние шины через 15 мкс после того, как шина была притянута к лог. 0 в момент начала слота. С точки зрения master формирование команды Write 1 точно такое же, как и сигнала Read. Реальный вид сигнала будет зависеть от внутреннего состояния slave-устройства, а не от сигнала master, который управляет шиной одинаково для сигналов Write 1 и Read.
Рис. 3. Команда-сигнал «Read».
Reset/Presence. Сигналы Reset (сброс) и Presence (присутствие на шине) взаимосвязаны, поэтому здесь они показаны совместно (см. рис. 4). Имейте в виду, что на картинке длительность сигналов показана условно, на самом деле масштаб может отличаться. Сначала master переводит шину в лог. 0 на время как минимум 8 тайм-слотов (т. е. 480 мкс), и затем освобождает её. Этот интервал называется сигналом Reset. Если на шине присутствует подключенное устройство slave, то оно должно после сигнала Reset выдать на шину импульс лог. 0 через 60 мкс после отпускания master-ом шины, и удерживать лог. 0 в течение как минимум 60 мкс. Этот ответ называется сигналом Presence. Если на шине не появился сигнал Presence, то мастер должен предположить, что к шине не подключено никакое подчиненное устройство, так что дальнейший обмен данными невозможен.
Рис. 4. Сигналы «Reset» и «Presence».
Программное генерирование сигналов. Генерация сигналов 1-Wire с помощью AVR делается непосредственно с помощью управления режимом порта GPIO. Т. е. меняется направление работы порта, и его выходное состояние путем записи соответствующих значений в регистры DDRx и PORTx, и это делается с участием программно задаваемых задержек. Подробное описание процесса приведено в секции реализации.
Генерирование сигналов с помощью UART. Базовый набор сигналов 1-Wire также может быть сгенерирован с помощью аппаратного UART, встроенного в ядро микроконтроллера AVR. Этот способ требует, чтобы к шине были подключены оба сигнала TXD и RXD аппаратного UART. Также требуется наличие внешнего буфера с открытым коллектором или открытым стоком, чтобы обеспечить возможность освобождения шины, когда на выходе UART присутствует лог. 1. На рис. 5 показана реализация такого буфера на транзисторах NPN. Номиналы резисторов и типы транзисторов ориентировочные, указаны только в качестве рекомендации. Для точного значения pull-up резистора см. рекомендации в даташите на slave-устройство, которое подключаете к шине 1-Wire.
Рис. 5. Буфер на биполярных транзисторах (открытый коллектор).
Для генерации сигнала 1-Wire используется формат фрейма данных UART 8 бит, без четности (no parity), 1 стоп-бит. Один фрейм данных UART используется для одного бита или для последовательности RESET/PRESENCE. В таблице 1 показано, как нужно настроить модуль UART, чтобы генерировать нужные формы сигнала, и как они интерпретируются на приеме. Соответствующие шаблоны битов UART показаны на рис. 6..10.
Таблица 1. Сигналы UART для эмуляции протокола 1-Wire.
Сигнал | Скорость | Передаваемое значение | Принимаемое значение |
Write 1 | 115200 | FFh | FFh |
Write 0 | 115200 | 00h | 00h |
Read | 115200 | FFh | FFh эквивалентен прочитанному биту 1. Все другие значения эквивалентны биту 0. |
Reset/Presence | 9600 | F0h | F0h соответствует отсутствию сигнала presence. Любое другое значение соответствует наличию сигнала presence. |
Прим. переводчика: скорее всего, длительности протокола 1-Wire специально проектировались под стандатные скорости работы RS-232, потому что даже в момент первого появления на рынке устройств 1-Wire уже были доступны простые считыватели slave-устройств, подключаемые к COM-порту компьютера. Был также опубликован апноут Dallas, описывающий такое подключение. Открытость протокола и простота подключения к компьютеру положительно сказывались на популяризации протокола 1-Wire.
Рис. 6. Сигнал Write 1 и соответствующий набор бит UART.
Рис. 7. Сигнал Write 0 и соответствующий набор бит UART.
Рис. 8. Сигнал Read 0 и соответствующий набор бит UART.
Рис. 9. Сигнал Read 1 и соответствующий набор бит UART.
Рис. 10. Сигнал Reset/Presence и соответствующий набор бит UART.
Команды ROM. Каждое устройство 1-Wire содержит глобальный, уникальный 64-битный номер (идентификатор), хранимый в постоянной неперезаписываемой памяти (ROM). Этот номер может использоваться для упрощения адресации как числовой идентификатор отдельных устройств на шине. Именно этот идентификатор выбит на корпусе ключей iButton в виде шестнадцатеричного числа.
64-битный идентификатор состоит из 3 частей: 8-битный код семейства, 48-битный серийный номер и 8-битная CRC, которая вычисляется от первых 56 бит идентификатора. Для работы с этим 64-битным идентификатором имеется небольшой набор команд, они называются команды ROM. В таблице 2 показаны эти 6 команд ROM.
Таблица 2. Команды ROM.
Команда | Код | Назначение |
READ ROM | 33h | Идентификация |
SKIP ROM | CCh | Пропуск адресации |
MATCH ROM | 55h | Адресация определенного устройства. |
SEARCH ROM | F0h | Получить 64-битные идентификаторы всех устройств на шине |
OVERDRIVE SKIP ROM | 3Ch | Версия команды SKIP ROM на повышенной скорости |
OVERDRIVE MATCH ROM | 69h | Версия команды MATCH ROM на повышенной скорости |
READ ROM. Эта команда может использоваться на шине, к которой подключено одно slave-устройство, чтобы прочитать уникальный 64-битный идентификатор. Если к шине подключено несколько slave-устройств, то результатом этой команды будет результат AND от всех идентификаторов (т. е. распознать данные каждого идентификатора по отдельности нельзя). И конечно же, если предположить, что передача данных произошла без ошибок, при наличии нескольких устройств на шине контрольная сумма CRC не совпадет.
SKIP ROM. Эта команда может использоваться, целью является не на какое-то конкретное slave-устройство. На шине, где присутствует только одно slave-устройство, достаточно использовать команду SKIP ROM для адресации этого устройства. При наличии на шине нескольких slave-устройств команда SKIP ROM может использоваться для адресации всех устройств сразу. Это может быть полезным только в том случае, когда надо подать команду всем устройствам одновременно, например запустить измерения температуры на всех сенсорах сразу. При наличии на шине нескольких slave-устройств использовать для чтения команду SKIP ROM невозможно.
MATCH ROM. Команда MATCH ROM используется для адресации отдельных slave-устройств на шине. После команды MATCH ROM по шине передается полный 64-битный идентификатор. Когда это завершилось, разрешено отвечать только тому устройству на шине, которое имеет точно этот идентификатор — пока не будет принят следующий импульс reset.
SEARCH ROM. Команда SEARCH ROM может использоваться, когда идентификаторы всех slave-устройств не известны заранее. Она дает возможность определить все идентификаторы устройств, которые подключены сейчас к шине. Сначала команда SEARCH ROM передается по шине мастером. Затем мастер читает один бит из шины. Каждое slave-устройство помещает свой первый бит идентификатора на шину. Таким образом, мастер прочитает логическое AND от всех первых бит идентификаторов устройств, подключенных на шине. Затем мастер читает следующий бит на шине. Тогда каждое slave-устройство помещает на шину дополнение к своему первому биту. Мастер прочитает этот бит как логическое AND от всех логических дополнений первого бита от всех подчиненных устройств. Если все устройства имели в первом бите лог. 1, то мастер прочитает 10b. Если же все устройства имели в первом бите 0, то мастер прочитает 01b. В этих двух случаях бит может быть сохранен как первый бит у всех адресов. Тогда мастер запишет этот бит обратно, это даст эффект, что все подчиненные устройства продолжат посылать свои идентификаторы. Если на шине присутствуют устройства, у которых первый бит идентификатора отличается (т. е. у одного устройства первый бит 0, у другого первый бит 1), то мастер прочитает на шине 00. В этом случае мастер должен сделать выбор — хочет ли он обращаться по адресу, где в первом бите будет 0, или по адресу, где в первом бите будет 1. Выбор будет передан на шину, в результате чего все устройства, у которых в первом бите окажется не соответствующий выбранному значению бит, останутся в состоянии ожидания.
Затем мастер переходит к следующему биту, и процесс повторяется до тех пор, пока не будут прочитаны все 64 бита. В результате будет прочитан один 64-битный идентификатор устройства, которое подключено к шине. Чтобы распознать другие идентификаторы, команда SEARCH ROM должна быть запущена заново, но на этот раз на спорном бите выбор должен быть сделан на противоположный. Повторение этой процедуры для каждого починенного устройства приведет к тому, что все их идентификаторы будут распознаны. Обратите внимание на то, что когда закончен поиск одного идентификатора, то все подчиненные устройства, кроме одного, должны находиться в состоянии ожидания (idle). Так что теперь можно осуществлять обмен данными с этим устройством без специальной адресации его командой MATCH ROM.
Overdrive ROM. Команды overdrive ROM здесь не рассматриваются, поскольку данный документ относится только к командам, работающим на стандартной скорости.
Memory/function. Команды доступа к памяти/функциям относятся к специфическим командам, зависящим от конкретного slave-устройства. Эти команды обычно работают с чтением и записью внутренней памяти и регистров slave-устройств. Определено некоторое количество этих команд, но не все команды используются всеми устройствами. Порядок чтения и записи специфичен для конкретного устройства, и основной стандарт это не определяет. Подробно команды памяти здесь не рассматриваются.
Итак, все 1-Wire устройства следуют базовой последовательности обмена данными:
1. Мастер посылает на шину сигнал Reset.
2. Slave-устройство (или устройства, если их несколько на шине) отвечают импульсом Presence.
3. Мастер посылает команду ROM, которая эффективно адресует одно или несколько slave-устройств.
4. Мастер посылает команду Memory.
Обратите внимание, что для начала каждого шага нужно завершить сделанный последний шаг. Однако это необязательно делать для завершения всей последовательности. Например, можно послать новый Reset после завершения команды ROM для начала нового цикла обмена.
CRC. Контрольная сумма, Cyclic Redundancy Check (CRC) используется устройствами 1-Wire для того, чтобы гарантировать целостность данных. Теория CRC здесь не рассматривается. Для получения дополнительной информации про CRC см. [2].
В устройствах 1-Wire можно найти главным образом две разных CRC. Одна 8-битная (называется Dallas
One Wire CRC, DOW-CRC, или просто CRC8), вторая 16-битная (CRC16). CRC8 используется в секции ROM всех устройств. Также CRC8 используется в некоторых устройствах для проверки других данных, наподобие команд, выданных на шине. CRC16 используется в некоторых устройствах для проверки на ошибки в достаточно больших наборах данных.
Аппаратный эквивалент 8-битной CRC, используемой на 64-битном идентификаторе, показан на рис. 11. Блоками представлены отдельные биты регистра сдвига. Эквивалентный полином для этой CRC будет X8 + X5 + X4 + 1.
Рис. 11. Аппаратный эквивалент CRC8, используемой в 1-Wire устройствах.
Аппаратный эквивалент 16-битной CRC, используемой в некоторых устройствах 1-Wire, показан на рис. 12. Блоками представлены отдельные биты регистра сдвига. Эквивалентный полином для этой CRC будет X16 + X15 + X2 + 1.
Рис. 12. Аппаратный эквивалент CRC16, используемой в 1-Wire устройствах.
[Реализация]
Здесь рассмотрены 3 разные реализации 1-Wire (драйверы): чисто программная обработка GPIO с периодическим опросом (без прерываний), использование периодического опроса UART (без прерываний) и использование UART с задействованием прерываний. Ниже дано короткое описание каждой реализации, подробная информация по использованию не включена в этот документ. Пожалуйста, см. документацию в исходном коде для этого апноута для получения информации, как использовать различные драйверы.
Можно реализовать протокол 1-Wire только программно, без применения какой-либо дополнительной аппаратуры. Достоинство такого решения в простоте — задействован только 1 вывод GPIO, и подключен 1 pull-up резистор. Поскольку все выводы GPIO микроконтроллеров AVR двунаправленные, и у них есть подключаемый внутренние pull-up резисторы, то AVR могут управлять шиной 1-Wire без поддержки внешних схем. В тех случаях, когда номинал встроенного резистора не подходит под текущую конфигурацию подключенных slave-устройтв, из внешней аппаратуры требуется только один внешний резистор. Недостаток этой реализации в том, что микроконтроллер загружен непроизводительными задержками на ожидание для отработки интервалов времени Reset/Presence и битовых сигналов. Чтобы обеспечить корректные интервалы времени шины 1-Wire, во время передачи битов прерывания должны быть запрещены. Допустимая задержка между передачей двух соседних бит (recovery time, время восстановления) не ограничена сверху, так что можно безопасно обрабатывать прерывания после передачи каждого бита. Когда шина 1-Wire активна, из-за длительности сигнала Reset/Presence получается латентность в обработке прерывания для самого худшего случая меньше 1 мс.
Опрашиваемый драйвер UART использует встроенный аппаратный UART микроконтроллера AVR (который есть почти на всех AVR) для генерации требуемых сигналов шины 1-Wire. Остальная часть драйвера эквивалентна программному драйверу, который был описан в предыдущем абзаце. Главное достоинство этого драйвера в сравнении с чисто программным в том, что меньше размер кода, и еще тот факт, что не надо отключать прерывания во время передачи битов, потому что модуль UART выдерживает нужные задержки интервалов времени аппаратно. Недостаток в том, что нужно использовать два GPIO, причем определенные GPIO (привязанные к TX и RX аппаратуры UART), также нужна некоторая внешняя схема.
Драйвер на основе UART с задействованием прерываний генерирует сигналы шины точно так же, как это делает драйвер UART с программным опросом. Дополнительное достоинство в том, что прерывания позволяют автоматизировать прием и передачу до 255 бит данных с минимальной загрузкой вычислительного ядра AVR.
Драйверы с опросом разделены на две части: генерация сигналов на уровне бита, и более высокоуровневые команды наподобие передачи байт и реализации команд ROM. Между двумя программными версиями драйвера различаются только процедуры уровня бит (поскольку сигналы шины формируются в одном случае чтением/записью регистров GPIO, в другом случае чтением/записью регистров UART), но далее реализован общий интерфейс, что позволяет выполнять высокоуровневые команды с любым драйвером.
[Программная реализация на основе управления GPIO]
С чисто программной реализацией, которая описана в этом апноуте, можно реализовать сразу несколько шин 1-Wire, подключенных к одному AVR. Все шины должны быть подключены к одному и тому же порту ввода/вывода (например только к PORTB, или только к PORTD), но какой порт будет использоваться — можно выбрать опциями перед компиляцией. Это ограничивает количество шин до 8, однако распределение шин по разрядам порта полностью конфигурируемо. Все выводы, которые не задействованы под шины 1-Wire, остаются нетронутыми. Поскольку все шины 1-Wire подключены к одному и тому же порту, то можно одновременно выполнять несколько операций в одно и то же время на нескольких шинах. Это возможно путем задействования аргумента для выбора нужного вывода или выводов, который передается каждой функции. Этот аргумент должен содержать в себе битовую маску для выводов, которые должны использоваться для этой операции. К примеру, это дает возможность послать сигнал Reset одновременно на 8 шин, если передать 0xff в аргументе маски выводов. Значение, которое будет возвращено, является битовой маской от всех шин, где одно или большее количество slave-устройств ответило сигналом presence. Эта битовая маска может быть затем передана в качестве аргумента выводов в функцию, которая выдает команду SKIP ROM, и так далее. Все функции в этой реализации поддерживают выбор выводов. Как основное правило все команды, которые записывают данные на шины, могут адресовать одновременно несколько шин. Команды, которые читают более одного бита с шины, могут адресовать только одну шину.
Инициализация. Процедура инициализации для программной реализации драйвера интерфейса 1-Wire очень проста. Она заключается в настройке выводов шин 1-Wire в режим ввода, и разрешение на этих выводах внутренних резисторов pull-up, и если это необходимо, перевод шины в состояние ожидания (idle mode). Некоторые устройства среагируют на фронт нарастания уровня на шине как на окончание сигнала Reset, и ответят выдачей сигнала Presence. Чтобы гарантировать, что этот сигнал не повлияет на любой обмен данными, после инициализации порта добавлена задержка, равная времени восстановления из сигнала Reset.
Битовые функции нижнего уровня. Эти функции реализованы в соответствии с апноутом AN126 компании Dallas Semiconductors. Все параметры времени удовлетворяют рекомендуемым значениям в этом апноуте. Требуется 10 различных задержек, которые перечислены в таблице 3.
Таблица 3. Задержки, которые применяются на уровне формирования передачи битов.
Параметр | Рекомендуемая задержка (мкс) |
A | 6 |
B | 64 |
C | 60 |
D | 10 |
E | 9 |
F | 55 |
G | 0 |
H | 480 |
I | 70 |
J | 410 |
Обратите внимание, что задержка G в стандартном режиме равна 0.
Поскольку операции ввода/вывода реализованы на C, не на ассемблере, то настройки оптимизации компилятора и другие факторы могут повлиять на формируемые задержки. Рекомендуется проанализировать форму сигнала с помощью осциллографа, и подстроить задержки, если это необходимо.
Реализация функций слоя передачи бит показана на рис. 13. Обратите внимание, что функция DetectPresence и отправляет сигнал Reset, и слушает шину на предмет появления сигнала Presence. Все функции уровня передачи бит могут адресовать несколько шин одновременно.
Рис. 13. Функции слоя передача бит.
Приложены два макроса для притягивания шины к лог. 0 и для освобождения шины. Они реализованы как макросы, потому что используются часто, так что устраняется ненужная нагрузка в виде вызова функции и возврата из функции, что положительно влияет на точность формирования диаграмм сигналов по времени.
[Реализация на основе опроса UART]
В этой реализации все задержки времени для формирования сигналов шины обслуживаются модулем UART. Чтобы отправить бит, устанавливается скорость UART (Baud Rate) на подходящее значение, и регистр данных UART загружается значение, которое генерирует нужную форму сигнала, как это было описано в секции «Генерирование сигналов с помощью UART» (см. также рис. 6..10).
Инициализация. Чтобы инициализировать драйвер UART с программным опросом, аппаратура UART должна быть настроена с правильными параметрами. Разрешение передачи и приема, установка формата данных 8 бит, без четности (no parity), 1 стоп-бит и скорость обмена 115.2 килобод.
Это приведет к тому, что вывод TXD модуля UART перейдет в состояние ожидания (idle) с уровнем лог. 1. Подчиненные устройства воспримут фронт нарастания сигнала TXD как окончания сигнала RESET, и ответят сигналом presence.
Битовые функции нижнего уровня. Все эти функции реализованы в драйвере с опросом UART через одну общую функцию OWI_TouchBit. Эта функция выводит первый входной аргумент в модуль UART, ждет завершения приема UART, и затем возвращает принятое значение. Каждая из битовых функций вызывает OWI_TouchBit со значением, которое генерирует корректное значение сигнала на шине.
Интерфейс к этим функциям тот же самый, что и в реализации драйвера с программным опросом порта (без UART). Аргумент pins однако не требуется в драйвере UART с опросом. Набор макросом делает возможным вызов этих функций с аргументом pins или без него. Если аргумент pins присутствует, то он будет удален макросом.
Функции высокого уровня. Обратите внимание, что многие функции на этом уровне принимают в качестве аргумента тип указатель на беззнаковое целое (unsigned char pointer). Этот указатель должен указывать на массив памяти из 8 байт, который может использоваться функцией. Выделение этих массивов в памяти, а иногда и их инициализация должна выполняться вызывающей функцией. Этот документ четко показывает, когда память должна быть инициализирована специальным образом перед вызовом функции.
Функции передачи байта
Рис. 14. Функции передачи байта.
Команды ROM. Реализованы все основные команды ROM для стандартной скорости обмена. Самая простая из них команда SKIP ROM. Она просто вызывает функцию SendByte, которая получает байт команды SKIP ROM в качестве аргумента. Алгоритмы для команд READ ROM и MATCH ROM показаны на рис. 15.
Рис. 15. Алгоритм работы Read ROM (чтение ROM).
Алгоритм для команды SEARCH ROM показан на рис. 16. Эта функция ищет одно slave-устройство при каждом своем запуске, пока не останется ни одного нераспознанного устройства на шине. Во время последнего запуска она вернет OWI_ROM_SEARCH_FINISHED. В дополнение к параметру pin, который используется для выбора шины, в эту функцию должны быть переданы 2 параметра: lastDeviation и bitPattern. Эти параметры управляют поиском slave-устройства. Обратитесь к таблице 4, чтобы понять, как использовать эти параметры для завершения полного поиска всех подчиненных устройств.
Таблица 4. Использование bitPattern и lastDeviation.
BitPattern | lastDeviation | |
Первый раз | 8-байтный массив заполняется нулями. | 0 |
Последующие запуски | Копия 8-байтного массива, возвращенного через указатель bitPattern на последнем запуске. | Значение, возвращенное из SearchRom на последнем запуске. |
Функция реализована таким способом для того, чтобы дать вызывающему коду максимум гибкости. Пример программного обеспечения для драйвера с опросом показывает, как его можно использовать для выполнения полного поиска.
Рис. 16. Команда Search ROM (поиск ROM).
Тактирование. Важно генерировать сигналы шины максимально точно, насколько это возможно. Чтобы добиться этого, нужно точно формировать задержки. Количество необходимых циклов тактов для задержки в определенное количество микросекунд вычисляется во время компиляции. Когда генерируются сигналы, некоторые такты теряются, когда шина притягивается к лог. 0, и когда шина освобождается. Эти циклы тактов вычитаются их количества тактовых циклов, нужных для генерирования задержки. Если тактовая частота слишком мала, то может получиться отрицательная задержка. Нужна тактовая частота не ниже 2.17 МГц, чтобы получить самые короткие задержки.
[Реализация на основе UART с задействованием прерываний]
Для драйвера UART с прерываниями требования к аппаратуре те же самые, что и для драйвера UART с опросом. Базовая функциональность реализации с прерываниями, показанной в этом апноуте, состоит в том, чтобы обеспечить автоматическую передачу и прием больших порций данных на шине. Это реализовано в двух обработчиках прерывания (Interrupt Service Routines, ISR). Для настройки всех необходимых параметров должны вызываться несколько вспомогательных функций, и эти ISR завершают транзакцию автоматически. Это возможно для последовательности Reset/Presence или для передачи любого количества бит данных от 1 до 255 в одном направлении, без какого-то дополнительного вмешательства в запущенный процесс.
Чтобы сделать ISR-ы максимально простыми, не делается различие для процессов передачи и приема. UDRE ISR просто отправляет один бит из буфера данных каждый раз при своем запуске. RXC ISR принимает тот же б бит, и помещает его обратно в буфер данных независимо от направления, в котором передаются данные. Во время передачи отправленные данные будут идентичны принятым, и буфер данных не поменяется. Во время приема должны передаваться только единички, поскольку форма сигнала «write 1» совпадает с формой сигнала чтения. Сигнал на шине опрашивается, чтобы считать значение, которое послало slave-устройство. Затем это значение будет помещено в буфер данных.
Три глобальных флага сигнализируют о состоянии драйвера 1-Wire: busy, presence и error. Флаг busy установлен, пока еще есть данные для передачи. Флаг presence установлен, если детектирован сигнал Presence, когда отправляется сигнал Reset. Этот флаг остается установленным, пока сигнал Reset по шине не получил в ответ сигнал Presence. Флаг error устанавливается, когда приемник UART детектировал ошибку фрейма. В этой ситуации по шине должен быть передан новый сигнал Reset. Это приведет к сбросу всех slave-устройств на шине, а также внутреннего состояния обработчиков UDRE ISR и RXC ISR.
Поскольку ISR-ы должны завершить свою работу как можно быстрее, более сложные функции, наподобие команд ROM, не реализованы в обработчиках ISR. Прилагаемый код примера показывает, как такое поведение должно быть реализовано в машине конечных состояний (Finite State Machine, FSM).
Обработчики прерываний (Interrupt Service Routine, ISR). Алгоритмы для ISR показаны на рис. 17 и 18. Обработчик ISR события опустошения данных UART Data Register Empty (UDRE) запускается всякий раз, когда появляется свободное место в буфере передачи UART. Обработчик ISR для события завершения приема UART Receive Complete (RXC) запускается каждый раз, когда данные приняты, и находятся в готовности в буфере приема UART.
Рис. 17. Алгоритм ISR для UDRE.
Рис. 18. Алгоритм RXC для UDRE.
Вспомогательные функции. Они нужны для установки некоторых параметров, которые нужны для автоматической передачи под управлением прерываний. После установки всех нужных параметров передача инициируется разрешением прерывания UDRE. Алгоритмы вспомогательных функций показаны на рис. 19.
Обратите внимание, что функция ReceiveData (функция для приема данных) в действительности заполняет буфер данных единичками, после чего вызывает функцию TransmitData (функция для передачи данных). RXC ISR будет делать выборки сигнала и поместит в буфер данных прочитанное значение, которое передало slave-устройство.
Рис. 19. Вспомогательные функции.
[Вычисление CRC]
Далее описан алгоритм для вычисления двух разных типов CRC. Переменная crc либо установлена в 0, либо в начальное значение CRC, так называемое «seed». Это объясняется ниже. Сокращение LSB означает Least Significant Bit, т. е. самый младший бит. Сокращение MSB означает Most Significant Bit, т. е. самый старший бит.
1. Найти логическое исключающее или (XOR) между LSB у CRC и LSB у данных.
2. Если это значение равно 0, то:
a. Сдвинуть вправо CRC.
3. Если это значение равно 1, то:
a. Найти новое значение CRC путем выполнения операции XOR между CRC и полиномом CRC.
b. Сдвинуть вправо CRC.
c. Установить MSB у CRC в 1.
4. Сдвинуть вправо данные.
5. Повторить всю последовательность 8 (или 16) раз.
Этот алгоритм может использоваться одинаково как для вычисления CRC8, таки и для CRC16. Разница только в разрядности CRC и регистре сдвига для него (8 бит для CRC8, 16 бит для CRC16) и в значении числа полинома. Это число симулирует соединение элементов XOR в аппаратном вычислителе CRC. Значение полинома составляет 18h для CRC8 и 4002h для CRC16.
Алгоритмы реализованы для того, чтобы найти значение CRC по одному байту за раз, но CRC «seed» может быть передано как аргумент подпрограммам CRC. Таким способом результат от одной операции вычисления CRC может быть передан следующей операции вместе со следующим байтом, так что получается эффект вычисления CRC от произвольного количества байт.
Проверка CRC для 64-битных идентификаторов реализована в OWI_CheckRomCRC. Она просто вычисляет значение CRC8 от первых 56 бит, и сравнивает их с последними 8 битами идентификатора.
[Примеры кода]
Приведены 2 примера кода, которые иллюстрируют, как использовать разные реализации драйвера 1-Wire.
Пример кода с опросом. Этот пример для драйверов с опросом, которые делают поиск устройств на шинах, заданных как BUSES. Устройства сохраняются в массиве типа OWI_device. OWI_device является структурой, которая содержит информацию об устройстве, подключенном к шине, и его 64-битный идентификатор. Драйвер затем ищет среди доступных устройств сенсор температуры DS1820 и цифровой потенциометр DS2890. Если какое-то из этих устройств (или оба) найдено на шине, они будут постоянно опрашиваться в бесконечном цикле. В каждой итерации считывается температура из DS1820, и положение движка DS2890 увеличивается на единицу, обрезаясь по модулю 256. Температура выводится в PORTB, так что её можно наблюдать свечением светодиодов LED на плате разработчика STK500.
Пример кода предназначен просто показать, как использовать разные части драйвера. Код реализован самым общим образом, без оптимизации под какие-то требования. Поэтому имейте в виду, что пример кода не поместится в микроконтроллеры, у которых на борту меньше 4 килобайт памяти программ. Однако сам драйвер полностью совместим со всеми моделями AVR, включая устройства с 1 килобайтом памяти программ.
Пример кода с задействованием прерываний. В этом примере реализована машина FSM. Если драйвер не занят передачей данных по шине, то эта FSM вызывается в бесконечном цикле. Когда драйвер занят, то FSM пропускается, чтобы позволить работать другому коду. Сама по себе FSM подразумевает, что на шине присутствует единственный датчик температуры DS1820. Она читает текущую температуру, и вычисляет CRC, чтобы убедиться, что чтение было корректным. Затем температура помещается в глобальную переменную. Независимо от занятости драйвера, бесконечный цикл выводит температуру в PORTB, так что её изменение можно отслеживать по светодиодам платы разработчика STK500.
[Быстрый старт]
Исходный код. Его можно загрузить в виде zip-файла с сайта atmel.com (или см. [3]). Распакуйте исходный код в любую выбранную Вами папку. Убедитесь, что сохранена структура директорий в том виде, в каком она была в архиве. Здесь есть 3 подпапки: polled, interrupt_driven и common_files. Папка common_files содержит функции CRC, общие определения и определения, специфичные для применяемого микроконтроллера, которые используются для драйверов UART. Папки polled и interrupt_driven содержат драйвера и примеры кода.
Каждая папка содержит в себе файл source.doc. Эти файлы содержат документацию по исходному коду. Пожалуйста обратитесь к этой документации для получения подробностей о том, как использовать разные драйверы.
Драйвер с опросом. Короткое описание каждого файла для драйвера с опросом дано в таблице 5.
Таблица 5. Файлы для драйвера с работой по опросу (без прерываний).
Файл | Описание |
main.c | Пример кода для работы драйвера с опросом. |
OWISWBitFunctions.c | Битовые функции низкого уровня, реализованные с помощью программного опроса GPIO, без задействования прерываний. |
OWIUARTBitFunctions.c | Битовые функции низкого уровня, реализованные с помощью опроса UART. |
OWIBitFunctions.h | Общий заголовочный файл для функций модулей OWISWBitFunctions.c и OWIUARTBitfunctions.c. |
OWIHighLevelFunctions.c | Функции драйвера верхнего уровня. |
OWIHighLevelFunctions.h | Заголовочный файл для модуля OWIHighLevelFunctions.c. |
OWIPolled.h | Конфигурационный заголовочный файл для драйвера с опросом. |
source.doc | Документация по исходному коду в этой папке. |
Чтобы начать работу с драйверами, работающими по опросу, выполните следующие шаги:
• Создайте новый проект в среде разработки IAR embedded workbench. В зависимости от версии IAR, это может потребовать также создания рабочего пространства (workspace).
• Добавьте в проект все файлы *.c из директорий polled и common_files.
• Выберите корневую папку проекта в браузере проектов IAR. Сделайте на неё правый клик и выберите Options…, при этом отобразится диалог настройки опций проекта.
• Под General/Target убедитесь, что выбраны правильный микроконтроллер и правильная модель памяти.
• Под General/Library configuration поставьте галочку на опции «Enable bit definitions in I/O include files».
• Под General/System установите стек данных Data stack (CSTACK) в значение 0x40 и стек возврата Return stack (RSTACK) в значение 0x10. Это требуется для примера, интенсивно использующего память. Размер под стеки меньше могут удовлетворять другим приложениям, которые используют этот драйвер.
• Если для отладки используется AVRStudio, то нужно поменять формат выходного файла. Под XLINK/Output выберите Format/Other, и затем выберите «ubrof 8 (forced)» из выпадающего списка Output format.
• Откройте файл OWIPolled.h для редактирования, и найдите там секцию с именем «User defines» (определения пользователя).
• Выберите либо только программный драйвер (software only) или драйвер UART путем раскомментирования одной из строк, как это описано в файле.
• Переместитесь вниз к секции, относящейся к выбранному драйверу.
• Подстройте определения в секции в соответствии с аппаратными установками, как это описано в файле.
• Теперь проект готов к компиляции.
Драйвер с прерываниями. Короткое описание каждого файла для драйвера с использованием прерываний показано в таблице 6.
Таблица 6. Файлы для драйвера с работой по прерываниям.
Файл | Описание |
main.c | Пример кода для работы драйвера с прерываниями. |
OWIInterruptDriven.h | Конфигурационный заголовочный файл для драйвера с опросом. |
OWIIntFunctions.c | Реализация обработчиков прерывания и вспомогательных функций. |
OWIIntFunctions.h | Заголовочный файл для модуля OWIIntFunctions.c. |
source.doc | Документация по исходному коду в этой папке. |
Чтобы начать работу с драйверами, работающими по прерываниям, выполните следующие шаги:
• Создайте новый проект в среде разработки IAR embedded workbench. В зависимости от версии IAR, это может потребовать также создания рабочего пространства (workspace).
• Добавьте в проект все файлы *.c из директорий interrupt_driven и common_files.
• Выберите корневую папку проекта в браузере проектов IAR. Сделайте на неё правый клик и выберите Options…, при этом отобразится диалог настройки опций проекта.
• Под General/Target убедитесь, что выбраны правильный микроконтроллер и правильная модель памяти.
• Под General/Library configuration поставьте галочку на опции «Enable bit definitions in I/O include files».
• Если для отладки используется AVRStudio, то нужно поменять формат выходного файла. Под XLINK/Output выберите Format/Other, и затем выберите «ubrof 8 (forced)» из выпадающего списка Output format.
• Откройте файл “OWIInterruptDriven.h” для редактирования, и найдите там секцию с именем «User defines» (определения пользователя).
• Поменяйте определения в секции «User defines», чтобы они отражали реальную конфигурацию аппаратуры.
• Теперь проект готов к компиляции.
[Ссылки]
1. AVR318: Dallas 1-Wire master site:atmel.com.
2. iButton: описание протокола, электронный замок на ключах-таблетках.
3. 141130AVR318.zip — исходный код примеров, документация.
DS18B20: полное руководство покупателя
Однопроводный датчик температуры DS18B20
DS18B20 — это датчик температуры интерфейса 1-Wire, производимый Dallas Semiconductor Corp. Уникальный интерфейс 1-Wire требует только одного цифрового вывода для двусторонней связи с микроконтроллером.
Датчик обычно бывает двух видов. Тот, что идет в корпусе ТО-92, выглядит в точности как обычный транзистор. Другой — в виде водонепроницаемого зонда, который может быть более полезным, когда вам нужно измерить что-то далеко, под водой или под землей.
Тип датчика температуры DS18B20
Датчик температуры DS18B20 достаточно точен и не требует для работы каких-либо внешних компонентов. Он может измерять температуру от -55 ° C до + 125 ° C с точностью ± 0,5 ° C.
Разрешение датчика температуры настраивается пользователем на 9, 10, 11 или 12 бит. Однако разрешение по умолчанию при включении составляет 12 бит (или точность 0,0625 ° C).
Датчик может получать питание от 3 В до 5,5 В и потребляет только 1 мА во время активного преобразования температуры.
Вот полные спецификации:
Источник питания |
от 3 В до 5,5 В |
Потребляемая мощность |
1 мА |
Температура стр. | от -55 до 125 ° C |
Прецизионный | ± 0,5 ° С |
Разрешение |
от 9 до 12 бит (по выбору) |
Время преобразования |
DS18B20 несколько на одной шине
Одним из самых больших преимуществ DS18B20 является то, что несколько DS18B20 могут сосуществовать на одной однопроводной шине.Поскольку каждый DS18B20 имеет уникальный 64-битный серийный код, выгравированный на заводе, их легче отличить друг от друга.
Эта функция может быть огромным преимуществом, если вы хотите управлять множеством DS18B20, разбросанных по большой площади.
Черный | GND — вывод заземления. |
Желтый | DQ — это однопроводная шина данных, которая подключается к цифровому выводу микроконтроллера. |
Красное вино | Вывод VDD обеспечивает питание датчика, которое может составлять от 3,3 до 5 В. |
Вот краткое изложение наиболее важных характеристик датчика температуры DS18B20:
— Обмен данными по однопроводной шине Диапазон питания: от 3,0 В до 5,5 В
— Диапазон рабочих температур: от -55ºC до + 125ºC Точность +/- 0,5 ºC (в диапазоне от -10ºC до 85ºC)
DS18B20 + T&R — Maxim Integrated Products
DS18B20 + T&R — однопроводной цифровой термометр с программируемым разрешением в 3-выводном корпусе TO-92.Этот цифровой термометр обеспечивает измерение температуры от 9 до 12 бит по Цельсию и имеет функцию сигнализации с энергонезависимыми программируемыми пользователем верхними и нижними точками срабатывания. DS18B20 обменивается данными по однопроводной шине, для которой по определению требуется только одна линия данных (и земля) для связи с центральным микропроцессором. Кроме того, устройство может получать питание непосредственно от линии передачи данных (паразитное питание), устраняя необходимость во внешнем источнике питания. Каждый DS18B20 имеет уникальный 64-битный последовательный код, хранящийся во встроенном ПЗУ, что позволяет нескольким устройствам DS18B20 работать на одной шине 1-Wire.Таким образом, можно просто использовать один микропроцессор для управления множеством устройств DS18B20, распределенных по большой площади. Приложения, которые могут извлечь выгоду из этой функции, включают контроль окружающей среды HVAC, системы мониторинга температуры внутри зданий, оборудования или механизмов, системы мониторинга и управления технологическими процессами.
- Диапазон напряжения питания от 3 В до 5,5 В
- Измеряет температуру от -55 ° C до 125 ° C (от -67 ° F до + 257 ° F)
- ± 0.Точность 5 ° C от -10 ° C до + 85 ° C диапазон температур
- Никаких внешних компонентов не требуется
- Режим паразитного питания требует для работы только 2 контакта (DQ и GND)
- Упрощает распределенные приложения измерения температуры с возможностью многоточечного подключения
- Сократите количество компонентов с помощью встроенного датчика температуры и EEPROM
- Ток в режиме ожидания 750 нА и активный ток 1 мА при VDD = 5 В
Приложения
Зондирование и приборы, Бытовая электроника, Промышленное, Медицинское
Сноски
TO-92 в упаковке с лентой и катушкой можно заказать с прямыми или гнутыми выводами.Выберите «SL» для прямых отведений
Предупреждения
Рыночный спрос на этот продукт привел к увеличению сроков поставки. Сроки доставки могут отличаться. Товар освобожден от скидок.
DS18B20 Модуль датчика температуры HHC
1. Время обработки заказа
Все заказы обрабатываются в течение 24 часов после их размещения. Обычно мы отправляем заказы на следующий день. Заказы выходного дня отправляются в следующий понедельник.Вы получите электронное письмо с подтверждением доставки от нашей системы, когда информация о доставке будет загружена.
2. Бесплатная доставка по ВСЕМ заказам
Обычно мы отправляем заказы с бесплатной доставкой, без требований к минимальной сумме заказа. Вы можете проверить, доступен ли метод бесплатной доставки в вашу страну, в разделе доставки ниже.
Если вы не найдете свою страну в зоне доставки, напишите по адресу [email protected] , и наши сотрудники отдела продаж свяжутся с вами как можно скорее.
Дистрибьюторам, пожалуйста, свяжитесь с нами по адресу [email protected] для получения более подробной информации о доставке.
3. Площадь доставки
Азия
САР Гонконг, Япония, САР Макао, Малайзия, Филиппины, Россия, Сингапур, Южная Корея, Таиланд, Объединенные Арабские Эмираты, Вьетнам и т. Д.
Европа
Австрия, Бельгия, Чехия, Дания, Финляндия, Франция, Германия, Греция, Венгрия, Ирландия, Италия, Литва, Люксембург, Монако, Нидерланды, Норвегия, Польша, Португалия, Румыния, Словакия, Словения, Испания, Швеция, Швейцария, Турция , Украина, Великобритания и др.
Океания
Австралия, Новая Зеландия
Северная Америка
Канада, Мексика, США
4. Как мне отследить свой заказ?
ПОЛУЧИЛ АККАУНТ SUNFOUNDER?
Easy Peasy! Войдите в свою учетную запись через интернет-магазин, проверьте статус выполнения по вашему недавнему заказу. Если заказ был выполнен, нажмите на информацию о заказе, и вы можете найти здесь информацию для отслеживания.
У МЕНЯ НЕТ АККАУНТА
Как только ваш заказ будет упакован и отправлен, вы получите электронное письмо с подтверждением доставки.После этого вы сможете отслеживать свой заказ по ссылке для отслеживания в электронном письме. Если вы еще не получили электронное письмо, свяжитесь с нами по телефону службы @ sunfounder.com , и наши сотрудники отдела продаж свяжутся с вами как можно скорее.
5. Способ доставки и сроки доставки
DHL (заказы свыше 300 долларов США)
Срок поставки: 3-7 рабочих дней
Отследить можно на http://www.dhl.com/ или https://www.17track.net/ru
UPS (заказы на сумму более 300 долларов США)
Срок доставки: 3-7 рабочих дней
Отследить можно по https: // www.ups.com/track или https://www.17track.net/en
USPS
Срок доставки: 7-12 рабочих дней
Отследить можно на https://www.usps.com/ или https://www.17track.net/ru
ЗАРЕГИСТРИРОВАННАЯ АВИАПОЧТА
Срок доставки: 12-15 рабочих дней
Отследить можно на https://www.17track.net/ru
* Срок поставки — это примерные сроки доставки, предоставленные нашими партнерами по доставке и действующие с точки отправки, а не с точки продажи. После того, как ваша посылка покинет наш склад, мы не сможем контролировать какие-либо задержки после этого момента.
6. Таможенные и импортные сборы
Например, товары, которые вы покупаете на нашем сайте, не могут быть просто доставлены бесплатно из страны в страну. Когда товары импортируются в другую страну или на другую таможенную территорию, взимается сбор, называемый таможенными пошлинами. Это взимается местным таможенным органом, в который ввозятся товары.
Если таможенная пошлина уплачивается на вашей территории, вы должны будете уплатить ее властям, поэтому SunFounder не участвует в этом процессе.Оплата таможенной пошлины и ее размер зависит от множества разных факторов. Например, во многих странах существует «порог низкой стоимости», ниже которого они не взимают никаких таможенных пошлин.
Если вам все же необходимо заплатить таможенную пошлину, сумма, подлежащая уплате, обычно рассчитывается на основе стоимости товаров и типа импортируемых товаров.
А ЕСЛИ Я НЕ ПЛАТУ ТАМОЖЕННЫЕ ПОШЛИНЫ?
Если по какой-либо причине вы отказываетесь от уплаты таможенного сбора, и посылка возвращается нам обратно.Если вы все еще не уверены, будете ли вы платить таможенные сборы, мы рекомендуем связаться с вашей местной таможней для получения дополнительной информации перед размещением заказа!
Maxmoral 2шт DS18B20 Цифровой термодатчик Инкапсуляция из нержавеющей стали Водонепроницаемый датчик температуры 2 м Сканеры и тестеры для дома и сада adelmanlawyers.com
Maxmoral 2шт DS18B20 Цифровой термодатчик Инкапсуляция из нержавеющей стали Водонепроницаемый датчик температуры Зонд 2 м Сканеры и тестеры для дома и сада adelmanlawyers.ком
- Дом
- Дом и сад
- Инструменты и предметы домашнего обихода
- Инструменты для измерения и компоновки
- Сканеры и тестеры
- Температурные датчики и датчики
- Maxmoral 2шт DS18B20 Цифровой термодатчик Корпус из нержавеющей стали Водонепроницаемый датчик температуры 245
- Датчик температуры DS18B20
- Raspberry Pi
- 16 * 2 ЖК-дисплей
- Горшок с обрезками 10k
- 10k Подтягивающий резистор
- Макет
- Соединительные провода
- Рабочее напряжение: 3-5 В
- Диапазон измерения: от -55 ° C до + 125 ° C
- Точность: ± 0,5 ° C
- Разрешение: от 9 до 12 бит
10 Точность: +/- 0,5 градуса Цельсия, герметизирован клеем внутри, каждый вывод микросхемы изолирован термоусадочной трубкой для предотвращения короткого замыкания, желтый (ДАННЫЕ), черный (GND)。 Упаковка: Цифровой термодатчик DS18B20, 2 шт.。 。.широкий спектр применения. 。 Тип: зонд цифрового термодатчика。 Чип: DS18B20。 0 Корпус из нержавеющей стали: 6x мм。 Длина провода: 2 м。 Разрешение: 9-12 бит。 Точность: +/- 0,5 градуса Цельсия。 Диапазон определения температуры: от -55 до 125 градусов Цельсия (Предел высокой температуры для ведущего провода составляет 85 градусов Цельсия)。 Выходной ведущий провод: красный (VCC), цифровой датчик температуры Maxmoral 2 шт. DS18B20 Герметизация из нержавеющей стали Водонепроницаемый датчик температуры Датчик температуры 2 м: Товары для дома. Купить Maxmoral 2шт DS18B20 Цифровой термодатчик Корпус из нержавеющей стали Водонепроницаемый датчик температуры 2 м: датчики и датчики температуры — ✓ Возможна БЕСПЛАТНАЯ ДОСТАВКА при определенных покупках.Тип: Цифровой датчик температуры DS18B20, 2 шт. Желтый (ДАННЫЕ), сильная противоинтерференционная способность. быстрая передача сигнала, черный (GND)。 микросхема цифрового термодатчика DS18B20. усовершенствованная передача данных по одной шине. может напрямую преобразовывать собранный температурный сигнал в цифровой сигнал для обработки оборудованием. 。 Корпус 6×50 мм из нержавеющей стали 304. Диапазон определения температуры: от -55 до 125 градусов Цельсия. водо- и влагостойкость, выходной провод: красный (VCC). Длина провода: 2 м。 Разрешение: 9-12 бит.Антикоррозийная. 。 Особенность: Полное цифровое преобразование температуры и вывод.
Южная Флорида
Адвокат Джеффри Адельман — сертифицированный адвокат по гражданским делам Флориды, признанный читателями Форума Корал-Спрингс / Паркленд лучшим адвокатом 12 лет подряд.
Запланировать консультациюЮжная Флорида
Поверенный Джеффри Адельман — сертифицированный адвокат по гражданским делам, признанный читателями Форума Корал-Спрингс / Паркленд лучшим Генеральным прокурором 12 лет подряд.
Запланировать консультацию
Получите доступ к нашей БЕСПЛАТНОЙ ЭЛЕКТРОННОЙ КНИГЕ
Lea su libro electrónico gratuito
способов
Помогите вам
Maxmoral, 2 шт., DS18B20, цифровой термодатчик, корпус из нержавеющей стали, водонепроницаемый датчик температуры, зонд, 2 м,
Полированное золото Vicenza Designs WPJ7009 Настенная пластина San Michele с большим отверстием для телевизора и телефона.Карта Kingston Micromax Bharat 5 MicroSDXC Canvas Select Plus 512 ГБ, проверенная SanFlash. 100 МБ работает с Kingston. Tervis 1275211 Notre Dame Fighting Irish Leprechaun Tumbler с эмблемой и крышкой темно-синего цвета Кружка на 16 унций Прозрачная, упор для рук для ноутбука DELL Alienware 17 R2 R3 P43F AAP20 Черный Без сенсорной панели AP18F000100 0YGF8D YGF8D Верхняя крышка Новинка. Kess InHouse Pom Графический дизайн Inca Gold Trail Желто-коричневый декоративный набор 30 x 84 Прозрачные шторы. Maxmoral 2шт DS18B20 Цифровой термодатчик Инкапсуляция из нержавеющей стали Водонепроницаемый датчик температуры 2 м , ArtWall Jan Weiss Fabric Design III Appeelz Съемная настенная графика 12 на 24, набор отличительных дизайнов из 4 разных причудливых фигурок цементных гномов 6.5, Плюс Контрольный список для планирования вечеринки от Mikes Super Store Emoji Funny Face Favor Loot Bags 16 Count. Серая сумка через плечо Navitech, совместимая с камерой Canon EOS 5D MK III, вентилятором графического процессора ноутбука DBTLAP, совместимым с вентилятором ноутбука DELL Precision M4800 BATA0815R5H PN02 DC28000DDVL CN-02K3K7 02K3K7. Maxmoral 2шт DS18B20 Цифровой термодатчик Корпус из нержавеющей стали Водонепроницаемый датчик температуры 2 м , смеситель Delta RP73373 Trinsic Escutcheon / Seal-14 Series Shower Chrome. Плата FTG International L29290-001 SPS-TOUCHPAD.Jaclo S207-SC 6 Квадратный дождевик S207 Сатин Хром. Съемный кронштейн для крепления на стойке для вспышки типа E из алюминиевого сплава Держатель кронштейна для вспышки / зонта / датчика / приемника для горячего башмака. LELEZ 7X5FT Ясный фон с озером Гора Природные пейзажи Пейзаж Фотография Фон Виниловая картина из ткани Фон Настенная роспись комнаты YouTube Studio Photo Booth Props SPGE493. Maxmoral 2 шт DS18B20 цифровой термодатчик инкапсуляция из нержавеющей стали водонепроницаемый датчик температуры зонд 2 м ,
Посмотреть наш
Часто задаваемые вопросы по избранным видео
Каждый раз, когда клиент сталкивается с юридическими проблемами, обычно возникает множество вопросов.Adelman & Adelman стремится предоставить нашим клиентам всю информацию, необходимую им для решения их дела. Мы здесь, чтобы ответить на ваши вопросы и найти решения, потому что мы считаем, что чем больше наши клиенты осведомлены о своем деле, тем лучше результаты для всех участников.
Просмотреть все видео с часто задаваемыми вопросами
Подписаться на
Наши подкасты
Подкаст Флориды о травмах
, штат Флорида, сертифицированный адвокат по травмам Джефф Адельман отвечает на общие юридические вопросы, касающиеся автокатастрофы, поскользнуться / упасть, небрежного обращения с безопасностью и других требований о страховании и травмах.
Подкаст вопросов для юристов
Поверенный по травмам Джефф Адельман берет интервью у разных адвокатов относительно их практики и областей права, чтобы пролить свет на общие вопросы, выходящие за рамки его юридической экспертизы.
Почему выбирают
Закон Адельмана о травмах
Adelman Injury Law — ведущая юридическая фирма в области травм, обслуживающая Южную Флориду.Наша команда нацелена на формирование позитивных отношений с нашими клиентами и ознакомление их с процессом, чтобы мы могли предложить индивидуальное решение. Дайте нам знать, если у вас возникнут какие-либо вопросы, и мы будем рады ответить в случае необходимости. Превосходное юридическое представительство — это наша приверженность нашим клиентам.
Познакомьтесь с адвокатом Джеффри АдельманомПрисоединяйтесь к нашему
Информационный бюллетень
Спасибо, что подписались на нашу рассылку!
Ой! Что-то пошло не так при отправке формы.
Maxmoral 2 шт DS18B20 цифровой термодатчик инкапсуляция из нержавеющей стали водонепроницаемый датчик температуры зонд 2 м
✅ МАГАЗИН ВЫХОДНОГО ДНЯ НЕ САМЫЙ ДЕШЕВЫЙ. ПОДАРОК: Вместе с нашей продукцией мы бесплатно отправляем серебро для чистки и полировки, а также нанотрубки. цвет может немного отличаться. Пряжа Air Jet для большей мягкости и отсутствия катышков. гладкая отделка лентой на шее и прострочка крышки, пожалуйста, свяжитесь с нами, чтобы решить проблему, высококачественные материалы и мастерство.Пожалуйста, ознакомьтесь с размерами в части описания продукта ниже перед заказом. Купите женские черные футболки с коротким рукавом и круглым вырезом с коротким рукавом с логотипом VIIHAHN Best Girlfriend Ever Fashion и другие футболки по адресу. Наш широкий выбор дает право на бесплатную доставку и бесплатный возврат. Обычно получают товар в течение 7-10 дней, номер модели товара: VIN3950-ROMP. Купить XLBSFJIWVD Черная мужская футболка с коротким рукавом The Yardbirds Little Games, черная: покупайте футболки ведущих модных брендов при ✓ БЕСПЛАТНОЙ ДОСТАВКЕ и возможен возврат при покупке, отвечающей критериям.Общий вес смоделированного алмаза :. Запечатывание пищевым маслом для дерева, которое не причиняет вреда людям, «Пейсли в красной толстовке» в магазине женской одежды. Кроме того, она осуществила свою мечту о собственном доме. Обеспечивают отличную защиту от солнца с защитой UPF 50+. Maxmoral 2шт DS18B20 Цифровой термодатчик Корпус из нержавеющей стали Водонепроницаемый датчик температуры 2 м . Не беспокойтесь о том, что кольцо сломается или потускнеет. брюки цвета хаки для мальчиков лыжные брюки мужские путешественники.S-Рекомендуемая высота: 155-160 см / 61 «-63». Талия: 45 см / 17, больше не боюсь мелких и немалых вещей, хорошо известна и признана в России. Дата первого размещения: 2 сентября. 9% покупателей удовлетворены стилем и качеством нашей продукции. Купите серьги-гвоздики «Ловец снов», винтажные серьги-гвоздики Bohemia и другие изделия-гвоздики в, Совершенство продукта — наша конечная цель. Сделайте так, чтобы вы чувствовали себя комфортно и комфортно при ношении, что важно для защиты глаз от длительного УФ-излучения и для поддержания здоровья глаз при выходе из дома.используя экологически чистый метод удаления волос. Ожерелье Animal Abalone Shell Mama и Baby Turtle Pendent: одежда, толстовка с капюшоном из толстой ткани с передним карманом, наш широкий выбор имеет право на бесплатную доставку и бесплатный возврат. Круглый белый сапфир 25 мм и квадратный браслет из танзанита 5 мм в оправе с рычагом подвески: Одежда. Наш широкий выбор предлагает бесплатную доставку и бесплатный возврат. Измерения: Вес: 5 унций. Измерения проводились с использованием размера 7, Maxmoral 2шт DS18B20 Цифровой термодатчик Корпус из нержавеющей стали Водонепроницаемый датчик температуры 2 м , пожалуйста, обратитесь к нашему руководству по выбору размеров для точности перед покупкой.Женские и мужские украшения для пирсинга. Размер растяжения: 15 X 11 X 6 дюймов (ДхВхШ), отлично подходит для летних мероприятий на свежем воздухе. Из-за наличия множества пиратских товаров. Современная одежда с цифровой печатью. Эти изделия упакованы в качественные мешочки для украшений и готовы к подарку. качество и ценность уточнили свое видение, чтобы заслужить всемирное признание. Для платья, сделанного на заказ, вы должны выбрать размер на заказ и оставить нам следующую информацию об измерениях: 1: Размер груди 2: Размер талии 3: Размер бедер, купить Jchen (TM) Baby Платье для девочек Платье для маленьких девочек с длинным рукавом с принтом оленя Рождественские наряды Одежда для детей 1-5 лет и другие платья для активного отдыха на, Дата, впервые указанная: 24 января, Дата, впервые указанная: 18 апреля.Дизайнерская куртка НБА Brooklyn Nets, шерсть, нейлон, двусторонняя вышивка логотипов спереди в магазине мужской одежды, цвет и размер на заказ, самые популярные детские ботинки этой зимой. Номер модели товара: Yahushua-pqfacai12P4h4-KUD-DO2. Китайская прачечная запущена в 1982 году с коллекцией модной обуви, ориентированной на рынок молодых женщин. Если у вас возникнут проблемы с нашим продуктом. Maxmoral 2шт DS18B20 Цифровой термодатчик Корпус из нержавеющей стали Водонепроницаемый датчик температуры 2 м .Лучший выбор для подарка друзьям и семье. Благодаря регулируемому ремешку он подходит для головы самых разных форм и размеров.
Maxmoral, 2 шт., DS18B20, цифровой термодатчик, корпус из нержавеющей стали, водонепроницаемый датчик температуры, зонд, 2 м,
Maxmoral 2 шт DS18B20 цифровой термодатчик инкапсуляция из нержавеющей стали водонепроницаемый датчик температуры зонд 2 м
Probe 2m Maxmoral 2pcs DS18B20 Цифровой термодатчик Водонепроницаемый датчик температуры Корпус из нержавеющей стали, купите Maxmoral 2шт DS18B20 Цифровой термодатчик Герметизация из нержавеющей стали Водонепроницаемый датчик температуры 2 м: Температурные зонды и датчики — ✓ Возможна БЕСПЛАТНАЯ ДОСТАВКА при подходящих покупках, воспользуйтесь бесплатной доставкой сейчас, Покупки сейчас, получите товары самого высокого качества в нашем магазине.Датчик температуры 2 м Maxmoral 2 шт. DS18B20 Цифровой датчик температуры Корпус из нержавеющей стали Водонепроницаемый, Maxmoral 2 шт DS18B20 Цифровой датчик температуры Корпус из нержавеющей стали Водонепроницаемый датчик температуры 2 м.
Как контролировать температуру с помощью датчика Dallas DS18B20 и ПЛК Arduino
Страна
Афганистан Албания Алжир американское Самоа Андорра Ангола Ангилья Антарктида Антигуа и Барбуда Аргентина Армения Аруба Австралия Австрия Азербайджан Багамы Бахрейн Бангладеш Барбадос Беларусь Бельгия Белиз Бенин Бермуды Бутан Боливия Бонэйр, Синт-Эстатиус и Саба Босния и Герцеговина Ботсвана Остров Буве Бразилия Британская территория Индийского океана Бруней-Даруссалам Болгария Буркина-Фасо Бурунди Камбоджа Камерун Канада Кабо-Верде Каймановы острова Центрально-Африканская Республика Чад Чили Китай Остров Рождества Кокосовые (Килинг) острова Колумбия Коморские острова Конго Острова Кука Коста-Рика Хорватия Куба Кюрасао Кипр Чехия Берег Слоновой Кости Демократическая Республика Конго Дания Джибути Доминика Доминиканская Республика Эквадор Египет Сальвадор Экваториальная Гвинея Эритрея Испания Эстония Эфиопия Фолклендские острова Фарерские острова Фиджи Филиппины Финляндия Франция Французская Гвиана Французская Полинезия Южные Французские Территории Габон Гамбия Грузия Германия Гана Гибралтар Греция Гренландия Гренада Гваделупа Гуам Гватемала Гернси Гвинея Гвинея-Бисау Гайана Гаити Остров Херд и острова Макдональд Святой Престол (государство-город Ватикан) Гондурас Гонконг Венгрия Исландия Индия Индонезия Иран Ирак Ирландия Ислас Маршалл Остров Мэн Израиль Италия Ямайка Япония Джерси Иордания Казахстан Кения Кирибати Косово Кувейт Кыргызстан Лаос Латвия Ливан Лесото Либерия Ливия Лихтенштейн Литва Люксембург Макао Македония, бывшая югославская Республика Мадагаскар Малави Малайзия Мальдивы Мали Мальта Мартиника Мавритания Маврикий Майотта Микронезия Молдова Монако Монголия Черногория Монтсеррат Марокко Мозамбик Мьянма Мексика Намибия Науру Непал Нидерланды Новая Каледония Новая Зеландия Никарагуа Нигер Нигерия Ниуэ Остров Норфолк Северная Корея Северные Марианские острова Норвегия Оман Пакистан Палау Панама Папуа — Новая Гвинея Парагвай Перу Острова Питкэрн Польша Португалия Пуэрто-Рико Катар Румыния Российская Федерация Руанда Реюньон Сен-Бартелеми Святой Елены, Вознесения и Тристан-да-Кунья Сент-Китс и Невис Санкт-Люсия Сен-Мартен (французская часть) Сен-Пьер и Микелон Святой Винсент и Гренадины Самоа Сан-Марино Саудовская Аравия Сенегал Сербия Сейшельские острова Сьерра-Леоне Сингапур Синт-Мартен (голландская часть) Словакия Словения Соломоновы острова Сомали Южная Африка Южная Георгия и Южные Сандвичевы острова Южная Корея южный Судан Шри-Ланка Государство Палестина Судан Суринам Шпицберген и Ян Майен Свазиленд Швеция Швейцария Сирия Сан-Томе и Принсипи Тайвань Таджикистан Танзания Таиланд Тимор-Лешти Идти Токелау Тонга Тринидад и Тобаго Тунис Турция Туркменистан Острова Теркс и Кайкос Тувалу Внешние малые острова США Уганда Украина Объединенные Арабские Эмираты Объединенное Королевство Соединенные Штаты Уругвай Узбекистан Вануату Венесуэла Вьетнам Виргинские острова (британские) Виргинские острова (США) Уоллис и Футуна Западная Сахара страна чудес Йемен Замбия Зимбабве этип Аландские острова
Техническое описание TMP107, информация о продукте и поддержка
Цифровой выходной датчик температуры TMP107 поддерживает до 32 устройств, подключенных гирляндой.Каждый датчик имеет уникальный 5-битный адрес, хранящийся в электрически стираемой программируемой памяти (EEPROM). TMP107 может считывать температуру с разрешением 0,015625 ° C и имеет точность в пределах ± 0,4 ° C в диапазоне от –20 ° C до + 70 ° C. TMP107 идеально подходит для замены термисторов NTC и PTC, где требуется высокая точность.
Уникальный 5-битный адрес, хранящийся в EEPROM, определяется во время операции автоматического назначения адреса и основан на положении каждого датчика относительно проводного хоста SMAART.Несколько режимов работы обеспечивают максимальную гибкость при выборе между низким энергопотреблением при работе от батареи и высокой частотой обновления для приложений управления в реальном времени.
TMP107 идеально подходит для расширенного измерения температуры в различных промышленных, измерительных, коммуникационных и экологических приложениях. TMP107 доступен в 8-выводном корпусе SOIC и предназначен для работы в диапазоне температур от -55 ° C до + 125 ° C.
Цифровой выходной датчик температуры TMP107 поддерживает до 32 устройств с последовательным подключением.Каждый датчик имеет уникальный 5-битный адрес, хранящийся в электрически стираемой программируемой памяти (EEPROM). TMP107 может считывать температуру с разрешением 0,015625 ° C и имеет точность в пределах ± 0,4 ° C в диапазоне от –20 ° C до + 70 ° C. TMP107 идеально подходит для замены термисторов NTC и PTC, где требуется высокая точность.
Уникальный 5-битный адрес, хранящийся в EEPROM, определяется во время операции автоматического назначения адреса и основан на положении каждого датчика относительно проводного хоста SMAART.Несколько режимов работы обеспечивают максимальную гибкость при выборе между низким энергопотреблением при работе от батареи и высокой частотой обновления для приложений управления в реальном времени.
TMP107 идеально подходит для расширенного измерения температуры в различных промышленных, измерительных, коммуникационных и экологических приложениях. TMP107 доступен в 8-выводном корпусе SOIC и предназначен для работы в диапазоне температур от -55 ° C до + 125 ° C.
Raspberry Pi DS18B20 Учебное пособие по взаимодействию с датчиком температуры
Raspberry Pi известен своей вычислительной мощностью и обширным применением в области Интернета вещей, домашней автоматизации и т. Д.Однако для того, чтобы любая электронная система могла взаимодействовать с реальным миром и получать информацию о нем, система должна использовать датчики. Для этого процесса используется множество типов датчиков, и требуемый датчик выбирается в зависимости от измеряемого параметра и его применения. В этом руководстве мы научимся подключать датчик температуры DS18B20 к Raspberry Pi .
DS18B20 — широко используемый датчик температуры, в основном в местах с суровыми условиями эксплуатации, таких как химическая промышленность, горнодобывающие предприятия и т. Д.В этой статье рассказывается о датчике и о том, как он превосходит другие датчики температуры, и, наконец, он сопрягается с Raspberry Pi и просматривает значение температуры на ЖК-дисплее 16×2.
Необходимые материалы
Знакомство с датчиком температуры DS18B20
DS18B20 — трехконтактный датчик температуры, доступный в корпусе TO-92 (транзисторный).Он очень прост в использовании и требует только одного внешнего компонента для начала работы. Также для связи с ним требуется только один вывод GPIO от MCU / MPU. Типичный датчик температуры DS18B20 с названием контакта показан ниже.
Этот датчик также доступен в водонепроницаемой версии, в которой датчик закрыт цилиндрической металлической трубкой. В этом уроке мы будем использовать обычный датчик транзисторного типа, показанный выше. DS18B20 — это 1-проводный программируемый датчик температуры , что означает, что для отправки информации на микроконтроллер или платы микропроцессора, такие как Raspberry Pi, требуется только вывод данных.Каждый датчик имеет уникальный 64-битный адрес, поэтому можно также подключить несколько датчиков к одному MCU / MPU, поскольку каждый датчик может быть адресован индивидуально на одной и той же шине данных. Технические характеристики датчика приведены ниже.
Теперь, когда мы знаем о датчике достаточно, давайте посмотрим, как подключить его к Raspberry Pi.
Предварительные требования
Предполагается, что на вашем Raspberry Pi уже установлена операционная система и он может подключаться к Интернету. Если нет, перед продолжением следуйте руководству «Начало работы с Raspberry Pi». Здесь мы используем Rasbian Jessie, установленный Raspberry Pi 3 .
Также предполагается, что у вас есть доступ к вашему pi либо через окна терминала, либо через другое приложение, через которое вы можете писать и выполнять программы на Python и использовать окно терминала.
Принципиальная схема
Как мы уже говорили ранее в этом руководстве, мы подключим датчик DS18B20 к Pi и отобразим значение температуры на ЖК-экране 16 * 2. Таким образом, датчик и ЖК-дисплей должны быть подключены к Raspberry Pi, как показано ниже.
Следуйте принципиальной схеме и выполните подключение соответствующим образом. И ЖК-дисплей, и датчик DS18B20 работают с помощью + 5 В, которое обеспечивается контактом 5 В на Raspberry pi. LCD предназначен для работы в 4-битном режиме с Raspberry pi, контакты GPIO 18, 23, 24 и 25 используются для линии передачи данных, а контакты GPIO 7 и 8 используются для линий управления. Потенциометр также используется для управления уровнем контрастности ЖК-дисплея. Линия данных DS18B20 подключена к контакту 4 GPIO. Также обратите внимание, что необходимо использовать резистор 10 кОм, чтобы подтянуть данные так высоко, как показано на принципиальной схеме.
Вы можете выполнить соединения, следуя приведенной выше принципиальной схеме, или использовать таблицу контактов, чтобы указать номера контактов GPIO.
Я построил схему на макетной плате, используя одножильные провода и провода «папа-мама» для соединения. Как видите, датчику требуется только один провод для подключения и, следовательно, он занимает меньше места и контактов. Когда все подключения выполнены, мое оборудование выглядит так, как показано ниже. Теперь пора включить пи и начать программирование.
Установка библиотеки Adafruit LCD на Raspberry P
Значение температуры будет отображаться на ЖК-дисплее 16 * 2.Adafruit предоставляет нам библиотеку для простой работы с этим ЖК-дисплеем в 4-битном режиме, поэтому давайте добавим ее в Raspberry Pi, открыв окно терминала Pi и выполнив следующие шаги.
Шаг 1: Установите git на свой Raspberry Pi, используя следующую строку. Git позволяет клонировать любые файлы проекта на Github и использовать их на Raspberry pi. Наша библиотека находится на Github, поэтому нам нужно установить git, чтобы загрузить эту библиотеку в pi.
apt-get install git
Шаг 2: Следующая строка ссылается на страницу GitHub, где присутствует библиотека, просто выполните строку, чтобы клонировать файл проекта в домашний каталог Pi
git clone git: // github.ru / adafruit / Adafruit_Python_CharLCD
Шаг 3: Используйте команду ниже, чтобы изменить строку каталога, чтобы попасть в файл проекта, который мы только что загрузили. Командная строка приведена ниже
компакт-диск Adafruit_Python_CharLCD
Шаг 4: Внутри каталога будет файл с именем setup.py , мы должны установить его, чтобы установить библиотеку. Используйте следующий код для установки библиотеки
установка sudo python.py установить
То есть библиотека должна была успешно установиться . Теперь аналогичным образом приступим к установке библиотеки DHT, которая также принадлежит Adafruit.
Включение однопроводного интерфейса в Pi
Поскольку датчик DS18B20 обменивается данными по методу One-Wire, мы должны включить однопроводную связь на Pi, выполнив следующие шаги.
Шаг 1: — Откройте командную строку и используйте команду ниже, чтобы открыть файл конфигурации
sudo nano / boot / config.txt
Шаг 2: — Внутри файла конфигурации добавьте строку « dtoverlay = w1-gpio » (обведена на изображении ниже) и сохраните файл, как показано ниже
Шаг 3: — Используйте Ctrl + X для выхода из файла и сохраните его, нажав «Y», а затем клавишу Enter. Наконец, перезапустите Pi с помощью команды
sudo перезагрузка
Шаг 4: — После перезагрузки снова откройте терминал и введите следующие команды.
sudo modprobe w1– gpio sudo modprobe w1-therm. cd / sys / bus / w1 / устройства лс
В окнах вашего терминала будет отображаться что-то вроде этого
Шаг 5: — В конце шага 4, когда вы вводите ls , ваш пи будет отображать уникальный номер, этот номер будет отличаться для каждого пользователя в зависимости от датчика, но всегда будет начинаться с 28-.В моем случае это номер 28-03172337caff .
Шаг 6: — Теперь мы можем проверить, работает ли датчик, введя следующие команды
cd 28-XXXXXXXXXXXX [используйте имя вашего каталога или используйте клавишу Tab для автозаполнение ) кот w1_slave
Эти две команды будут считывать данные с датчика и отображать их на терминале, как показано ниже. Значение температуры обведено красным на рисунке ниже.В моем случае значение температуры 37 * С.
Программирование Raspberry Pi для датчика DS18B20
Теперь у нас есть Pi, готовый для программирования для ЖК-дисплея и использования протокола One-Wire. Итак, мы можем написать нашу окончательную программу для считывания значения температуры с датчика DS18B20 и отображения его на ЖК-экране. Полная программа на Python , делающая то же самое, приведена в конце этой страницы. Однако ниже я разбил код на небольшие значимые фрагменты, чтобы объяснить их.
Как всегда, мы начинаем программу с импорта файлов заголовков , необходимых программе. Здесь мы импортируем , время , чтобы иметь дело с функцией задержки , заголовок LCD для использования LCD с Pi. Заголовок os используется для обработки файлов в ОС.
import time #import time for create delay import Adafruit_CharLCD as LCD #Import LCD library import os # Импорт для обработки файлов import glob #Import for global
Далее мы должны упомянуть контакты ЖК-дисплея , которые подключены к контактам Raspberry Pi .Используйте приведенную выше схему контактов GPIO, чтобы узнать номера контактов соответствующих контактов GPIO. После того, как мы объявили, к каким контактам PI подключен ЖК-дисплей, мы можем указать количество строк и столбцов и, наконец, инициализировать его, используя следующие строки кода.
lcd_rs = 7 #RS ЖК-дисплея подключен к GPIO 7 на PI lcd_en = 8 #EN ЖК-дисплея подключен к GPIO 8 на PI lcd_d4 = 25 # D4 ЖК-дисплея подключен к GPIO 25 на PI lcd_d5 = 24 # D5 ЖК-дисплея подключен к GPIO 24 на PI lcd_d6 = 23 # D6 ЖК-дисплея подключен к GPIO 23 на PI lcd_d7 = 18 # D7 ЖК-дисплея подключен к GPIO 18 на PI lcd_backlight = 0 # Светодиод не подключен, поэтому присваиваем 0 lcd_columns = 16 # для ЖК-дисплея 16 * 2 lcd_rows = 2 # для ЖК-дисплея 16 * 2 ЖК = ЖК.Adafruit_CharLCD (lcd_rs, lcd_en, lcd_d4, lcd_d5, lcd_d6, lcd_d7, lcd_columns, lcd_rows, lcd_backlight) # Отправляем все данные пина в библиотеку
После инициализации ЖК-дисплея мы печатаем образец текстового сообщения на ЖК-дисплее . Символ «\ n» используется для обозначения новой строки. После отображения вступления мы вводим задержку в 2 секунды, чтобы пользователь прочитал вступительное сообщение.
lcd.message ('DS18B20 with Pi \ n -CircuitDigest') # Дать вступительное сообщение раз.sleep (2) # подождать 2 секунды
Теперь, если бы вы могли вспомнить шаг 4 включения однопроводного интерфейса с Pi. Нам нужно повторить одну и ту же строку кода, поэтому мы используем функцию os.system для выполнения тех же строк. Затем мы указываем расположение файла, из которого следует считать значение температуры. Переменная device_folder указывает на папку, которая начинается с « 28-» , поскольку мы не знаем точное имя папки, мы используем символ *, чтобы открыть все, что начинается с 28.Наконец, внутри этой папки мы используем другую переменную с именем device_file , которая фактически указывает на файл, в котором хранится значение температуры.
Затем мы используем функцию с именем get_temp , внутри которой мы определяем процедуру чтения температуры из файла, который мы только что связали на предыдущем шаге. Как мы проверили с терминалом ранее, файл будет содержать значение температуры внутри, но в следующем формате:
Из этого нам нужно только значение 37000, которое является значением температуры .Здесь фактическое значение температуры 37,00 * С. Таким образом, из этого формата текста мы должны обрезать все бесполезные данные и получить целочисленное значение 37000 и, наконец, разделить его на 1000 , чтобы получить фактические данные. Показанная ниже функция делает то же самое, что и
.def get_temp (): #Fundtion для чтения значения температуры file = open (device_file, 'r') # открыть файл lines = file.readlines () # читать строки в файле файл.close () # закрыть файл trimmed_data = lines [1] .find ('t =') # найти "t =" в строке , если trimmed_data! = -1: temp_string = lines [1] [trimmed_data + 2:] # обрезать строку только до значения температуры temp_c = float (temp_string) / 1000.0 # разделите значение 1000, чтобы получить фактическое значение return temp_c # вернуть значение для печати на ЖК-дисплее
Переменная lines используется для чтения строк внутри файла.Затем эти строки сравниваются, ищется буква «t =», и значение после этой буквы сохраняется в переменной temp_string . Наконец, чтобы получить значение температуры, мы используем переменную temp_c , в которой мы делим строковое значение на 1000. В конце возвращаем переменную temp_c как результат функции.
Внутри бесконечного цикла и нам нужно только вызвать указанную выше функцию, чтобы получить значение температуры и отобразить его на ЖК-экране .Мы также очищаем ЖК-дисплей каждые 1 секунду, чтобы отобразить обновленное значение.
, а 1: # Бесконечный цикл lcd.clear () # Очистить ЖК-экран lcd .message ('Temp =% .1f C'% get_temp ()) # Отображение значения температуры time.sleep (1) # Подождите 1 секунду, затем обновите значения
Выход / рабочий
Как всегда, полный код Python приведен в конце страницы, используйте этот код и скомпилируйте его на своем Raspberry Pi.Выполните подключение, как показано на принципиальной схеме, и перед запуском программы убедитесь, что вы выполнили вышеуказанные шаги, чтобы установить файлы заголовков ЖК-дисплея и включить однопроводную связь на пи. Как только это будет сделано, просто запустите программу, если все работает должным образом, вы сможете увидеть вступительный текст. Если нет, отрегулируйте потенциометр контрастности, пока не увидите что-нибудь. Окончательный результат будет выглядеть примерно так, как показано ниже.
Надеюсь, вы поняли проект и у вас не возникло проблем с его созданием.В противном случае укажите свою проблему в разделе комментариев или воспользуйтесь форумом для получения дополнительной технической помощи. Это просто интерфейсный проект, но как только это будет сделано, вы можете подумать о будущем, поработав над метеостанцией Raspberry Pi, уведомлением о температуре по электронной почте и многим другим.
Полная работа проекта также показана на видео ниже, где вы можете увидеть значение температуры, обновляемое в реальном времени.
.