Подвійний цифровий термометр на ATmega8 та DS18B20
Пропоную свій варіант цифрового термометра з двома датчиками температури.
Пристрій виконано на мікроконтролері ATmega8-16PU та двох датчиках з інтерфейсом 1-wire, фірми "Dallas Semiconductor" типу DS18B20 або DS1822. Пристрій використовується в домашніх цілях, один з його датчиків встановлюється на вулиці, інший у приміщенні. Індикація значень температури здійснюється двома подвійними світлодіодними 7-сегментними індикаторами з загальним катодом. (наприклад, DC56-11GWA, або подібні), розташованими один над одним.
Знак "мінус" індикується окремим світлодіодом.
Щоб не було складнощів зі зчитуванням 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, поправочний коефіцієнт не враховується.
Мікроконтролер працює від внутрішнього RC-генератора, на частоті 8 МГц, кварцовий резонатор не потрібен. Для роботи мікроконтролера в такому режимі потрібно запрограмувати необхідні 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 | |||
Прикреплені файли:
- thermometer.rar (174 Кб)