Chữ chạy

"Con đường đến với tri thức không dễ dàng, nhưng nếu chúng ta quyết đi sẽ đến được bến bờ tri thức !". Chào mừng các bạn đến với trang thông tin của Võ Hoàng Tâm - GV Khoa Điện Điện tử - Trường Đại học SPKT Vĩnh Long. Trang cung cấp thông tin - tài liệu học tập cho các bạn học viên và sinh viên. Chúc các bạn thành công trên hành trình đi tìm tri thức ...

Arduino với cảm biến nhiệt độ TMP36

Yêu cầu về phần cứng
Mạch Arduino,
Cảm biến nhiệt độ TMP36
Breadboard
Dây cắm

Sơ lược về cảm biến nhiệt độ TMP36
datasheet TMP36

Đối với những linh kiện điện tử để biết được chính xác về thông số kỹ thuật hay chế độ làm việc cũng như ứng dụng của nó, các bạn nên tìm datasheet của nó.
Sau đây chúng ta cùng làm quen với cảm biến tương tự 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.
Bởi vì nó là 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é!

Sơ đồ lắp mạch
Sơ đồ mạch
Nhìn từ mặt phẳng của cảm biến
Chân 1 nối với nguồn 5V từ Arduino
Chân 2 nối với chân A0
Chân 3 nối với mát Gnd của Arduino

Hình ảnh sử dụng Fritzing.

Code
void setup()
{
Serial.begin(9600);   // Kết nối với màn hình hiển thị
}
float voltage = 0; // Thiết lập một số giá trị ban đầu
float sensor = 0;
float celsius = 0;
float fahrenheit = 0;
void loop()
{              // Bắt đầu đo
sensor = analogRead(0);
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("Temperature: ");
Serial.print(celsius,2);
Serial.println(" degrees C");
Serial.print("Temperature: ");
Serial.print(fahrenheit,2);
Serial.println(" degrees F");
Serial.println("_ _ _ _ _ _ _ _ _ _ _ _ _ _  ");
delay (1000); // delay 1000 ms vì trong màn hình hiển thị nhiệt độ ở môi trường Arduino dữ liệu thay đổi rất nhanh nên chúng ta cần phải trì hoãn lại.
}
nguồn: internet