Cảm biến nhiệt độ TMP36 và LM35 có nhiệt độ khác nhau. (bù) trong cùng một mạch


8

Tôi đang cố gắng sử dụng hai cảm biến nhiệt độ TMP36 (từ bộ công cụ của Sparkfun Inventor) và KEYES LM35.

Trong cảm biến đọc TMP36 và tôi chuyển đổi kết quả thành Celsius bằng mã sau:

// TMP36 input sensor -> degrees Celsius calculation
TM36reading = analogRead(TM36sensor);  
TM36voltage = (TM36reading/1024.0)*5.0;
//converting from 10mv per degree with 500 mV offset
//             (TMP36 voltage - 500mV) times 100)
TM36degreesC = (TM36voltage - 0.5) * 100; 

Trong cảm biến đọc LM35 và tôi chuyển đổi kết quả thành Celsius bằng mã sau:

// LM35 input sensor -> degrees Celsius calculation
LM35reading=analogRead(LM35sensor);    // reads the LM35 output
LM35voltage = (LM35reading/1024.0)*5.0;
LM35degreesC=LM35voltage*100.0;    

Tôi cũng đã kết nối màn hình LCD để theo dõi trực quan các giá trị của hai cảm biến này. Đây là mã đầy đủ của tôi . Tôi cũng sử dụng một bản ghi nối tiếp. Dưới đây là một mẫu từ nhật ký nối tiếp này (như bạn có thể thấy có sự chênh lệch / bù giữa 0,5 đến 0,9 độ C).

TM36: 17.38, LM35: 16.60 diff -> 0.78
TM36: 16.89, LM35: 16.11 diff -> 0.78
TM36: 16.89, LM35: 16.60 diff -> 0.29
TM36: 16.89, LM35: 16.60 diff -> 0.29
TM36: 16.89, LM35: 16.60 diff -> 0.29
TM36: 17.87, LM35: 16.60 diff -> 1.27
TM36: 16.89, LM35: 16.60 diff -> 0.29
TM36: 16.89, LM35: 16.60 diff -> 0.29
TM36: 16.89, LM35: 17.09 diff -> 0.20
TM36: 17.38, LM35: 17.09 diff -> 0.29
mean difference between sensors: 0.48
TM36: 17.38, LM35: 16.11 diff -> 1.27
TM36: 16.89, LM35: 16.60 diff -> 0.29
TM36: 17.38, LM35: 16.60 diff -> 0.78
TM36: 16.41, LM35: 17.58 diff -> 1.17
TM36: 16.89, LM35: 16.60 diff -> 0.29
TM36: 17.38, LM35: 16.11 diff -> 1.27
TM36: 16.89, LM35: 16.60 diff -> 0.29
TM36: 17.38, LM35: 16.11 diff -> 1.27
TM36: 16.89, LM35: 16.60 diff -> 0.29
TM36: 16.89, LM35: 17.09 diff -> 0.20
mean difference between sensors: 0.71
TM36: 17.38, LM35: 16.60 diff -> 0.78
TM36: 16.89, LM35: 16.60 diff -> 0.29
TM36: 17.38, LM35: 16.11 diff -> 1.27
TM36: 17.38, LM35: 16.11 diff -> 1.27
TM36: 17.38, LM35: 16.11 diff -> 1.27
TM36: 17.38, LM35: 16.60 diff -> 0.78
TM36: 17.38, LM35: 16.11 diff -> 1.27
TM36: 17.38, LM35: 16.11 diff -> 1.27
TM36: 17.38, LM35: 17.09 diff -> 0.29
TM36: 16.89, LM35: 16.11 diff -> 0.78
mean difference between sensors: 0.93

Tôi cấp nguồn cho Arduino từ máy tính bằng cáp USB. Khi máy tính BẬT, chúng ta có phần bù mà tôi đã trình bày ở trên. Khi máy tính tắt (sau khi tắt máy tính), ngay lập tức cảm biến của TMP36 rơi vào khoảng 1 độ C .. Và sau đó cả hai cảm biến đều có nhiệt độ tương tự nhau. Arduino được hỗ trợ bởi USB và Máy tính BẬT so với Máy tính tắt (cảm biến nhiệt độ LM35 và TMP36)

Tại sao có sự chênh lệch nhiệt độ giữa các cảm biến TMP36 và LM35? Làm thế nào chúng ta có thể "tinh chỉnh" các cảm biến này để theo dõi nhiệt độ thực?


Không chắc chắn nếu điều này áp dụng (tôi là một người mới hoàn toàn với Arduino), nhưng liên kết này ( learn.adafbean.com/tmp36-tem Nhiệt độ-cảm biến ) có một phần ở phía dưới có tên là "Các vấn đề bạn có thể gặp phải với nhiều cảm biến". Có thể là một cái gì đó để xem xét và xem nếu nó áp dụng cho trường hợp của bạn.
PatrickSteele

Câu trả lời:


5

Các cảm biến có độ chính xác khác nhau, theo datasheets của họ. Các TMP36± 2 ° C Độ chính xác điển hình , trong khi các LM350,5 ° C độ chính xác tiêu biểu (trên 25 ° C). Đọc bảng dữ liệu một cách cẩn thận và chú ý đến các đặc điểm, cụ thể hơn là các biểu đồ lỗi chính xác cho mỗi cảm biến. Ở nhiệt độ đo được của bạn (~ 17 ° C), bạn sẽ gặp lỗi sau (đường màu đỏ không siêu chính xác, nhưng sẽ đưa ra manh mối chung):

LM35:

LM35 Đặc điểm lỗi chính xác theo biểu dữ liệu

TMP36:

Đặc điểm lỗi chính xác của TMP36 theo biểu dữ liệu

Ngoài ra, như Michal đã nêu, bạn có thể có nhiễu trong mạch của mình và bạn không kết nối TMP36 theo biểu dữ liệu gợi ý (lưu ý tụ điện giữa + V và Ground):

Ứng dụng điển hình TMP36 theo biểu dữ liệu


Cảm ơn các biểu đồ chi tiết .. Tôi sẽ cố gắng sử dụng Tụ 100nF vào ngày tới (tôi phải mua một cái trước).
ggia

Điều đó tốt, và có thể giúp một chút, miễn là bạn hiểu rằng bạn vẫn sẽ thấy sự khác biệt giữa hai cảm biến vì các đặc điểm khác nhau.
Omer

3

Có nhiều thứ, các cảm biến khác nhau đầu tiên có độ chính xác khác nhau hoặc chúng có thể chưa được hiệu chuẩn từ nhà máy. Ngoài ra, cả hai đều là đọc tương tự và tương tự dễ bị nhiễu. Tôi đoán là có một tiếng ồn tần số cao trên đường dây điện đến từ máy tính can thiệp vào bài đọc của bạn. Hãy thử đặt một tụ điện nhỏ (100nF) giữa pin ISF và GND. Bạn luôn có thể lấy giá trị trung bình của các giá trị đo được làm nhiệt độ thực tế.


Tôi đọc ở đây rằng Arduino Mega đã có một tụ điện 100nF được kết nối giữa ISF và GND. Tôi sẽ cố gắng mua 100nF vào ngày hôm sau và thử xem liệu tiếng ồn có được lọc theo cách đó không. Cảm ơn.
ggia
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.