I. Tổng Quan Đo Nhiệt Độ Bằng PIC16F877A Cảm Biến Bán Dẫn
Nhiệt độ là một đại lượng vật lý quan trọng, ảnh hưởng đến nhiều tính chất của vật chất. Việc đo lường nhiệt độ chính xác và hiệu quả đóng vai trò then chốt trong nhiều ứng dụng công nghiệp và dân dụng. Bài viết này trình bày phương pháp thiết kế hệ thống đo nhiệt độ sử dụng vi điều khiển PIC16F877A kết hợp với cảm biến bán dẫn. Hệ thống này hứa hẹn mang lại giải pháp đo nhiệt độ tiện lợi, chính xác và tiết kiệm chi phí. Cảm biến nhiệt độ đóng vai trò then chốt trong các hệ thống tự động, và việc lựa chọn cảm biến phù hợp là yếu tố quan trọng. Các loại cảm biến nhiệt độ phổ biến bao gồm nhiệt điện trở, nhiệt ngẫu, và cảm biến bán dẫn. Mỗi loại có nguyên lý hoạt động và đặc tính riêng, phù hợp với từng ứng dụng cụ thể. Hệ thống này sử dụng vi điều khiển PIC16F877A, một vi điều khiển phổ biến với nhiều tính năng mạnh mẽ, bao gồm bộ chuyển đổi ADC tích hợp. Bộ chuyển đổi này cho phép vi điều khiển thu thập và xử lý tín hiệu analog từ cảm biến nhiệt độ. Sau khi xử lý, nhiệt độ được hiển thị trên màn hình LCD, cung cấp thông tin trực quan cho người dùng. Mục tiêu của hệ thống là tạo ra một thiết bị đo nhiệt độ chính xác, dễ sử dụng và có khả năng ứng dụng rộng rãi trong các lĩnh vực khác nhau. Tác giả sử dụng cảm biến LM35 để thiết kế và mô phỏng. Những thông số quan trọng của LM35 như sau: Điện áp hoạt động: 4~20VDC, Công suất tiêu thụ: khoảng 60uA, Khoảng đo: -55°C đến 150°C, Điện áp tuyến tính theo nhiệt độ: 10mV/°C, Sai số: 0.25°C, Kiểu chân: TO92 và kích thước: 4.3mm. Tín hiệu ra của LM35 là điện áp thay đổi liên tục theo nhiệt độ. Vì vậy, khi thiết kế đo nhiệt độ cần sử dụng bộ biến đổi tương tự - số (ADC) của vi điều khiển để biến đổi tín hiệu liên tục nhận được thành tín hiệu số (Vi điều khiển chỉ xử lý với tín hiệu số). Do đó, trong thiết kế cần sử dụng các chân của cổng A hoặc cổng E làm lối vào của bộ biến đổi ADC.
Từ khóa quan trọng: PIC16F877A, Cảm biến bán dẫn, đo nhiệt độ, ADC, LM35.
1.1. Lựa Chọn Cảm Biến Nhiệt Độ Tiêu Chí và Phân Loại
Việc lựa chọn cảm biến nhiệt độ phù hợp là bước quan trọng đầu tiên trong quá trình thiết kế. Các tiêu chí cần xem xét bao gồm dải đo nhiệt độ, độ chính xác, độ nhạy, và thời gian đáp ứng. Bên cạnh đó, yếu tố giá thành và khả năng tương thích với vi điều khiển cũng cần được cân nhắc. Cảm biến nhiệt độ có thể được phân loại dựa trên nguyên lý hoạt động, bao gồm cảm biến điện trở (RTD, thermistor), cặp nhiệt điện (thermocouple), và cảm biến bán dẫn (IC). Cảm biến bán dẫn, như LM35, thường được ưu tiên trong các ứng dụng yêu cầu độ chính xác cao và dễ dàng giao tiếp với vi điều khiển thông qua bộ chuyển đổi ADC tích hợp. Ngoài ra, nhiệt điện trở cũng được ứng dụng rộng rãi. Điện trở của kim loại biến đổi theo nhiệt độ. Thể hiện qua α (hệ số nhiệt điện trở). Cảm biến nhiệt điện trở silic (bán dẫn) Các vật liệu bán dẫn rất nhạy cảm với nhiệt độ. Do đó người ta dùng vật liệu bán dẫn để chế tạo cảm biến đo nhiệt độ. Silic tinh khiết có hệ số nhiệt điện trở α < 0, nhưng khi được tác động ở một dải nhiệt độ nào đó thì α > 0 θ < 2000C thì α > 0 θ > 2000C thì α < 0
1.2. Ưu Điểm của PIC16F877A trong Đo Nhiệt Độ
PIC16F877A là một vi điều khiển 8-bit phổ biến, được trang bị nhiều tính năng hữu ích cho các ứng dụng đo nhiệt độ. Bộ chuyển đổi ADC 10-bit tích hợp cho phép vi điều khiển thu thập tín hiệu analog từ cảm biến nhiệt độ với độ phân giải cao. Bên cạnh đó, PIC16F877A còn có bộ nhớ flash lớn, nhiều cổng I/O, và các giao thức giao tiếp nối tiếp (UART, SPI, I2C), tạo điều kiện thuận lợi cho việc kết nối với các thiết bị ngoại vi như màn hình LCD và các cảm biến khác. Vi điều khiển thuộc họ PIC16Fxxx với tập lệnh gồm 35 lệnh có độ dài 14 bít. Mỗi lệnh đều được thực thi trong một chu kì xung clock. Tốc độ hoạt động tối đa cho phép là 20 MHz với một chu kì lệnh là 200ns. Bộ nhớ chương trình 8Kx14 bit, bộ nhớ dữ liệu 368x8 byte RAM và bộ nhớ dữ liệu EEPROM với dung lượng 256x8 byte. Số PORT I/O là 5 với 33pin I/O. Các đặc tính ngoại vi bao gồm các khối chức năng sau: + Timer0: bộ đếm 8 bit với bộ chia tần số 8 bit. + Timer1: bộ đếm 16 bit với bộ chia tần số, có thể thực hiện chức năng đếm dựa vào xung clock ngoại vi ngay khi vi điều khiển hoạt động ở chế độ sleep. + Timer2: bộ đếm 8 bit với bộ chia tần số, bộ postcaler. Hai bộ Capture/so sánh/điều chế độ rông xung. Các chuẩn giao tiếp nối tiếp SSP (Synchronous Serial Port), SPI và I2C. Chuẩn giao tiếp nối tiếp USART với 9 bit địa chỉ. Cổng giao tiếp song song PSP (Parallel Slave Port) với các chân điều khiển RD, WR,CS ở bên ngoài. Các đặc tính Analog: + 8 kênh chuyển đổi ADC 10 bit. + Hai bộ so sánh.
II. Thách Thức Giảm Nhiễu Tăng Độ Chính Xác Đo Nhiệt Độ
Trong quá trình đo nhiệt độ, nhiễu và sai số là những thách thức không thể tránh khỏi. Nhiễu có thể xuất phát từ nhiều nguồn khác nhau, bao gồm nhiễu điện từ (EMI), nhiễu nhiệt, và nhiễu do nguồn điện không ổn định. Sai số có thể do độ chính xác của cảm biến, sai số trong quá trình chuyển đổi ADC, và sai số do hiệu chuẩn không chính xác. Để giảm thiểu ảnh hưởng của nhiễu và sai số, cần áp dụng các kỹ thuật lọc nhiễu, hiệu chuẩn cảm biến, và sử dụng các linh kiện chất lượng cao. Vi điều khiển PIC 16F877A có bộ chuyển đổi tín hiệu tương tự sang tín hiệu số ADC 10 bit đa hợp 8 kênh và PIC 16F887 có 14 kênh. Mạch ADC dùng cho các ứng dụng giao tiếp với tín hiệu tương tự có thể nhận từ các cảm biến như cảm biến nhiệt độ LM35, cảm biến áp suất, cảm biến độ ẩm, cảm biến khoảng cách,... Phần này sẽ khảo sát chi tiết khối ADC của PIC, các thanh ghi của khối ADC, trình tự thực hiện chuyển đổi, tập lệnh lập trình C cho ADC và ứng dụng ADC để đo nhiệt độ.
2.1. Kỹ Thuật Lọc Nhiễu Trong Mạch Đo Nhiệt Độ
Lọc nhiễu là một bước quan trọng để đảm bảo độ chính xác của phép đo nhiệt độ. Các kỹ thuật lọc nhiễu phổ biến bao gồm sử dụng tụ lọc, cuộn cảm lọc nhiễu, và bộ lọc số. Tụ lọc được sử dụng để loại bỏ nhiễu tần số cao, trong khi cuộn cảm lọc nhiễu có tác dụng loại bỏ nhiễu tần số thấp. Bộ lọc số, được thực hiện bằng phần mềm, có thể được sử dụng để loại bỏ các thành phần nhiễu cụ thể trong tín hiệu. Sử dụng mạch lọc RC, mạch lọc LC hoặc các thuật toán lọc trung bình, lọc Kalman là những giải pháp phần mềm hiệu quả. Cần phân tích và xác định nguồn gốc và đặc điểm của nhiễu để lựa chọn kỹ thuật lọc nhiễu phù hợp.
2.2. Hiệu Chuẩn Cảm Biến Tăng Độ Chính Xác Đo
Hiệu chuẩn cảm biến là quá trình xác định mối quan hệ giữa tín hiệu đầu ra của cảm biến và giá trị thực tế của đại lượng cần đo. Quá trình này giúp giảm thiểu sai số do độ chính xác của cảm biến và sai số trong quá trình chuyển đổi ADC. Hiệu chuẩn cảm biến có thể được thực hiện bằng cách sử dụng các điểm chuẩn (reference points) với nhiệt độ đã biết và so sánh tín hiệu đầu ra của cảm biến với giá trị chuẩn. Dựa trên kết quả so sánh, có thể điều chỉnh các tham số trong phần mềm để bù sai số. Sử dụng phương pháp hiệu chuẩn đa điểm, hiệu chuẩn tuyến tính để đạt được độ chính xác cao nhất.
III. Thiết Kế Mạch PIC16F877A và Cảm Biến LM35 LM335
Thiết kế mạch điện là bước quan trọng để kết nối vi điều khiển PIC16F877A với cảm biến nhiệt độ LM35 (LM335). Mạch điện cần đảm bảo cung cấp nguồn điện ổn định cho cả hai thiết bị, đồng thời tạo ra đường truyền tín hiệu analog từ cảm biến đến bộ chuyển đổi ADC của vi điều khiển. Các thành phần quan trọng trong mạch bao gồm điện trở, tụ điện, và bộ điều chỉnh điện áp.Vi điều khiển PIC16F877A có 4 chân cấp nguồn trong đó chân 11, 32 nối nguồn +5V, chân 12, 31 nối đất. Sau khi cấp nguồn ta cần cung cấp tiếp xung clock cho hoạt động của vi điều khiển. Ở đây ta sẽ dùng thạch anh làm nguồn xung để cấp cho PIC qua chân 13,14 của PIC. Tuy nhiên như ta đã biết, các xung dao động do thạch anh tạo ra cũng không thực sự ổn định một cách tuyệt đối, và cách khắc phục là gắn thêm các tụ lọc vào thạch anh. Thạch anh sử dụng ở đây là 12 MHz vì vậy giá trị tụ lọc tương ứng phù hợp với nó là 33pF. Vậy ta sẽ mắc được sơ đồ mạch nguyên lý của khối này như sau: Chân số 1 MCLR được đấu nối thêm như trên đóng vai trò reset PIC, làm việc ở sườn xuống (mức 1 về 0). Khi SW1 mở điện áp vào chân số 1 là +5V (mức 1) PIC không được reset, khi SW1 đóng, mạch kín, chân số 1 nối đất, điện áp vào sẽ là 0V (mức 0) là mức kích hoạt, hoạt động của PIC được reset lại. Cảm biến LM335 (LM35) cho ta tín hiệu tương tự. Do đó,, để có thể két nối với Vi điều khiển chúng ta thiết kế giao tiếp cảm biến và PIC 16F877A qua một đường có khả năng biến đổi ADC. Trong thiết kế này em chọn chân A0 để làm lối vào cho cảm biến đo nhiệt độ.
3.1. Kết Nối Cảm Biến LM35 LM335 Với PIC16F877A
Cảm biến LM35 (LM335) tạo ra tín hiệu điện áp tỷ lệ với nhiệt độ. Tín hiệu này cần được kết nối với một trong các chân analog của vi điều khiển PIC16F877A. Điện áp đầu ra của LM35 (LM335) thường rất nhỏ, do đó cần sử dụng mạch khuếch đại để tăng cường tín hiệu trước khi đưa vào bộ chuyển đổi ADC. Mạch khuếch đại có thể được xây dựng bằng cách sử dụng op-amp và các điện trở. Các chân nguồn (VCC và GND) của LM35 (LM335) cần được kết nối với nguồn điện ổn định. Đảm bảo chọn điện trở phù hợp để đạt được điện áp đầu ra tối ưu.
3.2. Sơ Đồ Mạch Nguyên Lý Mạch In Chi Tiết
Sơ đồ mạch nguyên lý (schematic diagram) thể hiện mối quan hệ giữa các thành phần điện tử trong mạch, bao gồm vi điều khiển PIC16F877A, cảm biến LM35 (LM335), và các linh kiện khác. Mạch in (PCB layout) là bản vẽ chi tiết về cách bố trí các linh kiện trên bảng mạch và cách kết nối chúng bằng các đường mạch dẫn điện. Cả sơ đồ mạch nguyên lý và mạch in cần được thiết kế cẩn thận để đảm bảo mạch hoạt động ổn định và hiệu quả. Sử dụng các phần mềm thiết kế mạch chuyên dụng (ví dụ: Altium Designer, Eagle) để tạo ra sơ đồ và mạch in chất lượng cao. Kiểm tra kỹ lưỡng trước khi sản xuất mạch in.
IV. Lập Trình Chuyển Đổi ADC và Hiển Thị Nhiệt Độ LCD
Phần mềm đóng vai trò quan trọng trong việc điều khiển vi điều khiển PIC16F877A và xử lý tín hiệu từ cảm biến nhiệt độ. Chương trình cần thực hiện các tác vụ sau: khởi tạo bộ chuyển đổi ADC, đọc giá trị ADC, chuyển đổi giá trị ADC sang nhiệt độ, và hiển thị nhiệt độ lên màn hình LCD. Ngôn ngữ lập trình C thường được sử dụng để lập trình cho vi điều khiển PIC16F877A.Sự ra đời của một loại vi điều khiển đi kèm với việc phát triển phần mềm ứng dụng cho việc lập trình cho con vi điều khiển đó. Vi điều khiển chỉ hiểu và làm việc với hai con số 0 và 1. Ban đầu để việc lập trình cho VĐK là làm việc với dãy các con số 0 và 1. Sau này khi kiến trúc của Vi điều khiển ngày càng phức tạp, số lượng thanh ghi lệnh nhiều lên, việc lập trình với dãy các số 0 và 1 không còn phù hợp nữa, đòi hỏi ra đời một ngôn ngữ mới thay thế. Và ngôn ngữ lập trình Assembly. Ở đây ta không nói nhiều đến Assmebly. Sau này khi ngôn ngữ C ra đời, nhu cầu dùng ngôn ngữ C đề thay cho ASM trong việc mô tả các lệnh lập trình cho Vi điều khiển một cách ngắn gọn và dễ hiểu hơn đã dẫn đến sự ra đời của nhiều chương trình soạn thảo và biên dịch C cho Vi điều khiển : Keil C, HT‐PIC, MikroC, CCS…Em chọn CCS vì CCS là một công cụ lập trình C mạnh cho Vi điều khiển PIC. CCS là trình biên dịch lập trình ngôn ngữ C cho Vi điều khiển PIC của hãng Microchip. Chương trình là sự tích hợp của 3 trình biên dich riêng biết cho 3 dòng PIC khác nhau đó là: ‐ PCB cho dòng PIC 12‐bit opcodes ‐ PCM cho dòng PIC 14‐bit opcodes ‐ PCH cho dòng PIC 16 và 18‐bit. Tất cả 3 trình biên dich này đuợc tích hợp lại vào trong một chương trình bao gồm cả trình soạn thảo và biên dịch là CCS.
4.1. Khởi Tạo ADC và Đọc Giá Trị Từ Cảm Biến
Để sử dụng bộ chuyển đổi ADC của PIC16F877A, cần khởi tạo các thanh ghi điều khiển ADC để cấu hình các thông số như nguồn xung clock, điện áp tham chiếu, và chế độ hoạt động. Sau khi khởi tạo, chương trình có thể bắt đầu quá trình chuyển đổi ADC và đọc giá trị số tương ứng với điện áp đầu ra của cảm biến. Giá trị số này sau đó sẽ được sử dụng để tính toán nhiệt độ.
4.2. Chuyển Đổi Giá Trị ADC sang Nhiệt Độ C F
Giá trị số đọc được từ bộ chuyển đổi ADC cần được chuyển đổi sang giá trị nhiệt độ thực tế. Công thức chuyển đổi phụ thuộc vào đặc tính của cảm biến nhiệt độ. Đối với LM35 (LM335), điện áp đầu ra tỷ lệ tuyến tính với nhiệt độ (10mV/°C). Do đó, công thức chuyển đổi có thể được viết như sau: Temperature (°C) = ADC_Value * Vref / (1024 * 0.01), trong đó Vref là điện áp tham chiếu của ADC. Sau khi tính được nhiệt độ theo độ Celsius, có thể chuyển đổi sang độ Fahrenheit bằng công thức: Temperature (°F) = Temperature (°C) * 9/5 + 32.
4.3. Hiển Thị Nhiệt Độ Lên Màn Hình LCD 1602
Màn hình LCD được sử dụng để hiển thị nhiệt độ cho người dùng. Chương trình cần khởi tạo giao tiếp với màn hình LCD và gửi các lệnh điều khiển để hiển thị các ký tự và số. Nhiệt độ cần được định dạng thành chuỗi ký tự trước khi gửi đến màn hình LCD. Sử dụng các hàm thư viện LCD để đơn giản hóa quá trình hiển thị. Ngày nay, thiết bị hiển thị LCD (Liquid Crystal Display) được sử dụng trong rất nhiều các ứng dụng của VĐK. LCD có rất nhiều ưu điểm so với các dạng hiển thị khác như nó có khả năng hiển thị kí tự đa dạng, trực quan (chữ, số và kí tự đồ họa), dễ dàng đưa vào mạch ứng dụng theo nhiều giao thức giao tiếp khác nhau, tốn rất ít tài nguyên hệ thống và giá thành rẻ. Trong đồ án này em sử dụng HD44780 của Hitachi, một loại thiết bị hiển thị LCD rất thông dụng ở nước ta, cụ thể là sử dụng LCD_DM 1602A (1 dòng của HD44780). LCD1602 là loại 2 dòng, 16 kí tự, sử dụng nguồn nuôi thấp (từ 2,5 đến 5V). Có thể hoạt động ở hai chế độ 4 bit hoặc 8 bit. Với đầu vào 4 bit được lấy từ 4 chân D4→D7 của LCD nối từ RD4→RD7 của vi điều khiển PIC. Như vậy ở đây chúng ta chỉ sử dụng nửa byte cao của LCD. Chân RW đóng vai trò chọn chế độ đọc ghi cho LCD, mức logic “0” LCD hoạt động ở chế độ ghi, ngược lại ở chế độ đọc. Chân RS của LCD được nối với chân RD0 của Vi điều khiển. Chân E của LCD được nối với chân RD1 của Vi điều khiển.
V. Ứng Dụng Đo Nhiệt Độ Phòng Nước Kiểm Soát Nhiệt
Hệ thống đo nhiệt độ sử dụng PIC16F877A và cảm biến bán dẫn có thể được ứng dụng trong nhiều lĩnh vực khác nhau. Một số ứng dụng tiêu biểu bao gồm đo nhiệt độ phòng, đo nhiệt độ nước, và kiểm soát nhiệt độ trong các hệ thống tự động. Trong ứng dụng đo nhiệt độ phòng, hệ thống có thể được sử dụng để hiển thị nhiệt độ hiện tại và cảnh báo khi nhiệt độ vượt quá ngưỡng cho phép. Trong ứng dụng đo nhiệt độ nước, hệ thống có thể được sử dụng để theo dõi nhiệt độ nước trong bể cá, hồ bơi, hoặc hệ thống sưởi. Trong ứng dụng kiểm soát nhiệt độ, hệ thống có thể được sử dụng để điều khiển các thiết bị như lò sưởi, máy lạnh, hoặc quạt thông gió để duy trì nhiệt độ ổn định.
5.1. Đo Nhiệt Độ Phòng Ứng Dụng Thực Tiễn
Ứng dụng đo nhiệt độ phòng là một trong những ứng dụng phổ biến nhất của hệ thống. Hệ thống có thể được sử dụng để hiển thị nhiệt độ hiện tại trên màn hình LCD, đồng thời cảnh báo khi nhiệt độ vượt quá ngưỡng an toàn hoặc ngưỡng thoải mái. Thông tin này có thể giúp người dùng điều chỉnh hệ thống sưởi hoặc làm mát để tạo ra môi trường sống thoải mái và tiết kiệm năng lượng.
5.2. Kiểm Soát Nhiệt Độ Tối Ưu Hệ Thống Tự Động
Hệ thống đo nhiệt độ có thể được tích hợp vào các hệ thống tự động để kiểm soát nhiệt độ. Ví dụ, trong hệ thống sưởi, hệ thống có thể điều khiển lò sưởi để duy trì nhiệt độ phòng ổn định ở mức mong muốn. Trong hệ thống làm mát, hệ thống có thể điều khiển máy lạnh hoặc quạt thông gió để giảm nhiệt độ phòng khi cần thiết. Khả năng kiểm soát nhiệt độ tự động giúp tiết kiệm năng lượng và tạo ra môi trường sống thoải mái hơn.
VI. Kết Luận Tiềm Năng và Hướng Phát Triển Ứng Dụng Đo Nhiệt
Hệ thống đo nhiệt độ sử dụng PIC16F877A và cảm biến bán dẫn là một giải pháp tiện lợi, chính xác và tiết kiệm chi phí cho nhiều ứng dụng khác nhau. Hệ thống có thể được sử dụng để đo nhiệt độ phòng, đo nhiệt độ nước, và kiểm soát nhiệt độ trong các hệ thống tự động. Trong tương lai, hệ thống có thể được cải tiến để kết nối với mạng Internet (IoT), cho phép người dùng theo dõi và điều khiển nhiệt độ từ xa. Bên cạnh đó, hệ thống có thể được tích hợp với các thuật toán thông minh (AI) để dự đoán nhiệt độ và điều chỉnh hệ thống sưởi hoặc làm mát một cách tối ưu. Nghiên cứu tổng quan về Vi điều khiển và cảm biến nhiệt độ bán dẫn; Tìm hiểu phần mềm CCS; Tìm hiểu màn hình LCD 1602; Thiết kế các thành phần của hệ thống đo nhiệt độ dùng cảm biến LM35; Xây dựng lưu đồ thuật toán và thực hiện viết chương trình cho hệ thống Vi điều khiển.
6.1. Tích Hợp IoT Giám Sát và Điều Khiển Từ Xa
Việc tích hợp IoT vào hệ thống đo nhiệt độ mở ra nhiều khả năng mới. Người dùng có thể theo dõi nhiệt độ từ xa thông qua điện thoại thông minh hoặc máy tính, đồng thời điều khiển các thiết bị sưởi hoặc làm mát từ bất kỳ đâu có kết nối Internet. Điều này đặc biệt hữu ích trong các ứng dụng như giám sát nhiệt độ trong nhà kính, quản lý hệ thống sưởi trung tâm, hoặc theo dõi nhiệt độ trong các phòng máy chủ.
6.2. Ứng Dụng AI Dự Đoán Tối Ưu Nhiệt Độ
Việc tích hợp AI vào hệ thống đo nhiệt độ có thể giúp dự đoán nhiệt độ trong tương lai dựa trên dữ liệu lịch sử và các yếu tố môi trường. Thông tin này có thể được sử dụng để điều chỉnh hệ thống sưởi hoặc làm mát một cách chủ động, tối ưu hóa hiệu quả năng lượng và tạo ra môi trường sống thoải mái nhất. Các thuật toán học máy có thể được sử dụng để học hỏi từ thói quen sử dụng của người dùng và điều chỉnh nhiệt độ một cách tự động để đáp ứng nhu cầu cá nhân.