Khóa luận: Đo và hiển thị nhiệt độ sử dụng vi xử lý AVR ATmega16

Tài liệu nghiên cứu Đo và hiển thị nhiệt độ sử dụng vi xử lí avr, tổng hợp lý thuyết và thực hành, cung cấp kiến thức chuyên sâu về .

Chuyên ngành

Cơ Điện Tử

Người đăng

Ẩn danh

Thể loại

Khóa luận tốt nghiệp

2017

52
1
0

Phí lưu trữ

30 Point

Tóm tắt

I. Tổng quan dự án đo và hiển thị nhiệt độ dùng vi xử lí AVR

Hệ thống đo và hiển thị nhiệt độ đóng vai trò cốt lõi trong nhiều lĩnh vực công nghiệp, nông nghiệp và nghiên cứu khoa học. Việc giám sát nhiệt độ chính xác giúp đảm bảo chất lượng sản phẩm, tối ưu hóa quy trình sản xuất và bảo vệ thiết bị. Trong bối cảnh đó, giải pháp đo và hiển thị nhiệt độ sử dụng vi xử lí AVR nổi lên như một phương pháp hiệu quả, linh hoạt và tiết kiệm chi phí. Dự án này tập trung vào việc ứng dụng dòng vi điều khiển AVR, cụ thể là ATmega16, để xây dựng một mạch đo nhiệt độ hoàn chỉnh. Hệ thống có khả năng thu thập dữ liệu từ cảm biến, xử lý thông tin và hiển thị kết quả một cách trực quan. Nền tảng AVR, với kiến trúc RISC mạnh mẽ, cung cấp hiệu suất cao và tiêu thụ điện năng thấp, rất phù hợp cho các ứng dụng nhúng. Tài liệu gốc "Khóa luận tốt nghiệp: Đo và hiển thị nhiệt độ sử dụng vi xử lí AVR" của sinh viên Nguyễn Văn Thùy (2017) đã chỉ ra rằng "nhiệt độ là yếu tố ảnh hưởng trực tiếp đến tính chất của vật chất và môi trường sống". Do đó, việc xây dựng một hệ thống đo lường đáng tin cậy là vô cùng cần thiết. Bài viết này sẽ cung cấp một hướng dẫn làm mạch chi tiết, từ việc lựa chọn linh kiện, thiết kế mạch, lập trình C cho AVR, cho đến mô phỏng Proteus và triển khai thực tế. Mục tiêu là cung cấp kiến thức nền tảng vững chắc cho sinh viên và kỹ sư khi thực hiện các đồ án vi xử lý tương tự.

1.1. Tầm quan trọng của hệ thống đo nhiệt độ tự động

Việc theo dõi nhiệt độ là một yêu cầu cơ bản trong khoa học và kỹ thuật. Các hệ thống đo nhiệt độ tự động giúp loại bỏ sai số do con người, cho phép giám sát liên tục và cung cấp dữ liệu chính xác theo thời gian thực. Trong công nghiệp, việc kiểm soát nhiệt độ lò nung, kho lạnh, hoặc các phản ứng hóa học là cực kỳ quan trọng. Trong nông nghiệp, duy trì nhiệt độ ổn định trong nhà kính hoặc kho bảo quản nông sản quyết định đến sự thành công của mùa vụ. Một hệ thống đo lường hiệu quả thường bao gồm ba khâu chính: khâu chuyển đổi (cảm biến), khâu xử lý (vi điều khiển), và khâu chỉ thị (hiển thị). Việc tự động hóa quá trình này không chỉ tăng độ chính xác mà còn giải phóng sức lao động, cho phép con người tập trung vào các công việc phân tích và ra quyết định phức tạp hơn. Sử dụng vi điều khiển AVR làm trung tâm xử lý cho phép hệ thống trở nên thông minh và linh hoạt hơn rất nhiều so với các phương pháp đo cơ học truyền thống.

1.2. Các thành phần chính trong mạch đo nhiệt độ AVR

Một mạch đo nhiệt độ dựa trên nền tảng AVR bao gồm ba khối chức năng chính. Khối trung tâm là vi điều khiển AVR, chẳng hạn như ATmega16 hoặc ATmega328P, chịu trách nhiệm nhận, xử lý dữ liệu và điều khiển toàn bộ hệ thống. Khối thứ hai là khối cảm biến, có nhiệm vụ chuyển đổi đại lượng nhiệt độ thành tín hiệu điện. Các loại cảm biến phổ biến bao gồm cảm biến nhiệt độ LM35 (tín hiệu analog) hoặc cảm biến DS18B20 (tín hiệu số). Lựa chọn cảm biến phụ thuộc vào dải đo, độ chính xác yêu cầu và giao thức giao tiếp. Khối cuối cùng là khối hiển thị, dùng để trình bày kết quả đo cho người dùng. Các lựa chọn phổ biến nhất là màn hình hiển thị LCD 16x2 vì khả năng hiển thị ký tự rõ ràng hoặc LED 7 đoạn cho các ứng dụng cần sự đơn giản và chi phí thấp. Sự kết hợp hài hòa giữa ba khối này tạo nên một hệ thống đo lường hoàn chỉnh và hiệu quả.

