I.GIỚI THIỆU Đề tài của chúng em là :Điều khiển thiết bị điện dùng hồng ngoại Mục đích là tạo ra một modul : + Nhận tín hiệu hồng ngoại + Giải mã tín hiệu hồng ngoại nhận được + Đưa ra
Trang 1
BÁO CÁO PROJECT II
ĐỀ TÀI ĐIỀU KHIỂN THIẾT BỊ ĐIỆN DÙNG
HỒNG NGOẠI
Trang 2MỤC LỤC
I GIỚI THIỆU
II NỘI DUNG
III KẾT LUẬN
IV TÀI LIỆU THAM KHẢO
Trang 3I.GIỚI THIỆU
Đề tài của chúng em là :Điều khiển thiết bị điện dùng hồng ngoại
Mục đích là tạo ra một modul : + Nhận tín hiệu hồng ngoại
+ Giải mã tín hiệu hồng ngoại nhận được + Đưa ra lệnh để điều khiển thiết bị
II.NỘI DUNG
Sơ đồ khối của modul đươc chúng em thiết kế như sau:
Thiết kế cụ thể từng phần như sau:
+Nguồn nuôi 5V:
Trang 4
Hai tụ 22 uF có tác dụng làm ổn định nguồn 1 chiều đầu vào và đầu ra của
7805, giúp tăng chất lượng nguồn, qua đó giúp hệ thống hoạt động ổn định Kết quả thực nghiêm khi đo trên Oxilo đã chứng minh sự ổn định này
+Nguồn phát hồng ngoại được dùng là Điều khiển TiVi SONY
Nhóm em đặt ra các vấn đề:
• Hồng ngoại la gì?
• Dùng hồng ngoại truyền thông tin như thế nào?
• Tín hiệu từ Điều khiển của TiVi SONY như thế nào?
*Hồng ngoại la gì?
Hồng ngoại là những sóng điện từ tần số thấp hơn và lân cận tần số sóng ánh sang
Hồng ngoại có thể phát ra từ nhiều nguồn: cơ thể sống, bếp than, cốc nước nóng, mặt trời…
Trang 5Ví dụ : Mắt người cảm nhận được tần số ánh sang
Tai người cảm nhận được tần số 20-20000 Hz
Da người cảm nhận dược tần số hồng ngoại
** Dùng hồng ngoại truyền thông tin như thế nào?
Một xung vuông chu kỳ xấp xỉ 27s đưa vào cực bazơ của Transistor có thể điều khiển 1 LED hồng ngoại để truyền đi
Bạn có thể bật hoặc tắt tần số này tại đầu phát , đầu thu sẽ chỉ ra khi nào đầu phát là bật hay tắt
*** Tín hiệu từ điều khiển TiVi SONY như thế nào?
Để tránh việc một điều khiển từ xa Philip có thể thay đổi kênh của một TV Sony , người ta sử dụng các cách mã hoá khác nhau cho cùng một khoảng
Trang 6tần số đó Chúng sử dụng các kiểu tổ hợp bít khác nhau để mã hoá việc truyền dữ liệu và tránh nhiễu
Sony sử dụng loại mã hóa độ rộng bít, đây là kiểu mã hoá đơn giản cho việc giải mã
Hãy xem xét khoảng thời gian nhỏ T cỡ 600s Mỗi bit truyền đi là sự kết hợp của -T+T cho bít “0” và -T+2T cho bít ”1” Vì vậy bit 0 có chiều dài 1200s và bit 1 có chiều dài 1800s
Mức lên (+T) trong tín hiệu trên có nghĩa là hồng ngoại được truyền đi , mức xuống (-T) nghĩa là không có
Để tiết kiệm Pin, hầu hết các nhà sản xuất khoảng 5/6 thậm chí 3/4 so với
độ rộng xung như lý thuyết Bằng cách này, pin 500 giờ có thể sử dụng được tới 600giờ (5/6) hoặc 800 giờ (3/4) Một số nhà sản xuất khác không quan tâm lắmvề vấn đề này Họ tăng cường hiệu quả truyền tín hiệu bằng cách mở rộng 1 chút khoảng thời gian sóng mang 36 KHz tích cực và rút nhắn khoảng thời gian kia Như vậy tín hiệu tử REMOTE SONY có dạng sóng như sau:
Trang 7Ta thấy:
- Phần đầu tiên được truyền đi gọi là Header( mào đầu) , nó cũng được coi là
bit bắt đầu (START bit ) , phần mào đầu có độ rộng 3T hay 1800s
- Tiếp theo phần Header bạn sẽ thấy 12 bit liên tiếp được giải điều chế như
sau:
500s im lặng + 700s hồng ngoại = bit 0
500s im lặng +1300s hồng ngoại = bit 1
Bit đầu tiên sau bit START là bit LSB, ta đặt tên nó là bit B0, bit cuối cùng
sẽ là B11
Trang 8B0 -B6 : 7 bit mã lệnh
B7 -B11 : 5 bit địa chỉ
Trong hình vẽ trên , địa chỉ là 02H, mã lệnh là 16H Có 32 khả năng địa chỉ
và 128 lệnh Toàn bộ thời gian truyền đi của khung có thể thay đổi theo thời gian vì độ rộng của bit 1 > độ rộng của bit 0 Nếu bạn giữ nút bấm, khung dữ liệu sẽ lặp lại sau mỗi 25ms Nếu bạn sử dụng mắt nhận hồng ngoại có sẵn trên thị trường , tất cả dạng sóng trên sẽ bị đảo lại như sau:
Để thu và giải mã được tín hiệu từ REMOTE SONY, thực tế ta không cần thu toàn bộ 12 bit mã hoá Ta chỉ cần thu 7 bit COMMAND và có thể bỏ qua 5bit địa chỉ, bởi với cùng một điều khiển thì tất cả các nút bấm đều phát ra
mã địa chỉ như nhau, chỉ khác nhau mã lệnh Mã địa chỉ được SONY sử dụng để phân biệt giữa các MODEL REMOTE SONY khác nhau
Trang 9MÃ LỆNH ĐIỀU KHIỂN TV SONY
Phím Tín hiệu tới Mã lệnh (HEXA)
+Khối nhận tín hiệu, và giải mã tín hiệu dùng loại LED thu bán sẵn trên thị trường.Lắp LED thu trong mạch như sau:
Trang 10
+Khối điều khiển và thực thi dùng vi xử lí 8051, va rơle điện tử 5V Mạch 8051 lắp theo sơ đồ sau:
8051 co 4 port 8 bits, các port và các bits có thể độc lập vào ra
Em chọn chân P3.3(13) làm chân nhận dữ liệu từ LED thu:
Trang 11
Đo mức điện áp từ chân này, thuật toán như sau:
1 Thiết lập thanh ghi A = 01000000B
2 Khởi đầu bằng cách chờ tín hiệu xuống – Đây sẽ là bit START
3 Chờ cho tín hiệu lên - Đây là khởi đầu của bit
4 Chờ tín hiệu đi xuống
5 Chờ khoảng 1000s
6 Đo mức tín hiệu
7 Nếu mức tí n hiệu là mức cao (UP) –Bit nhận được là bit 0
- Thiết lập bit nhớ C = 0 (bit mã lệnh thu được)
- Quay phải có nhớ A, như vậy C sẽ được gửi vào MSB của A, LSB của A gửi vào C
- Ban đầu, A = 01000000B thì sau khi quay ta có C = 0 và MSB của A là bit đầu tiên của mã lệnh
- Như vậy sau 7 lần quay thì C = 1 và 7 bít bên trái của A sẽ chứa mã lệnh
- Kiểm tra bit nhớ C, nếu C = 1 nhảy tới bước 9 , nếu C = 0 quay lại bước 3
8 Nếu mức tí n hiệu là mức thấp (DOWN) – Bit nhận được là 1
- Thiết lập Bit nhớ C = 1 (bit mã lệnh thu được)
- Quay phải có nhớ A
- Kiểm tra bit nhớ C, nếu C = 1 nhảy tới bước 9 , nếu C = 0 quay lại bước 3
9 7 bit mã lệnh chứa trong 7 bit trái của A : A =
D6D5D4D3D2D1D00
- Quay phải A được 7 bít phải của A chứa mã lệnh : A = 0D6D5D4D3D2D1D0
Code chương trình:
Version 1.0
ORG 00h
Trang 12MOV P1,#0
MOV P2,#00000111B
LCALL LONG_DELAY
LJMP MAIN
ORG 40H
MAIN:
SETB P3.3
MOV A,#01000000B
RP1: JB P3.3, RP1
RP2: JNB P3.3, RP2
RP3: JB P3.3, RP3
LCALL DELAY
MOV C,P3.3
JC BIT0
SETB C
RRC A
JC END_SIGNAL
SJMP RP2
BIT0:
CLR C
Trang 13RRC A
JC END_SIGNAL
SJMP RP3
END_SIGNAL:
LCALL LONG_DELAY
RR A
MOV P1, A
KEY_1:
CJNE A,#00000000B,KEY_2
; -KEY = 1 -
CPL P2.0
SJMP MAIN
; -
KEY_2:
CJNE A,#00000001B,KEY_3
; -
; -KEY = 2 -
CPL P2.1
SJMP MAIN
; -
KEY_3:
CJNE A,# 00000010B,KEY_4
Trang 14; -
; -KEY = 3 -
CPL P2.2
SJMP MAIN
; -
KEY_4:
CJNE A,#00000011b,KEY_5
; -
; -KEY = 4 -
CPL P2.3
SJMP MAIN
; -
KEY_5:
CJNE A,# 00000100b,KEY_6
; -
; -KEY = 2 -
CPL P2.4
LJMP MAIN
; -
KEY_6:
CJNE A,# 00000101B,KEY_7
; -
; -KEY = 6 -
CPL P2.5
LJMP MAIN
; -
Trang 15KEY_7:
CJNE A,#00000110B,KEY_8
; -
; -KEY = 7 -
CPL P2.6
LJMP MAIN
; -
KEY_8:
CJNE A,#00000111B,OTHER_KEY
; -
; -KEY = 8 -
CPL P2.7
LJMP MAIN
; -
OTHER_KEY:
LJMP MAIN
; -
; Chuong trinh con
; -
DELAY: ;tre 1ms
PUSH 07h ; save R7 to stack
MOV R7, #250d ; 250 decimal to R7 to count 250 loops
LOOP_1_MILLI: ; loops 250 times
NOP ; inserted NOPs to cause delay
NOP ;
DJNZ R7, LOOP_1_MILLI ; decrement R7, if not zero loop back
Trang 16POP 07h ; restore R7 to original value
RET ; return from subroutine
; -
LONG_DELAY:
MOV R5,#50
REPEAT:
MOV R6,#255
HERE:
DJNZ R6,HERE
DJNZ R5,REPEAT
RET
END
; - Version1.1, 1.2 chạy ổn định hơn nhiều ,do em đã khắc phục được lỗi để chương trình chính vào vùng vector ngắt của 8051
Hiện nay,mạch đang chạy theo chương trình version 1.2
Phần thiết kế mạch in cũng mất khá nhiều thời gian tìm hiểu của thành viên
III.Kết luận
Qua Project 2 chúng em đã học được học thêm nhiều kĩ năng:làm mạch, vẽ mạch, lập trình, phát triển ý tưởng…
Em xin chân thành cám ơn Thầy Đặng Quang Hiếu đã tận tình chỉ bảo chúng em hoàn thành bài tập lớn này
Trang 17IV.TÀI LIỆU THAM KHẢO
1.Lập trình Asemblly cho 8051-Nguyễn Tăng Cường,Phan Quốc Thắng 2.Kế thừa Chương trình con Delay 1ms, 1s của một nhóm nghiên cứu nước ngoài