GIẢI THUẬT PHẦN MỀM

Một phần của tài liệu Thiết kế bộ điều khiển tắt mở thiết bị điện trong nhà (Trang 52)

3.2.1. Giải thuật tổng quát

Khi mới cấp điện, phải khởi động modun MRF24J40MA bao gồm khởi động phần cứng và khởi động phần mềm. đinh nghĩa các biến, khởi động ngắt timer0, ngắt ngoài 0 của vi điêu khiển và thiết lập ngắt nhận gói tin của modun MRF24J40MA.

Nạp thời gian thực và thời gian thiết lập của 8 đèn từ RTC lên vùng nhớ đệm của vi điều khiển. Chương trình khởi động chỉ chạy 1 lần khi reset vi điều khiển.

Sau khi khởi động xong xẽ thực hiện việc hiển thị giờ ra LED 7 đoạn, thời gian sáng của mõi LED 7 đoạn khoảng 200ms, sau đó thực hiện kiểm tra xem có nhận được điều khiển từ remote không, nếu có thì thực hiện các công việc do người sử dụng yêu cầu, sau đó lấy thời gian thực từ RTC lên vùng đệm để hiển thị và kiểm tra thời gian tắt/mở để tắt/mở đèn theo thời gian cài đặt của người sử dụng.

54 Thời gian để vi điều khiển thực hiện lệnh từ remote, cập nhật thời gian và kiểm tra thời gian tắt/mở khoảng vài chục ms.

Code:

CALL INITIAL

CALL SETINTERRUPT

Chương trình chính sẽ gọi chương trình con khởi động modun RF và thiết lập ngắt. Bộ phận nhận lệnh từ điều khiển từ xa(remote hồng ngoại) nằm trong ngắt timer0, khi nhận được lệnh, chương trình phục vụ ngắt sẽ đưa lệnh vừa nhận được vào thanh ghi lệnh IRMCR, chương trình chính dựa vào thanh ghi này để làm việc.

3.2.2. Khởi động

Khi mới cấp điện vi điều khiển sẽ khởi tạo các điều kiện để cho phép ngắt ở timer0, timer1 ở chế độ đếm xung ngoài và khởi động modun Zigbee MRF24J40MA.

khởi động modun Zigbee MRF24J40MA:

1. SOFTRST (0x2A) = 0x07 – Perform a software Reset. The bits will be automatically cleared to ‘0’ by hardware.

2. PACON2 (0x18) = 0x98 – Initialize FIFOEN = 1 and TXONTS = 0x6. 3. TXSTBL (0x2E) = 0x95 – Initialize RFSTBL = 0x9.

4. RFCON1 (0x201) = 0x01 – Initialize VCOOPT = 0x01. 5. RFCON2 (0x202) = 0x80 – Enable PLL (PLLEN = 1).

6. RFCON6 (0x206) = 0x90 – Initialize TXFIL = 1 and 20MRECVR = 1.

7. RFCON7 (0x207) = 0x80 – Initialize SLPCLKSEL = 0x2 (100 kHz Internal oscillator).

8. RFCON8 (0x208) = 0x10 – Initialize RFVCO = 1.

55 9. SLPCON1 (0x220) = 0x21 – Initialize CLKOUTEN = 1 and SLPCLKDIV = 0x01.

Configuration for nonbeacon-enabled devices (see Section 3.8 “Beacon-Enabled and Nonbeacon-Enabled

Networks”):

10. BBREG2 (0x3A) = 0x80 – Set CCA mode to ED. 11. RSSITHCCA (0x3F) = 0x60 – Set CCA ED threshold.

12. BBREG6 (0x3E) = 0x40 – Set appended RSSI value to RXFIFO. 13. Enable interrupts – See Section 3.3 “Interrupts”.

14. Set channel – See Section 3.4 “Channel Selection”. 15. RFCTL (0x36) = 0x04 – Reset RF state machine. 16. RFCTL (0x36) = 0x00.

17. Delay at least 192 μs.

cho phép ngắt ở timer0, timer1 ở chế độ đếm xung ngoài: mov tmod,#61h

setb ea setb et0 setb tr0 setb tr1

56

3.2.3. Quét LED 7 đoạn

Phần lớn thời gian chương trình phục vụ cho việc quét LED 7 đoạn, nhằm đảm bảo LED 7 đoạn ít bị chớp nhất khi thực hiện các công việc tốn thời gian nhiều.

