Mua linh kiện điện tử tại Điện tử Nhật Tùng
Khóa học Vi điều khiển có phí Hình thức học: Video hoặc Kèm trực tiếp ===>>>> Kích vào hình để được biết thêm chi tiếtTable of Contents
Tải File bài giải
Pass giải nén: Huynhnhattung.com
===>>> Nếu bạn chưa có phần mềm giải nén:
Video Điều khiển Relay, Đọc nhiệt độ LM35 + Kích rơ-le + lcd1602
Blog Điều khiển Relay, Đọc nhiệt độ LM35 + Kích rơ-le + lcd1602
Đề bài điều khiển Relay:
Bài giải điều khiển Relay:
Phần cứng chương trình điều khiển Relay:
- Đề yêu cầu sử dụng cảm biến nhiệt độ LM35 trả về tín hiệu Analog vì vậy phải đấu vào chân đọc tín hiệu ADC được ký hiệu là ANxx.
- Hiển thị màn hình LCD1602 được chọn vào Port D. Theo yêu cầu đưa ra thứ tự chân RS, RW, EN được kết nối như hình.
- Sử dụng dao động ngoài thạch anh 20M gắn vào chân OSC1 OSC2.
- Sử dụng relay các bạn lưu ý vì dòng cấp để kích relay thường khá cao vì vậy phải dùng thêm một tranzitor để đệm ngõ ra của Vi điều khiển.
- Các linh kiện chính cần sử dụng tham khảo tại.
Thông số kỹ thuật Mua Linh kiện Pic16F887 Pic16F877 Led đơn Led đơn Điện trở Điện trở Nút nhấn Nút nhấn Thạch anh Thạch anh Nhiệt độ LM35 Nhiệt độ LM35 LCD1602 LCD1602 Relay Relay Quạt Quạt Tranzitor C1815 Tranzitor C1815 Diode 1N4007 Diode 1N4007
Phần mềm điều khiển Relay:
Khai báo thư viện tiền sử lý của cảnh báo nhiệt độ:
- Vi điều khiển hiện tại mình đan dùng là Pic16F887
- Theo yêu cầu hệ thống có đọc giá trị ADC vì vậy phải khai báo ADC bằng lệnh #device adc=10 tức sử dụng bộ ADC 10bit. Ngoài ra có thể chọn ADC 8bit và 16bit.
- Hiện đan dùng thạch anh ngoài và thạch anh ngoài 8M bằng lệnh #Fuses hs và #delay(clock=8M)
- Khai báo thư viện #include <lcd.c> được phần mềm hổ trợ vì vậy chỉ cần định nghĩa đúng chân theo kết nối phần cứng thì hệ thống sẽ hoạt động.
- Định nghĩa chân: tùy theo chức năng của chân mà tên định nghĩa được bám sát vào nội dung đan thực hiện. Vì đây là bài thi nên việc định nghĩa chân phụ thuộc rất lớn vào nội dung đề bài.
- Tên khai báo biến thì cái này tùy thuộc vào chức năng sử dụng.
Chương trình chính thực hiện toàn bộ hoạt động của vi điều khiển dùng điều khiển Relay
- Bắt đầu chương trình chính phải khỏi rạo ngõ vào ra cho vi điều khiển. Một chân của vi điều khiển thì làm nhiệm vụ I/O vì thế phải khỏi tạo. Port D, Port B kết nối vào LCD1602 và Relay nên xuất dữ liệu nên khởi tạo là 0x00. Port A chân RA0 kết nối vào cảm biến nhiệt độ LM35 dùng để đưa tín hiệu vào vi điều khiển nên dùng khai báo khởi tạo là 0x01.
- Khởi tạo LCD1602 bằng lệnh lcd_init();
- Khởi tạo ADC sử dụng bộ chia 32 để số lần đọc nhiệt độ trên 1s ít. Vì sử dụng chân AN0 đọc nhiệt độ LM35 vì thế khai báo phải khai báo ports là sAN0, đồng thời khai báo kênh 0 để phù hợp với chức năng đọc của Analog.
- Ban đầu khỏi động lên thì lcd hiển thị thông tin nhiệt độ ra hàng một của màn hình LCD1602, vì thông tin này chỉ hiển thị một lần và không cần thay đổi trong suốt quá trình chạy chương trình và tắt động cơ ban đầu.
Tiến hành đọc nhiệt độ cảm biến LM35. Sau đó chuyển đổi từ giá trị ADC sang nhiệt độ, Vref+ = 5V = 5000mV, adc được chọn là 10bit nên 2^10 = 1023. Theo nhà sản xuất cung cấp thì độ phân giải của nhiệt độ LM35 là 10mV nhưng vì lấy phần thập phân nên giữ giá trị để hiển thị ra màn hình.
- Nếu nhiệt độ nhỏ hơn 1000 tức nhỏ hơn 100 độ C thì tắt Relay đồng thời giải mã hiển thị ra màn hình LCD1602. Khi khởi tạo là lcd_gotoxy(1,2); là cần xuất dữ liệu ra LCD1602 vị trí hàng 2 cột 1. Tương tự cho các vị trí khác chỉ cần xem định vị theo yêu cầu.
- Khi các phép chia t/100, t/10%10, t%10 đây là phương pháp tách số, lý do mỗi ô của LCD1602 chỉ hiển thị một ký tự duy nhất tại một thời điểm nhất định. Ví dụ 123 là một số nhưng có 3 giá trị. Sau khi tách số xong đem +0x30 chuyển giá trị thập phân sang bảng mã ASCII. Mã lệnh 0xdf là dấu độ trong bảng mã ASCII, mọi thông tin các bạn tra bảng sẽ hiểu rõ hơn. Vì độ phân giải là 10mV đóng vai trò là phần thập phân của nhiệt độ nên trước khi lấy số đơn vị thì hiển thị dấu “.” sau đó hiển thị giá trị hàng đơn bị.
- Nếu nhiệt độ lớn hơn hoặc bằng 1000 tức 100 độ C thì bật Relay đồng thời hiển thị giá trị hàng trăm của nhiệt ra màn hình của LCD1602, đây được xem là phương pháp hiển thị dù giá trị nhỏ hay hớn thì vị trí hiển thị ban đầu vẫn không thay đổi.
Chúc các bạn có một kỳ thi thành công…!!!