Виберіть свою мову

Цей прилад, побудований на мікроконтролері ATmega8, може бути сконфігурований як термометр або як термостат незалежно для кожного з двох каналів. Є можливість задавати температуру вимикання нагрівача в межах від +5 до +95 °С, різниця значень температури його вимикання і вмикання від 0 до 4 °С і компенсувати систематичну похибка датчиків температури від -2 до +2 °С. Схема термометра-термостата показана на малюнку.

Два датчика DS18B20 підключають до роз'ємів Х1 і Х2, причому номери гнізд відповідають номерам їх висновків. Використана трьохпровідна схема підключення. Вже багато разів я переконувався у тому, що тільки так можна домогтися максимальної довжини з'єднувальних проводів, і скрізь, де це можливо, намагаюся уникати паразитного живлення датчиків. При мідних проводах перерізом 0,5 мм2 стійкий зв'язок вдавалося забезпечити на відстані до 40 м. Показання датчиків виводяться на HG1 - трехразрядного світлодіодний індикатор з загальними анодами світлодіодів кожного розряду. Двоколірні світлодіоди HL1 і HL2 відображають стан кожного з каналів. Сигнали управління нагрівачами в режимі термостата формуються на виходах мікроконтролера РВ6 (перший канал) і РВ7 (другий канал). Управління двопозиційне; нагрівач включений або виключений.

Для гальванічної розв'язки приладу від виконавчих пристроїв встановлені оптрони U1 і U2. В моєму варіанті до роз'єму Х4 і Х5 підключені ланцюга управління двох сімісторов ВТ139, комутуючих нагрівальні елементи. При необхідності оптрони можна замінити транзисторами, включивши до їх колекторні ланцюга обмотки електромагнітних реле. Протягом 4...5 с після подачі на прилад живлення відбувається ініціалізація датчиків і початковий збір їх показань. В цей час по черзі блимають всі елементи індикатора HG1. Далі встановлюється режим вимірювання і відображення температури. У цьому режимі нагрівачі вимкнені. Показання датчиків на індикаторі чергуються з періодом 5 с. Якщо виміряна температура датчиком, підключеним до роз'єму Х1, світиться світлодіод HL1, а підключеним до роз'єму Х2 - HL2. При цьому, якщо відповідний канал сконфігурований як термометр, колір світіння жовтий, якщо термостат, то при поданої команди на включення нагрівача він червоний, а при її відсутності - зелений. Після натискання на кнопку SB2 відображаються показання тільки першого датчика, а після натискання на SB3 - тільки другого. Якщо який-небудь датчик не підключений, в його ланцюзі стався обрив, замикання або температура вийшла за межі 0,1...99,9 °С, на індикатор замість значення температури виводиться напис "Err", а відповідний нагрівач вимикається.

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

У цьому режимі кнопки SB2 і SB3 вибирають необхідний параметр:

ut1 (ut2) - установка температури вимикання нагрівача в каналі 1 (2);
dt1 (dt2) -установка різниці температури виключення і включення нагрівача в каналі 1 (2).

Наприклад, при установці температури виключення 35 °С і різниці 1,5 °С нагрівання відбудеться до температури 35 °С, за її досягненні нагрівач буде вимкнений і знову включений, коли температура знизиться до 33,5 °С. Оптимальним вибором різниці досягають компромісу між точністю підтримки температури і частотою включень нагрівача.

со1 (со2) - коригування показань датчика 1 (2). Введене значення підсумовується (з урахуванням знака) з цими свідченнями перш, ніж вони надійдуть на подальшу обробку. Це дозволяє компенсувати можливу похибка датчика. У разі повторного короткочасного натискання на кнопку SB1 на індикатор виводиться зберігається в пам'яті мікроконтролера значення обраного параметра, після чого кнопки SB2 і SB3 (відповідно зменшення і збільшення на 0,1 °С) задають його нове значення. При тривалому утриманні цих кнопок зміна параметра починає відбуватися швидше (приблизно 10 разів на секунду). Через 5 с після останнього натискання на будь-яку кнопку встановлене значення запам'ятовується в енергонезалежній пам'яті мікроконтролера, а на індикатор виводиться поточна температура. Коди програми з файлу Termo2ch.hex записують в програмну (FLASH), пам'ять мікроконтролера, а інформацію з файлу Termo2ch.epp - в його EEPROM. Розряди конфігурації мікроконтролера програмують у відповідності з таблицею.

Розряд Value. Розряд Value. BODEN 0 SKCEL0 0 BODLEVEL 1 SKCEL1 0 BOOTRST 1 SKCEL2 1 BOOTSZ0 1 SKCEL3 0 BOOTSZ1 1 SPIEN 0 CKOPT 1 SUT0 0 EESAVE 1 SUT1 1 RSTDISBL 1 WDTON 0

Для захисту від зависання програми в мікроконтролері повинен бути включений сторожовий таймер. Оскільки інтерфейс 1-Wire, який використовується датчиками, критичний до тактовій частоті мікроконтролера, необхідна точна настройка його внутрішнього тактового генератора на 8 МГц. Для цього слід, підключивши використовуваний примірник мікроконтролера до програматора, прочитати калібрувальну константу, що знаходиться в старшому байті слова, розташованого за адресою 0x0003 сигнатури мікроконтролера. Після завантаження в програматор файлу Termo2ch.epp, але перед програмуванням, цю константу записують в нульову клітинку буфера EEPROM програматора. Мікроконтролер АТмеда8 може бути замінений на ATmega8L При заміні індикатора CPD-05211SR2/A аналогічним іншого типу доведеться, можливо, підібрати резистори R8-R15, щоб забезпечити прийнятну яскравість.

Завантажити програми мікроконтролера

Автор: І. Котів, р. Красноармійськ Донецької обл., Україна; Публікація: www.cxem.net