Введення в знання датчика температури DS18B20
DS18B20 — широко використовуваний цифровий датчик температури. Він виводить цифрові сигнали, має ознаки невеликого розміру, Низький апаратне забезпечення, Сильна здатність до інтерференцій, Висока точність, і широко використовується.
Знайомство з датчиком температури DS18B20
Технічні характеристики:
①. Унікальний режим однопровідного інтерфейсу. При підключенні DS18B20 до мікропроцесора, тільки 1 дріт необхідний для реалізації двостороннього зв'язку між мікропроцесором і DS18B20.
②. Діапазон вимірювання температури -55℃~+125℃, власна похибка вимірювання температури 1 ℃.
③. Підтримка функції багатоточкової мережі. Кілька DS18B20 можна з'єднати паралельно лише за трьома проводами, і максимум 8 можна підключити паралельно для реалізації багатоточкового вимірювання температури. Якщо кількість занадто велика, напруга живлення буде занадто низькою, що призводить до нестабільної передачі сигналу.
④. Робочий блок живлення: 3.0~5,5 В/DC (можна використовувати паразитне джерело живлення лінії передачі даних).
⑤. Під час використання не потрібні периферійні компоненти.
⑥. Результати вимірювань передаються послідовно в 9~12-бітній цифровій формі.
⑦. Діаметр захисної труби з нержавіючої сталі Φ6.
⑧. Він підходить для вимірювання температури різних середніх промислових трубопроводів DN15~25, DN40~DN250 та обладнання у вузьких приміщеннях.
⑨. Стандартна монтажна різьба M10X1, M12X1.5, G1/2” є необов’язковими.
⑩. ПВХ кабель підключається безпосередньо або підключається німецька кулькова розподільна коробка, що зручно для підключення до іншого електрообладнання.
DS18B20 читання і запис часу і принцип вимірювання температури:
Принцип вимірювання температури DS18B20 показаний на малюнку 1. На частоту коливань кристалічного генератора з низьким температурним коефіцієнтом на малюнку температура незначно впливає, і використовується для генерації імпульсного сигналу фіксованої частоти, який надсилається на лічильник 1. Частота коливань кварцевого генератора з високим температурним коефіцієнтом значно змінюється з температурою, а згенерований сигнал використовується як імпульсний вхід лічильника 2. Лічильник 1 і температурний регістр попередньо встановлено на базове значення, що відповідає -55 ℃. Лічильник 1 віднімає імпульсний сигнал, створений кристалічним генератором з низьким температурним коефіцієнтом. Коли встановлене значення лічильника 1 зводиться до 0, значення температурного регістра буде збільшено на 1, і попередньо встановлений лічильник 1 буде перезавантажено. Лічильник 1 перезапускається для підрахунку імпульсного сигналу, створеного кристалічним генератором з низьким температурним коефіцієнтом, і цикл продовжується до лічильника 2 зараховує до 0, припинення накопичення значення температурного регістра. В цей час, значення в реєстрі температури є виміряною температурою. Накопичувач нахилу використовується для компенсації та корекції нелінійності в процесі вимірювання температури, і його вихід використовується для корекції попередньо встановленого значення лічильника 1.
малюнок 1 полягає в наступному:
2. Схема підключення DS18B20 і MCU
3. Визначення контакту DS18B20:
DQ: Введення/виведення даних. 1-провідний інтерфейс відкритого стоку. Він також може забезпечити живлення пристрою при використанні в паразитному режимі живлення VDD: позитивне джерело живлення GND: заземлення живлення 4. Вступ до внутрішнього аналізу DS18B20:
На малюнку вище показана блок-схема DS18B20, а 64-бітне ПЗУ зберігає унікальний серійний код пристрою. Буферна пам'ять містить 2 байти регістрів температури, які зберігають цифровий вихід датчика температури. Крім того, буферна пам'ять забезпечує доступ до 1-байтових верхніх і нижніх тригерних регістрів сигналізації (TH і TL) і 1-байтові регістри конфігурації. Регістр конфігурації дозволяє користувачеві встановити роздільну здатність температури до цифрового перетворення 9, 10, 11, або 12 шматочки. TH, TL, і регістри конфігурації є енергонезалежними (EEPROM), тому вони зберігатимуть дані, коли пристрій вимкнено. DS18B20 використовує унікальний протокол однопровідної шини Maxim, який використовує керуючий сигнал. Для лінії керування потрібен слабкий підтягуючий резистор, оскільки всі пристрої під’єднані до шини через порт із 3 станами або відкритим стоком (Вивід DQ у корпусі DS18B20). У цій шинній системі мікропроцесор (майстер) використовує унікальний 64-бітний код для кожного пристрою. Тому що кожен пристрій має унікальний код, кількість пристроїв, які можуть бути адресовані на одній шині, практично необмежена.
Формат реєстру температури
Відношення температура/дані
Операційний сигнал тривоги
Після того, як DS18B20 виконує перетворення температури, він порівнює значення температури з визначеним користувачем значенням тригера тривожного доповнення до двох, що зберігається в 1-байтових регістрах TH і TL. Знаковий біт вказує, додатне чи від’ємне значення: позитивний S=0, негативне S=1. Регістри TH і TL є енергонезалежними (EEPROM) і тому не є мінливими, коли пристрій вимкнено. TH і TL можна отримати через байти 2 і 3 пам'яті.
Формат регістра TH і TL:
Принципова схема живлення DS18B20 від зовнішнього джерела живлення
64-бітовий лазерний код постійної пам'яті:
Кожен DS18B20 містить унікальний 64-бітний код, що зберігається в ПЗП. Найменш значний 8 біти коду ROM містять однопровідний код сімейства DS18B20: 28ч. Наступний 48 біти містять унікальний серійний номер. Найзначніший 8 біти містять перевірку циклічної надлишковості (CRC) байт, який обчислюється з першого 56 біти коду ПЗУ.
Карта пам'яті DS18B20
Реєстр конфігурації:
малюнок 2
Байт 4 пам'яті містить регістр конфігурації, який організований, як показано на малюнку 2. Користувач може встановити роздільну здатність перетворення DS18B20 за допомогою бітів R0 і R1 тут, як показано в таблиці 2. Значеннями за замовчуванням для цих бітів є R0 = 1 і R1 = 1 (12-бітова роздільна здатність). Зауважте, що існує прямий зв’язок між роздільною здатністю та часом перетворення. біт 7 і біти 0 до 4 у регістрі конфігурації зарезервовано для внутрішнього використання пристрою та не може бути перезаписано.
Таблиця 2 Конфігурація роздільної здатності термометра
Генерація CRC
Байт CRC є частиною 64-розрядного коду ПЗУ DS18B20 і міститься в 9-му байті блокнота. CRC коду ПЗУ обчислюється з першого 56 біт коду ПЗУ і міститься в старшому байті ПЗУ. CRC блокнота обчислюється на основі даних, збережених у блокноті, тому він змінюється, коли змінюються дані в блокноті. CRC надає хосту шини метод перевірки даних під час зчитування даних із DS18B20. Після перевірки правильності зчитування даних, майстер шини повинен перерахувати CRC з отриманих даних, а потім порівняти це значення з кодом ПЗУ CRC (для читання ПЗУ) або блокнот CRC (для читання в блокноті). Якщо розрахований CRC збігається з прочитаним CRC, дані були отримані правильно. Рішення про порівняння значень CRC і продовження повністю залежить від майстра шини. Всередині DS18B20 немає схеми, яка б перешкоджала виконанню послідовності команд, якщо:
DS18B20 CRC (ПЗУ або блокнот) не відповідає значенню, згенерованому майстром шини.
Еквівалентною поліноміальною функцією CRC є:
CRC = X8 + X5 + X4 + 1
Майстер шини може перерахувати CRC і порівняти його зі значенням CRC DS18B20 за допомогою:
Генератор полінома показаний на малюнку 3. Схема включає регістр зсуву та вентилі yihuo, і біти регістра зсуву ініціалізуються 0. Молодший значущий біт коду ПЗУ або молодший значущий біт байта 0 у блокноті повинні бути зміщені в регістр зсуву по одному. Після зсуву в біт 56 з ПЗП або старший біт байта 7 із блокнота, генератор полінома міститиме перерахований CRC. Далі, 8-бітний код ПЗУ або сигнал CRC у блокноті DS18B20 має бути зміщений у схему. У цей момент, якщо перерахований CRC правильний, у регістрі зсуву будуть усі 0.
малюнок 3: Генератор CRC
V. Доступ до DS18B20:
Послідовність доступу до DS18B20 така:
Крок 1. Ініціалізація;
Крок 2. команда ROM (з наступним обміном необхідними даними);
Крок 3. Команда функції DS18B20 (з наступним обміном необхідними даними);
Примітка: Ця послідовність виконується кожного разу, коли здійснюється доступ до DS18B20, тому що DS18B20 не відповість, якщо будь-який крок у послідовності відсутній або не в порядку. Винятком із цього правила є Search ROM [F0h] і пошук сигналу [Ech] команди. Після виконання цих двох команд ROM, господар повинен повернутися на крок 1 в послідовності.
(Наведений вище вступ перекладено з офіційного посібника)
Команда ROM
1, Читайте ПЗУ [33ч]
2, Матч ПЗУ [55ч]
3, Пропустити ROM [CCh]
4, Пошук сигналізації [Ech]
Функціональна команда DS18B20
1, Перетворення температури [44ч]
2, Напишіть Scratchpad (Пам'ять) [4Ех]
3, Читайте Scratchpad (Пам'ять) [BEh]
4, Копіювати Scratchpad (Пам'ять [48ч]
5, Повторно розбудити E2 [B8h]
6, Читайте Сила [B4h]
(Для детального опису наведених вище команд, див. офіційний посібник)
VI. Час доступу до DS18B20
Під час процесу ініціалізації, головний пристрій шини надсилає імпульс скидання (TX) низький рівень протягом принаймні 480 мкс, потягнувши шину 1-Wire. Потім, майстер шини звільняє шину і переходить у режим прийому (RX). Після звільнення авт, навантажувальний резистор 5 кОм підтягує шину 1-Wire високо. Коли DS18B20 виявляє цей передній фронт, він чекає від 15 мкс до 60 мкс, а потім надсилає імпульс присутності, підтягуючи шину 1-Wire до низького рівня на 60–240 мкс.
Час ініціалізації:
Існує два типи часових інтервалів запису: “Напиши 1” часові проміжки та “Напишіть 0” часові проміжки. Автобус використовує Write 1 часовий проміжок для написання логіки 1 до DS18B20 і Write 0 часовий проміжок для написання логіки 0 до DS18B20. Тривалість усіх часових інтервалів запису повинна становити не менше 60 мкс із часом відновлення між окремими часовими інтервалами запису не менше 1 мкс.. Обидва типи часових інтервалів запису ініціюються майстром, який підтягує низький рівень шини 1-Wire (дивіться малюнок 14). Щоб створити запис 1 часовий інтервал, після підтягування шини 1-Wire до низького рівня, майстер шини повинен звільнити шину 1-Wire протягом 15 мкс. Після звільнення авт, навантажувальний резистор 5 кОм підтягує шину високо. Створіть a
Напишіть 0 часовий інтервал, після підтягування лінії 1-Wire до низького рівня, майстер шини повинен продовжувати утримувати шину на низькому рівні протягом часового інтервалу (принаймні 60 мкс). DS18B20 пробує шину 1-Wire у вікні від 15 мкс до 60 мкс після того, як головний ініціює часовий інтервал запису. Якщо шина висока під час вікна вибірки, a 1 записується на DS18B20. Якщо лінія низька, a 0 записується на DS18B20.
Примітка: Часовий інтервал — це частина послідовного самомультиплексування інформації про часовий інтервал, призначена для одного каналу..
малюнок 14 полягає в наступному:
Прочитайте часовий інтервал:
DS18B20 може надсилати дані на хост лише тоді, коли хост видає часовий інтервал для читання. Отже, хост повинен генерувати часовий інтервал читання відразу після видачі команди читання пам'яті [BEh] або джерело живлення Read [B4h] щоб DS18B20 надавав необхідні дані. В якості альтернативи, хост може генерувати часовий інтервал читання після видачі Convert T [44ч] або Recall E2 [B8h] команда, щоб дізнатися статус. Тривалість усіх часових інтервалів читання має становити не менше 60 мкс з мінімальним часом відновлення 1 мкс між часовими інтервалами. Часовий інтервал читання ініціюється майстром, який перетягує шину 1-Wire у низький рівень, щоб утримувати її в низькому рівні принаймні 1 мкс, а потім відпускає шину (дивіться малюнок 14). Після того, як майстер ініціює часовий інтервал читання, DS18B20 почне надсилати 1 або 0 на шині. DS18B20 надсилає a 1 високо тримаючи автобус і посилаючи a 0 тягнучи автобус низько. Коли a 0 відправляється, DS18B20 відпускає шину, тримаючи шину високо. Часовий інтервал закінчується, і шина повертається до високого стану холостого ходу підтягуючим резистором.
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
















