Search Code

ESP32 Оқулық 25/55 - NTC және LCD көмегімен температураны өлшеу | SunFounder ESP32 IoT оқу жиынтығы

ESP32 Оқулық 25/55 - NTC және LCD көмегімен температураны өлшеу | SunFounder ESP32 IoT оқу жиынтығы

Бұл оқулықта біз Теріс Температура Коэффициенті (NTC) термисторын қолданып температураны қалай өлшеуге болатынын және ESP32 микроконтроллерін пайдаланып көрсеткіштерді LCD экранында қалай көрсетуге болатынын үйренеміз. Жоба NTC термисторын ESP32-ге қосуды және температура көрсеткіштерін Цельсий мен Фаренгейтте көрсету үшін LCD қолдануды қамтиды. Бұл ESP32 платформасын пайдаланып температураны сезу және көрсету әдістерімен танысудың тамаша тәсілі.

ESP32-25-NTC_thermometeLCD

Біз SunFounder компаниясының ESP32 кеңейту тақтасын қолданамыз, ол ESP32 мүмкіндіктерін кірістірілген Wi-Fi және Bluetooth арқылы кеңейтеді. Бұл тақтаны әртүрлі сенсорлар мен дисплейлермен оңай біріктіруге болады, бұл оны IoT жобалары үшін өте қолайлы етеді. NTC термисторы температураға кері пропорционалды өзгеретін кедергісіне негізделген температура көрсеткіштерін береді. Орнату және код туралы қосымша түсініктеме алу үшін бейнені міндетті түрде қараңыз (бейнеде 00:00).

Аппараттық құрал түсіндірмесі

Бұл жобада қолданылатын негізгі компоненттерге ESP32 микроконтроллері, NTC термисторы, резистор және LCD дисплей жатады. ESP32 орталық өңдеу бірлігі ретінде қызмет етеді, термистордан деректерді өңдейді және LCD дисплейді басқарады. NTC термисторы температураға сәйкес кедергісін өзгертеді, бұл бізге тұрақты резистормен кернеу бөлгіш конфигурациясына негізделген температураны есептеуге мүмкіндік береді.

NTC_thermistor

LCD дисплей температура көрсеткіштерін Цельсий мен Фаренгейтте көрсетеді. Біз LCD-мен байланысу үшін I2C протоколын қолданамыз, бұл қажетті түйреуіштер санын азайту арқылы сымдарды жеңілдетеді. NTC термисторының температура жоғарылағанда кедергісі төмендейтін сипаттамасы бар, бұл біздің есептеулеріміз үшін өте маңызды.

Деректер парағының мәліметтері

Өндіруші SunFounder
Бөлшек нөмірі NTC Термистор
Номиналды кедергі 10 кΩ
Бета мәні 3950 K
Температура диапазоны -40°C - 125°C
Қаптама Аксиалды

 

  • Термистордың күтілетін температура диапазонына сай екеніне көз жеткізіңіз.
  • Кернеу бөлгіші үшін 10 кΩ резисторды қолданыңыз; әйтпесе көрсеткіштер дәл болмайды.
  • Қысқа тұйықталуды болдырмау үшін қосылымдарды тексеріңіз.
  • LCD I2C мекенжайының дұрыс екеніне көз жеткізіңіз (әдетте 0x27).
  • ESP32 және перифериялық құрылғылар үшін тиісті қуат көзі деңгейлерін қолданыңыз.
  • Тізбекті монитордың бауд жылдамдығы код параметрлеріне сәйкес келетінін тексеріңіз (115200).
NTC_formula

Сымдарды қосу нұсқаулары

ESP32-11_LCD-wiring
ESP32-25-NTC_thermometer_wiring

Компоненттерді қосу үшін NTC термисторын ESP32-ге қосудан бастаңыз. Термистордың полярлығы жоқ, сондықтан оны кез келген бағытта қосуға болады. Термистордың бір ұшын ESP32-дегі жерге (GND) түйреуішіне қосыңыз. Екінші ұшы 10 кΩ резисторға қосылады, ол содан кейін ESP32-дегі 3.3V түйреуішіне жалғанады. Термистор мен резистор арасындағы түйіспе ESP32-дегі 35 түйреуішіне қосылады, ол температураны есептеу үшін кернеуді оқиды.

