chip đƣợc thiết kế theo kiểu đóng/cắt (switching regulator). Nó cho dòng tải cực đại lên tới 3A. Với tần số dao động nội 52 kHz.
Nguồn 12V qua LM2576S-ADJ tạo nguồn xung 4.3V cho khối mô-đun SIM900. Mạch đƣợc xây dựng dựa trên tài liệu kỹ thuật cung cấp bởi nhà sản xuất. Nhƣng với LM2576S-ADJ dùng biến trở 50K để chỉnh mức áp ra theo mong muốn.
với Vref = 1.23V
Nhƣ vậy giá trị điện áp đầu ra phụ thuộc vào tỷ lệ giữa R2 và R1. Để có đƣợc giá trị điện áp mong muốn, ta có thể dùng biến trở (50K) để thay đổi tỷ lệ tạo ra điện áp 4.0V.
Hình 2.3: Sơ đồ chân vi mạch LM2576S-ADJ LM2576S-ADJ
Hình 2.4: Sơ đồ khối và mạch ứng dụng cơ bản của LM2576S-ADJ LM2576S-ADJ
Khối trung tâm giao tiếp với mô-đun SIM900 theo chuẩn giao tiếp RS232. Bởi vì khối trung tâm sử dụng nguồn nuôi 5V trong khi khối GSM chỉ là 4.3V vì vậy cần có mạch chuyển đổi mức tín hiệu để phù hợp.
Hình 2. 5 : Sơ đ ồ nguyê n lý kh ối g iao ti ếp GS M
Hình 2.6: Khối giao tiếp GSM sau khi chế tạo
2.3.2. Khối điều khiển trung tâm
2.3.2.1. Vi điều khiển dsPIC-30F4011
Vi điều khiển dsPIC30 là dòng vi điều khiển 16 bit tích hợp bộ xử lý tín hiệu số 16 bit của hãng Microchip. Với việc tích hợp mô-đun xử lý tín hiệu số (Digital Signal Processor) vào một lõi vi điều khiển, hãng Microchip đã tạo ra một bộ vi điều khiển có khả năng xử lý các phép tính phức tạp và điều khiển trực tiếp các thiết bị ngoại vi. Việc đóng gói nhỏ gọn giúp chúng ta có thể thiết kế mạch điện tử đơn giản hơn và đặc biệt là tăng khả năng chống nhiễu cho hệ thống.
Trong dòng vi điều khiển dsPIC30 thì dsPIC30F4011 với giá thành hợp lý và đƣợc thiết kế chuyên dụng cho điều khiển động cơ. Vi điều khiển dsPIC30F4011 đƣợc tích hợp các mô-đun đặc biệt trong nhƣ bộ đọc xung phản hồi vị trí động cơ (Quadrature Encoder), bộ điều chế độ rộng xung PWM (Pulse Width Modulation), bộ biến đổi tín hiệu tƣơng tự sang số ADC (Analog to Digital Converter). Vi điều khiển dsPIC30F4011 có một số tính năng sau:
CPU với tập lệnh đƣợc đơn giản hóa RISC
- Kiến trúc Harvard có hiệu chỉnh.
- Tập lệnh tối ƣu cho ngôn ngữ lập trình C với chế độ địa chỉ linh hoạt. - Lệnh cơ bản gồm 84 lệnh (độ dài lệnh 24 bit), độ dài dữ liệu 16 bit. - 48 KB bộ nhớ Flash, có thể nạp lại nhiều lần.
- 02 KB bộ nhớ RAM. - 01 KB bộ nhớ EEPROM.
- Tốc độ xử lý tối đa 30 triệu lệnh trong 1 giây (MIPs). - 30 nguồn tạo ngắt với 3 nguồn ngoài, 8 mức ƣu tiên. - 16 thanh ghi 16 bit.
- Nhập dữ liệu kép.
- Câu lệnh xử lý tín hiệu số (DSP) đƣợc thực hiện trong một chu kỳ lệnh. - Bộ nhân bằng phần cứng 17x17 bit chỉ trong một chu kỳ lệnh đơn.
Các ngoại vi tích hợp trên chip
- Các chân vào/ra có khả năng chịu dòng cao (25mA).
- 05 mô-đun Timer/ Counter với tần số xung nhịp có khả năng chia tần và có thể cấu hình thành các cặp Timer 16 bit hoặc 32 bit.
- Bộ điều chế độ rộng xung (PWM) với độ phân giải 16 bit. - Mô-đun truyền nhận dữ liệu SPI (hỗ trợ chế độ 4 khung truyền).
- Mô-đun truyền nhận dữ liệu I2C, hỗ trợ chế độ đa chủ/tớ và các chế độ định địa chỉ 7 bit hay 10 bit.
- 02 mô-đun truyền thông nối tiếp (UART) với bộ đệm FIFO. - Mô-đun truyền thông CAN tƣơng thích chuẩn 2.0B.
Mô-đun điều khiển PWM
- 06 cổng vào/ra PWM với đầu ra với chế độ bù hoặc độc lập và các chế độ sƣờn xung hoặc trung tâm.
- 03 khối tạo chu kỳ làm việc khác nhau. - Cơ sở thời gian riêng biệt với toàn chip. - Đầu ra phân cực lập trình đƣợc.
- Bộ so sánh sự kiện đặc biệt cho việc lập lịch những sự kiện ngoại vi.
Các đặc điểm chính của module UART
- Truyền song công, dữ liệu 8 hoặc 9 bit.
- Các tùy chọn chẵn, lẻ hoặc không bit chẵn lẻ (cho dữ liệu 8 bit). - 01 hoặc 02 bit Stop.
- Tích hợp bộ tạo tốc độ Baud đầy đủ 16-bit.
- Dải tốc độ Baud từ 38 bps đến 1,875 Mbps với tốc độ thực hiện lệnh 30 MHz. - Bộ đệm dữ liệu truyền 4 từ đơn.
- Bộ đệm dữ liệu nhận 4 từ đơn.
- Phát hiện lỗi chẵn lẻ, lỗi khung truyền và lỗi tràn bộ đệm.
Hình 2.7: Sơ đồ chân dsPIC4011
2.3.2.2. Thiết kế và thi công khối điều khiển trung tâm
Mạch sử dụng IC ổn áp nguồn LM7805. Đầu vào là 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 thực hiện chức năng giao tiếp với khối GSM, khối giao tiếp RS485 và khối hiển thị LCD. Mạch đƣợc thiết kế theo tài liệu kỹ thuật của IC LM7805.
Hình 2.8. Sơ đồ khối của IC ổn áp nguồn LM7805
Khối điều khiển trung tâm làm nhiệm vụ nhận các tin nhắn điều khiển để 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 để đƣa ra các lệnh điều khiển tƣơng ứng tới các trạm điều khiển tầng qua mạng RS485 Modbus- RTU, đồng thời nhận tín hiệu phản hồi trạng thái thiết bị từ các trạm điều khiển tầng để gửi tin nhắn báo cáo trạng thái thiết bị điện đến thuê bao điều khiển thông qua khối giao tiếp GSM sử dụng mô-đun SIM900.
Hình 2. 9 : M ạch ng uyê n lý kh ối đ iề u khi ển tru ng tâm
Hình 2.10: Khối điều khiển trung tâm sau khi lắp ráp linh kiện
2.3.3. Khối điều khiển tầng
2.3.3.1. Vi điều khiển PIC-16F887
Vi điều khiển PIC16F887 sử dụng công nghệ CMOS, nano-Watt có bộ nhớ Flash 8 bit. Chi tiết kỹ thuật của chip đƣợc cho trong các tài liệu có sẵn của hãng MicroChip. Dƣới đây chỉ liệt kê một số đặc điểm chính của chip.
- PIC16F887 là vi xử lý RISC chất lƣợng cao, do đó tất cả các lệnh (trừ lệnh rẽ nhánh) trong số 35 lệnh đƣợc thực hiện chỉ trong 1 chu kỳ nhịp đồng hồ.
- Tốc độ hoạt động DC 20 MHz, chu kỳ nhịp từ DC 200 ns.
- Vi điều khiển có những đặc điểm ghép nối ngoại vi đáng chú ý sau: - Có nguồn dòng cao cho phép ghép nối trực tiếp các đèn LED. - Có 2 bộ so sánh tƣơng tự.
- Có bộ biến đổi A/D 10 bit, 11/14 kênh.
- Có Timer0 là bộ đếm 8-bit khả trình, Timer1 là bộ đếm 16-bit, Timer2 là bộ đếm 8-bit.
- Có mô-đun điều chế độ rộng xung PWM 10-bit, tần số cực đại 20 kHz.
- Có mô-đun giao tiếp nối tiếp EUSART hỗ trợ các chuẩn RS232, RS485 và LIN 2.0.
Hình 2.11: Sơ đồ chân vi điều khiển PIC16F887
Hình 2.12: Sơ đồ khối PIC16F887
2.3.3.2. Thiết kế và thi công khối điều khiển tầng
suất. Các bộ điều khiển tầng đƣợc đặt tại hiện trƣờng nơi mà các thiết bị điện đƣợc lắp đặt (các phòng ở, phòng họp, nhà kho, tầng hầm...). Mạch điều khiển sử dụng vi điều khiển PIC16F887 làm trung tâm. Một màn hiển thị số liệu bằng tinh thể lỏng LCD cho phép hiện các giá trị trạng thái của thiết bị đƣợc điều khiển. Chƣơng trình phần mềm xử lý lệnh điều khiển đƣợc nhúng vào bộ nhớ vi điều khiển cho phép bộ điều khiển thực hiện đủ các chức năng điều khiển do khối trung tâm yêu cầu. Các bộ điều khiển này thông tin với bộ điều khiển trung tâm qua các kênh thông tin có dây dẫn với chuẩn RS485 (cho phép truyền nhận thông tin bán song công với khoảng cách tối đa lên tới 1.200 m) và giao thức hỏi vòng Modbus–RTU. Công nghệ này cho phép thỏa mãn yêu cầu truyền thông trong tòa nhà với tốc độ thông tin cao và số nút mạng tham gia có thể lên tới vài trăm địa chỉ nếu sử dụng thêm bộ lặp (Repater).
Chức năng của bộ điều khiển tầng
- Nhận lệnh điều khiển từ khối trung tâm, xử lý và đƣa ra tín hiệu điều khiển đóng/ngắt các thiết bị điện, đồng thời cũng có khả năng hiển thị trạng thái các thiết bị lên lên màn hình hiển thị LCD.
- Kiểm tra trạng thái các thiết bị điện, gửi thông tin về khối trung tâm qua đƣờng dẫn truyền thông RS485 Modbus-RTU để khối trung tâm gửi tin nhắn tới ngƣời sử dụng khi có nhu cầu truy vấn kiểm tra trạng thái các thiết bị hiện tại.
Bộ chuyển đổi UART-232/RS-485 dùng chip MAX485
Giao diện chuyển đổi thông tin giữa các chuẩn ghép nối trong hệ thống đóng một vai trò rất quan trọng. Trong quá trình thực hiện luận văn, tác giả đã quyết định sử dụng kênh thông tin chủ yếu là RS485 với giao thức truyền thông Modbus–RTU trong khi vi điều khiển chỉ có sẵn các đầu ra ghép nối theo chuẩn RS232. Vì vậy, một nhiệm vụ quan trọng là phải tự thiết kế, chế tạo các bộ chuyển đổi tín hiệu từ RS232 sang RS485 và ngƣợc lại.
Qua nghiên cứu, tác giả đã sử dụng chip ghép nối MAX485 của hang Maxim để thực hiện công việc này. Vi mạch MAX485 có chức năng nhƣ một bộ thu–phát (Tranceiver) có đƣờng truyền nhận vi sai dùng cho thông tin song công (hai chiều). Nó đƣợc thiết kế cho các đƣờng truyền cân bằng và đáp ứng các chuẩn ANSI TIA/EIA- 422-B và 485-A.
Hình 2. 15 : M ạch n guy ên lý b ộ đi ều khi ển t ầng
Hình 2.16: Bộ điều khiển tầng sau khi chế tạo
2.3.4. Khối công suất
Sau khi xử lý dữ liệu, các bộ điều khiển tầng sẽ xuất ra các lệnh điều khiển tới các bộ chấp hành đóng/ngắt thiết bị. Một bộ chấp hành nhƣ vậy cần đƣợc thiết kế theo các yêu cầu sau:
- Mỗi lối ra phải đảm bảo điều khiển đóng/ngắt một rơle có dòng cực đại 10A, hoạt động với thế xoay chiều một pha 220 VAC.
- Mỗi bộ chấp hành có 8 cổng ra (có thể điều khiển 8 thiết bị).
- Có các đèn LED hiển thị trạng thái của các thiết bị điện đƣợc điều khiển. Mạch công suất sử dụng IC đệm dòng ULN2803 để điều khiển các rơle đóng/ngắt các thiết bị điện. ULN2803 gồm 8 cặp Transistor mắc theo kiểu Darlington cho phép tải đƣợc dòng lên đến 500mA. Đầu ra của ULN2803 có khả năng chịu đƣợc điện áp cao lên đến 50V và bên trong IC đã có các Diode bảo vệ vi điều khiển. Vì vậy, chúng ta có thể sử dụng để điều khiển động cơ, rơle, bóng đèn, quạt, điều hoà và nhiều thiết bị khác mà không sợ dòng điện cảm ứng gây nhiễu và hƣ hỏng vi điều khiển.
Hình 2. 18 : M ạch n guy ên lý kh ối c ông su ất
Chƣơng 3. THIẾT KẾ PHẦN MỀM ĐIỀU KHIỂN
3.1. Giới thiệu phần mềm lập trình PIC C Complier
Chƣơng trình nhúng điều khiển đƣợc viết với trình dịch PIC C Complier. PIC C Compiler là ngôn ngữ lập trình bậc cao đƣợc sử dụng để lập trình cho PIC và đƣợc viết trên nền C. Chƣơng trình viết trên PIC C tuân thủ theo cấu trúc của ngôn ngữ lập trình C. Trình biên dịch của PIC C Compiler sẽ chuyển chƣơng trình C sang dạng mã Hexa (*.hex) để nạp vào bộ nhớ của PIC. Quá trình chuyển đổi đƣợc minh hoạ nhƣ sau:
File.c
(Chƣơng trình điều khiển viết cho Vi điều khiển PIC sử dụng ngôn ngữ lập trình C) File.hex (Chƣơng trình dƣới dạng mã Hex nạp cho Vi điều khiển PIC) Biên dịch Thiết bị nạp chƣơng trình Vi điều khiển PIC
Hình 3.1: Quy trình viết và nạp chƣơng trình cho Vi điều khiển
PIC C Compiler gồm có 3 phần riêng biệt là PCB, PCM và PCH. PCB dùng cho họ MCU với bộ lệnh 12-bit, PCM dùng cho họ MCU với bộ lệnh 14-bit và PCH dùng cho họ MCU với bộ lệnh 16 và 18-bit. Mỗi phần khác nhau trong PIC C Compiler chỉ dùng đƣợc cho họ MCU tƣơng ứng mà không cho phép dùng chung (ví dụ không thể dùng PCM hoặc PCH cho họ MCU 12-bit đƣợc mà chỉ có thể dùng PCB cho MCU 12- bit).
Chƣơng trình đƣợc viết trên PIC C Compiler gồm bốn phần chính. Trong mỗi phần sẽ bao gồm nhiều chi tiết để tạo nên chƣơng trình một chƣơng trình hoàn chỉnh. Cấu trúc chƣơng trình nhƣ sau:
- Phần ghi chú: Ở phần ghi chú, ngƣời lập trình sẽ ghi những chú thích cần thiết
cho chƣơng trình. Phần chú thích đƣợc bắt đầu từ dấu // (dung cho chú thích có chiều dài một dòng) hoặc cặp ký tự /* và */ (dùng cho một khối chú thích gồm nhiều dòng). Khi biên dịch, trình biên dịch sẽ bỏ qua phần ghi chú. Phần ghi chú có thể xuất hiện bất cứ chỗ nào trong chƣơng trình thậm chí có thể đặt ngay sau hàng mã lệnh để chú thích cho hàng lệnh.
- Chỉ định các tiền xử lý: Phần này sẽ chỉ định các tiền xử lý đƣợc sử dụng khi
biên dịch. Các tiền xử lý đƣợc bắt đầu bằng dấu #.
- Khai báo biến dữ liệu: Đây là phần khai báo hằng, khai báo biến và kiểu dữ
- Định nghĩa các hàm: Định nghĩa các hàm (Function) đƣợc dùng để thực hiện
giải thuật của chƣơng trình.
3.2. Tập lệnh AT và tin nhắn với định dạng PDU
3.2.1. Tập lệnh AT cơ bản
Để gửi nhận SMS, cần kết nối thiết bị mô-đun GSM vào cổng giao tiếp theo chuẩn RS232 của thiết bị điều khiển. Các thiết bị này trao đổi dữ liệu với nhau thông qua tập lệnh AT (Attention Commands) chuẩn. Tuy nhiên, tuỳ vào thiết bị của nhà sản xuất mà mỗi mô-đun có một tập lệnh AT mở rộng khác nhau nhằm tối ƣu và nâng cao khả năng kết nối của thiết bị GSM với các thiết bị điều khiển.
Bảng 3.1: Một số lệnh AT cơ bản
Lệnh AT Chú thích
AT Kiểm tra kết nối GSM
+CMGF Chọn chế độ làm việc (TEXT hoặc PDU Mode)
+CPMS Chọn lƣu trữ
+CSMP Thiết đặt thông số trong chế độ văn bản +CMGR Đọc SMS xác định từ thiết bị
+CMGL Đọc tất cả SMS
+CMGS Gửi SMS
+CMGW Ghi SMS vào bộ nhớ
+CMSS Gửi SMS đã lƣu trong bộ nhớ
+CMGD Xóa bộ nhớ
Trong chƣơng trình điều khiển trƣớc tiên chúng ta cần khởi tạo một kết nối RS232 cho mô-đem, sau đó gửi những lệnh AT điều khiển tƣơng ứng. Cần kiểm tra kết nối với mô-đem bằng cách sử dụng nhóm lệnh: AT, +CPIN, +CSCA, +CGMI, +CGMM, +CMEE, +CSMS, +CSQ, +CBC trƣớc mỗi phiên làm việc.
Để đọc các trạng thái thiết lập hiện tại, chúng ta có thể dùng lệnh AT có thêm ký tự „?‟. Để xem những giá trị nào có thể thiết lập, dùng lệnh AT có thêm ký tự „=?‟. Để thiết lập giá trị thông số mới, dùng lệnh AT có thêm ký tự „=‟ và theo sau đó là những giá trị thông số mới. Để gửi một nội dung đến địa chỉ một ngƣời dùng, sử dụng lệnh +CMGS là tối ƣu nhất. Tuy nhiên, có những nội dung cần gửi đến nhiều thuê bao khác nhau. Trong trƣờng hợp này nên dùng lệnh +CMGW ghi SMS lên bộ nhớ của mô- đem, sau đó dùng lệnh +CMSS để gửi SMS đó đến địa chỉ các thuê bao khác nhau. Cách này cho phép nâng cao tốc độ làm việc của mô-đem nhờ giảm thiểu trao đổi thông tin giữa mô-đem và chƣơng trình.
Có thể gửi SMS theo 2 chế độ là chế độ văn bản (Text Mode, +CMGF = 1) và chế độ mặc định PDU (Protocol Data Unit, +CMGF = 0). Các giá trị thiết lập thông số cho Text Mode và PDU Mode có thể khác nhau ở một số lệnh AT. Chẳng hạn, với
lệnh đọc tất cả các tin nhắn +CMGL tiếp nhận các thông số "REC UNREAD", "REC