LỜI NÓI ĐẦU Ngày nay, việc ứng dụng cho các hệ thống nhúng ngày càng trở nên phổ biến: từ những ứng dụng đơn giản như điều khiển một chốt đèn giao thông định thời, đếm sản phẩm trong một
Trang 2Nhận xét của giáo viên hướng dẫn
Thái Nguyên, Ngày Tháng Năm 2011 Giáo Viên hướng dẫn (Ký ghi rõ họ tên) Nhận xét của giáo viên chấm
Thái Nguyên, Ngày Tháng Năm 2011
Giáo Viên hướng dẫn
(Ký ghi rõ họ tên)
Trang 3MỤC LỤC
LỜI NÓI ĐẦU 3
CHUƠNG 1: PHÂN TÍCH BÀI TOÁN 4
1.1 Khảo sát và phân tích bài toán 4
1.2 Lựa chọn giải pháp 6
1.2.1 Giải pháp công nghệ 6
1.2.2 Giải pháp thiết kế 7
1.2.3 Các yêu cầu 7
1.2.4 Giới hạn hạn định 7
CHƯƠNG 2: THIẾT KẾ HỆ THỐNG 8
2.1 Sơ đồ tổng quát 8
2.2 Sơ đồ Callgraph 9
2.3 Sơ đồ đặc tả 9
2.4 Các module trong hệ thống 10
2.4.1 Module khối nguồn 10
2.4.2 Module cảm biến 10
2.4.3 Module điều khiển trung tâm 11
2.4.4 Module tương tác điều khiển (hiển thị) 12
2.4.5 Module chấp hành .13
2.5 Lựa chọn linh kiện .14
2.5.1 Vi điều khiển PIC16F877A 14
2.5.2 Led hồng ngoại 21
2.5.3 Led 7 đoạn 23
2.5.4 Transistor 24
2.5.5 Tụ điện 25
2.5.6 Rơle 25
2.5.7 IC ổn áp 26
2.6 Sơ đồ nguyên lý của mạch .27
2.7 Thuật toán điều khiển .27
CHƯƠNG 3: XÂY DỰNG HỆ THỐNG 31
3.1 Thiết kế phần cứng 31
3.2 Thiết kế phần mềm 31
3.3 Kết quả mô phỏng .34
ĐÁNH GIÁ VÀ KẾT LUẬN 37
TÀI LIỆU THAM KHẢO 37
Trang 4LỜI NÓI ĐẦU
Ngày nay, việc ứng dụng cho các hệ thống nhúng ngày càng trở nên phổ
biến: từ những ứng dụng đơn giản như điều khiển một chốt đèn giao thông định
thời, đếm sản phẩm trong một dây chuyền sản xuất, điều khiển tốc độ động cơ
điện một chiều, thiết kế một biển quảng cáo dùng Led ma trận, một đồng hồ thời
gian thực….đến các ứng dụng phức tạp như hệ thống điều khiển robot, bộ kiểm
soát trong nhà máy hoặc hệ thống kiểm soát các máy năng lượng hạt nhân Các
hệ thống tự động trước đây sử dụng nhiều công nghệ khác nhau như các hệ
thống tự động hoạt động bằng nguyên lý khí nén, thủy lực, rơle cơ điện, mạch
điện tử số, các thiết bị máy móc tự động bằng các cam chốt cơ khí các thiết bị,
hệ thống này có chức năng xử lý và mức độ tự động thấp so với các hệ thống tự
động hiện đại được xây dựng trên nền tảng của các hệ thống nhúng
Với mong muốn giới thiệu ứng dụng cơ bản của hệ thống nhúng trong đời
sống hiện đại, nhóm chúng em đưa ra mô hình thiết kế hệ thống điều khiển đèn
thông minh dùng cho các phòng họp
Trong quá trình thực hiện đồ án môn học, nhóm chúng em cố gắng thiết kế
sao cho mô hình là đơn giản nhất, ổn định nhất; tuy nhiên do vấn đề thời gian và
kinh nghiệm nên mô hình vẫn còn gặp phải những vấn đề chưa thể khắc phục
Trang 5CHUƠNG 1: PHÂN TÍCH BÀI TOÁN
1.1 Khảo sát và phân tích bài toán
Hiện nay hầu hết việc giám sát và điều khiển chiếu sáng trong các phòng
công cộng được điều khiển bằng tay thông qua đóng mở các công tắc, các
aptomat, cầu dao Điều này khá thuận lợi và đơn giản vì ta có thể bật tắt đèn
theo nhu cầu sử dụng Tuy nhiên, do là phòng công cộng nên việc bật tắt đèn hầu
như do người trực khu nhà đó làm Vì thế họ không biết được chính xác khi nào
thì có người tới và khi nào thì mọi người đã ra hết khỏi phòng hoặc họ biết
nhưng vì phải quản lý nhiều phòng nên họ vẫn cứ để điện đến hết ca trực, điều
này gây lãng phí điện rất lớn, đặc biệt trong hoàn cảnh nước ta đang thiếu điện
một cách trầm trọng như hiện nay
Trên thị trường hiện nay đã có một số thiết bị bật tắt đèn thông minh, như
SmartLight do Hàn Quốc sản xuất: Được tích hợp sensor cảm ứng hồng ngoại
thân nhiệt, đèn sẽ tự động được bật khi có người đi vào vùng cảm ứng và tắt khi
không có người
Hình 1.1: Đèn thông minh Smartlight
SmartLight phù hợp với mọi nhu cầu chiếu sáng thông minh của bạn tại sân
Trang 6Tuy nhiên thiết bị này tích hợp luôn bộ điều khiển với đèn trong 1 sản phẩm Do
đó giá thành cao và không thích hợp cho các phòng cần lượng chiếu sáng lớn,
không thay đổi được loại bóng đèn theo yêu cầu
Hệ thống giám sát điều khiển chiếu sáng sử dụng camera kết nối với máy
tính để kiểm soát số người trong phòng, qua đó phát lệnh đóng mở các công tắc
tơ bật tắt bóng đèn
Hình 1.2: Hệ thống camera giám sát
Hệ thống này giúp việc bật tắt đèn ở nơi lắp đặt một cách chính xác, tự động
hoặc bán tự động Tuy nhiên do sử dụng máy tính nên giá thành của hệ thống rất
cao, mặt khác không giải quyết được vấn đề tiết kiệm điện Vì thế nó thường chỉ
được sử dụng ở những tòa nhà công nghệ cao, những khu vực cần điều chỉnh
chiếu sáng không phải vì mục đích tiết kiệm điện năng
Hệ thống bật tắt đèn tự động sử dụng các IC số và mạch Logic cho phép ta
Trang 7Hình 1.3: Hệ thống bật tắt đèn thông minh dùng IC số
Hệ thống này có cấu tạo đơn giản, rẻ, không phải lập trình mà chỉ dựa vào các
mạch Logic… nhưng tính linh động không cao, khó chỉnh định khi điều kiện làm
việc thay đổi, ít có khả năng nâng cấp mở rộng hệ thống
Với những phòng họp công cộng, khi mà lưu lượng người không lớn và có
thể kiểm soát được việc đếm người qua cửa thì ta hoàn toàn có thể áp dụng hệ
thống đèn thông minh sử dụng Vi điều khiển được lập trình để bật đèn khi có
người và tắt khi không có người Điều này vừa tiện lợi cho mọi người: ứng dụng
công nghệ tự động hóa vào cuộc sống con người, đảm bảo đủ ánh sáng trong quá
trình làm việc, người quản lý thì đỡ tốn thời gian… đồng thời góp phần giải
quyết vấn đề tiết kiệm điện năng trong thời kỳ mà nhu cầu điện tiêu thụ đã vượt
quá khả năng cung cấp của các nhà máy điện hiện nay
1.2 Lựa chọn giải pháp
1.2.1 Giải pháp công nghệ
Trang 8kiểm soát lượng người ra vào phòng Thu nhận tín hiệu rồi xử lý tín hiệu, khi có
người vào phòng, nếu đèn đang bật thì vẫn bật, đèn chưa bật thì bật đèn lên; khi
mọi người ra hết khỏi phòng thì tắt đèn đi Trong quá trình làm việc hệ thống
luôn hiển thị số người còn đang ở trong phòng để tiện cho việc kiểm tra, theo
dõi
1.2.2 Giải pháp thiết kế
Để phát hiện người ra ta dùng 2 bộ thu phát hồng ngoại mắc gần nhau đặt
ở cửa ra vào
Xử lý, điều khiển dùng vi điều khiển Pic: lập trình để Pic nhận tín hiệu
vào từ 2 bộ Led hồng ngoại, tính toán xử lý để đưa ra lệnh bật tắt đèn
Để hiển thị ta dùng Led 7 thanh: lấy tín hiệu ra từ Pic để thông báo xem
trong phòng có bao nhiêu người
Điều khiển tắt/mở bóng đèn nhờ transistor cấp dòng cho rơ le
1.2.3 Các yêu cầu
Hệ thống điều khiển đèn thông minh này áp dụng cho các phòng họp:
Số lượng người trong phòng tối đa không quá 99 người
Làm việc với điện áp 220V/50Hz
Sensor và công nghệ tùy chọn
Có khả năng nâng cấp, cải tiến
1.2.4 Giới hạn hạn định
Làm việc cả ban ngày lẫn ban đêm
Thu nhận tín hiệu liên tục khi có người ra vào
Hệ thống cấp điện mới từ đầu
Trang 9CHƯƠNG 2: THIẾT KẾ HỆ THỐNG
2.1 Sơ đồ tổng quát
Hệ thống điều khiển đèn thông minh gồm có 5 khối chính
Hình 2.1: Sơ đồ tổng quát hệ thống bật tắt đèn thông minh
Khối Nguồn: Cung cấp nguồn cho hệ thống
Khối Cảm biến: Sử dụng sensor hồng ngoại dùng để thu nhận tín hiệu
người vào ra phòng, đưa tín hiệu thu được vào chân Pic để xử lý Để nhận
biết người đi vào hay đi ra ta dùng 2 bộ thu phát hồng ngoại mắc gần
nhau
Khối Xử lý: Dùng VDK Pic 16F877A để lấy tín hiệu từ cảm biến, tính
toán, lưu trữ và đưa ra khối hiển thị và khối chấp hành
Khối Hiển thị: Lấy tín hiệu ra từ chân Pic để hiển thị số lượng người hiện
đang ở trong phòng trên Led 7 thanh.Khối Chấp hành: Nhận tín hiệu từ
khối xử lý để thực hiện đóng cắt tiếp điểm mạch động lực
Khối
xử
lý
Khối chấp hành
Khối hiển thị
Khối
cảm
biến
Khối nguồn
Trang 10Module
Xử lý Cảm biến
Module
Xử lý Chương trình
Phân lượng người trong phòng
Trang 112.4 Các module trong hệ thống
2.4.1 Module khối nguồn
Module này tạo ra điện áp một chiều từ nguồn xoay chiều 220V để cung
cấp cho các linh kiện trong hệ thống Sử dụng biến áp để biến điện áp xoay chiều
220V thành điện áp xoay chiều 12V, dùng chỉnh lưu từ 12V xoay chiều sang
12V một chiều, dùng IC 7805 ổn áp để lấy ra điện áp ổn định 5V ở ngõ ra
J2
220V~
1 2
C2 C
12V
Hình 2.4.: Module nguồn cấp
2.4.2 Module cảm biến
Bộ phận cảm biến của hệ thống sử dụng mạch thu phát hồng ngoại Led
phát hồng ngoại nối với nguồn 1 chiều qua điện trở R1, R2: phát ra ánh sáng
hồng ngoại truyền tới Led thu Led thu hồng ngoại có 3 chân: chân 3 và 1 nối với
nguồn qua R3, R4 và đất, chân 2 lấy tín hiệu ra đưa vào chân Vi xử lý Ở trạng
thái bình thường, tín hiệu hồng ngoại truyền từ khối phát được Led thu thu nhận,
trên đầu ra 2 tín hiệu ở mức cao (mức 1); khi có người đi cắt qua khiến Led thu
mất tín hiệu, đầu ra 2 cho tín hiệu ở mức thấp (mức 0) Để có thể phân biệt được
là người đi vào hay đi ra ta mắc 2 bộ Thu- Phát song song và đặt cạnh nhau Tín
hiệu thu được từ đầu ra của 2 Led thu được đưa vào 2 chân Vi xử lý để thực hiện
quá trình tính toán, kiểm tra, lưu trữ…
Trang 12
D1 LED PHAT 1
D2 LED PHAT 2
Vcc-5V
U1 LED THU 1
Hình 2.5: Module thu phát hồng ngoại
2.4.3 Module điều khiển trung tâm
Khối điều khiển trung tâm dùng vi điều khiển Pic 16F877A Khi có tín
hiệu ngắt từ bộ thu hồng ngoại qua các chân RB4 và RB5 của cổng B thi Vi điều
khiển sẽ kích hoạt ngắt cổng B từ RB4>>RB7, qua thuật toán đã nạp Pic thực
hiện chương trình điều khiển đưa tới các cổng A, C, D tín hiệu để điều khiển
khối hiển thị (Led 7 thanh) và khối chấp hành (module động lực)
Bộ tạo dao động dùng thạch anh 20M cung cấp ngồn dao động cho Pic
Bộ Reset cấp nguồn 5V và xác lập trạng thái ban đầu cho Pic
Trang 13Y1 ZTB C3
RA1/AN1 3
RA2/AN2/VREF-/CVREF 4
RA3/AN3/VREF+
5 RA4/T0CKI/C1OUT 6
RA5/AN4/SS*/C2OUT 7
RB0/INT 33RB1 34RB2 35RB3/PGM 36RB4 37RB5 38RB6/PGC 39RB7/PGD 40
RC0/T1OSO/T1CKI 15RC1/T1OSI/CCP2 16RC2/CCP1 17RC3/SCK/SCL 18RC4/SDI/SDA 23RC5/SDO 24RC6/TX/CK 25RC7/RX/DT 26RD0/PSP0 19RD1/PSP1 20RD2/PSP2 21RD3/PSP3 22RD4/PSP4 27RD5/PSP5 28RD6/PSP6 29RD7/PSP7 30
OSC1/CLKIN 13
OSC2/CLKOUT 14
VDD 32
VDD 11
VSS 31 VSS 12
MCLR*/VPP 1
RE0/RD*/AN5 8
RE1/WR*/AN6 9
RE2/CS*/AN7 10
S1 S3 S4 S5 S6 S7 S2
L1 L2
TH2
T13 T14
Hình 2.6: Module điều khiển trung tâm
2.4.4 Module tương tác điều khiển (hiển thị)
Để tiện cho việc kiểm tra theo dõi số người hiện đang ở trong phòng, ta sử
dụng 2 Led 7 thanh mắc chung Anot với số người hiển thị tối đa là 99 người Tín
hiệu điều khiển từ Vi xử lý đưa ra cổng C để bật tắt các thanh Led từ 1 đến 7(
tích cực ở mức dương) tương ứng với các con số từ 0 đến 9 cần hiển thị Để hiển
thị cả hai Led ta dùng thuật toán quét Led với tín hiệu đưa ra từ cổng D quyết
định Led 1 hay Led 2 được bật
Trang 14Bộ phận chấp hành có Role nối với thiết bị điện Vi xử lý sau khi xử lý tín
hiệu sẽ gửi lệnh điều khiển để đóng mở Transistor cấp nguồn cho cuộn dây của
Role (dòng hoặc áp) Đèn điện được nối với nguồn 220V xoay chiều qua tiếp
điểm của Role, khi Role tác động thì đèn bật lên và ngược lại đèn tắt khi Role
thôi tác động Để đảm bảo cho hệ thống có thể làm việc ở cả hai chế độ bằng tay
Q1 NPN
LS1 RELAY
J1 220V~
DEN
Trang 152.5 Lựa chọn linh kiện
2.5.1 Vi điều khiển PIC16F877A
a Sơ đồ chân vi điều khiển PIC 16F877A
Hình 2.9: Sơ đồ chân PIC 16F877A
b Một vài thông số về vi điều khiển PIC 16F877A
Đây là vi điều khiển thuộc họ PIC16Fxxx với tập lệnh gồm 35 lệnh có độ
dài 14 bit Mỗi lệnh đều được thực thi trong một chu kì xung clock Tốc độ hoạt
động tối đa cho phép là 20 MHz với một chu kì lệnh là 200ns Bộ nhớ chương
trình 8Kx14 bit, bộ nhớ dữ liệu 368x8 byte RAM và bộ nhớ dữ liệu EEPROM
với dung lượng 256x8 byte Số PORT I/O là 5 với 33 pin I/O Các đặc tính ngoại
vi bao gồm các khối chức năng sau:
Timer0: bộ đếm 8 bit với bộ chia tần số 8 bit
Timer1: bộ đếm 16 bit với bộ chia tần số, có thể thực hiện chức năng đếm dựa
Trang 16 Timer2: bộ đếm 8 bit với bộ chia tần số, bộ postcaler Hai bộ Capture/so sánh/điều
chế độ rộng xung
Các chuẩn giao tiếp nối tiếp SSP (Synchronous Serial Port), SPI và I2C Chuẩn
giao tiếp nối tiếp USART với 9 bit địa chỉ
Cổng giao tiếp song song PSP (Parallel Slave Port) với các chân điều khiển RD, WR, CS
bên ngoài
Các đặc tính Analog: 8 kênh chuyển đổi ADC 10 bit Hai bộ so sánh
Bộ nhớ flash với khả năng ghi xóa được 100.000 lần Bộ nhớ EEPROM với khả
năng ghi xóa được 1.000.000 lần Dữ liệu bộ nhớ EEPROM có thể lưu trữ trên 40
năm Khả năng tự nạp chương trình với sự điều khiển của phần mềm Nạp được
chương trình ngay trên mạch điện ICSP (In Circuit Serial Programming) thông
qua 2 chân Watchdog Timer với bộ dao động trong Chức năng bảo mật mã
chương trình Chế độ Sleep Có thể hoạt động với nhiều dạng Oscillator khác
nhau
Trang 17c Sơ đồ khối vi điều khiển PIC 16F877A
Hình 2.10 : Sơ đồ khối vi điều khiển PIC16F877A
d Tổ chức bộ nhớ
Cấu trúc bộ nhớ của vi điều khiển PIC16F877A bao gồm bộ nhớ chương
trình (program memory) và bộ nhớ dữ liệu (data memory)
Trang 18page 0 đến page 3) Như vậy bộ nhớ chương trinh có khả năng chứa được
8*1024 =8192 lệnh (vì một lệnh sau khi mã hóa sẽ có dung lượng 1 word (14
bit) Để mã hóa được địa chỉ của 8k word bộ nhớ chương trình , bộ đếm chương
trình có dung lượng 13 bit (PC<12:0>) Khi vi điều khiển reset , bộ đếm chương
trình sẽ chỉ đến địa chỉ 0000h (reset vector) Khi có ngắt xảy ra , bộ đếm chương
trình sẽ chỉ đến địa chỉ 0004h (interrupt vector) Bộ nhớ chương trình không bao
gồm bộ nhớ stack sẽ được đề cập cụ thể trong phần sau
Bộ nhớ dữ liệu của PIC là bộ nhớ EEPROM được chia ra làm
nhiều bank Đối với PIC16F877A bộ nhớ dữ liệu được chia ra làm 4 bank
Mỗi bank có dung lượng 128 byte, bao gồm các thanh ghi có chức năng đặc biệt
SFG (Special Function Register) nằm ở các vùng địa chỉ thấp và các thanh ghi
mục đích chung GPR (General Purpose Pegister) nằm ở vùng địa chỉ còn lại
trong bank Các thanh ghi SFR thường xuyên được sử dụng (ví dụ như thanh ghi
STATUS) sẽ được đặt ở tất cà các bank của bộ nhớ dữ liệu giúp thuận tiện trong
quá trình truy xuất và làm giảm bớt lệnh của chương trình
Stack không nằm trong bộ nhớ chương trình hay bộ nhớ dữ liệu mà là một
vùng nhớ đặc biệt không cho phép đọc hay ghi Khi lệnh CALL được thực hiện
hay khi một ngắt xảy ra làm chương trình bị rẽ nhánh, giá trị của bộ đếm chương
trình PC tự động được vi điều khiển cất vào trong stack Khi một trong các lệnh
RETURN, RETLW hat RETFIE được thực thi, giá trị PC sẽ tự động được lấy ra
từ trong stack, vi điều khiển sẽ thực hiện tiếp chương trình theo đúng qui trình
định trước
Bộ nhớ Stack trong vi điều khiển PIC họ 16F87xA có khả năng chứa được
8 địa chỉ và hoạt động theo cơ chế xoay vòng Nghĩa là giá trị cất vào bộ nhớ
Stack lần thứ 9 sẽ ghi đè lên giá trị cất vào Stack lần đầu tiên và giá trị cất vào
bộ nhớ Stack lần thứ 10 sẽ ghi đè lên giá trị 6 cất vào Stack lần thứ 2 Cần chú ý
là không có cờ hiệu nào cho biết trạng thái stack, do đó ta không biết được khi
nào stack tràn Bên cạnh đó tập lệnh của vi điều khiển dòng PIC cũng không có
lệnh POP hay PUSH, các thao tác với bộ nhớ stack sẽ hoàn toàn được điều khiển
bởi CPU
Trang 19e Các cổng xuất nhập của PIC16F877A
Cổng xuất nhập (I/O port) chính là phương tiện mà vi điều khiển dùng để
tương tác với thế giới bên ngoài Sự tương tác này rất đa dạng và thông qua quá
trình tương tác đó, chức năng của vi điều khiển được thể hiện một cách rõ ràng
Một cổng xuất nhập của vi điều khiển bao gồm nhiều chân (I/O pin), tùy
theo cách bố trí và chức năng của vi điều khiển mà số lượng cổng xuất nhập và
số lượng chân trong mỗi cổng có thể khác nhau Bên cạnh đó, do vi điều khiển
được tích hợp sẵn bên trong các đặc tính giao tiếp ngoại vi nên bên cạnh chức
năng là cổng xuất nhập thông thường, một số chân xuất nhập còn có thêm các
chức năng khác để thể hiện sự tác động của các đặc tính ngoại vi nêu trên đối
với thế giới bên ngoài Chức năng của từng chân xuất nhập trong mỗi cổng hoàn
toàn có thể được xác lập và điều khiển được thông qua các thanh ghi SFR liên
quan đến chân xuất nhập đó
Port A
Port A (RPA) bao gồm 6 I/O pin Đây là các chân “hai chiều”
(bidirectional pin), nghĩa là có thể xuất và nhập được Chức năng I/O này được
điều khiển bởi thanh ghi TRISA (địa chỉ 85h) Muốn xác lập chức năng của một
chân trong PortA là input, ta “set” bit điều khiển tương ứng với chân đó trong
thanh ghi TRISA và ngược lại, muốn xác lập chức năng của một chân trong Port
A là output, ta “clear” bit điều khiển tương ứng với chân đó trong thanh ghi
TRISA Thao tác này hoàn toàn tương tự đối với các PORT còn lại Bên cạnh đó
Port A còn là ngõ ra của bộ ADC, bộ so sánh, ngõ vào analog ngõ vào xung
clock của Timer0 và ngõ vào của bộ giao tiếp MSSP (Master Synchronous
Serial Port)
Các thanh ghi SFR liên quan đến Port A bao gồm:
Port A TRISA (địa chỉ 85h) : điều khiển xuất nhập
CMCON (địa chỉ 9Ch) : thanh ghi điều khiển bộ so sánh
CVRCON (địa chỉ 9Dh) : thanh ghi điều khiển bộ so sánh điện áp