Короткі теоретичні відомості і постановка задачі :)
На сьогоднішній момент існує два типи датчиків, що дозволяють виміряти температуру: терморезистор (термістор) і термопара. Принцип їх роботи майже ясний :) з назви: терморезистор - це резистор змінює свій опір під дією температури, термопара - два дроти з різних матеріалів спаяні разом, в яких при нагріванні, за рахунок різниці потенціалів, виникає ЕРС.
Зазвичай в автомобільних системах застосовують терморезистори, так як вони здатні працювати при значних механічних навантаженнях, але одночасно з цим перевагою вони маю і ряд недоліків: здатні працювати тільки у вузькому діапазоні температур, та й в цьому діапазоні залежність температура-опір у них нелінійна, причому протягом терміну служби ця залежність змінюється. Термопара в цьому плані простіше, та й якщо її механічно не навантажувати, то надійніше, та й діапазон робочих температур у неї побільше. Тому в різних системах вимірювань частіше застосовують термопару. А раз її застосовують, то потрібно навчиться її застосовувати і нам - ми що руді. )
На цьому з теорією все, переходжу до практики. Хто хоче почитати про типи датчиків докладніше, можу порекомендувати статтю - www.picad.com.ua/0105/pdf/50-54.pdf
електроніка
ЕРС виробляється термопарою дуже невелика - порядку декількох мілівольтах, тому без підсилювача не обійтися. Пошукавши в інтернеті я знайшов 5 різних схем підсилювачів під термопару і на основі однієї з них намалював свою
Як потім зрозумів R3 зайвий і його можна зі схеми викинути - коефіцієнт посилення ми все одно врахуємо потім програмно.
Ну тут мені трохи пощастило - термопара паяльника (який потрібно підключити) і наявного у мене мультиметра мали однакові характеристики, тому я просто крокодильчиками мультиметра "сів" на вихід термопари, а другий мультиметр причепив на вихід схеми. Нагріваючи кінчик паяльника (а відповідно і термопару) пальником записав значення температури і відповідні їм значення напруги на виході схеми.
Тим кому така халява "не пройде" доведеться або розташовувати обидві термопари (підключається до контролера і мультиметра) поруч або міряти термопарою температуру у тел з точно відомою температурою (наприклад: льоду - 0 С, людського тіла -36,6С, окропу - 100С) .
трошки математики
Заносимо отримані дані в Excel, виділяємо їх і натискаємо кнопочку "майстер діаграм"
Далі вибираємо тип діаграми "точкова" і натискаємо "готове"
Отримали нашу залежність "температура - напруга" графічно.
Якщо отримані крапки не лежать приблизно на одній лінії, то значить наміряли ми чегой то неправильно - переміряти. Якщо все "Ок", то клацають мишкою на будь-який з побудованих точок і, натиснувши на праву кнопочку, отримаємо віконце, де вибираємо "Додати лінію тренда".
В відкрилися віконці перевіряємо, щоб "Тип" був "Лінійний", а на вкладці "Параметри" потрібно поставити галочку навпроти "Показати рівняння на діаграмі".
Додати на графіку рівняння і є шукана залежність "напруга-температура"
Тепер згадуємо, що для AtMega АЦП при 0В на вході видає 0, а при 5В - 1024 і перераховуємо "температура - напруга" в "показання АЦП - температура" помноживши на 5/1023:
у = 206.36 * х * (5.0 / 1023.0) -13.263
де х - показання АЦП, у - реальне значення температури
збірка
Описувати в даному пункті особливо нічого - чіпляємо нашу схему до МК або хустці Ардуіно, підключаємо туди ж цифрову панель звідси - www.drive2.ru/b/2826794/
програма
Програму теж беремо для цифрової панелі, змінивши тільки основний цикл
void loop () unsigned long previousMillis = 0;
const long interval = 1000;
int sensorValue;
int temp_real;
// cчітиваем свідчення АЦП
unsigned long currentMillis = millis ();
if (currentMillis - previousMillis> = interval)
// Вважаємо реальне значення температури
temp_real = abs (int (206.36 * sensorValue * (5.0 / 1023.0) -13.263));
>
showNumber (temp_real);
>
результат
Якось так
як видно зображення злегка тремтить-потрібно усереднювати свідчення, а не міряти через якийсь інтервал. але це вже буде враховано в остаточній версії