II. Thách thức chính khi thiết kế mạch đo nhiệt độ với AVR

Việc thiết kế mạch đo nhiệt độ sử dụng vi điều khiển AVR tuy phổ biến nhưng vẫn tồn tại nhiều thách thức kỹ thuật đòi hỏi người thiết kế phải có kiến thức chuyên sâu. Thách thức đầu tiên nằm ở việc lựa chọn linh kiện sao cho phù hợp với yêu cầu về độ chính xác, chi phí và môi trường hoạt động. Mỗi loại vi điều khiển AVR (ví dụ: ATmega8, ATmega16) có tài nguyên phần cứng (bộ nhớ, số chân I/O, bộ ADC) khác nhau. Tương tự, mỗi loại cảm biến như cảm biến DS18B20 hay cảm biến nhiệt độ LM35 lại có nguyên lý hoạt động và giao thức riêng. Thách thức thứ hai là xử lý nhiễu và đảm bảo độ chính xác của tín hiệu. Tín hiệu từ cảm biến, đặc biệt là tín hiệu analog, rất dễ bị ảnh hưởng bởi nhiễu điện từ từ môi trường xung quanh hoặc từ chính các thành phần khác trong mạch. Việc thiết kế mạch lọc và sử dụng đúng điện áp tham chiếu cho bộ chuyển đổi ADC là tối quan trọng. Cuối cùng, thách thức về phần mềm cũng không hề nhỏ. Lập trình C cho AVR đòi hỏi sự tối ưu về bộ nhớ và tốc độ xử lý. Người lập trình cần phải hiểu rõ về cấu trúc thanh ghi, cách cấu hình các ngoại vi và xây dựng một thuật toán điều khiển logic, hiệu quả để đọc dữ liệu, tính toán và hiển thị LCD 16x2 một cách chính xác.

2.1. Lựa chọn linh kiện Vi điều khiển AVR và cảm biến

Quyết định lựa chọn linh kiện là bước nền tảng ảnh hưởng đến toàn bộ dự án. Đối với vi điều khiển, các dòng như ATmega16 hay ATmega328P là lựa chọn phổ biến cho các đồ án vi xử lý nhờ sự cân bằng giữa hiệu năng, số lượng chân và giá thành. Cần xem xét số kênh bộ chuyển đổi ADC cần thiết nếu sử dụng cảm biến analog như LM35. Đối với cảm biến, DS18B20 là một lựa chọn tuyệt vời nhờ độ chính xác cao và giao tiếp 1-wire độc đáo, chỉ cần một chân dữ liệu để giao tiếp, giúp tiết kiệm chân vi điều khiển. Ngược lại, LM35 đơn giản hơn trong việc đọc giá trị nhưng đòi hỏi một kênh ADC và dễ bị nhiễu hơn. Việc lựa chọn phải dựa trên phân tích kỹ lưỡng về dải nhiệt độ cần đo, sai số cho phép và độ phức tạp của mạch điện tử.

2.2. Giao tiếp phần cứng và xử lý tín hiệu ADC

Giao tiếp phần cứng là việc kết nối vật lý và logic giữa các thành phần. Với cảm biến DS18B20, thách thức nằm ở việc triển khai chính xác giao thức giao tiếp 1-wire, bao gồm các xung reset, lệnh ROM và lệnh chức năng. Sai sót trong định thời (timing) có thể dẫn đến đọc sai dữ liệu. Đối với cảm biến nhiệt độ LM35, tín hiệu đầu ra là analog, do đó phải được kết nối với một chân có chức năng ADC của vi điều khiển AVR. Thách thức ở đây là cấu hình bộ chuyển đổi ADC đúng cách: chọn điện áp tham chiếu (Reference Voltage) phù hợp để tối đa hóa độ phân giải, thiết lập tần số lấy mẫu (prescaler) để đảm bảo chuyển đổi chính xác. Bất kỳ sự sụt áp hay nhiễu nào trên đường tín hiệu đều có thể làm sai lệch kết quả đo cuối cùng.

III. Hướng dẫn thiết kế mạch đo nhiệt độ sử dụng ATmega16

Phần này trình bày chi tiết về hướng dẫn làm mạchthiết kế mạch đo nhiệt độ, lấy vi điều khiển ATmega16 làm trung tâm. Việc xây dựng sơ đồ nguyên lý là bước đầu tiên và quan trọng nhất, quyết định sự ổn định và chính xác của toàn hệ thống. Mạch điện được chia thành các khối chức năng rõ ràng để dễ dàng thiết kế và gỡ lỗi. Khối nguồn cung cấp điện áp ổn định 5V cho vi điều khiển và các linh kiện khác. Khối xử lý trung tâm sử dụng ATmega16, kết nối với một bộ dao động thạch anh (thường là 8MHz hoặc 16MHz) để cung cấp xung nhịp hệ thống. Khối cảm biến sử dụng cảm biến DS18B20, được kết nối với một chân I/O của vi điều khiển thông qua một điện trở kéo lên (pull-up resistor) khoảng 4.7kΩ, đây là yêu cầu bắt buộc của chuẩn giao tiếp 1-wire. Khối hiển thị sử dụng màn hình hiển thị LCD 16x2 hoạt động ở chế độ 4-bit để tiết kiệm chân. Các chân dữ liệu (D4-D7) và các chân điều khiển (RS, EN) của LCD sẽ được kết nối tới các chân của một Port trên ATmega16. Việc bố trí các linh kiện trên bo mạch cũng cần được tính toán cẩn thận để giảm thiểu nhiễu và tối ưu hóa đường đi của tín hiệu.

