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 Cảm biến quang, Đếm + Ngắt ngoài + Led 7 đoạn
Blog Cảm biến quang, Đếm + Ngắt ngoài + Led 7 đoạn
Đề bài cảm biến Quang:
Bài giải cảm biến Quang:
Phần cứng chương trình cảm biến Quang:
- Đầu tiên yêu cầu đưa ra đọc tín hiệu từ chân ngắt Port B để đếm sản phẩm.
- Sử dụng nút nhấn đơn để xóa sản phẩm về 0 khi đạt ngưỡng 99 và bật động cơ hoạt động trở lại.
- Sử dụng relay để bật động cơ băng tải hoạt động, khi thiết kế động cơ băng tải sẽ dùng là 12V trở lên tùy theo khối lượng cần kéo của sản phẩm mà có lựa chọn cho động cơ thích hợp hơn, vì vậy phải sử dụng Relay để cách ly giữ vi điều khiển và tải động cơ.
- Hiển thị hai led 7 đoạn anot chung theo phương pháp xuất tín hiệu quét led 7 đoạn nên phải gắn vào 2 Port là Port D và Port B. Nếu làm mạch thực tế phải gắn trở cho led, cách tính trở 330 xem trong giáo trình thầy Nguyễn Đình Phú
- 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 |
Led 7 đoạn | Led 7 đoạn |
Điện trở | Điện trở |
Nút nhấn | Nút nhấn |
Thạch anh | Thạch anh |
Led đơn | Led đơn |
Tranzitor A1015, C1815 | Tranzitor A1015, C1815 |
Relay | Relay |
Phần mềm cảm biến Quang:
Khai báo thư viện tiền sử lý của cảm biến Quang:
- Vi điều khiển hiện tại mình đan dùng là Pic16F877A.
- Hiện dùng thạch anh ngoài và thạch anh ngoài khai báo 20M bằng lệnh #Fuses hs và #delay(clock=20M).
- Đị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.
- Mã 7 đoạn là đoạn mã Anot: Cấu trúc lệnh cho bạn nào cần copy : ” unsigned int8 ma7doan[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8.0x80,0x90,0xff} “.
- 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 ngắt ngoài cảm biến Quang:
- Khi có thay đổi trạng thái ở chân RB0 tức có sản phẩm đi qua chắn cảm biến thì chương trình ngắt sảy ra, và kiểm tra nếu tt=1 tức cho phép hệ thống hoạt động thì tăng biến dem lên một đơn vị.
Chương trình con hiển thị cảm biến :
- Chương trình con đầu tiên là hiển thị, vì ở đây là quét led 7 đoạn nên chỉ cần mỗi thời điểm chỉ cho một led 7 đoạn sáng đồng thời kích chân tương ứng, với tần số quét từ 50Hz trở lên thì hiệu ứng lưu ảnh trên mắt sẽ được ứng dụng tốt vì vậy sẽ không thấy được led bị nhấp nháy. Ở đây không hướng dẫn chi tiết về quét led chỉ nói khái quát sơ qua.
Chương trình chính đọc cảm biến :
- 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 E kết nối với Relay nên xuất từ Vi điều khiển ra ngoài vì thế khởi tạo giá trị là 0xff. Port D, Port C sử dụng xuất tiến hiệu cho led 7 đoạn vì vậy khởi tạo là 0x00. Port B kết nối với cảm biến hồng ngoại đếm sản phẩm đưa tín hiệu vào vi điều khiển nên khởi tạo là 0xff.
- Khởi tạo chương trình ngắt, khi khởi tạo Global thì cho phép ngắt cục bộ cụ thể hơn là toàn bộ chương trình ngắt sảy ra, khởi tạo int_ext cho phép chương trình ngắt. Khi xử dụng ngắt ngoài INT phải quy định trạng thái tích cực, theo yêu cầu ngắt sảy ra khi có cảm biến chắn ngang tức cảm biến Quang trả về 5V.
- Đồng thời gán giá trị ban đầu cho các biến, nếu không gán thì giá trị ban đầu sẽ Random nằm trong giới hạn của biến đã khai báo.
- Hiển thị ra led 7 đoạn theo phương pháp quét led. Kiểm tra nếu tt=1 cho phép bật Relay tức động cơ băng tải sẽ hoạt động, ngược lại thì dừng động cơ, khi động cơ dừng tức tt=0 mới tiến hành kiểm tra nút nhấn B1 có được nhấn không, nếu có thì gán giá trị lại ban đầu đồng thời mở cho động cơ hoạt động lại bình thường.
Chúc các bạn có một kỳ thi thành công…!!!