Kod Ara

ESP32 Eğitimi 25/55 - NTC ve LCD Kullanarak Sıcaklık Ölçümü | SunFounder'ın ESP32 IoT Öğrenme Kiti

ESP32 Eğitimi 25/55 - NTC ve LCD Kullanarak Sıcaklık Ölçümü | SunFounder'ın ESP32 IoT Öğrenme Kiti

Bu eğitimde, Negatif Sıcaklık Katsayısı (NTC) termistörü kullanarak sıcaklığı nasıl ölçeceğimizi ve ESP32 mikrodenetleyicisini kullanarak okumaları bir LCD ekranda nasıl göstereceğimizi öğreneceğiz. Proje, bir NTC termistörünü ESP32'ye bağlamayı ve hem Celsius hem de Fahrenheit cinsinden sıcaklık okumalarını göstermek için bir LCD kullanmayı içerecektir. Bu, ESP32 platformunu kullanarak sıcaklık algılama ve görüntüleme tekniklerine başlamak için harika bir yoldur.

ESP32-25-NTC_thermometeLCD

SunFounder'ın ESP32 genişletme kartını kullanacağız; bu kart, ESP32'nin yeteneklerini yerleşik Wi-Fi ve Bluetooth ile geliştirir. Bu kart, çeşitli sensörler ve ekranlarla kolayca entegre edilebilir ve bu da onu IoT projeleri için ideal kılar. NTC termistörü, sıcaklıkla ters orantılı olarak değişen direncine dayalı sıcaklık okumaları sağlayacaktır. Kurulum ve kod hakkında daha fazla açıklama için videoyu (videoda 00:00'da) kontrol ettiğinizden emin olun.

Donanım Açıklaması

Bu projede kullanılan ana bileşenler ESP32 mikrodenetleyicisi, bir NTC termistörü, bir direnç ve bir LCD ekrandır. ESP32, termistörden gelen verileri işleyen ve LCD ekranı kontrol eden merkezi işlem birimi olarak görev yapar. NTC termistörü, sıcaklığa göre direncini değiştirir ve sabit bir dirençle voltaj bölücü yapılandırmasına dayalı olarak sıcaklığı hesaplamamıza olanak tanır.

NTC_thermistor

LCD ekran, sıcaklık okumalarını hem Celsius hem de Fahrenheit cinsinden gösterecektir. LCD ile iletişim kurmak için I2C protokolünü kullanacağız; bu, gereken pin sayısını azaltarak kablolamayı basitleştirir. NTC termistörü, sıcaklık arttıkça direncinin azaldığı bir özelliğe sahiptir; bu, hesaplamalarımız için çok önemlidir.

Veri Sayfası Ayrıntıları

Üretici SunFounder
Parça numarası NTC Termistör
Nominal Direnç 10 kΩ
Beta Değeri 3950 K
Sıcaklık Aralığı -40°C ila 125°C
Paket Eksenel

 

  • Termistörün beklenen sıcaklık aralığı için derecelendirildiğinden emin olun.
  • Voltaj bölücü için 10 kΩ direnç kullanın; aksi takdirde okumalar hatalı olur.
  • Kısa devreleri önlemek için bağlantıları doğrulayın.
  • LCD'nin I2C adresini doğru tutun (genellikle 0x27).
  • ESP32 ve çevre birimleri için uygun güç kaynağı seviyelerini kullanın.
  • Seri monitör baud hızının kod ayarlarıyla (115200) eşleştiğini kontrol edin.
NTC_formula

Kablolama Talimatları

ESP32-11_LCD-wiring
ESP32-25-NTC_thermometer_wiring

Bileşenleri bağlamak için NTC termistörünü ESP32'ye bağlayarak başlayın. Termistörün polaritesi yoktur, bu nedenle her iki yönde de bağlanabilir. Termistörün bir ucunu ESP32 üzerindeki toprak (GND) pinine bağlayın. Diğer uç, ESP32 üzerindeki 3.3V pinine bağlanan 10 kΩ dirence bağlanır. Termistör ile direnç arasındaki bağlantı noktası, sıcaklık hesaplamaları için voltajı okuyacak olan ESP32 üzerindeki 35 pinine bağlanacaktır.

LCD için, toprak pinini (genellikle üstten ikinci pin) ESP32 üzerindeki GND'ye bağlayın. Ardından, VCC'yi (genellikle ilk pin) ESP32 üzerindeki 5V pinine bağlayın. SDA pini (genellikle üçüncü pin) ESP32 üzerindeki 21 pinine, SCL pini (genellikle dördüncü pin) ise 22 pinine bağlanmalıdır. Tüm bağlantıların güvenli olduğundan emin olun ve hataları önlemek için pin numaralarını tekrar kontrol edin.

Kod Örnekleri ve Açıklaması

Kod, termistör için pin numarası, referans voltajı ve direnç değerleri dahil olmak üzere sabitleri tanımlayarak başlar. Kurulum işlevi seri iletişimi başlatır ve termistör pinini giriş olarak ayarlar.

const int thermistorPin = 35; // Termistöre bağlı pin
const float referenceVoltage = 3.3;
const float referenceResistor = 10000; // 'diğer' direnç

Ana döngü, termistör pininden analog değeri okur, direnci hesaplar ve ardından Beta parametresi denklemini kullanarak sıcaklığı hem Celsius hem de Fahrenheit cinsinden hesaplar. Hesaplanan değerler seri monitöre yazdırılır.

int adcValue = analogRead(thermistorPin); // ADC değerini oku
float voltage = (adcValue * referenceVoltage) / 4095.0; // Voltajı hesapla
float resistance = (voltage * referenceResistor) / (referenceVoltage - voltage); // Termistör direncini hesapla

Son olarak, sıcaklık LCD'de görüntülenir. Sıcaklık değerlerini derece sembolüyle birlikte göstermek için lcd.print() işlevi kullanılır.

lcd.setCursor(0, 0);
lcd.print("Temp: ");
lcd.print(tempC, 1);
lcd.write(223); // Derece sembolü
lcd.print("C");

Bu kod, LCD'yi her 300 milisaniyede bir en son sıcaklık okumalarıyla etkili bir şekilde güncelleyerek gerçek zamanlı izleme sağlar.

Gösterim / Beklentiler

Kodu çalıştırıp kablolamayı tamamladığınızda, LCD ekranda hem Santigrat hem de Fahrenheit cinsinden sıcaklık okumalarını görmelisiniz. Termistörü elinizde tutarsanız, direnç azaldıkça sıcaklığın arttığını fark etmelisiniz. Ters polariteye dikkat edin ve bağlantıların sağlam olduğundan emin olun, çünkü hatalı kablolama yanlış okumalara yol açabilir (videoda 04:50'de).

Video Zaman Damgaları

  • 00:00 Başlangıç
  • 1:50 projeye giriş
  • 5:32 kablolama açıklaması
  • 8:20 ESP32 için Arduino NTC kodu açıklaması
  • 13:38 Arduino IDE'de ESP32 kartı ve COM portu seçimi
  • 15:20 NTC sıcaklık ölçüm gösterimi
  • 17:34 ESP32 ile LCD1602 üzerinde NTC sıcaklığı
  • 18:42 LCD ile Arduino NTC kodu açıklaması
  • 21:15 LCD üzerinde sıcaklık gösterimi
  • 23:13 Yeşil LCD mi yoksa Mavi LCD1601 mi?

Görseller

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

Kaynaklar ve referanslar

Dosyalar📁

Dosya mevcut değil.