2.3.1. Giới thiệu
Họ vi điều khiển MCS-51 do Intel sản xuất đầu tiên vào năm 1980 là các IC thiết kế cho các ứng dụng hướng điều khiển. Các IC này chính là một hệ thống vi xử lý hoàn chỉnh bao gồm các các thành phần của hệ vi xử lý: CPU, bộ nhớ,các mạch giao tiếp, điều khiển ngắt. MCS-51 là họ vi điều khiển sử dụng cơ chế CISC (Complex Instruction Set Computer), có độ dài và thời gian thực thi của các lệnh khác nhau. Tập lệnh cung cấp cho MCS-51 có các lệnh dùng cho điều khiển xuất / nhập tác động đến từng bit. MCS-51 bao gồm nhiều vi điều khiển khác nhau, bộ vi điều khiển đầu tiên là 8051 có 4KB ROM, 128 byte RAM và 8031, không có ROM nội, phải sử dụng bộ nhớ ngoài. Sau này, các nhà sản xuất khác như Siemens, Fujitsu, … cũng được cấp phép làm nhà cung cấp thứ hai. MCS-51 bao gồm nhiều phiên bản khác nhau, mỗi phiên bản sau tăng thêm một số thanh ghi điều khiển hoạt động của MCS-51.
2.3.2. Vi điều khiển AT89S52
AT89S52 là vi điều khiển do Atmel sản xuất, chế tạo theo công nghệ CMOS có các đặc tính như sau:
- 8 KB PEROM (Flash Programmable and Erasable Read Only Memory), có khả năng tới 1000 chu kỳ ghi xoá
- Tần số hoạt động từ: 0Hz đến 33 MHz - 3 mức khóa bộ nhớ lập trình
- 256 Byte RAM nội.
Hình 2.23 – Định dạng của gói tin I2C (Nguồn: DS1307 datasheet)
35 - 4 Port xuất /nhập I/O 8 bit.
- 3 bộ Timer/counter 16 Bit. - 6 nguồn ngắt.
- Giao tiếp nối tiếp điều khiển bằng phần cứng. - 64 KB vùng nhớ mã ngoài
- 64 KB vùng nhớ dữ liệu ngoài. - Cho phép xử lý bit.
- 210 vị trí nhớ có thể định vị bit.
- 4 chu kỳ máy (4 µs đối với thạch anh 12MHz) cho hoạt động nhân hoặc chia. - Có các chế độ nghỉ (Low-power Idle) và chế độ nguồn giảm (Power-down).
2.3.3. Sơ đồ
Port 0 là port có 2 chức năng ở các chân 32 – 39 của AT89C51:
Chức năng IO (xuất / nhập): dùng cho các thiết kế nhỏ. Tuy nhiên, khi dùng chức năng này thì Port 0 phải dùng thêm các điện trở kéo lên (pull-up), giá trị của điện trở phụ thuộc vào thành phần kết nối với Port. Khi dùng làm ngõ ra, Port 0 có thể kéo được 8 ngõ TTL. Khi dùng làm ngõ vào, Port 0 phải được set mức logic 1 trước đó.
Chức năng địa chỉ / dữ liệu đa hợp: khi dùng các thiết kế lớn, đòi hỏi phải sử dụng bộ nhớ ngoài thì Port 0 vừa là bus dữ liệu (8 bit) vừa là bus địa chỉ (8 bit thấp).
Hình 2.24 – Sơ đồ chân AT89S52 (Nguồn:AT89S52 datasheet)
36 Ngoài ra khi lập trình cho AT89C51, Port 0 còn dùng để nhận mã khi lập trình và xuất mà khi kiểm tra (quá trình kiểm tra đòi hỏi phải có điện trở kéo lên).
Port1 (chân 1 – 8) chỉ có một chức năng là IO, không dùng cho mục đích khác (chỉ trong 8032/8052/8952 thì dùng thêm P1.0 và P1.1 cho bộ định thời thứ 3). Port 1 đã có điện trở kéo lên nên không cần thêm điện trở ngoài. Port 1 có khả năng kéo được 4 ngõ TTL và còn dùng làm 8 bit địa chỉ thấp trong quá trình lập trình hay kiểm tra. Khi dùng làm ngõ vào, Port 1 phải được set mức logic 1 trước đó.
Port 2 (chân 21 – 28) là port có 2 chức năng:
Chức năng IO (xuất / nhập): có khả năng kéo được 4 ngõ TTL.
Chức năng địa chỉ: dùng làm 8 bit địa chỉ cao khi cần bộ nhớ ngoài có địa chỉ 16 bit. Khi đó, Port 2 không được dùng cho mục đích IO. Khi dùng làm ngõ vào, Port 2 phải được set mức logic 1 trước đó. Khi lập trình, Port 2 dùng làm 8 bit địa chỉ cao hay một số tín hiệu điều khiển.
Port 3 (chân 10 – 17) là port có 2 chức năng:
Chức năng IO: có khả năng kéo được 4 ngõ TTL. Khi dùng làm ngõ vào, Port 3 phải được set mức logic 1 trước đó.
Chức năng giao tiếp: Dùng để giao tiếp UART với máy tính. Nguồn:
Chân 40: VCC = 5V ± 20% Chân 20: GND
PSEN (Program Store Enable):
PSEN (chân 29) cho phép đọc bộ nhớ chương trình mở rộng đối với các ứng dụng sử dụng ROM ngoài, thường được nối đến chân OC (Output Control) của ROM để đọc các byte mã lệnh. PSEN sẽ ở mức logic 0 trong thời gian AT89S52 lấy lệnh.Trong quá trình này, PSEN sẽ tích cực 2 lần trong 1 chu kỳ máy. Mã lệnh của chương trình được đọc từ ROM thông qua bus dữ liệu (Port0) và bus địa chỉ (Port0 + Port2). Khi 89S52 thi hành chương trình trong ROM nội, PSEN sẽ ở mức logic 1. ALE/PROG (chân 30) cho phép tách các đường địa chỉ và dữ liệu tại Port 0 khi truy xuất bộ nhớ ngoài. ALE thường nối với chân Clock của IC chốt (74373, 74573). Các xung tín hiệu ALE có tốc độ bằng 1/6 lần tần số dao động trên chip và có thể được dùng làm tín hiệu clock cho các phần khác của hệ thống. Xung này có thể cấm bằng cách set bit 0 của SFR tại địa chỉ 8Eh lên 1. Khi đó, ALE chỉ có tác dụng khi dùng lệnh MOVX hay MOVC. Ngoài ra, chân này còn được dùng làm ngõ vào xung lập trình cho ROM nội ( PROG).
EA /VPP (External Access) :
EA (chân 31) dùng để cho phép thực thi chương trình từ ROM ngoài. Khi nối chân 31 với Vcc, AT89S52 sẽ thực thi chương trình từ ROM nội (tối đa 8KB), ngược lại thì thực thi từ ROM ngoài (tối đa 64KB).
37 Ngoài ra, chân EA được lấy làm chân cấp nguồn 12V khi lập trình cho ROM(89S52).
ST (Reset):
RST (chân 9) cho phép reset AT89S52 khi ngõ vào tín hiệu đưa lên mức 1 trong ít nhất là 2 chu kỳ máy.
X1,X2:
Ngõ vào và ngõ ra bộ dao động, khi sử dụng có thể chỉ cần kết nối thêm thạch anh và các tụ. Tần số thạch anh thường sử dụng cho AT89S52 là 12Mhz.
2.3.4. Tổ chức bộ nhớ
2.4. CÁC CHUẨN DÙNG TRONG ĐIỀU KHIỂN BẰNG HỒNG NGOẠI
Trong nhiều ứng dụng điều khiển thiết bị điện thì điều khiển từ xa là cái mà người ta hay dùng nhất trong hiện nay bởi vì tính linh hoạt và tiện của nó! Điều khiển từ xa chúng ta nhìn thấy nhiều nhất là cái điều khiển từ xa của tivi bây giờ chúng ta muốn nó điều khiển các thiết bị khác như là đèn, quạt, mợ-tơ bơm nước, TV… bằng sóng hồng ngoại thì cái này không khác mấy so với cái điều khiển tivi của chúng ta nhưng chúng ta phải cách ly được phần điều khiển và công suất.
Ánh sáng hồng ngoại (tia hồng ngoại) là ánh sáng không thể nhìn thấy được bằng mắt thường, có bước sóng khoảng từ 0.86μm đến 0.98μm. Tia hồng ngoại có vận tốc truyền bằng vận tốc ánh sáng.
Tia hồng ngoại có thể truyền đi được nhiều kênh tín hiệu. Nó được ứng dụng rộng rãi trong công nghiệp. Lượng thông tin có thể đạt 3 mega bit /s. Lượng thông tin được truyền đi với ánh sáng hồng ngoại lớn gấp nhiều lần so với song điện từ mà người ta vẫn dùng. Tia hồng ngoại dễ bị hấp thụ, khả năng xuyên thấu kém. Trong điều khiển từ xa bằng tia hồng ngoại, chùm tia hồng ngoại phát đi hẹp, có hướng, do đó khi thu phải đúng hướng. Sóng hồng ngoại có những đặc tính quan trọng giống
Hình 2.25 – Tổ chức bộ nhớ AT89S52 (Nguồn: AT89S52 datasheet)
38 như ánh sáng ( sự hội tụ qua thấu kính, tiêu cự …). Ánh sáng thường và ánh sáng hồng ngoại khác nhau rất rõ trong sự xuyên suốt qua vật chất. Có những vật chất ta thấy nó dưới một màu xám đục nhưng với ánh sáng hồng ngoại nó trở nên xuyên suốt. Vì vật liệu bán dẫn “trong suốt” đối với ánh sáng hồng ngoại, tia hồng ngoại không bị yếu đi khi nó vượt qua các lớp bán dẫn để đi ra ngoài.
Nguyên lý thu phát hồng ngoại: việc thu hoặc phát bức xạ hồng ngoại bằng nhiều phương tiện khác nhau, có thể nhận tia hồng ngoại từ ánh sáng mặt trời. Nhiều thứ có thể phát tia hồng ngoại như: lò bức xạ, lò điện, đèn, cơ thể người,… Để có thể truyền tia hồng ngoại tốt phải tránh xung nhiễu bắt buộc phải dùng mã phát và nhận ổn định để xác định xem đó là xung truyền hay nhiễu.Tần số làm việc tốt nhất từ 30 KHz đến 60 KHz, nhưng thường sử dụng khoảng 36 KHz. Ánh sáng hồng ngoại truyền 36 lần/1s khi truyền mức 0 hay mức 1. Dùng tần số 36 KHz để truyền tín hiệu hồng ngoại thì dễ, nhưng khó thu và giải mã phải sử dụng bộ lọc để tín hiệu ngõ ra là xung vuông, nếu ngõ ra có xung nghĩa là đã nhận được tín hiệu ở ngõ vào.
Khối chọn chức năng và khối mã hóa: Khi người sử dụng bấm vào các phím chức năng để phát lệnh yêu cầu của mình, mổĩ phím chức năng tương ứng với một số thập phân. Mạch mã hóa sẽ chuyển đổi thành mã nhị phân tương ứng dưới dạng mã lệnh tín hiệu số gồm các bít 0 và 1. Số bit trong mã lệnh nhị phân có thể là 4 bit hay 8 bit… tùy theo số lượng các phím chức năng nhiều hay ít.-Khối dao động có điều kiện: Khi nhấn 1 phím chức năng thì dồng thời khởi động mạch dao động tạo xung đồng hồ, tần số xung đồng hồ xác định thời gian chuẩn của mỗi bit.-Khối chốt dữ liệu và khối chuyển đổi song song ra nối tiếp: Mã nhị phân tại mạch mã hóa sẽ được chốt để đưa vào mạch chuyển đổi dữ liệu song song ra nối tiếp. Mạch chuyển đổi dữ liệu song song ra nối tiếp được điều khiển bởi xung đồng hồ và mạch định thời nhằm đảm bảo kết thúc đúng lúc việc chuyển đổi đủ số bit của một mã lệnh.- Khối điều chế và phát FM: mã lệnh dưới dạng nối tiếp sẽ được đưa qua mạch điều chế và phát FM để ghép mã lệnh vào sóng mang có tần số 38Khz đến 100Khz, nhờ sóng mang cao tần tín hiệu được truyền đi xa hơn, nghĩa là tăng cự ly phát. Khối thiết bị phát : là một LED hồng ngoại. Khi mã lệnh có giá trị bit =’1’ thì LED phát hồng ngoại trong khoảng thời gian T của bit đó. Khi mã lệnh có giá trị bit=’0’ thì LED không sáng. Do đó bên thu không nhận được tín hiệu xem như bit = ‘0’ .
Phần thu:
Khối thiết bị thu: Tia hồng ngoại từ phần phát được tiếp nhận bởi LED thu hồng ngoại hay các linh kiện quang khác.
Khối khuếch đại và Tách sóng: trước tiên khuếch đại tính hiệu nhận rồiđưa qua mạch tách sóng nhằm triệt tiêu sóng mang và tách lấy dữ liệu cần thiết là mã lệnh.- Khối chuyển đổi nối tiếp sang song song và Khối giải mã: mã lệnhđược đưa vào mạch chuyển đổi nối tiếp sang song song và đưa tiếp qua khối giải mã ra thành số thập phân tương ứng dưới dạng một xung kích tại ngõ ra tương ứng để kích mở mạch điều khiển.
39 Tần số sóng mang còn được dùng để so pha với tần số dao động bênphần thu giúp cho mạch thu phát hoạt động đồng bộ, đảm bảo cho mạch tách sóng và mạch chuyển đổi nối tiếp sang song song hoạt động chính xác
2.4.1. Chuẩn Sony
Tần số sóng mang được chia từ 480 Khz cho 12 là 40Khz, và độ rộng xung là 1/3 chu kỳ. Khi khung dữ liệu được phát lập lại, chu kỳ khung là 45ms hoặc chu kỳ bit là 150. Một khung dữ liệu bao gồm Syn pulse, 7 bit dữ liệu và 5 bit mã người dùng.
Hình 2.26 – Chuẩn sony
40 Data Item Time (sec.) Time (no. of period)
Syn pulse 2.4ms 8T
Data off time 0.61ms 2T
Data on time (0) 0.59ms 2T
Data on time (1) 1.19ms 4T
Data period (0) 1.2ms 4T
Data period (1) 1.8ms 6T
Frame output cycle 45ms 150T
T=0.3ms
2.4.2. Chuẩn Matsushita
Tần số sóng mang được chia từ 440 Khz cho 12 là 36.6Khz, và độ rộng xung là 1/2 chu kỳ. Khi khung dữ liệu được phát lập lại, chu kỳ khung là 104.7ms hoặc chu kỳ bit là 240. Một khung dữ liệu bao gồm Syn pulse 6 bit mã người dùng, 6 bit dữ liệu, đảo của 6 bit mã người dùng, đảo của 6 bit dữ liệu.
Bảng 2.4 – Các thông số của chuẩn Sony
Hình 2.27 – Chuẩn Matsushita
41 Data Item Time (sec.) Time (no. of period)
Syn pulse on time 3.49ms 8T
Syn pulse off time 3.49ms 8T
Data on time (0) 0.86ms 2T
Data off time (0) 0.88ms 2T
Data on time (1) 0.86ms 2T
Data off time (1) 2.63ms 6T
Data period (0) 1.74ms 4T
Data period (1) 3.49ms 8T
Frame output cycle 104.7ms 240T
T=0.436ms
2.4.3. Chuẩn NEC
Tần số sóng mang được chia từ 455 Khz cho 12 là 38Khz, và độ rộng xung là 1/3 chu kỳ. Khi khung dữ liệu được phát lập lại, chu kỳ khung là 107.9ms hoặc chu kỳ bit là 186. Một khung dữ liệu bao gồm Syn pulse 8 bit mã người dùng, 8 bit dữ liệu, đảo của 8 bit mã người dùng, đảo của 8 bit dữ liệu.
Bảng 2.5 – Các thông số của chuẩn Matsushita
Hình 2.28 – Chuẩn NEC
42 Data Item Time (sec.) Time (no. of period)
Syn pulse on time 8.993ms 15.5T
Syn pulse off time 4.642ms 8T
Syn pulse off time 2.321ms 4T
(subsequent frame) 0.561ms T
Data on time (0) 0.598ms T
Data off time (0) 0.561ms T
Data on time (1) 1.7582.63ms 3T
Data off time (1) 1.160ms 2T
Data period (0) 2.321ms 4T
Data period (1) 107.9ms 186T
T=0.58ms
2.4.4. Chuẩn RC5
Tần số sóng mang được chia từ 432 Khz cho 12 là 36Khz, và độ rộng xung là 1/3 chu kỳ. Khi khung dữ liệu được phát lập lại, chu kỳ khung là 113.7ms hoặc chu kỳ bit là 256. Một khung dữ liệu bao gồm 2 bit Syn pulse, 1 bit control, 5 bit mã người dùng, 6 bit dữ liệu.
Bảng 2.6 – Các thông số của chuẩn NEC
Hình 2.29 – Chuẩn RC5
43 Data Item Time (sec.) Time (no. of period)
Data off time 0.888ms 2T
Data on time 0.888ms 2T
Data period (0) 3.552ms 4T
Data period (1) 3.552ms 4T
Frame output cycle 113.7ms 256T
T=0.444ms
44
CHƯƠNG 3: THIẾT KẾ PHẦN CỨNG VÀ GIẢI THUẬT PHẦN MỀM
3.1. SƠ ĐỒ PHẦN CỨNG TỔNG QUÁT
Phần cứng bao gồm các khối sau:khối nhận tín hiệu hồng ngoại, khối Zigbee, khối nguồn, khối RTC, khối LED 7 đoạn, khối vi điều khiển, khối điều khiển công suất, khối mở rộng port và khối hiển thị.
Hình 3.1 – Sơ đồ phần cứng tổng quát R31 p2.6 U7 MOC3020 1 2 6 4 p1.3 0 p2.5 5v R22 p1.2 Y2 12MHz L2 5k6x4 Q5 R17 330 p 3 .5 p2.1 U9 MOC3020 1 2 6 4 p0.3 0 U3 7805 1 3 2 VIN VOUT G N D L6 R42 p1.7 U6 MOC3020 1 2 6 4 12v C1815x8 Q23 C10 CAPACITOR 5v p3.4 C4 33p 12v Q24 BTA12 p2.7 0 Q10 R24 330 Q3 BTA12 p1.5 p1.0 BTA12 p2.6 F9 FUSE BT1 BATTERY 220v 2 R25 330 p 3 .1 C6 CAP 0 J11 HEADER 10 1 2 3 4 5 6 7 8 9 10 p1.1 J2 HEADER 2 1 2 L7 BTA12 IR receive U4 ir_receiv e 2 3 1 GND v ccout p1.0 J10 HEADER 2 1 2 5v 5v D1 DIODE 220v 2 R4 10k p2.7 p3.7 Q19 L8 5v Q13 L1 Q18 BTA12 220v 2 Q9 R26 p0.1 p1.7 Q22 p0.1 Q12 220v 2 Q15 R13 p 3 .7 0 33x8 R29 p0.6 220v 2 R23 330 L8 Q25 BTA12 p0.7 Q2 BTA12 5v 5v 220v 2 Q17 Q7 BTA12 p0.0 p3.0 0 C5 33p 5v R32 L3 Q14 R19 U1 74HC5958 9 10 13 14 1 6 11 12 15 1 2 3 4 5 6 7 G N D SDO CLR G data V C C ck st QA QB QC QD QE QF QG QH p2.3 p1.6 U15 MOC3020 1 2 6 4 p2.0 220v 2 R28 R21 330 0 U14 MOC3020 1 2 6 4 p 3 .3 R30 U5 MOC3020 1 2 6 4 p1.6 p1.7 J1 HEADER 2 1 2 L2 U11 mrf 24j40ma 1 2 34 5 67 89 10 1112 g n d re s e t w a k e in t s d i s c k s d o c s ncvin gnd1 gnd2 5v 220v 2 q20 5v 5v R40 Q6 p1.3 p3.3 J4 HEADER 2 1 2 p0.4 220v 2 Q16 L4 R14 330 J9 HEADER 2 1 2 p2.2 p1.2 J3 HEADER 2 1 2 p2.1 R15 330 L3 R27 p 3 .6 220v 1 Q4 BTA12 C3 1u p2.3 p3.2 L7 C5 104 p0.6 R39 5v 5v 0 Q1 2N1070 R3 RESISTOR p0.2 p3.6 0 C12 CAP p2.5 p0.5 J5 HEADER 2 1 2 L5 C9 CAP p1.4 U8 MOC3020 1 2 6 4 p1.4 p1.5 R20 330 p0.3 C1 CAPACITOR L4 Q11 p0.0 0 0 C18 104