LCD үшін жерге қосу түйреуішін (әдетте жоғарыдан екінші түйреуіш) ESP32-дегі GND-ге қосыңыз. Содан кейін VCC (көбінесе бірінші түйреуіш) ESP32-дегі 5V түйреуішіне қосыңыз. SDA түйреуіші (әдетте үшінші түйреуіш) ESP32-дегі 21 түйреуішіне, ал SCL түйреуіші (көбінесе төртінші түйреуіш) 22 түйреуішіне қосылуы керек. Барлық қосылымдардың сенімді екеніне көз жеткізіңіз және қателіктерді болдырмау үшін түйреуіш нөмірлерін екі рет тексеріңіз.

Код мысалдары және түсіндірме

Код термистор үшін тұрақтыларды анықтаудан басталады, оның ішінде түйреуіш нөмірі, анықтамалық кернеу және кедергі мәндері. Орнату функциясы тізбекті байланысты инициализациялайды және термистор түйреуішін кіріс ретінде орнатады.

const int thermistorPin = 35; // Термисторға қосылған түйреуіш
const float referenceVoltage = 3.3;
const float referenceResistor = 10000; // 'басқа' резистор

Негізгі цикл термистор түйреуішінен аналогтық мәнді оқиды, кедергіні есептейді, содан кейін Бета параметр теңдеуін қолданып температураны Цельсий мен Фаренгейтте есептейді. Есептелген мәндер тізбекті мониторға басып шығарылады.

int adcValue = analogRead(thermistorPin); // ADC мәнін оқу
float voltage = (adcValue * referenceVoltage) / 4095.0; // Кернеуді есептеу
float resistance = (voltage * referenceResistor) / (referenceVoltage - voltage); // Термистор кедергісін есептеу

Соңында температура LCD-де көрсетіледі. lcd.print() функциясы температура мәндерін градус белгісімен бірге көрсету үшін қолданылады.

lcd.setCursor(0, 0);
lcd.print("Temp: ");
lcd.print(tempC, 1);
lcd.write(223); // Градус белгісі
lcd.print("C");

Бұл код LCD-ді әр 300 миллисекунд сайын соңғы температура көрсеткіштерімен тиімді жаңартып, нақты уақыттағы бақылауға мүмкіндік береді.

Демонстрация / Не күтуге болады

Кодты іске қосып, сымдарды дұрыс жалғағаннан кейін, LCD дисплейінде температура көрсеткіштері Цельсий және Фаренгейт бойынша көрсетілгенін байқайсыз. Егер термисторды қолыңызда ұстасаңыз, кедергі азайған сайын температураның жоғарылағанын байқайсыз. Полярлықтың ауысуына абай болыңыз және қосылымдардың сенімді екеніне көз жеткізіңіз, себебі дұрыс емес сым жалғау дәл емес көрсеткіштерге әкелуі мүмкін (бейнеде 04:50).

Бейне уақыт белгілері

  • 00:00 Басталуы
  • 1:50 жобаға кіріспе
  • 5:32 сымдарды жалғау түсіндірілді
  • 8:20 ESP32 үшін Arduino NTC коды түсіндірілді
  • 13:38 Arduino IDE-де ESP32 тақтасын және COM портын таңдау
  • 15:20 NTC температураны өлшеу демонстрациясы
  • 17:34 ESP32-мен LCD1602-де NTC температурасы
  • 18:42 LCD-мен Arduino NTC коды түсіндірілді
  • 21:15 LCD-де температураны көрсету демонстрациясы
  • 23:13 Жасыл LCD немесе көк LCD1601?

Суреттер

