Bạn tôi và tôi muốn thiết kế một bộ điều khiển từ xa học tập phổ quát, như cái này , cho mục đích học tập. Những gì chúng tôi muốn làm về cơ bản là lưu trữ và phát lại các xung hồng ngoại.
Chúng tôi muốn phát hiện các tín hiệu 36kHz, 38kHz và 40kHz. Tín hiệu 40kHz sẽ có chu kỳ 25 s.
Chúng tôi muốn sử dụng bộ vi điều khiển PIC 8 bit, hiện tại chúng tôi đã chọn PIC16F616, nó sẽ chạy ở bộ dao động tinh thể tốc độ cao 20 MHz. Chúng tôi có hai lựa chọn có sẵn:
- Sử dụng
Interrupt On Change
mô-đun. - Sử dụng chế độ chụp của mô-đun ĐCSTQ.
Tùy chọn đầu tiên sẽ như sau:
Giả sử một thanh ghi được đặt là : unsigned char _10_us = 0;
. Đăng ký này sẽ giữ thời gian. Mô-đun TMR2 với thanh ghi thời gian được đặt để tạo ngắt trong mỗi 10 giây. Khi một ngắt xảy ra, nó sẽ tăng đăng ký và thoát. Điều này sẽ cho thời gian tối đa 2,55msec. Nếu cần thêm thời gian đo, các thanh ghi bổ sung như có thể được xác định và tăng lên khi cần thiết._10_us
_1_ms
Bây giờ, mỗi khi một ngắt được tạo bởi bất kỳ loại thay đổi nào (cao đến thấp hoặc thấp đến cao), chương trình sẽ lưu ý thời gian hiện tại, đó là giá trị của _10_us
thanh ghi. Sau một thời gian, khi ngắt tiếp theo được tạo, chương trình sẽ trừ đi giá trị đã lưu từ thanh _10_us
ghi, và do đó sẽ là thời gian được thực hiện trong thời gian đó, với đơn vị là 10 giây.
Tùy chọn này làm tôi gãi đầu; Gián đoạn TMR2 sẽ xảy ra khoảng 50 hướng dẫn. Xử lý ngắt sẽ mất khoảng 20 hướng dẫn. Tôi còn lại 30 hướng dẫn để tính toán và lưu thời gian vào một mảng. Phương pháp này sẽ làm việc?
Tùy chọn thứ hai sẽ như sau:
Thiết lập chế độ chụp của mô-đun ĐCSTQ để nó sẽ tạo ra một ngắt khi xảy ra một sự kiện (từ cao đến thấp) trên chân của ĐTC1. Trong thói quen ngắt, nó sẽ đặt cờ để một tác vụ trong chương trình có thể tính toán (nếu cần) và lưu giá trị của CCPR1H (có thể sẽ không cần thiết) và CCPR1L. Sau đó, chúng tôi sẽ thay đổi cấu hình của chế độ chụp để nó sẽ kích hoạt ngắt khi xảy ra cạnh từ thấp đến cao. Và sau đó nó sẽ chờ sự kiện tiếp theo. Tôi không thể ước tính hiệu suất của phương pháp này vì tôi chưa bao giờ sử dụng nó.
Một lựa chọn khác?
Chúng ta có thể sử dụng IC giải mã hồng ngoại như sê-ri TSOP17xx . Điều đó sẽ giải quyết hoàn toàn vấn đề của chúng tôi. Tuy nhiên một số câu hỏi đến trong tâm trí.
Yêu cầu khoảng cách đọc của chúng tôi không nhiều; 1 mét (~ 3 feet). Nếu chúng ta chọn TSOP1738 có nghĩa là hoạt động ở tần số 38kHz, thì nó sẽ hoạt động tốt như thế nào với tín hiệu 36kHz và 40kHz?
Trang 4 của biểu dữ liệu của loạt TSOP17xx hiển thị biểu đồ "Sự phụ thuộc tần số của phản hồi". Theo như chúng tôi hiểu;
- 40kHz, tức là ~ 1.053 của 38kHz, sẽ cho độ nhạy tương đối ~ 0,6.
- 36kHz, tức là ~ 0,95 của 38kHz, sẽ cho độ nhạy tương đối ~ 0,65.
Những giá trị này nghĩa là gì? Chúng tôi có thể sử dụng TSOP1738 và ổn không?