Популярные статьи

BMW 3-series Coupe (Бмв ) 2006-2009: описание, характеристики, фото, обзоры и тесты

С сентября 2006 года серийно выпускается БМВ 3-й серии купе (Е92). Невзирая на свое техническое родство с седаном и Touring, купе БМВ 3-й серии имеет

Длительный тест Range Rover Sport: часть вторая

Аш длительный тест Range Rover Sport Supercharged подошел к концу. Первая хорошая новость: машину не угнали! Вторая: несмотря на соблазн, за

Audi E-tron (Ауди ) 2010: описание, характеристики, фото, обзоры и тесты

Audi E-tron, представленный на автосалоне в Детройте в январе 2010 года, совсем не то же самое, что E-tron, который выставлялся осенью на IAA 2009 во

Принципы ухода за АКБ зимой

В зимнее время года при морозной погоде аккумулятор автомобиля испытывает нагрузку намного больше, чем в летнее время. Автовладельцами замеченны

SEAT Toledo (Сиат Толедо) 1998-2004: описание, характеристики, фото, обзоры и тесты

Эта модель расширяет присутствие компании SEAT в сегменте рынка престижных автомобилей. Toledo - первый автомобиль компании дизайн которого выполнен

В 2000 г. семейство японских Corolla лишь обновилось. Спрос на эти машины падал и классическая Corolla уже не устраивала японских покупателей. Как

Skoda Octavia (Шкода Октавия) 1996-1999: описание, характеристики, фото, обзоры и тесты

Skoda Octavia - это современный переднеприводной автомобиль с поперечным расположением двигателя. На нём может стоять один из пяти моторов концерна

Chrysler PT Cruiser (Крайслер Пт крузер) 1999-2010: описание, характеристики, фото, обзоры и тесты

Дебют серийной модели PT Cruiser состоялся в 1999 году в Детройте. Компании Chrysler удалось зацепить ностальгическую струну в душе каждого простого

Примеряем Audi A6 Allroad и A8 Hybrid к нашим дорогам

Компания сыграла на контрасте, представив одновременно две модели, совершенно противоположные по идеологии: сверхэкономичный лимузин-гибрид А8 и

Toyota Tundra Crew Max (Тойота Тундра Crew Max) 2006-2009: описание, характеристики, фото, обзоры и тесты

Toyota Tundra (Тойота Тундра) проектировался как грузовик. Мощный двигатель, основательная рама и большая грузоподъемность... вот что отличает этот

Архив сайта
Облако тегов
Календарь

термістор

NTC термістор

Термістор - це резистор, опір якого змінюється від температури. Термістори бувають двох типів: з позитивним і негативним температурним коефіцієнтом. У терморезистора з позитивним коефіцієнтом при підвищенні температури опір зростає, а з негативним коефіцієнтом - зменшується. Їх скорочені назви англійською мовою: PTC (positive temperature coefficient) і NTC (negative temperature coefficient).

Використання термістора ускладнює нелінеарность температурної залежності його опору. Залежність є линеарной тільки в невеликих межах, для обчислення декількох десятків градусів і більшою кордону виміру підходить експоненціальне рівняння третього порядку Стейнхарта-Харта. Для NTC терморезисторов існує наступне спрощене рівняння з B - параметром:

де:

  • T0 - номінальна температура, наприклад 25 ° C.

  • R0 - Опір при номінальній температурі.

  • B - B-параметр.

B - параметр це коефіцієнт, який зазвичай дається в специфікації термистора. У той же час, він досить сталий тільки у відомих температурних проміжках, наприклад, 25-50 ° C або 25-85 ° C. Якщо вимірюваний температурний проміжок більше, то при можливості слід використовувати рівняння, що знаходиться в специфікації.

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

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

Плата модуля «Датчики» Домашньої Лабораторії забезпечена термістором типу NTC з номінальним опором 10 kΩ. При температурі 25-50 ° CB - параметр дорівнює 3900. Один висновок термистора підключений до живлення +5 V і іншої до каналу 2 (висновок PF2) аналогово-світа перетворювача мікроконтролера. З тим же висновком мікроконтролера і землею з'єднаний звичайний 10 kΩ резистор, який разом з терморезистором утворює дільник напруги. Так як є справа з NTC термістором, опір якого зменшується з підвищенням температури, тоді в цей же час піднімається і вихідна напруга дільника напруги.