3.1. Sơ đồ nguyên lý khối trung tâm với vi điều khiển ATmega16

Khối trung tâm là trái tim của hệ thống. Sơ đồ nguyên lý cho khối này bao gồm vi điều khiển ATmega16, mạch reset và mạch dao động. Chân VCC và GND của ATmega16 được nối với nguồn 5V, kèm theo các tụ lọc nhiễu (thường là 100nF) đặt gần chân nguồn để tăng tính ổn định. Mạch reset gồm một nút nhấn và một điện trở kéo lên, kết nối với chân RESET của vi điều khiển, cho phép khởi động lại chương trình khi cần thiết. Mạch dao động sử dụng một thạch anh 16MHz kết nối vào chân XTAL1 và XTAL2, cùng với hai tụ gốm khoảng 22pF để tạo xung nhịp chính xác cho vi điều khiển hoạt động. Các Port I/O còn lại sẽ được kết nối ra các khối ngoại vi như cảm biến và LCD. Việc thiết kế khối trung tâm một cách cẩn thận đảm bảo vi điều khiển AVR hoạt động ổn định, là tiền đề cho toàn bộ hệ thống.

3.2. Lựa chọn và kết nối cảm biến nhiệt độ DS18B20 tối ưu

Cảm biến DS18B20 được chọn vì độ chính xác và giao thức giao tiếp số mạnh mẽ. Về kết nối, chân VDD của cảm biến nối với nguồn 5V, chân GND nối mass. Chân dữ liệu DQ (Data Queue) là quan trọng nhất, nó được nối với một chân I/O bất kỳ của ATmega16 (ví dụ: PORTD.7). Đồng thời, một điện trở kéo lên có giá trị 4.7kΩ phải được kết nối giữa chân DQ và nguồn 5V. Điện trở này đảm bảo đường bus ở trạng thái cao khi không có thiết bị nào truyền dữ liệu, một yêu cầu cơ bản của chuẩn giao tiếp 1-wire. Sơ đồ kết nối này cho phép vi điều khiển và cảm biến trao đổi dữ liệu hai chiều trên cùng một dây dẫn, giúp thiết kế mạch trở nên gọn gàng và hiệu quả.

3.3. Tích hợp khối hiển thị LCD 16x2 vào hệ thống vi xử lý

Màn hình hiển thị LCD 16x2 là giao diện trực quan giữa người dùng và hệ thống. Để tiết kiệm chân của vi điều khiển AVR, chế độ giao tiếp 4-bit thường được sử dụng. Trong chế độ này, chỉ cần 4 chân dữ liệu (D4-D7) của LCD kết nối với 4 chân của một Port (ví dụ: PORTB.4-PORTB.7). Ba chân điều khiển là RS, R/W, và EN cũng cần được kết nối. Chân RS (Register Select) nối với một chân I/O (ví dụ: PORTC.3) để chọn ghi lệnh hoặc ghi dữ liệu. Chân EN (Enable) nối với PORTC.5 để chốt dữ liệu. Chân R/W thường được nối mass để đặt LCD ở chế độ ghi cố định. Ngoài ra, một biến trở được nối với chân VEE của LCD để điều chỉnh độ tương phản. Việc tích hợp này đòi hỏi phải có thư viện phần mềm để điều khiển LCD, giúp đơn giản hóa quá trình lập trình C cho AVR.

IV. Phương pháp lập trình C cho AVR để đọc và hiển thị nhiệt độ

Phần mềm là linh hồn của hệ thống, biến các thành phần phần cứng thành một thiết bị hoạt động có mục đích. Lập trình C cho AVR là phương pháp phổ biến nhất nhờ tính cấu trúc, hiệu quả và khả năng quản lý phần cứng mạnh mẽ. Môi trường phát triển tích hợp (IDE) như CodeVisionAVR hoặc Atmel Studio (nay là Microchip Studio) cung cấp các công cụ cần thiết để viết, biên dịch và nạp chương trình. Quy trình lập trình bắt đầu bằng việc xây dựng thuật toán. Thuật toán chính bao gồm các bước: khởi tạo hệ thống (cấu hình các Port I/O, khởi tạo LCD), sau đó vào một vòng lặp vô tận. Trong vòng lặp, vi điều khiển sẽ gửi lệnh yêu cầu cảm biến DS18B20 đo nhiệt độ, chờ một khoảng thời gian để quá trình chuyển đổi hoàn tất, sau đó đọc về giá trị nhiệt độ đã được số hóa. Dữ liệu thô này sau đó cần được xử lý (ví dụ: chia cho 16 đối với độ phân giải 12-bit) để ra giá trị nhiệt độ theo độ C. Cuối cùng, giá trị này được định dạng thành chuỗi ký tự và gửi đến màn hình hiển thị LCD 16x2. Việc viết code đo nhiệt độ AVR cần chú ý đến việc sử dụng các thư viện có sẵn để tiết kiệm thời gian, chẳng hạn như thư viện cho giao tiếp 1-wire và thư viện điều khiển LCD.

