Hướng dẫn sử dụng cảm biến nhiệt độ TMP36 - Khoảng đo từ -40 đến 125 độ C

Mình thấy cảm biến nhiệt độ LM35 rất rẻ và hoạt động cũng tương đối chính xác. Tuy nhiên, độ bền của nó không cao vì mình thấy mình chỉ dùng cảm biến LM35 trong khoảng thời gian 3 tháng, sau đó phải thay cảm biến khác (để đo nhiệt độ luộc gà). Bản thân mình không thích điều đó nên thử dùng một cảm biến khác cũng có chức năng tương tự là TMP36 và thấy nó hoạt động bền hơn (đã đến tháng thứ 4 nhưng chưa hư). Mình xin chia sẻ với các bạn nhé. Loại này hơi khó tìm và không thông dụng, nhưng nó bền hơn hẳn LM35 các bạn nhé.

I. Chuẩn bị

II. Giới thiệu về TMP36

Cảm biến này nhìn qua thì chúng ta thấy giống như một transistor vậy. TMP36 sử dụng rất đơn giản, nếu nhìn thẳng vào mặt phẳng thì:

  • Chân số 1 là chân cấp nguồn 5V (chân này bạn có thể cắm vào nguồn 5V của Arduino khi sử dụng nó với Arduino).
  • Chân thứ 2 là chân xuất tín hiệu tương tự (tín hiệu dạng xung).
  • Chân thứ 3 là chân nối mát hay chân GND(khi sử dụng với Arduino các bạn có thể lấy từ chân Gnd từ Arduino.

Cảm biến TMP 36 này xuất tín hiệu là tín hiệu điện áp, tín hiệu này tỷ lệ thuận với nhiệt độ. Cứ 10mV tương đương với 1 độ C, nó có thể đo được nhiệt độ từ -40 ==>125 độ C (hơn hẳn so với LM35 các bạn nhé). Bởi vì nó xuất một tín hiệu tương tự nên khi làm việc với Arduino chúng ta sử dụng hàm analogRead(). Khi Arduino làm việc nó sẽ trả tín hiệu tương tự này về giá trị từ 0-1023 tùy thuộc vào điện áp từ 0-5V(5000mV). Điện áp thực tế sẽ là điện áp mà Arduino đọc được sau đó nhân với (5000/1024). Sau đó chúng ta phải trừ đi điện áp bù 400 và chia cho 10 sẽ ra kết quả là độ C. Bây giờ chúng ta cùng ráp vào mạch nhé!

III. Ráp mạch nào

IV. Lập trình

#define SENSOR_PIN A0


float voltage = 0; // Thiết lập một số giá trị ban đầu

float sensor = 0;

float celsius = 0;

float fahrenheit = 0;

void setup() {
	Serial.begin(9600);   // Bật serial monitor
}


void loop()

{              // Bắt đầu đo

	sensor = analogRead(SENSOR_PIN);
	
	voltage = (sensor*5000)/1024; // Chuyển đổi tín hiệu cảm biến sang mili Volt
	
	voltage = voltage-400;        // Trừ đi điện áp bù
	
	celsius = voltage/10;         // Chuyển đổi mV sang độ C
	
	fahrenheit = ((celsius * 1.8)+32); // Đổi độ C sang độ F
	
	Serial.print("Nhiet do: ");
	
	Serial.print(celsius,2);
	
	Serial.println(" do C");
	
	Serial.print("Nhiet do: ");
	
	Serial.print(fahrenheit,2);
	
	Serial.println(" do F");
	
	Serial.println("____");
	
	delay (1000); // delay 1s để khổi trôi dư liệu
}

V. Lời kết

Chúc các bạn thành công!

Những hình ảnh về dự án: 
Bài viết truyền cảm hứng: 
lên
10 thành viên đã đánh giá bài viết này hữu ích.
Các dự án được truyền cảm hứng

Select any filter and click on Apply to see results

Các bài viết cùng tác giả

Cách xóa Hoodloader2 cho con Atmega16u2/Atmega32u4 trên Arduino Uno / Mega của bạn

Bạn đã biết đến Hoodloader2 cho bài của bạn HACK NÃO đúng không nào? Hôm nay, mình sẽ chỉ cách xóa, vì nhiều lúc mình chỉ cần con atmega328 thôi. Mà cứ mỗi lần nạp cho nó thì phải qua bước kiểm tra con atmega16u2 thì chán quá.

lên
9 thành viên đã đánh giá bài viết này hữu ích.

Intel Edison là gì? Cùng bắt đầu với tôi nào.

Mới có cơ hội được vọc Intel Edison từ chị gái nên hôm nay mình tranh thủ viết bài review về nó để các bạn cùng có cái nhìn chung về board Intel Edison này. Tiếc là mình đang không có máy ảnh + điện thoại trong tay nên sẽ dùng ảnh trên mạng để trình bày nhé. Mình sẽ hướng dẫn các bạn bắt đầu với mạch này từ những bước đơn giản đầu tiên. Hy vọng qua bài viết này, newbie sẽ có cái nhìn toàn diện hơn với Intel Edison.

lên
15 thành viên đã đánh giá bài viết này hữu ích.