ESP32-11_LCD-wiring
ESP32-11_LCD-wiring
ESP32-11_LCD-wiring-schematic
ESP32-11_LCD-wiring-schematic
NTC_thermistor
NTC_thermistor
ESP32-25-NTC_thermometer_schematic
ESP32-25-NTC_thermometer_schematic
ESP32-25-NTC_thermometer_wiring
ESP32-25-NTC_thermometer_wiring
NTC_formula
NTC_formula
ESP32-25-NTC_thermometeLCD
ESP32-25-NTC_thermometeLCD
824-ESP32 Tutorial 25/55- SunFounder doc page NTC Thermometer
Тіл: C++
// Define constants
const int thermistorPin = 35; // Pin connected to the thermistor
const float referenceVoltage = 3.3;
const float referenceResistor = 10000; // the 'other' resistor
const float beta = 3950; // Beta value (Typical Value)
const float nominalTemperature = 25; // Nominal temperature for calculating the temperature coefficient
const float nominalResistance = 10000; // Resistance value at nominal temperature

void setup() {
  Serial.begin(115200); // Initialize serial communication
  pinMode(thermistorPin, INPUT); // Set pin as input
}

void loop() {
  int adcValue = analogRead(thermistorPin); // Read ADC value
  float voltage = (adcValue * referenceVoltage) / 4095.0; // Calculate voltage
  float resistance = (voltage * referenceResistor) / (referenceVoltage - voltage); // Calculate thermistor resistance with updated configuration

  // Calculate temperature using the Beta parameter equation
  float tempK = 1 / (((log(resistance / nominalResistance)) / beta) + (1 / (nominalTemperature + 273.15)));
  
  float tempC = tempK - 273.15; // Get temperature in Celsius
  float tempF = 1.8 * tempC + 32.0; // Get temperature in Fahrenheit

  //Print temperature
  printf("TempC: %.2f C\n", tempC);
  printf("TempF: %.2f F\n", tempF);

  delay(300); // Wait 1 second
}
825-ESP32 Tutorial 25/55- Arduino code for LCD with NTC thermistor
Тіл: C++
/*
This is Lesson 25/55 of SunFounder's ESP32 IoT Learning kit code
displays temperature from NTC on LCD screen
written by Ahmad Shamshiri for SunFounder's ESP32 IoT Learnign kit
watch full video https://youtu.be/zJh-gWY0DmE
download this code, wiring diagram and other resources from https://robojax.com/RJT707

*/

#include <Wire.h> 
#include <LiquidCrystal_I2C.h>

//SDA->21,SCL->22 
LiquidCrystal_I2C lcd(0x27,16,2);  // set the LCD address to 0x27 for a 16 chars and 2 line display


// Define constants
const int thermistorPin = 35; // Pin connected to the thermistor
const float referenceVoltage = 3.3;
const float referenceResistor = 10000; // Resistance value (10k)
const float beta = 3950; // Beta value (Typical Value)
const float nominalTemperature = 25; // Nominal temperature for calculating the temperature coefficient
const float nominalResistance = 10000; // Resistance value at nominal temperature

void setup() {

  lcd.clear(); 
  lcd.init();// initialize the lcd 
  lcd.backlight(); // Turns on the LCD backlight.

  //Serial.begin(115200); // Initialize serial communication
  pinMode(thermistorPin, INPUT); // Set pin as input
}

void loop() {
  int adcValue = analogRead(thermistorPin); // Read ADC value
  float voltage = (adcValue * referenceVoltage) / 4095.0; // Calculate voltage
  float resistance = (voltage * referenceResistor) / (referenceVoltage - voltage); // Calculate thermistor resistance with updated configuration

  // Calculate temperature using the Beta parameter equation
  float tempK = 1 / (((log(resistance / nominalResistance)) / beta) + (1 / (nominalTemperature + 273.15)));
  
  float tempC = tempK - 273.15; // Get temperature in Celsius
  float tempF = 1.8 * tempC + 32.0; // Get temperature in Fahrenheit

  //Print temperature
  //printf("TempC: %.2f C\n", tempC);
  //printf("TempF: %.2f F\n", tempF);

  // Display temperature on LCD
  lcd.setCursor(0, 0);
  lcd.print("Temp: ");
  lcd.print(tempC, 1);
  lcd.write(223); // Degree symbol
  lcd.print("C");

  lcd.setCursor(0, 1);
  lcd.print("Temp: ");
  lcd.print(tempF, 1);
  lcd.write(223); // Degree symbol
  lcd.print("F");

  delay(300); // Wait 1 second
}

Ресурстар мен сілтемелер

Файлдар📁

Файлдар жоқ.