Використання термістору для контролю температури

Застосування для вимірюванння температури, схеми інкубаторів, метеомстанцій, визначення та відображення вологості, в тому числі вологості грунту та наявності опадів. Термопари і термоелементи. Модулі точного часу та їх використання
Відповісти
Аватар користувача
Arduino
Site Admin
Повідомлень: 98
З нами з: 16 травня 2017 18:18

Використання термістору для контролю температури

Повідомлення Arduino » 25 травня 2017 19:59

В цьому прикладі вимірюємо температуру навколишнього середовища і за допомогою шкали показуємо, на скільки вона перевищує заданий поріг.
Розглядаються основи використання термочутливих резисторів - термісторів та перетворення аналогового сигналу у цифровий вигляд
l15-komnatnijtermometr1.jpg
// Величезна кількість готового коду вже написано іншими людьми
// і зберігається у вигляді окремих файлів, які називаються
// бібліотеками. Для використання коду з бібліотеки, її потрібно
// підключити (англ. Include). Бібліотека «math» дає різні
// математичні функції, в тому числі функцію логарифма
// (англ. Log), яка нам знадобиться далі
#include <math.h>

#define FIRST_LED_PIN 2
#define LED_COUNT 10

// Параметр конкретного типу термистора (з datasheet):
#define TERMIST_B 4300

#define VIN 5.0

недійсними установки ( )
{
для ( Int я = 0 ; я < LED_COUNT ; ++ я )
pinMode ( я + FIRST_LED_PIN, OUTPUT ) ;
}

void loop ( )
{
// обчислюємо температуру в ° С за допомогою магічної формули.
// Використовуємо при цьому не цілі числа, а речові. Їх ще
// називають числами з плаваючою (англ. Float) точкою. В
// виразах з речовими числами обов'язково потрібно явно
// вказувати дробову частину у всіх констант. Інакше подрібнена
// частина результату буде відкинута

Поплавок напруга = analogRead ( А0 ) * VIN / 1023,0 ;
плавати r1 = напруга / ( VIN - напруга ) ;


Поплавок температура = 1 . / ( 1 . / ( TERMIST_B ) * журнал ( r1 ) + 1 . / ( 25 . + 273 . ) ) - 273 ;

for ( int i = 0 ; i < LED_COUNT ; ++ i ) {
// при 21 ° С повинен горіти один сегмент, при 22 ° С - два і
// т.д. Визначаємо повинен горіти i-й нехитрим способом
boolean enableSegment = ( temperature > = 21 + i ) ;
digitalWrite ( i + FIRST_LED_PIN, enableSegment ) ;
}
}
Пояснення до коду
  • Директиви для підключення бібліотек #include включаються в початок програми.
  • В цьому експерименті ми підключаємо бібліотеку math.hдля того, щоб використовувати функцію взяття натурального логарифма x log(x) .
  • У змінних типу floatможна зберігати дробові числа, числа з плаваючою крапкою.
  • При використанні змінних даного типу майте на увазі:
    • при операціях з їх використанням, вказуйте нульову дробову частину у цілих констант, як в прикладі
    • вони можуть набувати значень від -3.4028235 × 10 38 до 3.4028235 × 10 38 ,
    • при цьому кількість значущих цифр може бути 6-7: всіх цифр, не тільки після коми!
    • точність обчислень з такими даними невелика, у вас можуть виникнути несподівані помилки, наприклад, при використанні float в умовному операторі. Не покладайтеся на точність!
    • обчислення з float відбуваються повільніше, ніж з цілими числами
  • Показання термистора пов'язані з температурою нелінійно, тому нам доводиться використовувати таку громіздку формулу.

Відповісти

Повернутись до “Температура та вологість, час і відлік”