Đoạn chương trình quét LED 7 đoạn chỉ hiển thị 4 ô nhớ 33h,34h,35h,36h đây là 4 số được tính toán ra từ vùng nhớ đệm.

Code:

call chuyendoi;đổi sang mã LED 7 đoạn. mov a,@r1 call movap1 inc r1 mov a,r0 call movap0 rl a mov r0,a

57 Thanh ghi R1 chứa địa chỉ của mã LED 7 đoạn, R0 chứa vị trí LED 7 đoạn, p1 đưa dữ liệu ra LED 7 đoạn, p0 quét LED.

3.2.4. Thực hiện lệnh từ điều khiển từ xa

Đoạn chương trình thực hiện lệnh từ điều khiển từ xa thực hiện việc so sánh lệnh nhận được từ remote hồng ngoại với các giá trị đã được định sẵn và gọi chương trình con thực hiện công việc tương ứng.

Nếu nhận được số 10 sẽ thực hiện công việc: đảo bit cr.1 của thanh ghi trạng thái chương trình bit này được chỉ thị trên đèn tắt/mở , nếu bit cr.1=1, kèm theo ấn phím bất kỳ từ 0---9, sẽ Nạp thời gian tắt của đèn lên vùng nhớ đệm, ngược lại nếu bit cr.1=0, kèm theo ấn phím bất kỳ từ 0---9, sẽ Nạp thời gian mở của đèn lên vùng nhớ đệm.

Nếu ircmd=9, thực hiện đảo bit cr.0, nếu cr.0=1 chương trình ở chế độ 1 nghĩa là khi ấn các phím từ 1---9 sẽ ra lệnh tắt/mở đèn bình thường. Nếu cr.0=0, chương trình ở chế độ 2, chế độ điều chỉnh thời gian, dùng kết hợp với bit cr.1 để điều chỉnh.

Nếu ircmd=12(phím >), chương trình chính gọi chương trình con dời con trỏ LED 7 đoạn sang phải 1 số, khi phím > con trỏ sẽ dời sang phải đến số cuối cùng rồi quay lại số đầu tiên. Con trỏ ở vị trí nào thì nhấp nháy ở vị trí đó, sau khoảng 15s không thao tác phím, chương trình sẽ về trạng thái hoạt động bình thường, con trỏ ở vị trí 0.

Nếu ircmd=12(phím /\), chương trình chính gọi chương trình con hiệu chỉnh thời gian. Sau khi ta chọn loại thời gian cần điều chỉnh, dời con trỏ sang phải để tìm số cần thay đổi, phím /\ để tăng số hiện tại lên 1 đơn vị. Dựa vào thời gian nằm trên vùng nhớ đệm là gì mà việc tăng lên 1 đơn vị nằm giới hạn của số đó, rồi quay về 0.

VD: Nếu ta đang chỉnh ngày tháng, con trỏ ở hàng chục của tháng(hàng đơn vị của tháng = 1), thì hàng chục chỉ nằm trong đoạn 0—1.

58 Hình 3.16 – Thực hiện lệnh từ điều khiển từ xa

59

3.2.5. Tắt/mở các đèn:

Kiểm tra nếu thanh ghi IRMCR =1…8 sẽ bật/tắt đèn 1…..8 đồng thời gửi lệnh vừa thực hiện đến các modun mở rộng bằng chuẩn Zigbee IEEE 802.15.4. Sauk hi thực hiện xong sẽ reset thanh ghi IRMCR =0.

60

3.2.6. Nạp thời gian tắt/mở đèn

Việc Nạp thời gian tắt/mở đèn lên vùng nhớ đệm do thanh ghi cr quyết định. Nếu bit cr.0=0(chế độ điều chỉnh) và cr.1=0(đèn tắt/mở sáng), kèm theo ân phím từ 0---9, chương trình sẽ Nạp thời gian mở đèn, riêng đối với phím 0 chương trình Nạp thời gian thực lên vùng nhớ đệm của vi điều khiển và ngược lại. Biến screenposition chứa loại thời gian đang lưu trên vùng nhớ đệm, dựa vào biến này mà vi điều khiển biết được địa chỉ cần phải lưu lại sau khi điều chỉnh thời gian trên RTC.

61

3.2.7. Kiểm tra thời gian tắt/mở

