• Arduino Đọc Cảm Biến nhiệt độ LM35 - LM335 - LM34

QC

Arduino Đọc Cảm Biến nhiệt độ LM35 - LM335 - LM34

 

KẾT NỐI PHẦN CỨNG NHƯ SAU:


LM335 with Arduino


CODE:


 
const int sensorPin = A0; 
float sensorValue;
float voltageOut;

float temperatureC;
float temperatureF;

// uncomment if using LM335
//float temperatureK;

void setup() {
  pinMode(sensorPin, INPUT);
  Serial.begin(9600);
}

void loop() {
  sensorValue = analogRead(sensorPin);
  voltageOut = (sensorValue * 5000) / 1024;
  
  // calculate temperature for LM35 (LM35DZ)
  temperatureC = voltageOut / 10;
  temperatureF = (temperatureC * 1.8) + 32;

  // calculate temperature for LM335
  //temperatureK = voltageOut / 10;
  //temperatureC = temperatureK - 273;
  //temperatureF = (temperatureC * 1.8) + 32;

  // calculate temperature for LM34
  //temperatureF = voltageOut / 10;
  //temperatureC = (temperatureF - 32.0)*(5.0/9.0);

  Serial.print("Temperature(ºC): ");
  Serial.print(temperatureC);
  Serial.print("  Temperature(ºF): ");
  Serial.print(temperatureF);
  Serial.print("  Voltage(mV): ");
  Serial.println(voltageOut);
  delay(1000);
}

How the Code Works

Bạn bắt đầu bằng cách xác định chân được kết nối với đầu ra cảm biến. Nó phải là một chân analog. Chúng tôi đang sử dụng chân A0, nhưng bạn có thể sử dụng bất kỳ chân tương tự nào khác.
const int sensorPin = A0;

Xác định một biến sẽ giữ giá trị tương tự được đọc từ cảm biến:

float sensorValue;

Biến điện áp sẽ lưu trữ giá trị điện áp đầu ra thực tế đến từ cảm biến.

float voltageOut;

Sau đó, tạo các biến sẽ lưu trữ giá trị nhiệt độ. Ở đây, chúng tôi tạo biến nhiệt độ C và nhiệt độ F để giữ nhiệt độ theo độ C và độ F.

float temperatureC; float temperatureF;


Nếu đang sử dụng cảm biến LM335, bạn cũng cần một biến để giữ nhiệt độ ở Kelvin. Vì vậy, nếu bạn đang sử dụng cảm biến đó, bạn cần bỏ ghi chú dòng sau:


//float temperatureK;

Trong setup (), khai báo sensorPin làm đầu vào:


pinMode(sensorPin, INPUT);

Khởi tạo giao tiếp nối tiếp với tốc độ truyền là 9600. Bạn cần khởi tạo giao tiếp nối tiếp để có thể hiển thị các kết quả đọc trên Serial Monitor:

Serial.begin(9600);

Trong vòng lặp (), đọc giá trị đến từ cảm biến của bạn và lưu giá trị đó trong biến điện ápOut. Để đọc một giá trị tương tự với Arduino, bạn chỉ cần sử dụng hàm analogRead () và chuyển chân bạn muốn đọc làm đối số.

voltageOut = analogRead(sensorPin);

Như đã đề cập trước đây, các cảm biến này xuất ra một giá trị điện áp tỷ lệ với nhiệt độ.

Các giá trị tương tự được đọc từ Arduino có thể có giá trị từ 0 đến 1024, trong đó 0 tương ứng với 0V và 1024 đến 5V. Vì vậy, chúng ta có thể dễ dàng nhận được điện áp đầu ra của cảm biến tính bằng mV.

voltageOut = (sensorValue * 5000) / 1024

Trong trường hợp của cảm biến LM35, chúng tôi đã thấy rằng 10mV tương ứng với nhiệt độ tăng độ C. Vì vậy, nhiệt độ tính bằng độ C tương ứng với điện áp đọc được từ cảm biến tính bằng mV chia cho 10mV.

temperatureC = voltageOut / 10;

Để có được nhiệt độ theo độ F, chúng ta chỉ cần sử dụng chuyển đổi độ C -> độ F:


temperatureF = (temperatureC * 1.8) + 32;

Nếu bạn đang sử dụng LM335 hoặc LM34, bạn sử dụng các phép tính tương tự để tính nhiệt độ. Bạn chỉ cần lưu ý rằng LM335 trả lại nhiệt độ bằng độ Kelvin và LM34 bằng độ F. Sau đó, bạn có thể chuyển đổi các giá trị sang các đơn vị khác nếu cần.

Cuối cùng, in kết quả đọc của cảm biến lên Serial Monitor theo cả độ C và độ F.

Serial.print("Temperature(ºC): "); Serial.print(temperatureC); Serial.print(" Temperature(ºF): "); Serial.print(temperatureF);

Đối với mục đích gỡ lỗi, chúng tôi cũng in điện áp.

Serial.print("  Voltage(mV): ");
Serial.println(voltageOut);



Nap Code vào PY32F003 dùng Stlink

 Nap Code vào PY32F003 dùng Stlink Bước 1: Cài đặt  KeilC v5.39 theo link sau ( chú ý 5.39 keil c mới nạp ok). https://edge07.111.ir.cdn.ir/...