Мы предлагаем широкий ассортимент лучших разъемов для датчиков 1-Wire DS18B20., в том числе Нанофлекс, ДисплейПорт, USB, Солнечная, САТА, HDMI, ЭТО ИДЕЯ, САС & еще много. Все кабели производятся в соответствии с самыми высокими отраслевыми стандартами.. Использование сборки сенсорной схемы для коробочных сборок позволяет вам сосредоточиться на дизайне и маркетинге., сократить расходы, и воспользуйтесь преимуществами наших сборочных линий, Процессы контроля качества, и производственный опыт.
Датчик DS18B20 обменивается данными с помощью “1-Проволока” протокол, это означает, что он использует одну линию данных для всей связи с микроконтроллером., позволяет подключать несколько датчиков к одной линии и идентифицировать их по уникальному 64-битному серийному коду; эта единственная линия данных подтягивается к высокому уровню с помощью резистора, и датчик передает данные, подтягивая линию к низкому уровню в определенные временные интервалы для отправки битов информации..
Датчик температуры DS18B20: Водонепроницаемый зонд DS18B20 предназначен для использования под водой., способен работать во влажной или влажной среде, не повреждаясь водой или влагой.
Напряжение питания датчика температуры: 3.0В ~ 5,25 В;
Диапазон рабочих температур:-55 ℃ до +125 ℃ (-67 ℉ до +257 ℉);
Обеспечивает измерение температуры от 9 до 12 бит по шкале Цельсия.;
Модуль адаптера оснащен подтягивающим резистором., и напрямую подключается к GPIO Raspberry Pi без внешнего резистора.;
Используйте этот комплект адаптерного модуля, чтобы упростить подключение водонепроницаемого датчика температуры к вашему проекту..
1. Ключевые моменты о протоколе 1-Wire:
Одна линия данных:
Для связи между датчиком и микроконтроллером необходим только один провод..
Полудуплексная связь:
Данные могут отправляться в обоих направлениях, но только в одном направлении одновременно.
Паразитарная сила:
DS18B20 может питаться напрямую от линии передачи данных во время связи., устраняя необходимость в отдельном источнике питания в некоторых случаях.
Уникальные адреса устройств:
Каждый датчик DS18B20 имеет уникальный 64-битный серийный код, который позволяет микроконтроллеру идентифицировать и адресовать отдельные датчики на шине..
Этапы связи с DS18B20:
1.1 Импульс сброса:
Микроконтроллер инициирует связь, переводя линию данных на низкий уровень на определенное время. (импульс сброса).
1.2 Импульс присутствия:
Если на шине присутствует DS18B20, он ответит коротким импульсом, указывая на свое присутствие.
1.3 команда ПЗУ:
Микроконтроллер отправляет команду ПЗУ либо на чтение уникального 64-битного кода конкретного датчика, либо на чтение уникального 64-битного кода конкретного датчика. (“Матч ПЗУ”) или адресовать все датчики на шине (“Пропустить ПЗУ”).
1.4 Функциональная команда:
В зависимости от желаемой операции (как чтение температуры), микроконтроллер отправляет датчику определенную функциональную команду.
1.5 Передача данных:
Данные передаются побитно, когда датчик подтягивает линию данных к низкому уровню, чтобы отправить ‘0’ и позволив линии подняться на высокий уровень, чтобы отправить «1».
2. Подробное объяснение протокола связи 1-Wire DS18B20.
Причина широкого использования датчиков DS18B20 во многом связана с его уникальным протоколом связи. – 1-Протокол проводной связи. Этот протокол упрощает требования к аппаратным соединениям и обеспечивает эффективный способ передачи данных.. В этой главе будет глубоко проанализирован рабочий механизм и процесс обмена данными однострочного протокола связи, чтобы заложить прочную основу для последующей практики программирования..
2.1 Основы протокола однопроводной связи
2.1.1 Особенности протокола связи 1-Wire:
Протокол однопроводной связи DS18B20 также называется “одиночный автобус” технология. Он имеет следующие особенности: – Единая шинная связь: Для двунаправленной передачи данных используется только одна линия данных., что значительно снижает сложность проводки по сравнению с традиционным методом связи с многопроводными датчиками.. – Подключение нескольких устройств: Поддерживает подключение нескольких устройств к одной шине данных., и идентифицирует и передает данные через идентификационные коды устройства. – Низкое энергопотребление: Во время общения, устройство может находиться в режиме ожидания с низким энергопотреблением, когда не участвует в общении. – Высокая точность: С более коротким временем передачи данных, это может уменьшить внешние помехи и повысить точность данных.
2.1.2 Формат данных и временной анализ однопроводной связи
Формат данных протокола однопроводной связи соответствует определенному правилу синхронизации.. Он включает в себя время инициализации, время записи и время чтения:
Время инициализации: Хост сначала запускает отсчет времени обнаружения присутствия (Пульс присутствия) опустив автобус на определенный период времени, и датчик затем отправляет импульс присутствия в ответ.
Время записи: Когда хост отправляет время записи, сначала он сбивает автобус примерно на 1-15 микросекунд, затем отпускает автобус, и датчик тянет автобус вниз 60-120 микросекунды на ответ.
Чтение времени: Хост уведомляет датчик о необходимости отправки данных, отключая шину и отпуская ее., и датчик выведет бит данных на шину после определенной задержки.
2.2 Программная реализация передачи данных
2.2.1 Инициализация и сброс однолинейной связи
На уровне программного обеспечения, инициализация и сброс связи 1-Wire — это первый этап связи.. Ниже приведен псевдокод для реализации этого процесса.:
// Функция инициализации связи OneWire
недействительный OneWire_Init() {
// Переведите шину в режим ввода и включите подтягивающий резистор.
SetPinMode(DS18B20_PIN, INPUT_PULLUP);
// Подождите, пока автобус остановится
Задержкамикросекунды(1);
// Отправить импульс сброса
OneWire_Reset();
}
// Функция сброса связи OneWire
недействительный OneWire_Reset() {
// Спустить автобус
SetPinMode(DS18B20_PIN, ВЫХОД_LOW);
Задержкамикросекунды(480);
// Выпустить автобус
SetPinMode(DS18B20_PIN, INPUT_PULLUP);
Задержкамикросекунды(70);
// Дождитесь появления пульса
если (!WaitForOneWirePresence())
// Пульс не обнаружен, возможно датчик не подключен или инициализация не удалась
HandleError();
Задержкамикросекунды(410);
}
// Ожидание наличия пульса
bool WaitForOneWirePresence() {
вернуть ReadPin(DS18B20_PIN) == 0; // Предположим, что низкий уровень — это наличие сигнала.
}
2.2.2 Операции чтения и записи данных
Операции чтения и записи данных являются основной частью связи датчиков.. Следующий код показывает, как записать байт на однопроводную шину.:
// Записать байт на однопроводную шину
void OneWire_WriteByte(байтовые данные) {
для (интервал я = 0; я < 8; я++) {
OneWire_WriteBit(данные & 0х01);
данные >>= 1;
}
}
// Записать немного на однопроводную шину
недействительный OneWire_WriteBit(битовые данные) {
SetPinMode(DS18B20_PIN, ВЫХОД_LOW);
если (данные) {
// Отпустите шину при написании 1
SetPinMode(DS18B20_PIN, INPUT_PULLUP);
Задержкамикросекунды(1);
} еще {
// Продолжайте тянуть шину вниз, когда пишете. 0
Задержкамикросекунды(60);
}
SetPinMode(DS18B20_PIN, INPUT_PULLUP);
Задержкамикросекунды(1);
}
Далее идет функция чтения байта:
// Считать байт с однопроводной шины
байт OneWire_ReadByte() {
байтовые данные = 0;
для (интервал я = 0; я < 8; я++) {
данные >>= 1;
если (OneWire_ReadBit())
данные |= 0x80;
}
возвращать данные;
}
// Почитай немного с однопроводной шины
бит OneWire_ReadBit() {
SetPinMode(DS18B20_PIN, ВЫХОД_LOW);
SetPinMode(DS18B20_PIN, INPUT_PULLUP);
Задержкамикросекунды(3);
bool результат = ReadPin(DS18B20_PIN);
Задержкамикросекунды(57);
вернуть результат;
}
2.2.3 Механизм проверки связи OneWire
Протокол связи OneWire использует простой механизм проверки в процессе обмена данными., обычно путем считывания записанных данных для проверки правильности данных. Ниже приведен пример кода для проверки записанных данных.:
байтовые данные = 0x55; // Предположим, что данные для отправки
OneWire_WriteByte(данные); // Запись данных в шину OneWire
байт readData = OneWire_ReadByte(); // Считайте данные с шины OneWire.
если (чтение данных != данные) {
HandleError(); // Если считанные данные не совпадают с записанными данными, обработать ошибку
English
Afrikaans
العربية
বাংলা
bosanski jezik
Български
Català
粤语
中文(简体)
中文(漢字)
Hrvatski
Čeština
Nederlands
Eesti keel
Suomi
Français
Deutsch
Ελληνικά
हिन्दी; हिंदी
Magyar
Bahasa Indonesia
Italiano
日本語
한국어
Latviešu valoda
Lietuvių kalba
македонски јазик
Bahasa Melayu
Norsk
پارسی
Polski
Português
Română
Русский
Cрпски језик
Slovenčina
Slovenščina
Español
Svenska
ภาษาไทย
Türkçe
Українська
اردو
Tiếng Việt