4.1. Phân tích thuật toán và lưu đồ điều khiển hệ thống

Một thuật toán rõ ràng là kim chỉ nam cho việc lập trình. Lưu đồ thuật toán cho đồ án vi xử lý này bắt đầu với khối "Bắt đầu". Tiếp theo là khối "Khởi tạo", trong đó thực hiện cấu hình các chân I/O, thiết lập giao thức cho LCD và khởi tạo bus 1-wire. Sau đó, chương trình đi vào một vòng lặp chính (while(1)). Bên trong vòng lặp, bước đầu tiên là gửi lệnh "Convert T" [44h] đến cảm biến DS18B20. Kế đến là một khối trễ (delay) khoảng 750ms để cảm biến có đủ thời gian chuyển đổi nhiệt độ. Sau khi chờ, chương trình thực hiện gửi lệnh yêu cầu đọc dữ liệu từ bộ nhớ scratchpad của cảm biến. Hai byte dữ liệu nhiệt độ nhận về sẽ được ghép lại và tính toán để ra giá trị nhiệt độ thực. Cuối cùng, kết quả được định dạng và hiển thị lên LCD. Vòng lặp này lặp lại liên tục, đảm bảo nhiệt độ được cập nhật thường xuyên.

4.2. Triển khai code đo nhiệt độ AVR với CodeVisionAVR

Môi trường CodeVisionAVR rất mạnh mẽ nhờ trìnhウィザード (CodeWizardAVR) cho phép tự động sinh mã khởi tạo. Người dùng chỉ cần chọn chip ATmega16, thiết lập xung nhịp, cấu hình các Port, và kích hoạt các thư viện cần thiết như thư viện cho LCD và 1-wire. Đoạn mã chính sẽ nằm trong hàm main(). Đầu tiên là việc gọi các hàm khởi tạo như lcd_init()w1_init(). Trong vòng lặp while(1), sử dụng hàm ds18b20_temperature() từ thư viện để đọc giá trị nhiệt độ. Hàm này đã đóng gói toàn bộ quá trình giao tiếp phức tạp với cảm biến DS18B20. Kết quả trả về là một số thực (float). Tiếp theo, sử dụng hàm sprintf() để định dạng giá trị nhiệt độ này cùng với các chuỗi ký tự khác vào một bộ đệm. Cuối cùng, dùng các lệnh lcd_clear(), lcd_gotoxy()lcd_puts() để hiển thị thông tin từ bộ đệm lên màn hình hiển thị LCD 16x2. Đoạn code đo nhiệt độ AVR này cần được biên dịch để tạo ra file .hex sẵn sàng cho việc nạp vào chip.

V. Bí quyết mô phỏng Proteus và kiểm tra mạch đo nhiệt độ

Trước khi triển khai mạch thật, mô phỏng Proteus là một bước không thể thiếu để kiểm tra tính đúng đắn của sơ đồ nguyên lý và thuật toán. Proteus là một công cụ mạnh mẽ cho phép người dùng vẽ mạch điện tử và chạy mô phỏng hoạt động của nó bằng cách nạp file mã máy (.hex) vào mô hình vi điều khiển. Lợi ích lớn nhất của việc mô phỏng là khả năng phát hiện lỗi trong thiết kế mạch hoặc trong logic của code đo nhiệt độ AVR mà không tốn chi phí linh kiện. Người dùng có thể dễ dàng thay đổi giá trị nhiệt độ trên mô hình cảm biến DS18B20 trong Proteus và quan sát ngay lập tức sự thay đổi trên màn hình hiển thị LCD 16x2 mô phỏng. Điều này giúp xác nhận rằng thuật toán đọc và xử lý dữ liệu đang hoạt động chính xác. Hơn nữa, Proteus còn cung cấp các công cụ gỡ lỗi ảo như máy hiện sóng, logic analyzer để phân tích tín hiệu tại bất kỳ điểm nào trên mạch, ví dụ như kiểm tra các xung trên đường giao tiếp 1-wire. Việc mô phỏng thành công trên Proteus tạo ra sự tự tin lớn trước khi tiến hành hàn mạch và thử nghiệm thực tế.

5.1. Các bước mô phỏng mạch đo nhiệt độ trên phần mềm Proteus

