2) Nội dung các phần thuyết minh và tính toán:
3.4.3 Hoạt động truyền dữ liệu của vi điều khiển 89C52
3.4.3.1 Giới thiệu
Truyền dữ liệu nối tiếp của MCS5 có thể ho ạt động ở nhiều kiểu riêng biệt trong phạm vi cho phét của tần số. Dữ liệu dạng song song được chuyển thành nối tiếp để truyền đi và nhận về dạng nối tiếp được chuyển thành song song.
Chân TxD (P3.1) là ngõ xuất dữ liệu đi và chân RxD (P3.0) là ngõ nhận dữ liệu về.
Đặc trưng của truyền dữ liệu nối tiếp là hoạt động song công có nghĩa là có thể thực hiện truyền và nhận dữ liệu cùng một lúc.
Hai thanh ghi chức năng đặc biệt phục vụ cho truyền dữ liệu là thanh ghi đệm SBUF và thanh ghi điều khiển SCON. Thanh ghi đệm SBUF nằm ở địa chỉ 99H có 2 chức năng : nếu vi điều khiển ghi dữ liệu lên thanh ghi SBUF thì dữ liệu đó sẽ được truyền đi, nếu hệ thống khác gửi dữ liệu đến thì sẽ được lưu vào thanh ghi đệm SBUF. Sơ đồ khối của hệ thống truyền dữ liệu được trình bày ở hình 3.14.
Hình 3.12 : Sơ đồ hệ thống truyền dữ liệu
Thanh ghi điều khiển truyền dữ liệu SCON nằm ở địa chỉ 98H là thanh ghi cho phép truy suất bit bao gồm các bit trạng thái và các bit điều khiển. Các bit điều khiển dùng để thiết lập nhiều kiểu hoạt động truyền dữ liệu khác nhau, còn các bit trạng thái cho biết thời điểm kết thúc khi truyền xong một ký tự hoặc nhận xong một ký tự. Các bit trạng thái có thể được kiểm tra trong chương trình hoặc có thể lập trình để sinh ra ngắt.
Tần số hoạt động của truyền dữ liệu nối tiếp còn gọi tốc độ BAUD (số lượng bit dữ liệu được truyền đi trong 1 giây) có thể hoạt động cố định (sử dụng giao động trên chip) ho ặc có thể thay đổi. Khi cần tốc độ Baud thay đổi thì phải sử dụng Timer 1 hoặc Timer 2 để tạo tốc độ Baud.
SBUF (write only) SBUF (write only) SBUF (write only) Baud rate clock
(transmit) Baud rate clock (receive) TxD (P3.1) RxD (P3.0) 8052 Internal Bus
3.4.3.2 Thanh ghi điều khiển truyền dữ liệu nối tiếp
Thanh ghi SCON sẽ thiết lập các kiểu hoạt động truyền dữ liệu khác nhau cho MCS51. Cấu trúc của thanh ghi SCON như sau :
Hình 3.13 : Cấu trúc thanh ghi SCON
Bảng 3.16 : Các bit trong thanh ghi điều khiển truyền dữ liệu
Bit Ký hiệu Địa chỉ Mô tả hoạt động
7 SM0 9FH Bit chọn kiểu truyền nối tiếp : bit thứ 0. 6 SM1 9EH Bit chọn kiểu truyền nối tiếp : bit thứ 1.
5 SM2 9DH Bit cho phép truyền kết nối nhiều vi xử lý ở mode 2 và 3, RI sẽ không tích c ực nếu bit thứ 9 đã thu là 0.
4 REN 9CH Bit cho phép nhận ký tự. REN=1 sẽ cho phép nhận ký tự. 3 TB8 9BH Dùng để lưu bit 9 để truyền đi khi hoạt động ở mode 2 và
3. TB8 bằng 0 hay 1 là do người lập trình thiết lập. 2 RB8 9AH Dùng để lư bit 9 nhận về khi hoạt động ở mode 2 và 3 1 TI 99H Cờ báo hiệu này lên mức 1 khi truyền xong 1 ký tự và xóa
bởi người lập trình để sẵn sàng truyền ký tự tiếp theo. 0 RI 98H Cờ báo hiệu này lên mức 1 khi nhận xong 1 ký tự và xóa
bởi người lập trình để sẵn sàng nhận ký tự dữ liệu tiếp theo.
SM0 SM1 SM2 REN TB8 RB8 TI RI
3.4.3.3 Các kiểu truyền dữ liệu nối tiếp
Truyền dữ liệu nối tiếp của MCS51 có 4 kiểu hoạt động tùy thuộc theo 4 trạng thái c ủa 2 bit SM0 và SM1 được liệt kê ở bảng 3.14
Bảng 3.17 : Các kiểu truyền dữ liệu
SM0 SM1 Kiểu Mô tả Tốc độ baud
0 0 0 Thanh ghi dịch Cố định (tần số dao động f/12) 0 1 1 UART 8 bit Thay đổi (được đặt bởi Timer)
1 0 2 UART 9 bit Cố định (tần số dao động f/12 hoặc f/64) 1 1 3 UART 9 bit Thay đổi (được đặt bởi Timer)
Trong nội dung đề tài, người thực hiện chỉ giới thiệu truyền dữ liệu kiểu 1 – Thu phát bất đồng bộ 8 bit có tốc độ Baud thay đổi, được sử dụng trong đề tài.
Trong mode này, truyền dữ liệu nối tiếp hoạt động bất đồng bộ UART 8 bit có tốc độ Baud thay đổi được. UART là bộ thu và phát dữ liệu nối tiếp với mỗi ký tự dữ liệu luôn bắt đầu bằng 1 bit Start (ở mức 0) và kết thúc bằng 1 bit stop (ở mức 1), bit parity đôi khi được ghép vào giữa bit dữ liệu sau cùng và bit stop.
Trong kiểu này, 10 bit dữ liệu sẽ phát đi ở chan TxD và nếu nhận thì sẽ nhận ở chân RxD. 10 bit đó bao gồm : 1 bit start, 8 bit data (LSB là bit đ ầu tiên), và 1 bit stop. Đối với hoạt động nhận dữ liệu thì bit stop được đưa vào bit RB8 trong thanh ghi SCON.
Trong MCS51, tốc độ Baud được thiết lập bởi tốc độ tràn c ủa Timer T1. Đối với họ 52 có 3 timer thì tốc độ baud có thể thiết lập bởi tốc độ tràn của timer T1 ho ặc timer T2 ho ặc cả 2 timer T1 và T2 : một timer cho việc phát và 1 timer cho việc thu.
Nguồn cung cấp xung clock để đồng bộ các thanh ghi truyền dữ liệu nối tiếp hoạt động kiểu 1, 2, 3 được thiết lập bởi bộ đếm 16 như hình 4…, ngõ ra của bộ đếm là xung clock tạo tốc độ Baud. Xung ngõ vào của bộ đếm có thể lập trình bằng phần mềm.
Khi có một lệnh ghi dữ liệu lên thanh ghi SBUF thì quá trình truyền dữ liệu bắt đầu nhưng nó chưa truyền mà chờ cho đếm khi bộ chia 16 (cung cấp tốc độ Baud cho truyền dữ liệu nối tiếp) bị tràn. Dữ liệu được xuất ra trên chân TxD bắt đầu với bit start theo sau là 8 bit data và sau cùng là bit stop. Các c ờ phát TI
cũng được nâng lên mức 1 cùng lúc với thời điểm xuất hiện bit stop trên chân TxD.
Quá trình nhận dữ liệu được khởi động ngay khi có sự chuyển đổi từ mức 1 sang mức 0 ở ngõ vào RxD. Bộ dếm 4 bit được reset ngay lập tức để sắp xếp bit dữ liệu đang đến từ ngõ vào RxD. Mỗi bit dữ liệu đến được lấy mẫu ở trạng thái đếm thứ 8 trong một chu kỳ 16 trạng thái của bộ đếm 4 bit.
Khi có sự chuyển trạng thái từ 1 xuố ng 0 ở ngõ vào RxD của bộ thu thì trạng thái 0 này phải tồn tại trong 8 trạng thái liên tục của bộ đếm 4 bit. Nếu trường hợp này không đúng thì bộ thu xem như bị tác động bởi tín hiệu nhiễu. bộ thu sẽ reset và trở về trạng thái nghỉ và chờ sự chuyển trạng thái tiếp theo.
Giả sử việc kiểm tra bit start là hợp lệ thì bit start sẽ được bỏ qua và 8 bit data được nhận vào thanh ghi dịch nối tiếp.
Khi thất cả 8 bit được ghi vào thanh ghi dịch thì 3 công việc sau sẽ được thực hiện tiếp theo:
- bit thứ 9 (bit stop) được dịch vào bit RB8 trong SCON. - 8 bit data được nạp vào thanh ghi SBUF.
- Cờ ngắt nhận RI=1.
Tuy nhiên 3 công việc trên chỉ xảy ra nếu hai điều kiện sau tồn tại : - RI=0
- SM2=1 và bit stop nhận được bằng 1 ho ặc SM2=0.
3.4.4 Tập lệnh của vi điều khiển 89C52
Tập lệnh của vi điều khiển 89C52 bao gồm các nhóm lệnh : + Nhóm lệnh số học : ADD, SUBB, DIV, MUL, INC, DEC, DA.
+ Nhóm lệnh luận lý : ANL, ORL, XRL, CLR, CPL, RL, RLC, RR, RRC, SWAP
+ Nhóm lệnh dịch chuyển dữ liệu : MOV, MOVC, MOVX, PUSH, POP, XCH, XCHD.
+ Nhóm lệnh rẽ nhánh chương trình : ACALL, LCALL, RET, RETI, AJMP, LJMP, SJMP, JMP, JZ, JNZ, JC, JNC, JB, JNB, JBC, CJNE, DJNZ .
+ Nhóm lệnh xử lý bit : ANL, ORL, SETB, CLR, CPL, MOV.
3.4.5 Nguồn cung cấp
Nguồn cung cấp cho toàn bộ mô hình là 5V, trong đồ án này người thực hiện dùng nguồn cung cấp từ Adapter từ bên ngoài, trên mạch chỉ cần tạo jack cắm để kết nối.
3.4.6 Mạch dao động
Cấp nguồn xung clock cho vi điều khiển hoạt động, tần số tụ thạch anh thường dùng từ 12MHz ÷ 24MHz. Thường chọn tần số tụ thạch anh cung cấp là 12MHz, các tụ song song là 33pF.
CHƢƠNG 4 :
THIẾT KẾ VÀ THI CÔNG
4.1 Phƣơng án thiết kế
Gồm 2 phuơng án thiết kế như sau:
Phương án 1: Dùng bộ GSM MODULE SIM300CZ để kết nối với vi điều khiển 89C52: chi phí và giá thành đ ắt. Thích hợp cho lập trình lệnh AT dễ dàng và đ ầy đủ tín năng cho lập trình với lệnh AT. Ngoài ra còn có thể phát triển ứng dụng sâu thêm với GPRS, GPS.
Phương án 2: Dùng điện thoại di động (Ericssion T28, T39 …) có chức năng giống với GSM MODULE SIM300CZ để kết nối với 89C52. Việc lập trình cho điện tho ại di động cũng gần tương tự như GSM MODULE nhưng có hạn chế hơn vì một số loại điện thoại chỉ hỗ trợ lệnh AT ở dạng Mode PDU nên lập trình rất phức tạp. Ngoài ra phần kết nối giữa điện thoại di động với khối vi điều khiển cũng rất phức tạp.
Phương án lựa chọn: Chọn phương án 1 vì MODULE SIM300CZ hỗ trợ lập trình lệnh AT ở cả 2 chế độ Mode Text và Mode PDU nên việc lập trình đơn giản hơn nhiều so với điện tho ại di động. Mặc dù giá thành khá đ ắt nhưng vì nó hỗ trợ chế độ Mode Text nên việc lập trình đơn gi ản hơn nhiều so với dùng điện tho ại di động vì vậy nhóm quyết định dùng Module Sim300CZ. Ngoài ra còn có thể phát triển các ứng dụng khác sử dụng GPRS, GPS.
4.2 Sơ đồ khối
Hình 4.1 : Sơ đồ khối hệ thống
4.2.1 Chức năng từng khối
Khối giao tiếp SMS
Có chức năng gửi nhận tin nhắn SMS cho việc điều khiển các thiết bị. Khối này cần 1 thiết bị điện tho ại di động và 1 Module Sim300CZ:
- Thiết bị điện thoại di động : dành cho người sử dụng (điều khiển). Người sử dụng cần phải đăng kí dịch vụ viễn thông đối với các nhà cung cấp dịch vụ trong nước.
- GSM Module Sim300CZ : Module này phải được gắn Sim của nhà cung cấp dịch vụ và cũng cần phải có chức năng như một điện thoại di động để kết nối với vi điều khiển. Cái này được đặt cố định và thường xuyên kết nối với vi điều khiển. Khi người sử dụng nhắn một tin SMS có nội dung là một lệnh yêu cầu điều khiển thiết bị. Ví dụ : DV:ADA:ON, DV:ADA:OFF, PT:ADA:ON, ….. thì Module Sim300CZ sẽ nhận tin nhắn và được xử lí bởi câu lệnh điều khiển được lập trình và được nạp vào vi điều khiển.
KHỐI HIỂN THỊ LCD MODULE SIM300CZ VI ĐIỀU KHIỂN KHỐI NGUỒN THIẾT BỊ KH Ố I G IA O TI Ế P S M S KHỐI CÔNG SUẤT
Khối xử lý phần cứng
Khối xử lí phần cứng là khối trung tâm trong việc xử lí và điều khiển phần cứng. Khối do một vi điều khiển đảm nhận và có nhiệm vụ gửi nhận dữ liệu với Module Sim300CZ một cách liên tục. Khi Module Sim300CZ gửi thông tin điều khiển thì Khối xử lí phần cứng sẽ được lập trình để thực thi. Vi điều khiển có nhiệm vụ giao tiếp với Khối công suất.
Khối công suất
Khối này bao gồm 2 BJT C1815 có nhiệm vụ khuếch đại điện áp để kích cho relay. Khối công suất với dòng thấp, đáp ứng tải tiêu tụ công suất thấp và dân dụng như bóng đèn.
Khối thiết bị
Chứa các thiết bị cần điều khiển.
4.2.2 Nguyên lý hoạt động
Thuê bao gửi tin nhắn điều khiển đến Module Sim300CZ theo cú pháp: *<mật khẩu># <nội dung điều khiển>
Trong đó :
<mật khẩu> : 1234 <nội dung điều khiển> :
99: kiểm tra thiết bị 1: mở tất cả các thiết bị 0: tắt tất cả các thiết bị 00 01: tắt thiết bị 1, tắt thiết bị 2 00 11: tắt thiết bị 1, mở thiết bị 2 10 01: mở thiết bị 1, tắt thiết bị 2 10 11: mở thiết bị 1, mở thiết bị 2
Khi nhận được tin nhắn mới, module sẽ gửi lệnh +CMTI: “SM”, 1 đến vi điều khiển thông qua chân TXD để báo cho vi điều khiển biết có tin nhắn mới. Vi điều khiển nhận được lệnh thông qua chân RXD (P3.0) sẽ gửi lại lệnh AT+CMGR=1 qua chân TXD (P3.1) đến module để đọc nội dung tin nhắn vừa nhận được. Module nhận được lệnh này qua chân RXD sẽ gửi nội dung tin nhắn đến vi điều khiển.
Sau khi nhận được nội dung tin nhắn, vi điều khiển tiến hành xử lý tin nhắn và gửi tín hiệu điều khiển ra chân P2.7 (thiết bị 1), P2.5 (thiết bị 2) để điều khiển. Sau
khi điều khiển, vi điều khiển nhận biết trạng thái thiết bị thông qua chân P2.6 (thiết bị 1), P2.4 (thiết bị 2), và điều khiển module gửi tin nhắn báo kết quả điều khiển bằng lệnh: AT+CMSS=<chỉ số>, <số điện tho ại> trong đó:
<Chỉ số>: số chỉ thị kết quả điều khiển thiết bị tương ứng với vị trí tin nhắn lưu trong sim:
3: sai mật khẩu 4: sai cú pháp 5: thiết bị 1 mở, thiết bị 2 mở 6: thiết bị 1 tắt, thiết bị 2 mở 7: thiết bị 1 mở, thiết bị 2 tắt 8: thiết bị 1 mở, thiết bị 2 mở
<số điện thoại>: số điện thoại thuê bao gửi tin nhắn điều khiển thiết bị Cuối cùng, vi điều khiển gửi lệnh điều khiển AT+CMGD=1 cho module để xóa tin nhắn điều khiển. Quá trình trên được lặp lại khi có tin nhắn điều khiển mới đến.
4.3 Thiết kế và thi công phần cứng
4.3.1 Sơ đồ nguyên lý và tính toán 4.3.1.1 Module Sim300CZ 4.3.1.1 Module Sim300CZ
Hình 4.2 : Sơ đồ capture Module Sim300CZ
Nguyên lý hoạt động
Module sim300CZ có chức năng như chiếc điện tho ại di động, nó nhận tin nhắn thông qua mạng GSM, sau đó lưu tin nhắn vào Sim rồi chuyển xuống vi
điều khiển thông qua chân TXD_GSM. Đồng thời, Module sim300CZ cũng nhận dữ liệu từ vi điều khiển qua chân RXD_GSM, gửi tin nhắn trả lời đến thuê bao điều khiển thông qua mạng GSM.
Tính toán thông số
Hình 4.3 : Sơ đồ kết nối truyền dữ liệu
Mức 1 của vi điều khiển là 5V nhưng với module Sim300CZ hiểu mức 1 là 2.8-3v nên ở chân RXD_GSM dùng cầu phân áp để giảm áp c ủa tín hiệu truyền từ vi điều khiển sang module
4.3.1.2 Khối giao tiếp
Hình 4.4 : Sơ đồ capture khối giao tiếp
Nguyên lý hoạt động
2 tín hiệu từ Module sim300CZ RXD_GSM và TXD_GSM đi vào R1OUT và T1IN của Max232 để truyền tín hiệu sang máy tính bằng RS232.
Sơ đồ mạch được thiết kế dựa vào datasheet của Max232, tuy nhiên do khôi giao tiếp truyền dữ liệu do đó giá trị tụ có thể thay đổi phù hợp.
4.3.1.3 Khối nguồn
Hình 4.5 : Sơ đồ capture khối nguồn
Nguyên lý hoạt động
Cho nguồn 12 Vdc qua IC ổn áp LM7805 tạo ra nguồn tuyến tính 5V c ấp cho vi điều khiển, khối giao tiếp, mạch logic, khối hiển thị LCD.
Đồng thời đưa nguồn 12Vdc qua IC LM2576 tạo nguồn xung 4.3V cho khối Module Sim300CZ
Tính toán thông số
Mạch được xây dựng dựa trên datasheet của các IC nguồn. Nhưng với LM2576 dùng biến trở 50k để chỉnh mức áp ra theo mong muốn
Với L=100uH
Vo ut=Vref với Vref=1.23V.
Chọn R1= 1KΩ, R2 là biến trở 50KΩ để điều chỉnh mức điện áp mong muốn 4.3V
4.3.1.4 Khối vi điều khiển
Hình 4.5 : Sơ đồ capture khối vi điều khiển
Nguyên lý hoạt động
Khối vi điều khiển sử dụng nguồn cung cấp 5VDC, làm nhiệm vụ nhận các tin nhắn điều khiển từ chân RXD và TXD để xử lý nội dung tin nhắn, sau đó thực hiện lệnh điều khiển theo tin nhắn nhận được để điều khiển các thiết bị thông qua Port 2.5 và Port 2.7, đồng thời nhận tín hiệu phản hồi trạng thái thiết bị bằng Port 2.4 và Port 2.6 để truyền đến thuê bao điều khiển thông qua Module Sim300CZ.
Do mạch thực hiện truyền dữ liệu nối tiếp với Module Sim300CZ nên chọn thạch anh có giá trị f=11.0592MHz, 2 tụ 33pF dùng ổ n định dao động cho thạch anh.
Dùng điện trở kéo P0 có giá trị 10K theo datasheet.
4.3.1.5 Khối công suất
Các linh kiện dùng trong khối công suất
Triac
Triac được cấu tạo gần giống như 2 SCR nối song song ngược chiều có 2 cực G được nối tiếp với nhau để đưa ra ngoài một cực kích duy nhất. Đặc