Search Code

Kode Arduino untuk sensor suhu LM75A

Kode Arduino untuk sensor suhu LM75A

Dalam tutorial ini, kita akan mempelajari cara menggunakan sensor suhu LM75A dengan Arduino untuk mengukur suhu dalam Celsius dan Fahrenheit. Sensor LM75A berkomunikasi melalui protokol I2C, sehingga mudah diintegrasikan dengan papan Arduino. Di akhir tutorial ini, Anda akan memiliki pengaturan yang berfungsi yang menampilkan pembacaan suhu setiap detik.

Untuk memaksimalkan tutorial ini, saya sarankan menonton video terkait, yang memberikan panduan visual tentang pengaturan dan implementasi kode (dalam video pada 20:29).

Penjelasan Perangkat Keras

Sensor suhu LM75A adalah sensor digital yang mampu mengukur suhu lingkungan dengan presisi tinggi. Sensor ini beroperasi melalui protokol komunikasi I2C, memungkinkan beberapa sensor terhubung ke bus yang sama. Sensor ini memiliki fungsi shutdown suhu berlebih, yang dapat membantu menghemat daya saat tidak digunakan.

Sensor ini biasanya tersedia baik sebagai chip tunggal atau sebagai modul PCB. Modul ini mencakup pin penting seperti VCC, GND, SDA, dan SCL, yang diperlukan untuk komunikasi dengan Arduino. Saat menggunakan sensor ini, penting untuk memastikan koneksi yang benar dan memilih alamat I2C yang tepat untuk komunikasi.

Detail Datasheet

ProdusenNXP / Texas Instruments
Nomor bagianLM75A
Tegangan logika/IO2,7 V hingga 5,5 V
Tegangan suplai2,7 V hingga 5,5 V
Arus keluaran (per saluran)3 mA
Arus puncak (per saluran)10 mA
Panduan frekuensi PWMT/A
Ambang logika masukan0,3 VCC (tinggi), 0,2 VCC (rendah)
Penurunan tegangan / RDS(on) / saturasi0,5 V maks
Batas termal-55 °C hingga +125 °C
KemasanSOIC-8 / TSSOP
Catatan / varianTersedia dalam alamat I2C yang berbeda

  • Pastikan alamat I2C yang benar diatur dalam kode Anda.
  • Gunakan resistor pull-up pada jalur SDA dan SCL jika diperlukan.
  • Berdayakan sensor dengan tegangan yang stabil (2,7 V hingga 5,5 V).
  • Pantau panas berlebih; sensor dapat beroperasi hingga 125 °C.
  • Tangani sensor dengan hati-hati untuk menghindari kerusakan selama pemasangan.

Instruksi Pengkabelan

Arduino_wiring_LM75A_bb

Untuk menghubungkan sensor suhu LM75A ke Arduino Anda, mulailah dengan menghubungkan pin ground sensor ke pin ground Arduino Anda. Selanjutnya, hubungkan pin VCC sensor ke pin 5V pada Arduino. Untuk komunikasi I2C, hubungkan pin SDA sensor (biasanya ditandai dengan warna hijau) ke pin A4 pada Arduino, dan pin SCL (biasanya ditandai dengan warna biru) ke pin A5. Jika Anda menggunakan model Arduino yang berbeda, pastikan Anda terhubung ke pin I2C yang benar; misalnya, pada Arduino Mega, SDA terhubung ke pin 20 dan SCL ke pin 21.

Jika Anda menggunakan LM75A sebagai chip telanjang daripada modul, pastikan untuk menghubungkan pin yang sesuai dengan benar: pin ke-1 terhubung ke A4 (SDA), pin ke-2 terhubung ke A5 (SCL), pin ke-4 terhubung ke ground, dan pin ke-8 terhubung ke VCC. Biarkan pin lainnya tidak terhubung. Pengaturan ini memastikan bahwa sensor dapat berkomunikasi dengan benar dengan Arduino.

Contoh Kode & Penjelasan

Kode berikut menginisialisasi sensor LM75A dan membaca suhu setiap detik. Pengidentifikasi kunci dalam kode ini adalah lm75a_sensor, yang merupakan instance dari kelas LM75A. Instance ini digunakan untuk mengambil pembacaan suhu dari sensor.