Quá trình mô phỏng trên Proteus bao gồm các bước sau. Bước 1: Thiết kế mạch nguyên lý. Mở Proteus và lấy các linh kiện cần thiết từ thư viện như ATmega16, DS18B20, LCD 16x2 (LM016L), điện trở, tụ điện, và thạch anh. Sau đó, kết nối chúng lại với nhau theo đúng sơ đồ nguyên lý đã thiết kế. Bước 2: Nạp chương trình. Nhấp đúp chuột vào linh kiện vi điều khiển AVR trên sơ đồ để mở cửa sổ thuộc tính. Trong mục 'Program File', trỏ đường dẫn đến file .hex đã được biên dịch từ CodeVisionAVR. Đồng thời, thiết lập tần số xung nhịp (Clock Frequency) cho vi điều khiển khớp với giá trị đã khai báo trong code (ví dụ: 16MHz). Bước 3: Chạy mô phỏng. Nhấn nút 'Play' ở góc dưới bên trái màn hình. Mạch sẽ bắt đầu hoạt động, và kết quả nhiệt độ sẽ được hiển thị trên màn hình LCD ảo.

5.2. Phân tích kết quả hiển thị nhiệt độ trên LCD và thực tế

Sau khi mô phỏng thành công, bước tiếp theo là triển khai mạch vật lý. Kết quả đo được trên mạch thật cần được so sánh với một nhiệt kế chuẩn để đánh giá độ chính xác. Có nhiều yếu tố có thể gây ra sai lệch giữa kết quả mô phỏng và thực tế. Nhiễu điện từ, chất lượng linh kiện, sự ổn định của nguồn cấp, và sai số của chính cảm biến DS18B20 đều có thể ảnh hưởng đến kết quả cuối cùng. Nếu kết quả hiển thị trên hiển thị LCD 16x2 bị sai, cần kiểm tra lại các kết nối phần cứng, chất lượng mối hàn, và sự ổn định của nguồn điện. Tài liệu gốc của Nguyễn Văn Thùy (2017) cũng đã thực hiện bước so sánh này và cho thấy "nhiệt độ đo được ngoài thực tế" (Hình 3.6) khớp với giá trị mong đợi, chứng minh tính khả thi của dự án đo và hiển thị nhiệt độ sử dụng vi xử lí AVR.

VI. Kết luận và ứng dụng của hệ thống đo nhiệt độ bằng AVR

Dự án đo và hiển thị nhiệt độ sử dụng vi xử lí AVR đã chứng minh được tính hiệu quả và khả thi trong việc xây dựng một hệ thống đo lường tự động, chi phí thấp. Việc sử dụng vi điều khiển AVR, cụ thể là ATmega16, kết hợp với cảm biến DS18B20hiển thị LCD 16x2 tạo ra một giải pháp toàn diện, từ thu thập, xử lý đến hiển thị dữ liệu. Hệ thống này không chỉ là một đồ án vi xử lý mang tính học thuật cao mà còn có tiềm năng ứng dụng rộng rãi trong thực tiễn. Ưu điểm chính của giải pháp này là sự linh hoạt trong lập trình, chi phí linh kiện thấp, và độ tin cậy cao. Tuy nhiên, nó cũng có những hạn chế nhất định như khả năng mở rộng bị giới hạn bởi tài nguyên của vi điều khiển và chưa có khả năng kết nối mạng để giám sát từ xa. Tương lai của các hệ thống như thế này nằm ở việc tích hợp các công nghệ mới, mở ra những hướng phát triển và ứng dụng đột phá hơn. Đây là nền tảng vững chắc để phát triển các hệ thống giám sát và điều khiển thông minh, phức tạp hơn trong tương lai.

6.1. Đánh giá ưu nhược điểm của giải pháp sử dụng ATmega16

Giải pháp sử dụng ATmega16 có nhiều ưu điểm nổi bật. Thứ nhất, đây là một vi điều khiển AVR 8-bit mạnh mẽ, phổ biến, có cộng đồng hỗ trợ lớn và nhiều tài liệu tham khảo. Thứ hai, giá thành của ATmega16 rất hợp lý, phù hợp cho cả mục đích học tập và sản xuất hàng loạt. Nó tích hợp sẵn các ngoại vi cần thiết như bộ chuyển đổi ADC, các bộ định thời (Timer/Counter), và nhiều cổng I/O. Tuy nhiên, nhược điểm của nó là tài nguyên hạn chế về bộ nhớ Flash (16KB) và RAM (1KB), có thể không đủ cho các ứng dụng phức tạp yêu cầu thuật toán xử lý nặng hoặc lưu trữ nhiều dữ liệu. Ngoài ra, tốc độ xử lý của nó cũng thấp hơn so với các dòng vi điều khiển 32-bit hiện đại.

6.2. Hướng phát triển Tích hợp IoT và các tính năng nâng cao

Tương lai của hệ thống đo nhiệt độ không chỉ dừng lại ở việc hiển thị cục bộ. Hướng phát triển tất yếu là tích hợp công nghệ Internet of Things (IoT). Bằng cách kết hợp vi điều khiển AVR với các module Wi-Fi như ESP8266 hoặc Ethernet Shield, hệ thống có thể gửi dữ liệu nhiệt độ lên một máy chủ đám mây. Điều này cho phép người dùng giám sát nhiệt độ từ bất cứ đâu thông qua một trang web hoặc ứng dụng di động. Các tính năng nâng cao khác có thể được bổ sung bao gồm: cảnh báo qua email hoặc SMS khi nhiệt độ vượt ngưỡng, lưu trữ lịch sử dữ liệu để phân tích xu hướng, và điều khiển các thiết bị khác (như quạt, máy sưởi) dựa trên giá trị nhiệt độ đo được, biến mạch đo nhiệt độ đơn giản thành một hệ thống điều khiển và giám sát thông minh hoàn chỉnh.