Для пошуку температури доцільно використовувати таблицю перетворення значень температури і аналого-світа перетворювача. Розумно для кожного градуса знайти відповідне значення аналого-світа перетворювача з бажаного інтервалу температур, тому що протилежна таблиця буде занадто великий через кількість 10-бітних ADC значень. Для створення таблиці бажано використовувати будь-яку програму по обчисленню таблиць (MS Excel, Openoffice Calc або інші). За допомогою наведеного вище рівняння Стейнхарта-Харта, адаптованого для NTC термісторів, можна знайти відповідне температурі опір терморезистора. З опору можна обчислити вихідну напругу дільника напруги і в свою чергу з нього - значення ADC. Знайдені значення можна таким чином записати в програму:

// // Таблиця для перекладу температури в значення ADC. // Кожен елемент масиву позначає один градус Цельсія. // Елементи починаються від -20 градусів і закінчуються 100 градусами. // В цілому в масиві 121 елемент. // const signed short min_temp = - 20; const signed short max_temp = 100; const unsigned short conversion_table [] = {91, 96, 102, 107, 113, 119, 125, 132, 139, 146, 153, 160, 168, 176, 184, 192, 201, 210, 219, 228, 238, 247, 257, 267, 277, 288, 298, 309, 319, 330, 341, 352, 364, 375, 386, 398, 409, 421, 432, 444, 455, 467, 478, 489, 501, 512, 523, 534, 545, 556, 567, 578, 588, 599, 609, 619, 629, 639, 649, 658, 667, 677, 685, 694, 703, 711, 720, 728, 736, 743, 751, 758, 766, 773, 780, 786, 793, 799, 805, 811, 817, 823, 829, 834, 839, 844, 849, 854, 859, 863, 868, 872, 876, 880, 884, 888, 892, 896, 899, 903, 906, 909, 912, 915, 918, 921, 924, 927, 929, 932, 934, 937, 939, 941, 943, 945, 947, 949, 951, 953, 955} ;

Для того, щоб в таблиці знайти температуру за значенням ADC, можна використовувати наступний алгоритм:

// // Переклад значення ADC в градуси Цельсія. // signed short thermistor_calculate_celsius (unsigned short adc_value) {signed short celsius; // Проходження таблиці навпаки for (celsius = max_temp - min_temp; celsius> = 0; celsius -) {// Якщо значення таблиці таке ж або більше ніж виміряний результат, // тоді температура приблизно така ж висока, // як і температура соотвествуящая елементам. if (adc_value> = conversion_table [celsius]) {// Так як таблиця починається з нуля, // а значення елемента - 20 градусів, то доведеться значення зрушити return celsius + min_temp; }} // Якщо значення, не знайдено, то повертається мінімальна температура return min_temp; }

Алгоритм шукає в таблиці інтервал, в якому знаходиться значення ADC, і дізнається нижню межу порядкового номера інтервалу. Порядковий номер позначає градуси, до нього слід лише додати початкову температуру і таким чином виходить точність температури в 1 градус.

Наведені таблиця перекладу і функція вже є в бібліотеці Домашньої Лабораторії, так що в даній вправі їх самим писати не треба. У функції перетворення в бібліотеці є назва thermistor_calculate_celsius. Потрібно враховувати, що перетворення підходить тільки термісторі, що знаходиться в модулі «Датчики» Домашньої Лабораторії. Для використання інших термисторов доведеться створювати таблицю перекладів самому і використовувати складні функції, описані в інструкції бібліотеки. У вправі для прикладу програми є термометр, який вимірює температуру в Цельсіях і відображає це на буквено-цифровому LCD екрані.

// // Приклад програми термистора модуля «Датчики» Домашньої Лабораторії. // На LCD дисплеї відображається температура в градусах. // #include <stdio.h> #include <homelab / adc.h> #include <homelab / module / sensors.h> #include <homelab / module / lcd_alpha.h> // // Основна програма // int main (void) {unsigned short value; signed short temperature; char text [16]; // Налаштування LCD екрана lcd_alpha_init (LCD_ALPHA_DISP_ON); // Очищення LCD екрана lcd_alpha_clear (); // Назва програми lcd_alpha_write_string ( "Термометр"); // Налаштування ADC перетворювача adc_init (ADC_REF_AVCC, ADC_PRESCALE_8); // Нескінченний цикл while (true) {// Зчитування значення напруги термистора, округлене в 4-рази value = adc_get_average_value (2, 4); // Перераховування значення ADC в градуси temperature = thermistor_calculate_celsius (value); // Переклад температури в текст // Для відображення знака градуса октанове число 337 sprintf (text, "% d \ 337 C", temperature); // Відображення тексту на початку другого ряду LCD lcd_alpha_goto_xy (0, 1); lcd_alpha_write_string (text); }}