Chương trình kiểm tra thời gian tắt mở đèn sẽ so sánh thời gian thực tế với thời gian do người sử dụng cài đặt định thời tắt/mở đèn, nếu 2 giá trị này bằng nhau chương trình sẽ ra quyết định tắt hoặc mở tùy theo giá trị được lưu. Khi thời gian tắt bằng với thời gian mở chương trình sẽ không làm gì, dùng khi người sử dụng không muốn sử dụng chứa năng hẹn giờ.

62

CHƯƠNG 4. KẾT QUẢVÀ ĐỀ NGHỊ

4.1. KẾT QUẢ

Đã tìm hiểu và sử dụng được những tính năng cơ bản của modun Zigbee MRF24J40MA của hãng Microchip sản xuất để truyền và nhận gói tin.

Tìm hiểu và sử dụng được các chuẩn dùng trong điều khiển từ xa bằng tia hồng ngoại.

Đã viết xong chương trình cho vi điều khiển họ 8051, điều khiển bảng điều khiển chính và modun phụ.

Hoàn thành sản phẩm bật/tắt 8 đèn bằng remote TV, hẹn giờ mở/tắt 8 đèn, công suất mõi đèn không quá 500W, kèm theo modun phụ nhận lệnh từ bảng điều khiển chính thông qua chuẩn không dây Zigbee dùng khi không thể đấu dây điện trực tiếp từ bảng điều khiển chính đến đèn ( hoặc vì tốn nhiều dây điện, hoặc vì tính thẩm mỹ…).

Kết quả thực nghiệm thực tế cho thấy thiết bị hoạt động khá dúng giờ(1 tuần sai 2 giây), so với giờ trên đài TV(THCT). Phần điều khiển công suất và phần hiển thị hoạt động ít bị nhiễu.

Tuy nhiên modun Zigbee MRF24J40MA hoạt động với tầm thu phát chưa được như nhà sản suất công bố (400 ft), thực tế chỉ đạt trên dưới 30 m dùng trong nhà.

Hình ảnh thực tế:

63 Hình 3.23 - Bộ điều khiển

Hình 3.22 - Bảng điều khiển chính khi mở đèn Hình 3.21- Bảng điều khiển chính

64

4.2. ĐỀ NGHỊ

Đây là một sản phẩm giúp căn nhà được đơn giản hóa việc quản lý hệ thống đèn chiếu sáng, có thể sử dụng trong thực tế được vì giá thành sản xuất rẻ( Nếu không sử dụng các modun mở rộng, thì giá của bảng điều khiển chính chưa đến 500 000 đồng/ bộ), dễ sử dụng, an toàn(khi mở/tắt đèn hoàn toàn không chạm tay chân đến thiết bị), dễ lắp đặt(đặt biệt là các ngôi nhà đã hoàn chỉnh hệ thống điện), tính thẩm mỹ cao(vừa làm đồng hồ vừa điều khiển đèn). Có thể dùng được trong gia đình, nhà xưởng, trường học, trang trại chăn nuôi, cơ sở kinh doanh mua bán.

65

PHỤ LỤC

Hướng dẫn sử dụng:

(trong hướng dẫn này tạm gọi các ngõ ra L1---L8 là ngõ ra dùng cho đèn):

1. Cách bố trí

a. L1….L8: 8 ngõ ra đấu trực tiếp ra 8 đèn (220v) b. 220vac: Ngõ vào 220V

c. 7s1…7s4: 4 LED 7 đoạn hiển thị thời gian và ngày tháng d. Db: dấu 2 chấm phân cách giờ và phút.

e. LED1…..LED8: 8 LED đơn hiển thị trạng thái tương ứng của 8 ngõ ra f. Adjust time: Chế độ 1/chế độ 2

g. Tắt/mở : timeon/timeoff, time/day h. Ir: mắt thu hồng ngoại.

L1 L2 L3 L4 L5 L6 L7 L8 2 2 0 v a c on/of adjust time le d 1 le d 2 le d 3 le d 4 ir le d 5 le d 6 le d 7 le d 8 7s1 7s2 7s3 7s4 db Hình 1 - Chức năng của các đèn chỉ dẫn

66

2. Cách đấu dây điện:

L1 L2 L3 L4 L5 L6 L7 L8 220v ac cp 3. Bật/tắt đèn(chế độ 1đèn Adjust time và tắt/mở tắt):