04/10/2025

Trích đoạn nội dung tài liệu

MỞ ĐẦU .2 Chƣơng 1: TỔNG QUAN VỀ HỆ THỐNG ĐO NHIỆT ĐỘ .1 Khái niệm chung .2 Các phƣơng pháp đo nhiệt độ .3 Quá trình đo nhiệt độ .1 Khâu chuyển đổi .3 Khâu chỉ thị .4 CHƢƠNG 2: NGHIÊN CỨU MẠCH NGUYÊN LÝ CỦA BỘ ĐO VÀ HIỂN THỊ .2 Khối trung tâm .1 Sơ đồ khối của ATMEGA16 .2 Mô tả chân linh kiện: .3 Khối cảm biến nhiệt độ.1Đặc điểm và các thông số DS18B20 .3 Phƣơng thức giao tiếp:.4 Cách đọc nhiệt độ: .4 Khối hiển thị LCD .1 Hình dáng và kích thƣớc: .2 Chức năng các chân .3 Sơ đồ khối của HD44780: .4 Tập lệnh của LCD .5 Giao tiếp giữa LCD và MPU .4 Khởi tạo LCD: .27 Chƣơng 3: THIẾT KẾ CHƢƠNG TRÌNH PHẦN MỀM .1 Thuật toán điều khiển .1 Các chỉ thị trƣớc khi sử lý .3 Các kiểu dữ liệu .4 Cấu trúc cơ bản của một chƣơng trình C .2 Lập trình C bằng CodeVisionAVR cho ATMega16 để đo nhiệt độ.3 Mô phỏng trên phần mềm proteus .38 KẾT LUẬN VÀ KIẾN NGHỊ .42 DANH MỤC BẢNG Bảng 2.1: Các chức năng của PORT B .2: Chức năng của Port C .3: Các chức năng của PORT D.4: Các thanh ghi trong ADC .5: Dữ liệu thanh ghi của DS18B20 .6: Chức năng các chân của LCD .7 Chức năng chân RS và R/W theo mục đích sử dụng .8: Công suất tối đa .1: Bảng dữ liệu .31 DANH MỤC HÌNH Hình 1.1:Cặp nhiệt điện .2: Nhiệt điện trở .3: IC cảm biến nhiệt độ .4: Cảm biến thạch anh .1: Vi điều khiên AVR .2: Các dòng AVR, tiny, AVR và AT mega.3: Vi điều khiển ATMEGA 16 .4: Sơ đồ chân của ATMEGA16 .5: Sơ đồ khối của ATMEGA16 .6: Cảm biến DS18B20 .7: Sơ đồ chân của DS18B20 .8: Sơ đồ khối của DS18B20.9: Bộ nhớ của DS18B20 .10: Kết nối vi điều khiển và đấu mạch cảm biến.11: Hình dáng của loại LCD thông dụng .12: Sơ đồ chân của LCD .13 Sơ đồ khối của HD44780 .2: Cửa sổ lập trình C cho AVR .3: Kết quả sau khi biên dịch .4: Nạp trương trình cho vi điều khiển .5: Mô phỏng đo nhiệt độ trên Proteus .6: Nhiệt độ đo được ngời thực tế .41 Chƣơng 1: TỔNG QUAN VỀ HỆ THỐNG ĐO NHIỆT ĐỘ 1.1 Khái niệm chung Trong nghiên cứu khoa học, trong sản xuất cũng nhƣ trong sinh hoạt hằng ngày, nhiệt độ luôn là đối tƣợng vật lý cần đƣợc theo dõi, vì vậy việc đo nhiệt độ trở vấn đề vô cùng cần thiết. Nhiệt độ cần đo có thể rất thấp (một vài độ), cũng có thể rất cao (vài ngàn,vài chục ngàn độ). Độ chính xác của nhiệt độ có khi cần tới một vài phần ngàn độ, nhƣng có khi vài chục độ chục độ cũng có thể chấp nhận đƣợc. Việc đo nhiệt độ đƣợc tiến hành nhờ các dụng cụ hỗ trợ chuyên biệt nhƣ Cặp nhiệt điện: Hình 1.1:Cặp nhiệt điện Nhiệt điển trở: Hình 1.2: Nhiệt điện trở IC cảm biến nhiệt độ: Hình 1.3: IC cảm biến nhiệt độ Cảm biến thạch anh: Hình 1.4: Cảm biến thạch anh  Tùy theo khoảng nhiệt độ cần đo và sai số cho phép mà ngƣời ta lựa chọn các cảm biến và phƣơng pháp đo phù hợp.2 Các phƣơng pháp đo nhiệt độ Tùy theo nhiệt độ đo có thể dùng các phƣơng phá khác nhau, thông thƣờng nhiệt độ đo đƣợc chia thành ba dải.

