Kalibrasi Sensor Suhu LM35 pada Arduino

Mengkalibrasi sensor LM35 pada Arduino adalah langkah penting untuk memastikan akurasi pembacaan suhu, terutama karena ada sedikit variasi antar sensor individual atau faktor lingkungan (seperti fluktuasi tegangan suplai Arduino). Proses kalibrasi umumnya melibatkan penyesuaian perhitungan di kode program berdasarkan referensi suhu yang diketahui.

Ada dua pendekatan utama untuk kalibrasi:

  1. Kalibrasi Offset (Offset Calibration): Ini adalah metode paling sederhana, di mana Anda menambahkan atau mengurangi nilai konstan ke pembacaan suhu untuk mengoreksi bias.

  2. Kalibrasi Skala (Scale Calibration) / Multipoins Calibration: Ini lebih kompleks tetapi memberikan akurasi yang lebih baik pada rentang suhu yang luas. Ini melibatkan penyesuaian faktor pengali (kemiringan) dan offset.

Kita akan fokus pada kalibrasi offset terlebih dahulu karena lebih mudah diimplementasikan dan seringkali sudah cukup akukrat untuk banyak aplikasi.


Metode 1: Kalibrasi Offset (Rekomendasi untuk LM35)

Metode ini mengasumsikan bahwa sensor Anda cukup linier, tetapi mungkin ada "bias" atau "offset" tertentu yang membuat pembacaannya sedikit lebih tinggi atau lebih rendah dari suhu sebenarnya.

Langkah-langkah Kalibrasi Offset:

  1. Siapkan Referensi Suhu yang Akurat:

    • Cara terbaik adalah menggunakan termometer standar yang akurat (misalnya, termometer digital ruangan yang sudah terkalibrasi atau termometer medis) dan letakkan di samping sensor LM35 Anda.

    • Pastikan kedua termometer (LM35 dan referensi) berada di lingkungan yang stabil suhunya (misalnya, ruangan yang sama, jauh dari jendela, AC, atau pemanas) untuk mendapatkan pembacaan yang representatif. Biarkan stabil selama beberapa menit.

  2. Dapatkan Pembacaan Awal dari LM35 Anda:

    • Unggah program termometer digital yang sudah ada ke Arduino Anda.

    • Buka Serial Monitor di Arduino IDE.

    • Catat pembacaan suhu Celcius dari LM35 Anda (misalnya, 25.30 C).

    • Catat juga pembacaan suhu dari termometer referensi Anda (misalnya, 24.50 C).

  3. Hitung Nilai Offset:

    • Offset = Suhu Referensi - Suhu LM35

    • Contoh: Jika LM35 Anda membaca 25.30 C dan termometer referensi membaca 24.50 C:

      • Offset = 24.50 - 25.30 = -0.80 C

    • Nilai offset ini adalah koreksi yang perlu Anda tambahkan ke setiap pembacaan LM35 agar lebih akurat.

  4. Modifikasi Kode Arduino Anda:

    • Tambahkan variabel global untuk calibrationOffsetC.

    • Terapkan offset ini pada perhitungan suhu Celcius.

Modifikasi Kode:

Arduino
// ... (Bagian include library dan konfigurasi pin lainnya sama) ...

// --- Variabel Kalibrasi ---
// Sesuaikan nilai ini berdasarkan perhitungan offset Anda
const float CALIBRATION_OFFSET_C = -0.80; // Contoh: jika LM35 membaca 25.3 dan referensi 24.5

// ... (Variabel untuk Pembacaan Suhu lainnya sama) ...

void setup() {
  // ... (Bagian setup lainnya sama) ...
}

void loop() {
  // ... (Bagian loop lainnya sama) ...

  if (currentTime - lastTempUpdateTime >= TEMP_UPDATE_INTERVAL) {
    lastTempUpdateTime = currentTime;

    int analogValue = analogRead(LM35_PIN);
    float voltage_mV = (analogValue / 1024.0) * 5000.0;

    // --- KALIBRASI DI SINI ---
    temperatureC = (voltage_mV / 10.0) + CALIBRATION_OFFSET_C; // Tambahkan offset

    temperatureF = (temperatureC * 9 / 5) + 32;

    // ... (Bagian Serial Print dan Display LCD lainnya sama) ...
  }
}

// ... (Fungsi-fungsi pembantu lainnya sama) ...
  1. Uji Ulang:

    • Unggah kode yang sudah dimodifikasi.

    • Bandingkan pembacaan LM35 di Serial Monitor atau LCD dengan termometer referensi Anda. Seharusnya sekarang lebih dekat dengan nilai referensi.