Khi mới cấp điện thiết bị mặc định ở chế độ 1 (LED Adjust time tắt) Ấn các phím từ 1---8 trên remote để bật/tắt 8 đèn.

4. Điều chỉnh giờ:

Hình 2 – Sơ đồ đấu dây điện

Hình 3 – Bật/tắt đèn

67 Ấn phím 9(đèn Adjust time sáng) để vào chế độ điều chỉnh(chế độ 2), ấn phím 0 để Nạp thời gian lên vùng đệm, ấn phím > để di chuyển con trỏ , ấn phím /\ để tăng số tại vị trí con trỏ đang nhấp nháy lên 1 đơn vị. Ấn lại phím 9 để thoát, nếu không sau 15s không thao tác thiết bị sẽ trở về chế độ 1(đèn Adjust time tắt).

5. Điều chỉnh ngày và tháng:

Ấn phím 9 để vào chế độ điều chỉnh(chế độ 2), ấn phím enter(đèn tắt/mở sáng ), ấn phím 0 để Nạp ngày, tháng lên vùng đệm, ấn phím > để di chuyển con trỏ , ấn phím /\ để tăng số tại vị trí con trỏ đang nhấp nháy lên 1 đơn vị. Ấn lại phím 9 để thoát, nếu không sau 15s không thao tác thiết bị sẽ trở về chế độ 1(đèn Adjust time tắt).

6. Điều chỉnh thời gian tắt/mở đèn:

Ấn phím 9(đèn Adjust time sáng) để vào chế độ điều chỉnh(chế độ 2), ấn phím enter( chọn thời gian tắt/mở, đèn tắt/mở sáng: thời gian mở, ngược lại là thời gian tắt) ấn phím từ 1….8 để Nạp thời gian tắt/mở tương ứng của đèn 1…8 lên vùng đệm, ấn phím > để di chuyển con trỏ , ấn phím /\ để tăng số tại vị trí con trỏ đang nhấp nháy lên 1 đơn vị. Ấn lại phím 9 để thoát, nếu không sau 15s không thao tác thiết bị sẽ trở về chế độ 1(đèn Adjust time tắt). Nếu không muốn sử dụng chế độ hẹn giờ, vui lòng để thời gian tắt và mở bằng nhau.

Hình 5 – Điều chỉnh ngày và tháng

68 7. Chi phí linh kiện

Tên linh kiện Số lượng Đơn giá giá

AT89S52 1 23000đ 23000đ AT89C2051 1 20000đ 20000đ Đế cắm 40 chân 1 3000đ 3000đ Đế cắm 20 chân 1 2000đ 2000đ MRF24J40MA 2 206750đ 413500đ BTA12A 9 5000đ 45000đ C1815 14 500đ 7000đ A1015 4 500đ 2000đ CRYSTAL 12MHz 2 3000đ 6000đ CRYSTAL 32768 1 3000đ 3000đ 7805 1 5000đ 5000đ 1N4007 1 100đ 100đ LM1117 1 5000đ 5000đ Tụ 33p 4 50đ 200đ Tụ 104 4 50đ 200đ Tụ 1000u 4 1000đ 4000đ Điện trở thanh 4k7 5 1000đ 5000đ Điện trở 5k6 12 50đ 600đ Điện trở 220 17 50đ 750đ Điện trở 100 7 50đ 350đ LED đơn 181 500đ 90500đ Mạch in 1 60000đ 60000đ Tổng cộng:696300đ

69

TÀI LIỆU THAM KHẢO

[1] Microchip. MRF24J40 Data Sheet IEEE 802.15.4™ 2.4 GHz RF Transceiver.

năm 2008

[2] Microchip. SPI communication

[3] Microchip MiWi™ P2P Wireless Protocol

[4] Vishay Semiconductors. Data Formats for IR Remote Control

[5] ATMEL datasheet of AT89S52 microcontroler

[6] DALAS datasheet of RTC DS1307

[7] Phạm Hùng Kim Khánh. Giáo trình MCS51

[8] Trương Văn Tám. Giáo trình mạch tương tự. Nhà xuất bản Đại học Cần Thơ.

Cần Thơ, 1995.

[9] Lương Văn Sơn. Giáo trình Kỹ thuật số. Nhà xuất bản Đại học Cần Thơ. Cần

Một phần của tài liệu Thiết kế bộ điều khiển tắt mở thiết bị điện trong nhà (Trang 52)

Tải bản đầy đủ (PDF)

(68 trang)