Cách của TRANG như đã nói ở đầu đề là khá hay và mình cũng đã làm qua.
Nhưng dùng đến 2 ngắt và điều cần quan tâm nữa là thời gian LATENCY của vi điều khiển nếu bạn quan tâm đến sai số và tần số cao!
Một mạch thí nghiệm đơn giản để làm một máy đo tần số điện lưới là:
Dùng một tranisistor C1815 + 8051
C1815 có nhiệm vụ đổi dạng sóng sine ra vuông, rồi đưa vào ngắt ngoài INT0 hoặc INT1
8051 dùng 2 ngắt: TIMER mode 8bit autoreload, tạo ra 1s.
Và một ngắt ngoài INT0 hoặc INT1 để đếm xung, số xung này lưu trong 1 thanh ghi 8 bit-->Max 256 xung trong 1s. Như vậy cái Máy đo của chúng ta sẽ đo được một tần số lớn nhất là: Max_f=256Hz( tần số là số xung nhận được trong 1s).
Latency của 8051 hình như 7-->9chu kỳ lệnh nên ko quan tâm đến sai số nữa, tạm bỏ qua ở giải đo này( chưa cần).
Sau đó cho hiển thị lên 3 con LED 7 đoạn.
Lưu ý: Dùng ngắt đó nha, nên chuyện quyét LED xem như ko có và do đó mục đích chính của 8051 trong chuyện này vẫn là đo tần số.
Nhưng dùng đến 2 ngắt và điều cần quan tâm nữa là thời gian LATENCY của vi điều khiển nếu bạn quan tâm đến sai số và tần số cao!
Một mạch thí nghiệm đơn giản để làm một máy đo tần số điện lưới là:
Dùng một tranisistor C1815 + 8051
C1815 có nhiệm vụ đổi dạng sóng sine ra vuông, rồi đưa vào ngắt ngoài INT0 hoặc INT1
8051 dùng 2 ngắt: TIMER mode 8bit autoreload, tạo ra 1s.
Và một ngắt ngoài INT0 hoặc INT1 để đếm xung, số xung này lưu trong 1 thanh ghi 8 bit-->Max 256 xung trong 1s. Như vậy cái Máy đo của chúng ta sẽ đo được một tần số lớn nhất là: Max_f=256Hz( tần số là số xung nhận được trong 1s).
Latency của 8051 hình như 7-->9chu kỳ lệnh nên ko quan tâm đến sai số nữa, tạm bỏ qua ở giải đo này( chưa cần).
Sau đó cho hiển thị lên 3 con LED 7 đoạn.
Lưu ý: Dùng ngắt đó nha, nên chuyện quyét LED xem như ko có và do đó mục đích chính của 8051 trong chuyện này vẫn là đo tần số.
Comment