Автопортал || Авто - статьи

Сельскохозяйственная техника
Чтение RSS

Проста схема для підключення 1-Wire датчика температури до мікроконтролеру

Пристрої, індікацірующіе температуру і пристрої, що використовують дані про температуру викликають широкий інтерес. Є безліч додатків для таких пристроїв з безліччю можливих рішень, кожне з яких має свої переваги і недоліки.

У статті ми розглянемо схему інтерфейсу для датчика температури, яка забезпечує високу точність, займаючи при цьому малу плошадь на друкованій платі. Крім того, розглянемо деякі моменти в програмному коді і надамо приклади коду, які можуть бути адаптовані користувачами під свої потреби.

Проста схема, яку ми розглянемо, дозволяє підключати датчик температури з інтерфейсом 1-Wire DS18S20 до мікроконтролеру компанії Cypress CY8C26443 . Однак, за даною технологією, при мінімальній модифікації схеми і програмного коду, можна підключити будь-який пристрій 1-Wire. Мікроконтролер може бути будь-яким, але автор вибрав програмовану систему-на-кристалі (PSoC), оскільки вона забезпечує гнучкість в плані вибору і реалізації апаратних блоків на кристалі. Крім того, система-на-кристалі надає інтерфейс програмування додатків (API), тому новачки зможуть легко освоїти роботу з нею.

Асортимент 1-Wire пристроїв дуже широкий: датчики температури, пам'ять, пристрої ідентифікації, пристрої змішаних сигналів. Обмін даними та живлення пристроїв здійснюється по одному дроту. Вони прості в підключенні і використовуються там, де потрібна мінімальна складність з'єднань.

Як температурного сенсора був обраний цифровий датчик температури DS18S20 ( DS18B20 ). Це оптимальний вибір, тому що він дешевий і забезпечує точність вимірювань 0.5 ° C, але проект в цілому надає точність 1 ° C через похибки вимірювання і апаратних обмежень. Сенсор підтримує режим паразитного харчування, має програмований поріг температури і працює в діапазоні від -55 ° C до +125 ° C. При деякому доопрацюванні програмного коду і апаратної частини інтерфейсу підключення датчик зможе працювати на відстані декількох метрів від мікроконтролера.

При використанні датчика DS18B20 в корпусі TO-92, висновок 1 підключається до «землі», висновок 2 - висновок з відкритим стоком інтерфейсу 1-Wire для введення / виведення даних і харчування, висновок 3 - харчування або, в режимі паразитного харчування, він підключається до «землі». Для датчика в корпусі SO-8 для поверхневого монтажу, відповідні висновки це 5, 4 і 3, інші висновки залишаються підключеними. На рисунку 1 показана схема підключення датчика до мікроконтролеру CY8C26443. В даному випадку не використовується режим паразитного харчування.

У цьому варіанті схеми датчик підключається безпосередньо до мікроконтролера, тобто розташований на друкованій платі так, як якщо б датчик був частиною мікроконтролера. Розмір плати передбачає, що паразитні зв'язку незначні і не впливають на сигнал.

Використовуючи програмовану систему-на-кристалі, користувач може створити екземпляр 1-Wire модуля для обміну даними або ж написати свій власний протокол. Створення екземпляра модуля знижує програмну навантаження, однак автор вирішив написати свій протокол. Оскільки це призвело до збільшення коду, автор намагався уникнути використання двухпортового виведення, який необхідний для модуля PSoC при обміні даними між мікро контролером з датчиком.

Схема дуже проста. Діод CR2 захищає сенсор від стрибків напруги. Резистор R12 в звичайному режимі роботи не використовується. У режимі паразитного харчування резистор R12 використовується, а резистор R11 і конденсатор С8 виключаються зі схеми. мікросхема U2 MAX1232 є зовнішнім сторожовим таймером для мікроконтролера. По лінії STROBE мікроконтролер регулярної скидає сторожовий таймер.

Блоки коду для схеми інтерфейсу доступні для скачування в секції завантажень. Інтегроване середовище розробки доступна для сайті компанії Cypress.

Якщо необхідно використовувати датчик температури на видаленні від мікроконтролера, то необхідно використовувати схему інтерфейсу, зображену на рисунку 2. Додаткові елементи схеми гарантують забезпечення достатнього впадає і витікає струму, тому характеристики тайм-слотів протоколу 1-Wire зберігаються незмінними.

Датчик температури перетворює і зберігає цифрові дані в двох регістрах (Малюнок 3). За великим рахунком, дозвіл вихідних даних становить 9 біт. Молодший байт зберігає дані про температуру, старший байт зберігає знак вимірювань. У разі, якщо знак негативний (0xFF), дані в молодшому Баті доповнюються до двох. Біт 0 в молодшому байті представляє десяткове значення температури: 0.5 ° С для логічної 1 і 0 ° С для логічного 0. У програмному коді необхідно враховувати цей момент, щоб уникнути помилкових вимірювань.

Також датчик має два байта незалежній пам'яті (EEPROM) - регістри TH і TL, які представляють собою температурні пороги, з якими порівнюються старші 8 біт кожного виміряного значення температури. За допомогою спеціальної команди можна організувати сигналізацію виходу температури за встановлені межі (Малюнок 4). Дозвіл регістрів TH і TL 8 біт, на відміну від 9-бітного регістра перетворення температури.

Загальна карта пам'яті датчика DS18S20 - блокнотний пам'ять (ОЗУ) і незалежна пам'ять (регістри TH і TL) - зображена на рисунку 5. Якщо функція сигналізації не потрібно в додатку, то регістри TH і TL можуть служити областю незалежній пам'яті загального призначення.

Значення температури з роздільною здатністю більше 9 біт може бути обчислено з використанням даних з регістрів ОЗУ датчика: регістри даних про температуру (9 бітове дозвіл), регістр COUNT REMAIN (значення, що залишився в лічильнику наприкінці вимірювання), регістр COUNT PER C (кількість імпульсів на один градус для даної температури).

Дані підставляються в наступну формулу:

завантаження

Схема на рисунку 1 в PDF - завантажити
Схема на рисунку 2 в PDF - завантажити
Вихідний код програми мікроконтролера - завантажити

electronicdesign.com