LM75A lm75a_sensor(false, false, false);

Baris ini membuat instance dari kelas LM75A, meneruskan parameter yang mewakili status pin A0, A1, dan A2. Status default dapat diatur ke false jika pin-pin ini tidak digunakan.

Dalam fungsi setup(), kita menginisialisasi komunikasi serial pada baud rate 9600, yang sangat penting untuk menampilkan pembacaan suhu di monitor serial.

void setup(void) {
  Serial.begin(9600);
  Serial.println("Robojax LM75A Test");
}

Potongan ini mengatur monitor serial, memungkinkan kita melihat pembacaan suhu saat dicetak setiap detik.

Dalam fungsi loop(), kita mengambil suhu dalam derajat Celsius dan memeriksa adanya kesalahan. Jika suhu valid, kita mencetaknya bersama dengan padanan Fahrenheit-nya.

float temperature_in_degrees = lm75a_sensor.getTemperatureInDegrees();
if (temperature_in_degrees == INVALID_LM75A_TEMPERATURE) {
  Serial.println("Error while getting temperature");
} else {
  Serial.print("Temperature: ");
  Serial.print(temperature_in_degrees);
  Serial.print(" degrees (");
  Serial.print(LM75A::degreesToFahrenheit(temperature_in_degrees));
  Serial.println(" Fahrenheit)");
}

Segmen kode ini menunjukkan cara menangani pembacaan suhu dan mencetaknya dalam Celsius dan Fahrenheit ke monitor serial. Ini mencakup penanganan kesalahan untuk pembacaan yang tidak valid.

Untuk kode lengkap, periksa bagian pemuatan di bawah artikel.

Demonstrasi / Apa yang Diharapkan

Setelah Anda menyelesaikan pengkabelan dan mengunggah kode ke Arduino, Anda akan melihat pembacaan suhu ditampilkan di monitor serial setiap detik. Anda dapat menguji responsivitas sensor dengan menyentuhnya atau menggunakan heat gun, dan Anda akan melihat pembacaan berubah sesuai. Berhati-hatilah dengan polaritas terbalik saat menghubungkan sensor, karena dapat merusak modul.

Gambar

LM75a-1
LM75a-1
LM75a-3
LM75a-3
LM75a-12
LM75a-12
Arduino_wiring_LM75A_bb
Arduino_wiring_LM75A_bb
127-Arduino code for an LM75A temperature sensor
Bahasa: C++
/*
 * \brief Show temperature in degrees Celsius and Fahrenheit every second
 *
 * \author Quentin Comte-Gaz <quentin@comte-gaz.com>
 * \date 8 July 2016
 * \license MIT License (contact me if too restrictive)
 * \copyright Copyright (c) 2016 Quentin Comte-Gaz
 * \version 1.0
 * 
 * Video instruction by Ahmad Shamshiri on July 10, 2018 at 20:29 for Robojax.com
 * in Ajax, Ontario, Canada
 * Watch the video instruction for this code: https://youtu.be/2gmkubeHUXw
For this sketch you need to connect:
VCC to 3.3V or 5V and GND to GND of the Arduino
SDA to A4 and SCL to A5

 */

#include <LM75A.h>

// Create I2C LM75A instance
LM75A lm75a_sensor(false,  //A0 LM75A pin state
                   false,  //A1 LM75A pin state
                   false); //A2 LM75A pin state
// Equivalent to "LM75A lm75a_sensor;"

void setup(void)
{
  Serial.begin(9600);
  Serial.println("Robojax LM75A Test");
  Serial.println("Temperatures will be displayed every second:");
}

void loop()
{
  // Robojax.com LM75A Test
  float temperature_in_degrees = lm75a_sensor.getTemperatureInDegrees();

  if (temperature_in_degrees == INVALID_LM75A_TEMPERATURE) {
    Serial.println("Error while getting temperature");
  } else {
    Serial.print("Temperature: ");
    Serial.print(temperature_in_degrees);
    Serial.print(" degrees (");
    Serial.print(LM75A::degreesToFahrenheit(temperature_in_degrees));
    Serial.println(" Fahrenheit)");
  }

  delay(1000);
}

Sumber daya & referensi

Belum ada sumber daya.

Berkas📁

File Fritzing

File lainnya