Nhiệt độ thấp, nhiệt độ trung bình và nhiệt độ cao. Ở nhiệt độ trung bình và thấp phƣơng pháp đo là phƣơng pháp không tiếp xúc, đặt dụng cụ ngoài môi trƣờng, còn ở dải nhiệt độ cao (trên 1000oC) thì thƣờng dùng phƣơng pháp đo không tiếp xúc 1.3 Quá trình đo nhiệt độ Ta có thể chia quá trình đo nhiệt độ bằng 3 khâu chính 1.1 Khâu chuyển đổi Khâu chuyển đổi nhiệt độ thƣờng dựa vào những biến đổi mang tính đặc trƣng của vật liệu khi chịu sự tác động của nhiệt độ nhƣ:  Sự biến đổi điện trở.  Sức điện động sinh ra do sự chênh lệch nhiệt độ ở các mối nối của cáckim loại khác nhau.  Sự biến đổi thể tích, áp suất của các chất trong môi trƣờng nhiệt độ  Sự thay đổi cƣờng độ bức xạ của vật thể khi bị đốt nóng.

Đối với chuyển đổi nhiệt điện, ngƣời ta thƣờng dựa vào hai tính chất đầu tiên để chế tạo ra các cặp nhiệt điện (Thermocouple), nhiệt điện trở kim loại hay bán dẫn, các cảm biến nhiệt độ dƣới dạng các linh kiện bán dẫn nhƣ: diode, transistor, các IC chuyên dùng.2 Khâu xử lý Các thông số về điện sau khi đƣợc chuyển đổi từ nhiệt độ sẽ đƣợc xử lý trƣớc khi qua đến phần chỉ thị. Các bộ phận ở khâu xử lý gồm có: phần hiệu chỉnh, khuếch đại, biến đổi ADC (Analog-Digital-Converter)… Ngoài ra còn có thể có các mạch điện bổ sung nhƣ: mạch bù sai số, mạch phối hợp tổng trở… 1.3 Khâu chỉ thị Khâu chỉ thị trƣớc đây thƣờng sử dụng các cơ cấu cơ điện, ở đó kết quả đƣợc thể hiện bằng góc quay hoặc sựdichuyển thẳng của kim chỉ thị. Ngày nay, với sự phát triển của công nghệ điện tử, đãsản xuất nhiều loại IC giải mã, chuyên dùng trong biến đổi ADC, vì vậy cho phép ta sử dụngkhâu chỉ thị số dễ dàng nhƣ dùng LED 7 đoạn hoặc màn hình tinh thể lỏng LCD. Ở đó, kết quả đo đƣợc thể hiện bằng các con số trong hệ thập phân.

CHƢƠNG 2: NGHIÊN CỨU MẠCH NGUYÊN LÝ CỦA BỘ ĐO VÀ HIỂN THỊ 2.1 Vi xử lý AVR là họ Vi điều khiển khá mới trên thị trƣờng cũng nhƣ đối với ngƣời sử dụng. Đây là họ vi điều khiển đƣợc chế tạo theo kiến trúc RISC (Reduced Instruction Set Computer) có cấu trúc khá phức tạp. Ngoài các tính năng nhƣ các họ vi điều khiển khác, nó còn tích hợp nhiều tính năng mới rất tiện lợi cho ngƣời thiết kế và lập trình. Sự ra đời của AVR bắt nguồn từ yêu cầu thực tế là hầu hết khi cần lập trình cho vi điều khiển, thƣờng dùng những ngôn ngữ bậc cao HLL (Hight Level Language) để lập trình ngay cả với loại chip xử lí 8 bit.

Tuy nhiên khi biên dịch thì kích thƣớc đọan mã sẽ tăng nhiều so với dùng ngôn ngữ Assembly. Hãng Atmel nhận thấy rằng cần phải phát triển một cấu trúc đặc biệt để giãm thiểu sự chênh lệch kích thƣớc mã đã nói trên. Và kết quả là họ vi điều khiển AVR ra đời với việc làm giãm kích thƣớc đoạn mã khi biên dịch và thêm vào đó là thực hiện lệnh đúng chu kỳ máy với 32 thanh ghi tích lũy và đạt tốc độ nhanh hơn các họ vi điều khiển khác từ 4 đến 12 lần. Có ba loại trong họ này đó là: Tinyavr, AVR (loại AVR), MegaAVR.1: Vi điều khiên AVR Hình 2.2: Các dòng AVR, tiny, AVR và AT mega Các loại chíp thƣờng dùng AT90S1200 AT90S2313 AT90S2323 and AT90S2343 AT90S2333 and AT90S4433 AT90S4414 and AT90S8515 AT90S4434 and AT90S8535 AT90C8534 ATtiny10, ATtiny11 and ATtiny12 ATtiny15 ATtiny22 ATtiny26 ATtiny28 ATmega8/8515/8535 ATmega16 ATmega161 ATmega162 ATmega163 ATmega169 ATmega32 ATmega323 ATmega103 ATmega64/128/2560/2561 Atmega86RF401.2 Khối trung tâm Khối này sử dụng vi điều khiển ATMEGA16 của hãng Atmel với các tính năng: - Vi điều khiển 8 bit, có tính năng sử dụng cao, công suất thấp.

