Подвійний цифровий термометр на ATmega8 та DS18B20

Пропоную свій варіант цифрового термометра з двома датчиками температури.
Пристрій виконано на мікроконтролері ATmega8-16PU та двох датчиках з інтерфейсом 1-wire, фірми "Dallas Semiconductor" типу DS18B20 або DS1822. Пристрій використовується в домашніх цілях, один з його датчиків встановлюється на вулиці, інший у приміщенні. Індикація значень температури здійснюється двома подвійними світлодіодними 7-сегментними індикаторами з загальним катодом. (наприклад, DC56-11GWA, або подібні), розташованими один над одним.

Схема подвійного цифрового термометра на ATmega8 і DS18B20

Знак "мінус" індикується окремим світлодіодом.
Щоб не було складнощів зі зчитуванням 64-розрядного ідентифікаційного коду датчика та визначення, який з них вуличний, а який кімнатний, датчики підключені до різних ніжок МК, а не висять на одній шині 1-wire. Підключення вуличного датчика зручно виконати за допомогою роз’єму, наприклад типу stereo-jack 3,5мм.

При ввімкненні пристрою, якщо датчик не підключений, або несправний, на відповідних індикаторах висвічуються символи [--]. Оновлення показань температури відбувається приблизно кожну секунду.

Як показала практика, датчикам типу DS1822 властиво завищувати температуру на 2-3 градуси.
Для компенсації цього в EEPROM контролера можна записати поправочні коефіцієнти для кожного з датчиків. За адресою 0x00010 записується коефіцієнт для датчика, що знаходиться в приміщенні, а за адресою 0x00011 – для датчика, що знаходиться на вулиці. Коефіцієнт вираховується за наступним алгоритмом: за нульову поправку береться цифра 0x80, і якщо Вам необхідно внести поправку, в мінус 2 градуси, то від 0x80 потрібно буде відняти 2 і записати отриманий результат у відповідну ячейку EEPROM (Наприклад: 0x80 – 2=0x7E).

Для поправки в бік збільшення температури необхідно буде до числа 0x80 додати необхідний коефіцієнт, див. рис. Якщо в відповідних ячейках EEPROM код 0xFF або 0x80, поправочний коефіцієнт не враховується.

Правка EEPROM

Мікроконтролер працює від внутрішнього RC-генератора, на частоті 8 МГц, кварцовий резонатор не потрібен. Для роботи мікроконтролера в такому режимі потрібно запрограмувати необхідні Fuse-біти, відповідно до нижнього рисунка.

Fuse-біти

Для живлення пристрою використовується малогабаритний імпульсний, стабілізований джерело живлення з напругою 5В і струмом 250мА.

Оскільки схема пристрою досить проста, друкована плата не розроблялася, пристрій було змонтовано на макетній платі.

Макетна плата

Завантажити прошивку, проект в CodeVisionAVR, Proteus та в P-CAD ви можете нижче

Список радіоелементів

Обозначення Тип Номінал Кількість Примітка
DD1 МК AVR 8-біт
ATmega8
1
DD2 Датчик температури
DS18B20
1
VT1-VT4 Біполярний транзистор
КТ3102
4
C1, C3 Конденсатор 0.1 мкФ 2
C2 Конденсатор електролітичний 47 мкФ 10В 1
R1 Резистор
10 кОм
1
R2-R7 Резистор
4.7 кОм
6
VD1, VD2 Світлодіод 2
HG1, HG2 Семисегментний індикатор ОК 2
Додати всі

Прикреплені файли:

Top