Hľadať kód

Návod na ESP32 25/55 - Meranie teploty pomocou NTC a LCD | SunFounderova ESP32 IoT výučbová súprava

Návod na ESP32 25/55 - Meranie teploty pomocou NTC a LCD | SunFounderova ESP32 IoT výučbová súprava

V tomto návode sa naučíme, ako merať teplotu pomocou termistora so záporným teplotným koeficientom (NTC) a zobrazovať namerané hodnoty na LCD obrazovke pomocou mikrokontroléra ESP32. Projekt bude zahŕňať pripojenie NTC termistora k ESP32 a použitie LCD na zobrazenie teploty v stupňoch Celzia aj Fahrenheita. Je to skvelý spôsob, ako začať s technikami snímania teploty a zobrazovania pomocou platformy ESP32.

ESP32-25-NTC_thermometeLCD

Využijeme rozširujúcu dosku SunFounder pre ESP32, ktorá rozširuje možnosti ESP32 o vstavané Wi-Fi a Bluetooth. Táto doska sa dá ľahko integrovať s rôznymi senzormi a displejmi, čo ju robí ideálnou pre IoT projekty. NTC termistor poskytne hodnoty teploty na základe svojho odporu, ktorý sa mení nepriamo úmerne s teplotou. Pre ďalšie objasnenie zapojenia a kódu si určite pozrite video (vo videu o 00:00).

Vysvetlenie hardvéru

Hlavné komponenty použité v tomto projekte zahŕňajú mikrokontrolér ESP32, NTC termistor, rezistor a LCD displej. ESP32 slúži ako centrálna procesorová jednotka, ktorá spracováva údaje z termistora a riadi LCD displej. NTC termistor mení svoj odpor podľa teploty, čo nám umožňuje vypočítať teplotu na základe konfigurácie napäťového deliča s pevným rezistorom.

NTC_thermistor

LCD displej zobrazí hodnoty teploty v stupňoch Celzia aj Fahrenheita. Na komunikáciu s LCD použijeme protokol I2C, ktorý zjednodušuje zapojenie znížením počtu potrebných pinov. NTC termistor má charakteristiku, pri ktorej jeho odpor klesá so zvyšujúcou sa teplotou, čo je kľúčové pre naše výpočty.

Podrobnosti z datasheetu

Výrobca SunFounder
Označenie dielu NTC termistor
Nominálny odpor 10 kΩ
Hodnota Beta 3950 K
Rozsah teplôt -40°C až 125°C
Puzdro Axiálne

 

  • Uistite sa, že termistor je dimenzovaný na očakávaný rozsah teplôt.
  • Použite 10 kΩ rezistor pre napäťový delič; inak budú namerané hodnoty nepresné.
  • Skontrolujte pripojenia, aby ste predišli skratom.
  • Uistite sa, že adresa I2C LCD je správna (zvyčajne 0x27).
  • Použite vhodné úrovne napájania pre ESP32 a periférie.
  • Skontrolujte, či rýchlosť prenosu sériového monitora zodpovedá nastaveniam kódu (115200).
NTC_formula

Pokyny na zapojenie

ESP32-11_LCD-wiring
ESP32-25-NTC_thermometer_wiring

Pri zapájaní komponentov začnite pripojením NTC termistora k ESP32. Termistor nemá polaritu, takže ho možno pripojiť v oboch smeroch. Pripojte jeden vývod termistora k pinu uzemnenia (GND) na ESP32. Druhý vývod sa pripojí k 10 kΩ rezistoru, ktorý sa potom pripojí k pinu 3.3V na ESP32. Spojenie medzi termistorom a rezistorom sa pripojí na pin 35 na ESP32, ktorý bude čítať napätie pre výpočet teploty.

Pre LCD pripojte uzemňovací pin (zvyčajne druhý pin zhora) na GND na ESP32. Potom pripojte VCC (často prvý pin) na 5V pin na ESP32. Pin SDA (zvyčajne tretí pin) by sa mal pripojiť na pin 21 na ESP32 a pin SCL (často štvrtý pin) by sa mal pripojiť na pin 22. Uistite sa, že všetky pripojenia sú bezpečné a dvakrát skontrolujte čísla pinov, aby ste predišli chybám.

Príklady kódu a vysvetlenie

Kód začína definovaním konštánt pre termistor, vrátane čísla pinu, referenčného napätia a hodnôt odporu. Funkcia setup inicializuje sériovú komunikáciu a nastaví pin termistora ako vstup.

const int thermistorPin = 35; // Pin pripojený k termistoru
const float referenceVoltage = 3.3;
const float referenceResistor = 10000; // 'druhý' rezistor

Hlavná slučka číta analógovú hodnotu z pinu termistora, vypočíta odpor a potom vypočíta teplotu v stupňoch Celzia aj Fahrenheita pomocou rovnice s parametrom Beta. Vypočítané hodnoty sa vytlačia na sériový monitor.

int adcValue = analogRead(thermistorPin); // Prečítanie ADC hodnoty
float voltage = (adcValue * referenceVoltage) / 4095.0; // Výpočet napätia
float resistance = (voltage * referenceResistor) / (referenceVoltage - voltage); // Výpočet odporu termistora

Nakoniec sa teplota zobrazí na LCD. Funkcia lcd.print() sa používa na zobrazenie hodnôt teploty spolu so symbolom stupňa.

lcd.setCursor(0, 0);
lcd.print("Temp: ");
lcd.print(tempC, 1);
lcd.write(223); // Symbol stupňa
lcd.print("C");

Tento kód efektívne aktualizuje LCD každých 300 milisekúnd s najnovšími hodnotami teploty, čo umožňuje monitorovanie v reálnom čase.

Demonštrácia / Čo očakávať

Po spustení kódu a dokončení zapojenia by ste mali vidieť hodnoty teploty zobrazené na LCD v stupňoch Celzia aj Fahrenheita. Ak podržíte termistor v ruke, mali by ste si všimnúť, že teplota stúpa, keď sa odpor znižuje. Buďte opatrní pri obrátenej polarite a uistite sa, že sú pripojenia pevné, pretože nesprávne zapojenie môže viesť k nepresným hodnotám (vo videu o 04:50).

Časové značky videa

  • 00:00 Začiatok
  • 1:50 úvod do projektu
  • 5:32 vysvetlenie zapojenia
  • 8:20 vysvetlenie Arduino NTC kódu pre ESP32
  • 13:38 Výber dosky ESP32 a COM portu v Arduino IDE
  • 15:20 Ukážka merania teploty NTC
  • 17:34 NTC teplota na LCD1602 s ESP32
  • 18:42 vysvetlenie Arduino kódu NTC s LCD
  • 21:15 Ukážka teploty na LCD
  • 23:13 Zelené LCD alebo modré LCD1601?

Obrázky

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
Jazyk: 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
Jazyk: 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
}

Zdroje a referencie

Súbory📁

Žiadne súbory nie sú k dispozícii.