Ние предлагаме широка гама от най-добрите 1-Wire DS18B20 сензорни конектори, включително Nanoflex, DisplayPort, USB, Слънчева, SATA, HDMI, ТОВА Е ИДЕЯ, SAS & много повече. Всички кабели са произведени по най-високите индустриални стандарти. Използването на монтаж на сензорна верига за изграждане на кутия ви позволява да се съсредоточите върху вашия дизайн и маркетинг, намаляване на разходите, и да се възползваме от предимствата на нашите поточни линии, QA процеси, и производствен опит.
Сензорът DS18B20 комуникира чрез “1-Тел” протокол, което означава, че използва една линия за данни за цялата комуникация с микроконтролер, което позволява множество сензори да бъдат свързани към една и съща линия и идентифицирани чрез техния уникален 64-битов сериен код; тази единична линия за данни се изтегля високо с резистор и сензорът предава данни, като издърпва линията ниско през определени времеви интервали, за да изпрати битове информация.
DS18B20 Температурен сензор: Водоустойчивата сонда DS18B20 е предназначена за използване под вода, способен да работи в мокра или влажна среда, без да бъде повреден от вода или влага.
Захранващо напрежение на температурен датчик: 3.0V ~ 5.25V;
Диапазон на работната температура:-55 ℃ до +125 ℃ (-67 ℉ към +257 ℉);
Осигурява от 9-битови до 12-битови измервания на температурата по Целзий;
Адаптерният модул е оборудван с издърпващ резистор, и се свързва директно към GPIO на Raspberry Pi без външен резистор;
Използвайте този комплект адаптерен модул, за да опростите свързването на водоустойчивия температурен сензор към вашия проект.
1. Ключови точки относно протокола 1-Wire:
Единична линия за данни:
Необходим е само един проводник за комуникация между сензора и микроконтролера.
Полудуплексна комуникация:
Данните могат да се изпращат и в двете посоки, но само една посока в даден момент.
Паразитна сила:
DS18B20 може да се захранва директно от линията за данни по време на комуникация, премахване на необходимостта от отделно захранване в някои случаи.
Уникални адреси на устройства:
Всеки сензор DS18B20 има уникален 64-битов сериен код, който позволява на микроконтролера да идентифицира и адресира отделни сензори в шината.
Стъпки на комуникация с DS18B20:
1.1 Нулиране на импулса:
Микроконтролерът инициира комуникация чрез издърпване на ниско ниво на линията за данни за определен период от време (импулс за нулиране).
1.2 Пулс на присъствие:
Ако DS18B20 присъства в автобуса, ще реагира с кратък импулс, което показва неговото присъствие.
1.3 ROM команда:
Микроконтролерът изпраща ROM команда или да прочете уникалния 64-битов код на конкретен сензор (“Съвпадение на ROM”) или за адресиране на всички сензори в шината (“Пропуснете ROM”).
1.4 Функционална команда:
В зависимост от желаната операция (като отчитане на температурата), микроконтролерът изпраща специфична функционална команда към сензора.
1.5 Трансфер на данни:
Данните се предават бит по бит, като сензорът изтегля линията за данни ниско, за да изпрати a ‘0’ и пускане на линията високо, за да изпрати „1“.
2. Подробно обяснение на 1-Wire комуникационния протокол на DS18B20
Причината, поради която сензорите DS18B20 са широко използвани, до голяма степен се дължи на неговия уникален комуникационен протокол – 1-Протокол за жична комуникация. Този протокол опростява изискванията за хардуерни връзки и осигурява ефективен начин за предаване на данни. Тази глава ще анализира задълбочено работния механизъм и процеса на обмен на данни на комуникационния протокол с 1 линия, за да постави солидна основа за последваща практика на програмиране.
2.1 Основи на 1-Wire комуникационен протокол
2.1.1 Характеристики на 1-Wire комуникационен протокол:
DS18B20 1-Wire комуникационен протокол също се нарича “единичен автобус” технология. Има следните характеристики: – Комуникация с единична шина: За двупосочно предаване на данни се използва само една линия за данни, което значително намалява сложността на окабеляването в сравнение с традиционния многожичен сензорен метод за комуникация. – Връзка с множество устройства: Поддържа свързване на множество устройства към една шина за данни, и идентифицира и комуникира чрез идентификационни кодове на устройства. – Ниска консумация на енергия: По време на комуникация, устройството може да бъде в състояние на готовност с ниска мощност, когато не участва в комуникация. – Висока прецизност: С по-кратко време за предаване на данни, може да намали външната намеса и да подобри точността на данните.
2.1.2 Формат на данните и анализ на времето на 1-wire комуникация
Форматът на данните на 1-wire комуникационния протокол следва специфично правило за синхронизация. Той включва времето за инициализация, време за писане и време за четене:
Време за инициализация: Хостът първо стартира времето за откриване на присъствие (Пулс на присъствие) като свали автобуса за определен период от време, и след това сензорът изпраща импулс за присъствие в отговор.
Напишете време: Когато хостът изпрати време за запис, първо спира автобуса за около 1-15 микросекунди, след това освобождава автобуса, и сензорът дърпа автобуса надолу 60-120 микросекунди за отговор.
Прочетете времето: Хостът уведомява сензора да изпрати данни, като издърпа надолу шината и я освободи, и сензорът ще изведе бита за данни в шината след известно забавяне.
2.2 Софтуерна реализация на комуникация на данни
2.2.1 Инициализиране и нулиране на 1-линейна комуникация
На софтуерно ниво, инициализирането и нулирането на 1-Wire комуникация е първата стъпка от комуникацията. По-долу е псевдокодът за прилагане на този процес:
// Функция за инициализация на комуникация OneWire
void OneWire_Init() {
// Настройте шината на входен режим и разрешете издърпващия резистор
SetPinMode(DS18B20_ПИН, INPUT_PULLUP);
// Изчакайте автобусът да спре
Закъснение Микросекунди(1);
// Изпратете импулс за нулиране
OneWire_Reset();
}
// Функция за нулиране на комуникацията OneWire
невалиден OneWire_Reset() {
// Дръпни автобуса
SetPinMode(DS18B20_ПИН, OUTPUT_LOW);
Закъснение Микросекунди(480);
// Освободете автобуса
SetPinMode(DS18B20_ПИН, INPUT_PULLUP);
Закъснение Микросекунди(70);
// Изчакайте наличието на пулс
ако (!WaitForOneWirePresence())
// Не беше открит пулс, може би сензорът не е свързан или инициализацията е неуспешна
HandleError();
Закъснение Микросекунди(410);
}
// Изчакване за наличие на пулс
bool WaitForOneWirePresence() {
върнете ReadPin(DS18B20_ПИН) == 0; // Да приемем, че ниското ниво е наличие на сигнал
}
2.2.2 Операции за четене и запис на данни
Операциите за четене и запис на данни са основната част от сензорната комуникация. Следният код показва как да запишете байт в еднопроводна шина:
// Запишете байт в еднопроводна шина
void OneWire_WriteByte(байт данни) {
за (int i = 0; аз < 8; i++) {
OneWire_WriteBit(данни & 0x01);
данни >>= 1;
}
}
// Напишете малко на еднопроводна шина
void OneWire_WriteBit(битови данни) {
SetPinMode(DS18B20_ПИН, OUTPUT_LOW);
ако (данни) {
// Освободете автобуса, когато пишете 1
SetPinMode(DS18B20_ПИН, INPUT_PULLUP);
Закъснение Микросекунди(1);
} друго {
// Продължете да дърпате шината ниско, когато пишете 0
Закъснение Микросекунди(60);
}
SetPinMode(DS18B20_ПИН, INPUT_PULLUP);
Закъснение Микросекунди(1);
}
Следва функцията за четене на байт:
// Прочетете байт от еднопроводната шина
байт OneWire_ReadByte() {
байт данни = 0;
за (int i = 0; аз < 8; i++) {
данни >>= 1;
ако (OneWire_ReadBit())
данни |= 0x80;
}
върнати данни;
}
// Прочети малко от еднопроводната шина
бит OneWire_ReadBit() {
SetPinMode(DS18B20_ПИН, OUTPUT_LOW);
SetPinMode(DS18B20_ПИН, INPUT_PULLUP);
Закъснение Микросекунди(3);
bool резултат = ReadPin(DS18B20_ПИН);
Закъснение Микросекунди(57);
върнат резултат;
}
2.2.3 Механизъм за проверка на OneWire комуникация
Комуникационният протокол OneWire използва прост механизъм за проверка в процеса на обмен на данни, обикновено чрез четене обратно на записаните данни, за да се провери коректността на данните. Следва примерен код за проверка на записаните данни:
байт данни = 0x55; // Да приемем, че данните за изпращане
OneWire_WriteByte(данни); // Записвайте данни в шината OneWire
byte readData = OneWire_ReadByte(); // Прочетете обратно данни от шината OneWire
ако (readData != данни) {
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