Metode 2: Kalibrasi Hardware (Melalui Referensi Tegangan ADC)

Metode ini lebih canggih dan kadang lebih akurat jika masalahnya ada pada tegangan referensi ADC Arduino yang tidak tepat 5.00V atau jika Anda memiliki LM35 yang sedikit berbeda responsnya.

LM35 memberikan output 10textmV per ${}^\\circ\\text{C}$. Pembacaan ADC: untuk (biasanya 5textV atau 5000textmV).

$Suhu (\\text{Celcius}) = \\frac{Pembacaan ADC}{1024} \\times \\frac{V\_{ref}}{\\text{10 mV/}^\\circ\\text{C}}$

Atau, bisa disederhanakan:

Suhu(textCelcius)=PembacaanADCtimesleft(fracV_ref1024times10right)

Faktor left(fracV_ref1024times10right) adalah berapa derajat Celcius per satu unit pembacaan ADC.

Langkah-langkah:

  1. Ukur Tegangan 5V Arduino Anda Secara Akurat:

    • Gunakan multimeter yang akurat untuk mengukur tegangan aktual antara pin 5V dan GND pada Arduino Anda. Jarang sekali hasilnya tepat 5.00textV, mungkin saja 4.95textV atau 5.05textV.

    • Catat nilai ini (misalnya, 4.97textV atau 4970textmV).

  2. Sesuaikan Perhitungan di Kode:

    Arduino
    // ... (Bagian include library dan konfigurasi pin lainnya sama) ...
    
    // --- Konfigurasi Tegangan Referensi (Ukur dengan Multimeter!) ---
    // Ganti nilai ini dengan tegangan 5V Arduino Anda yang sebenarnya dalam milivolt
    const float ACTUAL_AREF_MILLIVOLTS = 4970.0; // Contoh: jika Anda ukur 4.97V
    
    // ... (Variabel untuk Pembacaan Suhu lainnya sama) ...
    
    void setup() {
      // ... (Bagian setup lainnya sama) ...
    }
    
    void loop() {
      // ... (Bagian loop lainnya sama) ...
    
      if (currentTime - lastTempUpdateTime >= TEMP_UPDATE_INTERVAL) {
        lastTempUpdateTime = currentTime;
    
        int analogValue = analogRead(LM35_PIN);
    
        // --- KALIBRASI DENGAN TEGANGAN REFERENSI SEBENARNYA ---
        // Tegangan = (nilai analog / Resolusi ADC) * Tegangan Referensi Sebenarnya
        float voltage_mV = (analogValue / 1024.0) * ACTUAL_AREF_MILLIVOLTS;
    
        // Suhu Celcius = Tegangan dalam mV / 10 mV/C
        temperatureC = voltage_mV / 10.0;
    
        temperatureF = (temperatureC * 9 / 5) + 32;
    
        // ... (Bagian Serial Print dan Display LCD lainnya sama) ...
      }
    }
    
    // ... (Fungsi-fungsi pembantu lainnya sama) ...
    
  3. Uji Ulang: Unggah kode yang dimodifikasi dan bandingkan dengan termometer referensi.


Tips Tambahan untuk Akurasi:

  • Hindari Self-Heating: Pastikan LM35 tidak terlalu dekat dengan komponen Arduino yang menghasilkan panas (seperti regulator tegangan), atau komponen lain yang dapat memancarkan panas. Kaki-kaki sensor juga bisa sedikit panas jika terlalu lama dicolokkan ke breadboard.

  • Kabel Pendek: Gunakan kabel jumper sependek mungkin dari LM35 ke Arduino untuk mengurangi noise dan interferensi.

  • Power Supply Stabil: Pastikan Arduino Anda ditenagai oleh catu daya yang stabil. Fluktuasi pada catu daya 5V akan memengaruhi pembacaan ADC.

  • analogReference(EXTERNAL) (Opsional Lanjutan): Untuk akurasi tertinggi, Anda bisa menggunakan tegangan referensi eksternal yang sangat presisi (misalnya, chip referensi tegangan seperti TL431 atau LM385) dan menghubungkannya ke pin AREF Arduino, lalu menggunakan analogReference(EXTERNAL); dalam setup(). Ini jauh lebih kompleks dan biasanya tidak diperlukan untuk LM35 standar.

Memulai dengan kalibrasi offset adalah pendekatan yang paling praktis. Dengan sedikit penyesuaian, Anda bisa mendapatkan hasil yang cukup akurat untuk termometer digital Anda!

Komentar