- Có 130 tập lệnh theo kiến trúc RISC, chủ yếu thực hiện trong 1 chu kì máy. - 32x8 thanh ghi đa dụng. - 16KB bộ nhớ flash có khả năng lập trình đƣợc. - 512 Bytes EEPROM - 1K Byte Internal SRAM.

- Nhiều ngõ vào ra (I/O Port) 2 hƣớng (bi-directional). - 2 bộ Timer/Counters 8-bit với Separate Prescalers và Compare Modes. - 1 Timer/Counter 16-bit với Separate Prescaler, Compare Mode và - Capture Mode. - 8 kênh chuyển đổi ADC 10-bit Hình 2.3: Vi điều khiển ATMEGA 16 8 kênh chuyển đổi đơn.

- 7 kênh chuyển đổi vi sai chỉ đƣợc đóng gói trong TQFP. - 2 kênh chuyển đổi vi sai có khả năng lập trình, lựa chọn độ lợi 1x, 10x, or 200x. - Giao diện nối tiếp USART( tƣơng thích chuẩn nối tiếp RS-232) - Giao diện nối tiếp Two-wire Serial( tƣơng thích chuẩn I2C ) - Giao diện nối tiếp SPI Master và Slave. - Bộ Watchdog Timer có khả năng lập trình đƣợc với bộ dao động trên chip.

- Bộ so sánh Analog trên chip.4: Sơ đồ chân của ATMEGA16 2.1 Sơ đồ khối của ATMEGA16 Lõi AVR kết hợp những tập lệnh với 16 thanh ghi làm việc với mục đích chung. Cả 16 thanh ghi đều đƣợc kết nối trực tiếp đến ALU. Cho phép truy xuất 2 thanh ghi làm việc độc lập với 1 chu kì máy. Với kiến trúc RISC này cho phép CPU làm việc nhanh gấp mƣời lần kiến trúc CISC.5: Sơ đồ khối của ATMEGA16 2.2 Mô tả chân linh kiện: VCC & GND Chân cấp nguồn cho vi điều khiển.

PortA: Đƣợc dành riêng cho ngõ vào analog của bộ chuyển đổi ADC. Ngoài ra Port A còn đƣợc dùng nhƣ 1 Port vào ra 2 hƣớng nếu bộ chuyển đổi ADC không sử dụng. Mỗi chân của Port A đƣợc cung cấp điện trở kéo lên bên trong.Bộ đệm ngõ ra của Port A đƣợc điều khiển cho cả 2 khả năng, sink dòng và source dòng. Khi Port A sử dụng nhƣ ngõ vào, chúng sẽ source dòng nếu điện trở kéo lên bên trong tích cực.

Port B : Port B đƣợc dùng nhƣ 1 Port vào ra 2 hƣớng với điện trở kéo lên bên trong.Mỗi chân của Port B đƣợc cung cấp điện trở kéo lên bên trong. Bộ đệm ngõ ra của Port B đƣợc điều khiển cho cả 2 khả năng, sink dòng và source dòng. Khi Port B sử dụng nhƣ ngõ vào, chúng sẽ source dòng nếu điện trở kéo lên bên trong tích cực. Ngoài ra, Port B còn đƣợc sử dụng những chức năng khác, đƣợc trình bày nhƣ sau: Bảng 2.1: Các chức năng của PORT B Port C: Port C đƣợc dùng nhƣ 1 Port vào ra 2 hƣớng với điện trở kéo lên bên trong.

Mỗi chân của Port B đƣợc cung cấp điện trở kéo lên bên trong. Bộ đệm ngõ ra của Port C đƣợc điều khiển cho cả 2 khả năng, sinh dòng và source dòng. Khi Port C sử dụng nhƣ ngõ vào, chúng sẽ source dòng nếu điện trở kéo lên bên trong tích cực. Nếu sử dụng giao tiếp JTAG, điện trở kéo lên ở chân PC5(TDI), PC3(TMS) và PC2(TCK) sẽ tích cực thậm chí có Reset xảy ra.

Port C sử dụng cho giao tiếp JTAG và các tính năng đặc biệt của AVR đƣợc liệt kê ra sau đây: Bảng 2.2: Chức năng của Port C Port D: D đƣợc dùng nhƣ 1 Port vào ra 2 hƣớng với điện trở kéo lên bên trong.Mỗi chân của Port B đƣợc cung cấp điện trở kéo lên bên trong. Bộ đệm ngõ ra của Port D đƣợc điều khiển cho cả 2 khả năng, sink dòng và source dòng. Khi Port D sử dụng nhƣ ngõ vào, chúng sẽ source dòng nếu điện trở kéo lên bên trong tích cực.

Nội dung được bảo vệ bản quyền — Tải xuống đầy đủ