Trong bài trước chúng ta đã học cách phát tần số bằng TIMER  Phát xung vuông dùng timer vi điều khiển PIC bài này mình sẽ đo tần số dùng chức năng COUNTER của vi điều khiển PIC. PIC 16F877A hoặc 16F887 có 2 COUNTER ( Tạm gọi counter 0 nhận tần số vào tại chân RA4 8bit và counter 1 tại chân RC0 16bit).

dotanso

Counter được ứng dụng trong việc đo tần số từ các cảm biến điện dung, khi đo mình thêm vào mạch để phát ra tần số như cảm biến độ ẩm HS1101 hay các cảm biến đo mực nước... Nó còn được ứng dụng trong các bộ đếm xung, đọc giá trị Encoder để tính chiều sâu hay tốc độ động cơ.

Cách sử dụng Counter trong CCS ( trong bài tập này mình dùng counter 1) :

setup_timer_1(T1_DISABLED); // Tạm thời dừng bộ đếm
dem=get_timer1(); // Lấy dữ liệu số đếm
set_timer1(0); // Reset lại bộ đếm
setup_timer_1(T1_EXTERNAL|T1_DIV_BY_1); // Cấu hình cho Counter 1 hoạt động

Đối với bài đo tần số này mình sử dụng Timer 0 để đếm thời gian và counter 1 để đếm số xung vào, sau 1s ( thời gian được tính bởi timer 0 thì counter 1 đọc số đếm và gán giá trị vào biến dem).

Chú ý : đây là Couter 1 độ dài là 16 bit thì với cách cấu hình như trên tần số tối đa đọc được là 65535Hz.

Trong bài tập mình sử dụng 2 nguồn phát xung :

1. Nguồn phát xung cố định luôn phát tần số 100Hz

2. Nguồn phát xung có thể điều khiển

Các bạn thay đổi sử dụng Switch để thay đổi qua lại giữa 2 nguồn phát và xem kết quả hiển thị ra LCD 20x4 nhé !  Ai chưa biết hiển thị LCD có thể tham khảo bài :

Hiển thị LCD vi điều khiển PIC 

Download bài học tại đây : Đo tần số dùng COUNTER vi điều khiển PIC

Xem video mo phỏng tại đây :

Nếu bạn thấy hay hãy đăng ký , chia sẻ giúp tôi nhé chúng tôi sẽ thường xuyên cập nhật kiến thức mới về vi điều khiển PIC tại đây