У цьому проекті використовується датчик температури, який показує на дисплеї навколишню температуру в градусах Цельсія і Фаренгейта. Він також відображає мінімальні і максимальні температури, записані реєстратором. На рис. 4.10 приведена блок-схема проекту. Дисплей Nokia 3310 служить для відображення показань. Кнопка на платі перемикає режим індикації. В одному випадку відображаються показники температури (Поперемінно в градусах Цельсія і Фаренгейта), в іншому – виводиться графік зміни температури в часі. Пристрій живиться від батарей.

6 Зак 1791

Рис. 4.10. Блок-схема реєстратора температури

Специфікації проекту

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

Опис пристрою

На рис. 4.11 зображена принципова схема пристрою. Оскільки в проекті використовується дисплей Nokia, то для нього потрібна напруга живлення від 2,7 до 3,3 В. Джерело живлення виконаний на основі підвищувального перетворювача постійного струму TPS61070, який видає 3,3 В від однієї батареї в 1,5 В. Батарейка підключається до клем SL3. Оскільки захисту від неправильної полярності немає, слід ретельно стежити за правильним підключенням батарейки. Дисплей Nokia підключається за допомогою шини SPI через роз’єм SL1.

Рис. 4.11. Принципова схема реєстратора температури

Найважливіший компонент системи – датчик температури. Це може бути термістор, термопара або напівпровідниковий датчик. Останній використовувати найпростіше.

Існують різні напівпровідникові датчики температури. Деякі датчики видають аналоговий сигнал (напруга якого пропорційно температурі); інші датчики видають цифрове значення в градусах Цельсія або Фаренгейта. Ми скористалися температурним датчиком DS1820, який перетворює температуру в 9-розрядне число (представляє температуру в градусах Цельсія або Фаренгейта). Точність відліку температури – 0,5 градуса Цельсія або 0,9 градуса Фаренгейта (в діапазоні від -55 до +125 ° С або від -67 до +257 ° F). Подробиці дивіться у специфікації на DS1820, яку можна скачати з нашого Web-сайту за посиланням: www.avrgenius.com/tinyavrl.

Перетворені дані можна вважати з інтерфейсу датчика. На принциповій схемі датчик DS1820 позначений як SL2. На схемі показані також чотири кнопки (S1-S4), але в даному проекті задіяна тільки одна. Інші кнопки будуть потрібні в інших проектах цієї глави. У пристрої застосований мікроконтролер Tiny44 в корпусі SMD з 14 контактами і 4 Кбайт пам’яті для програм. При включенні живлення або скиданні мікроконтролер инициализирует дисплей, опитує датчик DS1820 і відображає температуру (в градусах Цельсія або Фаренгейта) на дисплеї. Він також зберігає спостерігалися мінімальне і максимальне значення температури. Користувач може в будь-який момент натиснути кнопку, і система переключиться в інший режим, де на індикаторі викреслюються значення температури як функції від часу. Система постійно виконує виміри температури, але зберігає тільки одне значення кожні десять хвилин (і викреслює графік на дисплеї). Передбачено зберігання не більше 40 значень, тому зміни температури відображаються за останні 400 хвилин. Дані, що зберігаються в буфері, постійно зсуваються (для розміщення нових відліків), більш старі значення стираються.

Конструкція

Компонування плати в програмі EAGLE (а також принципову схему) можна завантажити за посиланням: www.avrgenius.com/tinyavrl.

Рис. 4.13. Друкована плата реєстратора (сторона друкованих провідників)

Рис. 4.15. Дисплей реєстратора в режимі відображення графіка

Плата одностороння (на стороні компонентів є всього декілька перемичок). Боку друкованої плати показані на рис. 4.12 і 4.13. Спочатку слід змонтувати перетворювач напруги і його навісні елементи. Паяти мікросхему TPS61070 потрібно дуже обережно. Потім, до установки інших компонентів необхідно протестувати напруга на виході TPS61070. Зовнішній вигляд дисплея реєстратора в різних режимах показаний на рис. 4.14 і 4.15.

Програмування

Відкомпільований код (разом з файлом MAKEFILE) можна завантажити за посиланням: www.avrgemus.com/tmyavrl.

Тактова частота дорівнює 1 МГц. Мікроконтролер запрограмований за допомогою STK500 в режимі програмування ISP. Датчик температури DS1820 виконує операції читання і запису через однопроводной інтерфейс Далласа, реалізований програмно. Щоб зрозуміти суть, ви можете заглянути в специфікацію датчика температури. Найважливіші фрагменти коду ілюструє лістинг 4.4.

int dsl820_read(void)

{

char busy=0;

unsigned char tempi,temp2; int result; onewire_reset();

onewire_write (OxCC); // Пропустити команду Rom onewire_write (0x44);

// Команда перетворення температури while (busy == 0) busy = onewire_read (); onewire_reset ();

onewire_write (OxCC); // Пропустити команду Rom onewire_write (OxBE);

// Прочитати команду Scratchpad tempi = onewire_read (); temp2 = onewire_read (); onewire_reset (); result = templ * 5;

// Точність 0.5 градусів Цельсія

// Результат в десять разів більше, ніж фактична температура return result;

}

Функція dsi820_read опитує датчик DS1820 і повертає значення, яке в десять разів більше фактичної температури в градусах Цельсія (після виконання необхідного масштабування). Головний нескінченний цикл програми працює в двох режимах. У першому режимі відображається поточна температура (разом з її мінімальним і максимальним значеннями) в градусах Цельсія і Фаренгейта. У другому режимі відображається графік зміни температури. Графік малюється за допомогою функції graphi, яка витягує значення для креслення пікселів з масиву data. Функція seticd служить для малювання осей на екрані

LCD. Решта фрагменти коду виконують ініціалізацію LCD та графічного режиму. Кнопка S4 (РА1) перемикає режим. Перехід з режиму малювання графіка до відображення температури (і назад) не призводить до видалення графічних даних.

Робота пристрою

Реєстратор спроектований для роботи від однієї або двох батарейок розміру АА / ААА. Можна використовувати як лужні, так і акумуляторні елементи (нікель-металлогидрідниє або нікель-кадмієві). Досить подати напругу живлення, і на дисплеї починає відображатися значення температури. Для перемикання між режимами відображення натисніть кнопку.

Джерело: Гадре, Д., Цікаві проекти на базі мікроконтролерів tinyAVR / Дхананья Гадре, Нігула Мелхотра: Пер. з англ. – СПб .: БХВ-Петербург, 2012. – 352 с .: іл. – (Електроніка)