Mã Arduino cho cảm biến nhiệt độ LM75A
Trong hướng dẫn này, chúng ta sẽ học cách sử dụng cảm biến nhiệt độ LM75A với Arduino để đo nhiệt độ theo cả độ C và độ F. Cảm biến LM75A giao tiếp qua giao thức I2C, giúp dễ dàng tích hợp với các bo mạch Arduino. Đến cuối hướng dẫn này, bạn sẽ có một thiết lập hoạt động hiển thị số đo nhiệt độ mỗi giây.

Để tận dụng tối đa hướng dẫn này, tôi khuyên bạn nên xem video liên quan, video này cung cấp hướng dẫn trực quan về cách thiết lập và triển khai mã (trong video ở phút 20:29).
Giải thích về Phần cứng
Cảm biến nhiệt độ LM75A là một cảm biến kỹ thuật số có khả năng đo nhiệt độ môi trường xung quanh với độ chính xác cao. Nó hoạt động trên giao thức truyền thông I2C, cho phép kết nối nhiều cảm biến với cùng một bus. Cảm biến có chức năng tắt khi quá nhiệt, có thể giúp tiết kiệm điện năng khi không sử dụng.
Cảm biến này thường có sẵn dưới dạng chip độc lập hoặc mô-đun PCB. Mô-đun bao gồm các chân thiết yếu như VCC, GND, SDA và SCL, cần thiết để giao tiếp với Arduino. Khi sử dụng cảm biến này, điều quan trọng là phải đảm bảo kết nối đúng và chọn địa chỉ I2C chính xác để giao tiếp.
Chi tiết Bảng dữ liệu
| Nhà sản xuất | NXP / Texas Instruments |
|---|---|
| Số bộ phận | LM75A |
| Điện áp Logic/IO | 2,7 V đến 5,5 V |
| Điện áp cấp nguồn | 2,7 V đến 5,5 V |
| Dòng điện đầu ra (mỗi kênh) | 3 mA |
| Dòng điện đỉnh (mỗi kênh) | 10 mA |
| Hướng dẫn tần số PWM | Không áp dụng |
| Ngưỡng logic đầu vào | 0,3 VCC (cao), 0,2 VCC (thấp) |
| Sụt áp / RDS(on) / bão hòa | 0,5 V tối đa |
| Giới hạn nhiệt | -55 °C đến +125 °C |
| Đóng gói | SOIC-8 / TSSOP |
| Ghi chú / biến thể | Có sẵn ở các địa chỉ I2C khác nhau |
- Đảm bảo địa chỉ I2C chính xác được đặt trong mã của bạn.
- Sử dụng điện trở kéo lên trên các đường SDA và SCL nếu cần.
- Cấp nguồn cho cảm biến bằng điện áp ổn định (2,7 V đến 5,5 V).
- Theo dõi tình trạng quá nhiệt; cảm biến có thể hoạt động lên đến 125 °C.
- Xử lý cảm biến nhẹ nhàng để tránh hư hỏng trong quá trình lắp đặt.
Hướng dẫn Đấu dây

Để đấu dây cảm biến nhiệt độ LM75A với Arduino của bạn, hãy bắt đầu bằng cách kết nối chân nối đất của cảm biến với chân nối đất của Arduino. Tiếp theo, kết nối chân VCC của cảm biến với chân 5V trên Arduino. Đối với giao tiếp I2C, kết nối chân SDA của cảm biến (thường được đánh dấu màu xanh lá cây) với chân A4 trên Arduino và chân SCL (thường được đánh dấu màu xanh dương) với chân A5. Nếu bạn đang sử dụng một mẫu Arduino khác, hãy đảm bảo bạn kết nối đúng các chân I2C; ví dụ: trên Arduino Mega, SDA kết nối với chân 20 và SCL với chân 21.
Nếu bạn đang sử dụng LM75A như một chip trần thay vì mô-đun, hãy đảm bảo kết nối các chân tương ứng một cách chính xác: chân thứ 1 kết nối với A4 (SDA), chân thứ 2 kết nối với A5 (SCL), chân thứ 4 kết nối với nối đất và chân thứ 8 kết nối với VCC. Để các chân khác không kết nối. Thiết lập này đảm bảo cảm biến có thể giao tiếp đúng cách với Arduino.
Ví dụ Mã & Giải thích
Mã sau đây khởi tạo cảm biến LM75A và đọc nhiệt độ mỗi giây. Định danh chính trong mã này là lm75a_sensor, một thể hiện của lớp LM75A. Thể hiện này được sử dụng để lấy số đo nhiệt độ từ cảm biến.
LM75A lm75a_sensor(false, false, false);
Dòng này tạo một thể hiện của lớp LM75A, truyền các tham số đại diện cho trạng thái của các chân A0, A1 và A2. Trạng thái mặc định có thể được đặt thành false nếu các chân này không được sử dụng.
Trong hàm setup(), chúng ta khởi tạo giao tiếp nối tiếp ở tốc độ baud 9600, điều này rất quan trọng để hiển thị số đo nhiệt độ trên màn hình nối tiếp.
void setup(void) {
Serial.begin(9600);
Serial.println("Robojax LM75A Test");
}
Đoạn mã này thiết lập màn hình nối tiếp, cho phép chúng ta xem số đo nhiệt độ khi chúng được in mỗi giây.
Trong hàm loop(), chúng ta lấy nhiệt độ theo độ C và kiểm tra mọi lỗi. Nếu nhiệt độ hợp lệ, chúng ta in nó cùng với giá trị tương đương theo độ F.
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)");
}
Đoạn mã này minh họa cách xử lý số đo nhiệt độ và in nó theo cả độ C và độ F ra màn hình nối tiếp. Nó bao gồm xử lý lỗi cho các số đo không hợp lệ.
Để có mã hoàn chỉnh, hãy xem phần tải xuống bên dưới bài viết.
Trình diễn / Điều mong đợi
Sau khi bạn hoàn tất việc đấu dây và tải mã lên Arduino, bạn sẽ thấy số đo nhiệt độ được hiển thị trên màn hình nối tiếp mỗi giây. Bạn có thể kiểm tra khả năng phản hồi của cảm biến bằng cách chạm vào nó hoặc sử dụng súng nhiệt và bạn sẽ quan sát thấy số đo thay đổi tương ứng. Hãy cẩn thận với việc đảo cực khi kết nối cảm biến vì điều đó có thể làm hỏng mô-đun.
/*
* \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);
}
Tài nguyên & tài liệu tham khảo
Chưa có tài nguyên nào.
Tập tin📁
Tập tin Fritzing
-
LM75 Temperature Sensor
Temperature Sensor - LM75.fzpz0.01 MB
Các tập tin khác
-
LM75A datasheet from Philips
robojax-LM75A_temperature_senssor_datasheet_philips.pdf0.13 MB