- Các thành phần bắt buộc
- MAX30205 với Arduino - Sơ đồ mạch
- Giao diện Arduino với cảm biến nhiệt độ cơ thể MAX30205
- Lập trình MAX30205 với Arduino
- Máy đo nhiệt độ cơ thể Arduino - Thử nghiệm
Đối với các ứng dụng y tế hoặc lâm sàng, đo nhiệt độ cơ thể con người là một thông số quan trọng để xác định tình trạng sức khỏe của bất kỳ cá nhân nào. Tuy nhiên, có rất nhiều cách để cảm nhận nhiệt độ nhưng không phải mọi thứ đều có độ chính xác để đáp ứng các thông số kỹ thuật đo nhiệt độ lâm sàng. Cảm biến nhiệt độ MAX30205 được thiết kế đặc biệt cho ứng dụng này. Lưu ý rằng cảm biến này không phải là cảm biến nhiệt độ không tiếp xúc, nếu bạn đang tìm kiếm một phép đo nhiệt độ hồng ngoại không tiếp xúc, hãy xem Nhiệt kế MLX90614 mà chúng tôi đã thiết kế trước đó.
Trong dự án này, chúng tôi sẽ giao diện một cảm biến nhiệt độ cơ thể người MAX30205 có thể dễ dàng giao tiếp với một dây tập thể dục hoặc có thể được sử dụng cho mục đích y tế. Chúng tôi sẽ sử dụng Arduino Nano làm bộ điều khiển vi mô chính và cũng sử dụng màn hình 7-Segment để hiển thị nhiệt độ cảm nhận được ở độ Fahrenheit. Khi bạn biết cách sử dụng cảm biến, bạn có thể sử dụng nó bất kỳ ứng dụng nào mà bạn yêu thích, bạn cũng có thể xem dự án Đồng hồ thông minh Arduino này, dự án kết hợp với MAX30205 có thể được sử dụng để theo dõi nhiệt độ của từng cá nhân.
Các thành phần bắt buộc
- Arduino NANO
- 7-Seg hiển thị cực âm chung - 3 cái
- 74HC595 - 3 chiếc
- Điện trở 680R - 24 chiếc
- Bảng mô-đun MAX30205
- Nguồn điện 5V
- Breadboard
- Rất nhiều dây nối
- Arduino IDE
- Cáp micro-USB
MAX30205 với Arduino - Sơ đồ mạch
Sơ đồ mạch hoàn chỉnh để kết nối Arduino với cảm biến nhiệt độ cơ thể MAX30205 được hiển thị bên dưới. Mạch rất đơn giản, nhưng vì chúng ta đã sử dụng các màn hình 7 đoạn nên có vẻ hơi phức tạp. Hiển thị 7 phân đoạn với Arduino là một cách tuyệt vời để hiển thị giá trị của bạn lớn và sáng với chi phí rất thấp. Nhưng bạn cũng có thể hiển thị các giá trị này trên màn hình OLED hoặc LCD nếu muốn.
Arduino Nano được kết nối với ba 74HC595. Ba 74HC595 được xếp tầng với nhau để tiết kiệm các chân đầu ra bổ sung từ Arduino Nano để kết nối ba màn hình 7-Seg. Trước đây chúng tôi đã sử dụng 74HC595 với Arduino trong nhiều dự án khác như Đồng hồ Arduino, Màn hình bảng LED, trò chơi con rắn Arduino, v.v.
Bo mạch mô-đun MAX30205 yêu cầu thêm điện trở kéo lên vì nó giao tiếp với giao thức I2C. Tuy nhiên, một số bo mạch mô-đun không yêu cầu kéo lên bổ sung vì các điện trở kéo lên đã được cung cấp bên trong mô-đun. Do đó, người ta cần xác nhận xem bo mạch mô-đun có điện trở kéo lên bên trong hay nó yêu cầu thêm điện trở kéo bên ngoài. Bảng được sử dụng trong dự án này đã có sẵn các điện trở kéo lên bên trong bảng mô-đun.
Giao diện Arduino với cảm biến nhiệt độ cơ thể MAX30205
Cảm biến được sử dụng ở đây là MAX30205 tích hợp tối đa. Cảm biến nhiệt độ MAX30205 đo chính xác nhiệt độ với Độ chính xác 0,1 ° C (37 ° C đến 39 ° C). Cảm biến hoạt động với giao thức I2C.
Bo mạch mô-đun có thể hoạt động với 5 hoặc 3.3V. Tuy nhiên, bo mạch được cấu hình để sử dụng với điện áp hoạt động 5V. Nó cũng bao gồm một bộ dịch chuyển mức logic, vì bản thân cảm biến hỗ trợ tối đa 3,3V cho các mục đích liên quan đến nguồn hoặc giao tiếp dữ liệu.
Trên đầu ra, ba thanh ghi dịch chuyển 74HC595, 8-bit được sử dụng để giao tiếp ba màn hình 7-Segment với Arduino NANO. Sơ đồ chân có thể được hiển thị trong hình ảnh dưới đây-
Mô tả chân của 74HC595 có thể được nhìn thấy trong bảng dưới đây-
QA đến QH là các chân đầu ra dữ liệu được kết nối với màn hình 7-Seg. Vì ba 74HC595 được xếp tầng với nhau, chân đầu vào Dữ liệu (PIN14) của thanh ghi ca đầu tiên sẽ được kết nối với Arduino NANO và chân xuất dữ liệu nối tiếp sẽ cung cấp dữ liệu cho thanh ghi ca tiếp theo. Kết nối dữ liệu nối tiếp này sẽ được tiếp tục cho đến 74HC595 thứ ba.
Lập trình MAX30205 với Arduino
Chương trình hoàn chỉnh cho hướng dẫn này có thể được tìm thấy ở cuối trang này. Giải thích về mã này như sau. Đầu tiên, chúng tôi bao gồm tệp tiêu đề thư viện Arduino I2C tiêu chuẩn.
#include
Dòng trên sẽ bao gồm thư viện đóng góp Arduino từ trung tâm. Thư viện này có các chức năng quan trọng để giao tiếp với cảm biến MAX30205. Thư viện được lấy từ liên kết GitHub bên dưới-
https://github.com/protocentral/ProtoCentral_MAX30205
Sau khi nhập thư viện, chúng tôi xác định dữ liệu đối tượng MAX30205 như hình dưới đây-
#include "Protocentral_MAX30205.h" MAX30205 tempSensor;
Hai dòng tiếp theo là quan trọng để thiết lập các tham số. Dòng dưới đây sẽ cung cấp nhiệt độ theo độ F nếu được đặt đúng. Để hiển thị kết quả bằng độ C, dòng này cần được đặt sai.
const bool fahrenheittemp = true; // Tôi đang hiển thị nhiệt độ bằng Fahrenheit, Nếu bạn muốn hiển thị nhiệt độ bằng độ C, hãy làm cho biến này sai.
Dòng dưới đây cần được cấu hình nếu màn hình 7 đoạn loại cathode phổ biến đang được sử dụng trong phần cứng. Biến nó thành sai nếu sử dụng cực dương thông thường.
const bool commonCathode = true; // Tôi đang sử dụng Cathode 7segment chung nếu bạn sử dụng Anode chung thì thay đổi giá trị thành false. const byte digit_pattern = {// 74HC595 Kết nối Outpin với hiển thị 7 đoạn. // Q0 Q1 Q2 Q3 Q4 Q5 Q6 Q7 // abcdefg DP 0b11111100, // 0 0b01100000, // 1 0b11011010, // 2 0b11110010, // 3 0b01100110, // 4 0b10110110, // 5 0b10111110, // 6 0b11100000, // 7 0b11111110, // 8 0b11110110, // 9 0b11101110, // A 0b00111110, // b 0b00011010, // C 0b01111010, // d 0b10011110, // E 0b10001110, // F 0b00000001 //. }
Mảng trên được sử dụng để lưu mẫu chữ số cho màn hình 7-Segment.
Trong chức năng cài đặt, sau khi cài đặt chế độ chân của các chân 74HC595, giao thức I2C và đọc cảm biến nhiệt độ được khởi tạo.
void setup () {// đặt mã thiết lập của bạn ở đây, để chạy một lần: // đặt cổng nối tiếp ở 9600 Serial.begin (9600); chậm trễ (1000); // đặt chân Điều khiển 74HC595 làm pinMode đầu ra (latchPin, OUTPUT); // ST_CP của 74HC595 pinMode (clkPin, OUTPUT); // SH_CP của 74HC595 pinMode (dtPin, OUTPUT); // DS của 74HC595 // khởi tạo I2C Libs Wire.begin (); // bắt đầu đọc nhiệt độ MAX30205 ở chế độ liên tục, chế độ hoạt động tempSensor.begin (); }
Trong vòng lặp, nhiệt độ đang được đọc bởi hàm tempSensor.getTempe Heat () và được lưu trữ trong một biến float có tên là temp . Sau đó, nếu chế độ nhiệt độ F được chọn, dữ liệu sẽ được chuyển đổi từ độ C sang độ F. Sau đó, ba chữ số từ dữ liệu nhiệt độ cảm biến đã chuyển đổi được tiếp tục tách thành ba chữ số riêng lẻ. Để làm điều này, các dòng mã dưới đây được sử dụng-
// tách 3 chữ số từ nhiệt độ hiện tại (như if temp = 31.23c,) int dispDigit1 = (int) temp / 10; // chữ số1 3 int dispDigit2 = (int) temp% 10; // digit2 1 int dispDigit3 = (temp * 10) - ((int) temp * 10); // chữ số 3 2
Bây giờ, ba chữ số tách biệt được gửi đến màn hình 7 đoạn bằng cách sử dụng các thanh ghi dịch chuyển 74HC595. Kể từ khi LSB lần đầu tiên xuất hiện trên màn hình 7 đoạn thứ ba thông qua 74HC595 thứ ba, chữ số thứ 3 được truyền đi đầu tiên. Để làm điều này, chân đã chốt được kéo xuống thấp và dữ liệu được gửi đến 74HC595 bởi hàm shiftOut ();
Theo cách tương tự, các chữ số thứ hai và đầu tiên còn lại cũng được gửi đến 74HC595 tương ứng, do đó vẫn còn lại hai màn hình 7 đoạn. Sau khi gửi tất cả dữ liệu, chốt chốt được giải phóng và kéo lên cao để xác nhận kết thúc quá trình truyền dữ liệu. Các mã tương ứng có thể được nhìn thấy bên dưới -
// hiển thị chữ số thành 3, 7 hiển thị đoạn. digitalWrite (latchPin, LOW); if (commonCathode == true) {shiftOut (dtPin, clkPin, LSBFIRST, digit_pattern); shiftOut (dtPin, clkPin, LSBFIRST, digit_pattern-digit_pattern); // 1. (Digit + DP) shiftOut (dtPin, clkPin, LSBFIRST, digit_pattern); } else {shiftOut (dtPin, clkPin, LSBFIRST, ~ (digit_pattern)); shiftOut (dtPin, clkPin, LSBFIRST, ~ (digit_pattern-digit_pattern)); // 1. (Digit + DP) shiftOut (dtPin, clkPin, LSBFIRST, ~ (digit_pattern)); } digitalWrite (latchPin, HIGH);
Máy đo nhiệt độ cơ thể Arduino - Thử nghiệm
Mạch được xây dựng trong hai bộ breadboard như bạn có thể thấy bên dưới. Khi chúng ta đặt ngón tay lên cảm biến, nhiệt độ sẽ được cảm nhận và đầu ra được hiển thị thành màn hình 7 đoạn, ở đây giá trị là 92,1 * F.
Hoạt động hoàn chỉnh của dự án có thể được tìm thấy trong video được liên kết bên dưới. Hy vọng bạn thích xây dựng dự án và học được điều gì đó hữu ích. Nếu bạn có bất kỳ câu hỏi nào, hãy để lại chúng trong phần bình luận bên dưới hoặc sử dụng diễn đàn của chúng tôi.