ESP32 பயிற்சி 25/55 - NTC & LCD ஐப் பயன்படுத்தி வெப்பநிலையை அளவிடுதல் | SunFounder இன் ESP32 IoT கற்றல் கிட்
இந்த டுடோரியலில், நெகடிவ் டெம்பரேச்சர் கோஎபிஷியண்ட் (NTC) தெர்மிஸ்டரைப் பயன்படுத்தி வெப்பநிலையை அளவிடுவது மற்றும் ESP32 மைக்ரோகண்ட்ரோலரைப் பயன்படுத்தி LCD திரையில் அளவீடுகளைக் காண்பிப்பது எப்படி என்பதைக் கற்றுக்கொள்வோம். இந்த திட்டத்தில் NTC தெர்மிஸ்டரை ESP32 உடன் இணைப்பது மற்றும் செல்சியஸ் மற்றும் பாரன்ஹீட் இரண்டிலும் வெப்பநிலை அளவீடுகளைக் காட்ட LCD ஐப் பயன்படுத்துவது ஆகியவை அடங்கும். ESP32 தளத்தைப் பயன்படுத்தி வெப்பநிலை உணர்தல் மற்றும் காட்சி நுட்பங்களுடன் தொடங்க இது ஒரு சிறந்த வழியாகும்.
நாங்கள் SunFounder இன் ESP32 நீட்டிப்பு பலகையைப் பயன்படுத்துவோம், இது உள்ளமைக்கப்பட்ட Wi-Fi மற்றும் புளூடூத் மூலம் ESP32 இன் திறன்களை மேம்படுத்துகிறது. இந்த பலகை பல்வேறு சென்சார்கள் மற்றும் காட்சிகளுடன் எளிதாக ஒருங்கிணைக்கப்படலாம், இது IoT திட்டங்களுக்கு ஏற்றதாக அமைகிறது. NTC தெர்மிஸ்டர் அதன் எதிர்ப்பின் அடிப்படையில் வெப்பநிலை அளவீடுகளை வழங்கும், இது வெப்பநிலையுடன் நேர்மாறாக மாறுபடும். அமைப்பு மற்றும் குறியீடு குறித்து மேலும் தெளிவுபடுத்த, வீடியோவைப் பார்க்கவும் (வீடியோவில் 00:00 மணிக்கு).
வன்பொருள் விளக்கம்
இந்த திட்டத்தில் பயன்படுத்தப்படும் முக்கிய கூறுகளில் ESP32 மைக்ரோகண்ட்ரோலர், NTC தெர்மிஸ்டர், ஒரு மின்தடையம் மற்றும் LCD காட்சி ஆகியவை அடங்கும். ESP32 மத்திய செயலாக்க அலகாக செயல்படுகிறது, தெர்மிஸ்டரிலிருந்து தரவைக் கையாண்டு LCD காட்சியைக் கட்டுப்படுத்துகிறது. NTC தெர்மிஸ்டர் வெப்பநிலைக்கு ஏற்ப அதன் எதிர்ப்பை மாற்றுகிறது, இது நிலையான மின்தடையத்துடன் மின்னழுத்த பிரிப்பான் உள்ளமைவின் அடிப்படையில் வெப்பநிலையை கணக்கிட அனுமதிக்கிறது.
LCD காட்சி செல்சியஸ் மற்றும் பாரன்ஹீட் இரண்டிலும் வெப்பநிலை அளவீடுகளைக் காண்பிக்கும். LCD உடன் தொடர்பு கொள்ள I2C நெறிமுறையைப் பயன்படுத்துவோம், இது தேவையான பின்களின் எண்ணிக்கையைக் குறைப்பதன் மூலம் வயரிங்கை எளிதாக்குகிறது. NTC தெர்மிஸ்டர் ஒரு சிறப்பியல்பைக் கொண்டுள்ளது, அங்கு வெப்பநிலை அதிகரிப்புடன் அதன் எதிர்ப்பு குறைகிறது, இது எங்கள் கணக்கீடுகளுக்கு முக்கியமானது.
டேட்டாஷீட் விவரங்கள்
| உற்பத்தியாளர் | SunFounder |
|---|---|
| பகுதி எண் | NTC தெர்மிஸ்டர் |
| பெயரளவு எதிர்ப்பு | 10 kΩ |
| பீட்டா மதிப்பு | 3950 K |
| வெப்பநிலை வரம்பு | -40°C முதல் 125°C வரை |
| பேக்கேஜ் | அச்சு |
- தெர்மிஸ்டர் எதிர்பார்க்கப்படும் வெப்பநிலை வரம்பிற்கு மதிப்பிடப்பட்டுள்ளதா என்பதை உறுதிப்படுத்தவும்.
- மின்னழுத்த பிரிப்பானுக்கு 10 kΩ மின்தடையத்தைப் பயன்படுத்தவும்; இல்லையெனில் அளவீடுகள் துல்லியமாக இருக்காது.
- குறுகிய சுற்றுகளைத் தவிர்க்க இணைப்புகளை சரிபார்க்கவும்.
- LCD இன் I2C முகவரியை சரியாக வைத்திருங்கள் (பொதுவாக 0x27).
- ESP32 மற்றும் புற சாதனங்களுக்கு பொருத்தமான மின்சார விநியோக அளவுகளைப் பயன்படுத்தவும்.
- சீரியல் மானிட்டர் பாட் வீதம் குறியீடு அமைப்புகளுடன் (115200) பொருந்துகிறதா என்பதை சரிபார்க்கவும்.
வயரிங் வழிமுறைகள்


கூறுகளை வயர் செய்ய, NTC தெர்மிஸ்டரை ESP32 உடன் இணைப்பதன் மூலம் தொடங்கவும். தெர்மிஸ்டருக்கு துருவமுனைப்பு இல்லை, எனவே அதை எந்த திசையிலும் இணைக்கலாம். தெர்மிஸ்டரின் ஒரு முனையை ESP32 இல் உள்ள தரை (GND) பின்னுடன் இணைக்கவும். மற்ற முனை 10 kΩ மின்தடையத்துடன் இணைகிறது, இது 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");
இந்த குறியீடு ஒவ்வொரு 300 மில்லி விநாடிகளுக்கும் சமீபத்திய வெப்பநிலை அளவீடுகளுடன் LCD ஐ திறம்பட புதுப்பிக்கிறது, இது நிகழ்நேர கண்காணிப்பை அனுமதிக்கிறது.
செயல்விளக்கம் / என்ன எதிர்பார்க்கலாம்
குறியீட்டை இயக்கி வயரிங்கை முடித்தவுடன், 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 உடன் NTC Arduino குறியீடு விளக்கப்பட்டுள்ளது
- 21:15 LCD-இல் வெப்பநிலையின் செயல்விளக்கம்
- 23:13 பச்சை LCD அல்லது நீல LCD1601?
// 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
}
/*
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
}
Common Course Links
Common Course Files
வளங்கள் மற்றும் மேற்கோள்கள்
-
ஆவணங்கள்ESP32 Tutorial 25/55 - SunFounder doc page for NTC thermometerdocs.sunfounder.com
-
ஆவணங்கள்Learn about NTC Thermistordocs.sunfounder.com
கோப்புகள்📁
கோப்புகள் கிடைக்கவில்லை.