Ще один корисний прилад, який часто використовується у сучасних пристроях – це датчик температури. Навіть у вашому комп'ютері є відразу кілька датчиків температури, за допомогою яких система стежить за перегріванням ключових компонентів - процесора, відеокарти, блоку живлення та інших вузлів. Найпопулярніший же приклад використання датчика температури будинку - термостат. Цей пристрій постійно стежить за температурою повітря і регулює подачу енергії в систему опалення. Суміжний приклад – казан для нагрівання води.
У нашому уроці ми використовуємо датчик TMP35. Замість нього можна використовувати будь-який інший схожий датчик: TMP35, TMP37, LM35, LM335 та подібні. Виглядає датчик як звичайний транзистор:
Можна легко сплутати, тому рекомендую завжди уважно читати маркування на таких пристроях (та й взагалі спочатку завжди читайте, потім підключайте :). Саме цей датчик має такі характеристики:
- напруга живлення: від 2,7 до 5,5;
- похибка: 2 градуси;
- температура, що вимірюється: від 10°C до 125°C
- споживаний струм: 50 мкА.
Підключення
Датчик TMP35 має три виводи (три ноги). Якщо подивитися на датчик з боку цих висновків та зрізом вгору, як показано на малюнку,
то ліворуч буде позитивний контакт живлення (+2.7 - 5.5В),
по центру - вихід на контролер,
і праворуч - негативний контакт живлення (земля).Датчик аналоговий, а значить, на його виході ми маємо не 0 або 1, а напругу в діапазоні від 0 до 5 вольт. Отже, ми повинні згадати розділ про аналого-цифрове перетворення (АЦП) сигналів Arduino . Маючи на увазі, що у Ардуїно Уно є шість аналогових входів (A0-A5), підключаємо наш датчик за наступною схемою:
ЗОВНІШНІЙ ВИГЛЯД МАКЕТУ
ПРИНЦИПОВА СХЕМА
Ось так має виглядати зібрана схема.

Програма
Підключивши датчик температури до Ардуїна, починаємо писати програму. Перше, що ми зробимо, це виведемо необроблений сигнал з аналогового входу в послідовний порт, щоб просто зрозуміти, як змінюється значення на вході A0. Нам знадобиться проста програма:
int raw = 0; float temp = 0; void setup() { Serial.begin(9600); pinMode( A0, INPUT ); } void loop() { raw = analogRead(A0); temp = ( raw/1023.0 )*5.0*1000/10; Serial.println(temp); delay(1000); }Увага, математика! У програмі можна побачити вираз:
temp = (сирий/1023,0)*5,0*1000/10;Воно необхідно для того, щоб перетворити аналоговий сигнал датчика на градуси Цельсія. Справа тут ось у чому. Всі аналогові датчики мають важливу характеристику відношення кількості вольт до одиниці вимірюваної величини. Наприклад, у специфікації до нашого датчика tmp35 написано, що кожен градус вимірюваної температури відповідає 10 мілівольтам напруги на виході. Виходячи з цих міркувань, прочитане за допомогою analogRead значення ми спочатку перетворимо до кількості Вольт:
вольти = (значення АЦП/1023) * 5Така процедура називається нормуванням. Тут 1023 - максимальне значення, яке може повернути нам 10-бітний АЦП, вбудований в Ардуїно Уно.
5 - робоча напруга АЦП.Потім перетворимо ці вольти на градуси Цельсія:
градуси = (вольти * 1000)/10Перетворюємо вольти на мілівольти (*1000), і ділимо на 10 (те саме число зі специфікації!).
Загалом, навіть якщо нічого не зрозуміло, завантажуємо програму на Ардуїно та спостерігаємо за температурою навколишнього повітря. Наприклад, у нас у лабораторії датчик оцінив температуру наступним чином:
Цілком собі правдиве значення. А тепер піднесемо прилад до відкритого вікна (на вулиці зима -10 ° C):
Працює! Датчик негайно реєструє зниження температури.
Робимо термостат
Тепер додамо в програму якусь дію, яка буде здійснюватися якщо температура впаде нижче за заданий нами поріг. Нехай цей поріг дорівнюватиме 15°C. Найпростіше, що ми можемо зробити, - це запалювати на Ардуїно штатний світлодіод #13. Виходить така ось програма:
int raw = 0; float temp = 0; void setup() { pinMode( A0, INPUT ); } void loop() { raw = analogRead(A0); temp = ( raw/1023.0 )*5.0*1000/10; if (temp < 15) digitalWrite(13, HIGH); else digitalWrite(13, LOW); delay(1000); }Хтось забув закрити вікно – температура різко опустилася нижче 15 – світлодіод запалюється. Закриваємо вікно, активно дихаємо - світлодіод гасне. А тепер уявіть, що ви запалюєте світлодіод, а подаєте сигнал на реле, яке включає обігрівач в кімнаті. Виходить готовий термостат!
Небагато змінивши програму можна відслідковувати не зниження, а перевищення заданого рівня. Наприклад, зручно буде стежити за температурою всередині, скажімо, серверною, і при збільшенні температури до 40 градусів включати витяжку!





Немає коментарів:
Дописати коментар