Custom Search



Nơi bạn đến là nơi tôi bắt đầu, nơi tôi qua sẽ là nơi bạn đến...

Wednesday, October 24, 2012

Mạch điều khiển từ xa

Mạch điều khiển từ xa
Điều khiển từ xa phát ra các bit 0 va 1. Tuy nhiên nó không thể đưa lên LED hồng ngoại và phát trực tiếp các bit này được (không phát đi xa được). Vì vậy nó cần phải có 1 sóng mang với tần số khoảng 36KHz (giống như trong Radio ấy).



Để làm được bộ phát như trên có 2 cách:
- Tạo ra 1 tần số 36 KHz ổn định làm sóng mang (Dùng NE555)
(36KHz) AND (Bit 0,1) = Output_Signal
- Cách 2 đơn giản hơn. Ra chợ mua 1 cái đk về dùng

Bộ thu là 1 con IC 3 chân(VCC--GND--OUTPUT). Nó có nhiệm vụ nhận tín hiệu hồng ngoại yếu ớt từ đk phát ra, khuyêch đại tín hiệu, tách sóng mang để lọc ra những bít 0 và 1.



Mỗi 1 lần phát, đk sẽ phát đi 1 chuỗi các bít 0 và 1. IC nhận cũng sẽ nhận đúng số lượng và đúng thứ tự các bit này.



Sau khi nhân được chuỗi các bit, nhiệm vụ của người lập trình là giải mã chuỗi bit này.
Mỗi loại đktx sẽ tuân theo 1 chuẩn mã khác nhau (RC5 là 1 chuẩn phổ biến).
Trong chuỗi bit đó người ta sẽ phân ra làm 2 phần:
- phần 1 là địa chỉ để phân biệt các thiết bị khác nhau(cùng là hãng SONY nhưng đktx của TV không làm ảnh hưởng đến đầu DVD chẳng hạn)
- phần 2 là phần lệnh (lúc này sẽ chỉ rõ lệnh phát ra là gì khi ta ấn nút trên đk)



Cuối cùng dựa vào lệnh đã nhận. Ta chỉ việc sử dụng thôi. Ví dụ ấn nút số 1 trên đktx thì sẽ nhận được số 1, ta bật cái quạt. Ấn số 2 ta nhận đc số 2, ta bật cái bóng điện v.v..



Phần cứng gồm các nút bấm, các đèn LED báo, cách ly quang MOC3020 để điều khiển triac MAC97. Các triac này để đóng/mở việc cấp nguồn cho cuộn dây của quạt (quạt có 3 số --> 3 cuộn dây --> 3 triac)



Công việc đầu tiên của lập trình là làm sao để thu được 12 bit mà đktx đã phát đi. Chân OUTPUT của con IR receiver nối với chân ngắt ngoài INT0 của 89C2051.
Khi có ngăt ngoài xảy ra (tức là đã có tín hiệu phát ra từ bộ đktx) chương trình sẽ dừng các việc đang làm và nhảy vào trình phục vụ ngắt.
Chương trình ngắt sẽ làm gì?
- Việc đầu tiên khi nhảy vào ngắt là chờ cho bit START về 0
- Đọc bít ngay sau đó
- Lưu vào vị trí bit đầu tiên của 2 byte (2 byte nằm trong 1 biến: int receiver;)
- Dịch bít này sang trái 1 lần
- Đọc bít tiếp theo......
- Nhận đủ 12 bit
- Lọc ra 7 bit đầu để lấy ra lệnh (tức là đktx vừa bấm nút nào?)
- Tra trong bảng lệnh để thực hiện 1 công việc nào đó

Post a Comment