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 đèn 220V, Tạo xung Timer0 5KHz + Hồng ngoại
Blog Điều khiển đèn 220V, Tạo xung Timer0 5KHz + Hồng ngoại
Đề bài điều khiển đèn 220V:
Bài giải điều khiển đèn 220V:
Phần cứng chương trình điều khiển đèn 220V:
- Hệ thống sử dụng thiết bị 220V vì phải phải sử dụng qua cách ly Relay. Khi sử dụng Relay phải quan tâm đến vấn đề nhiễu vì relay là cách ly Từ.
- Sử dụng cảm biến quang hồng ngoại được kết nối vào chân RB0 theo yêu cầu của đề bài đưa ra.
- Chân tạo xung 5KHz được sử dụng chân RB2 vì vậy không thể tạo xung bằng CCP PWM mà phải điều khiển bằng tín hiệu IO để điều khiển tần số phát loa cảnh báo.
- Nút nhấn RST dùng để tắt hệ thống khi có tắt đèn và tắt loa.
- 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 Pic16F887 LCD1602 LCD1602 Điện trở Điện trở Nút nhấn Nút nhấn Thạch anh Thạch anh Led đơn Led đơn Relay 5V 5 Chân Hàn board Relay 5V 5 Chân Hàn board Loa tạo xung 5V Loa tạo xung 5V
Phần mềm điều khiển đèn 220V:
Khai báo thư viện tiền sử lý của điều khiển đèn 220V:
- Vi điều khiển hiện tại mình đan dùng là Pic16F887
- Hiện dùng thạch anh ngoài và thạch anh ngoài khai báo 12M bằng lệnh #Fuses hs và #delay(clock=12M).
- Đị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.
- Tên khai báo biến phụ thuộc vào chức năng để khai báo cho phù hợp.
- Khi các biến không biết được giá trị cuối thì nên khai báo signed int32 tức khai báo biến có dấu 32bit, lúc này giá trị rất rộng không sợ bị thiếu.
Chương trình con ngắt Timer0 điều khiển đèn 220V
- Chương trình ngắt Timer0 sảy ra khi đạt giá trị tràn, theo cách tính thì mỗi lần tràn thì đạt ngưỡng 0.04ms.
- Khi tt=1 tức cho phép chương trình tạo xung hoạt động, khi tràn khởi tạo giá trị ban đầu là 196 cách tính xem dưới phần chương trình chính.
- Khi dem tăng 1 đơn vị tức tăng được 0.04ms vì vậy 0.2ms thì 40% tương ứng là 0.08ms. Nếu dem bằng 1 và 2 thì xuất ngõ ra là mức cao tính như sau 2 x 0.04ms = 0.08ms, ngược lại phần còn lại 3 x 0.04ms = 0.12ms sẽ ở mức thấp, khi vượt ngưỡng 0.2ms chu kỳ thì cho dem=0 chuẩn bị cho chu kỳ mới.
- Ngược lại khi tt=0 thì tắt loa và cho dem=0 chuẩn bị cho quá trình đếm mới.
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 đèn 220V
- Bắt đầu chương trình chính phải khởi tạ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 B có hai chân ngõ vào là chân RB0 và RB3 và hai chân ngõ ra là RB1 và RB2 vì vập khởi tạo là 0x05;
- Sử dụng timer0 để đếm chu kỳ tạo xung 0.04ms nên khai báo t0_internal và sử dụng bộ chia timer0 là 2. từ đó suy ra cách tính: 12M/4=3M sử dụng bộ chia 4 là chia của phần cứng do nhà sản xuất quy định. 3M/2=1.5M sử dụng bộ chia 2 của timer0, từ đó suy ra f = 1.5M => T = 2/3uS. Timer0 đếm 8bit => 2^8 = 256 xung => t0 max = 2/3uS x 256 = 512/3ms. Chọn thời gian tràn timer0 là 0.04ms => bắt đầu đếm từ 196.
- Khai báo ngắt timer0 gồm mã lệnh Global là cho phép toàn bộ chương trình ngắt hoạt động thường được gọi là ngắt toàn cục, khởi tạo ngắt timer0 dùng mã lệnh INT_TIMER0 cho phép ngắt timer0 hoạt động.
- Khi có tín hiệu từ cảm biến hồng ngoại trả về thì cho tt=1. Nếu tt=1 thì bật đèn ngược lại thì tắt đèn. Kiểm tra nếu nhấn nút RST thì cho tt=0; để tắt đèn và tắt loa tạo xung trong ngắt timer0.
Chúc các bạn có một kỳ thi thành công…!!!