Trình bày quá trình thiết kế mạch điều khiển thiết bị trong nhà gồm có cảm biến ánh sáng, cảm biến nhiệt độ, chuông cảnh báo, keypad nhập password. Bài báo cáo có đầy đủ hình ảnh, phân tích kĩ thuật, code lập trình C.
Trang 1THIẾT KẾ MẠCH ĐIỀU KHIỂN THIẾT BỊ TRONG
NHÀ MỤC LỤC
Contents
Trang 2DANH MỤC HÌNH VẼ
Trang 3DANH MỤC BẢNG BIỂU
Trang 4LỜI NÓI ĐẦU
Ngày nay, với những ứng dụng của khoa học kỹ thuật tiên tiến, thế giới của chúng ta đã
và đang một ngày thay đổi, văn minh và hiện đại hơn Sự phát triển của kỹ thuật điện tử đã tạo ra hàng loạt những thiết bị với các đặc điểm nổi bật như sự chính xác cao, tốc độ nhanh, gọn nhẹ là những yếu tố rất cần thiết góp phần cho hoạt động của con người đạt hiệu quả Điện tử đang trở thành một ngành khoa học đa nhiệm vụ.Nó đã đáp ứng được những nhu cầu cần thiết trong hoạt động đời sống hằng ngày.Một trong những nhu cầu đó là vấn đề xây dựng ngôi nhà an toàn và thông minh Các gia đình trên Thành phố hiện nay hầu hết là những ngôi nhà ống, biệt thự khép kín, với mong muốn ngôi nhà đẹp, thẩm mĩ, tiện nghi, an toàn, tiết kiệm năng lượng thì hệ thống điều khiển thiết bị trong nhà là một giải pháp tối ưu
và hiện đại Hệ thống sẽ làm ngôi nhà trở nên thông minh hơn và giúp gia chủ kiểm soát tốt ngôi nhà của mình.
Sau một thời gian học tập và nghiên cứu, với sự chỉ bảo của thầy giáo Hàn Huy Dũng
cùng sự trợ giúp của các bạn trong nhóm và các tài liệu có liên quan,chúng em đã hoàn thành xong đề tài.
Bài tập lớn cơ bản đã hoàn thành xong, nhưng không thể tránh nhiều thiếu sót mong thầy cô giáo thông cảm và chỉ bảo thêm để đề tài có thể ứng dụng rộng rãi trong thực tế.
CHƯƠNG 1: MÔ TẢ ĐỀ TÀI
1.1 Yêu cầu chức năng
1 Đăng nhập password vào nhà thông qua hệ thống keypad và hiển thị trên LCD
Trang 5Nếu đúng thì trả về “Đăng nhập thành công”, nếu sai thì trả về “Đăng nhập lỗi”
2 Báo hiệu chuông cảnh báo khi đăng nhập sai 3 lần
3 Có thể chỉnh sửa, thay đổi password
4 Khi không đăng nhập thì hiện thị trên LCD ngày, tháng, năm và giờ hiện tại
5 Hiển thị nhiệt độ hiện thời trên Led 7 thanh
6 Điều khiển bật hoặc tắt đèn phụ thuộc vào ánh sáng trong phòng
7 Hẹn giờ tắt đèn theo thời gian qua keypad
1.2 Yêu cầu phi chức năng
1 Sử dụng Pic 16f877a làm trung tâm điều khiển mạch.
2 Dùng keypad dán 4x4.
3 Thiết kế module cảm biến ánh sáng của phòng.
4 Code viết bằng cả ASM và C.
5 PCB có tên nhóm và tên thành viên.
6 Mạch nhỏ gọn, sắp xếp linh kiện hợp lý.
7 Chức năng tương tác người dùng dễ sử dụng.
Trang 61.3 Sơ đồ khối hệ thống
CHƯƠNG 2: THIẾT KẾ HỆ THỐNG
2.1 Khối xử lý trung tâm
Pic16f877A
Ngôn ngữ lập trình đơn giản với 35 lệnh có độ dài 14 bit.
Tất cả các câu lệnh thực hiện trong 1 chu kì lệnh ngoại trừ 1 số câu lệnh rẽ nhánh thực hiện trong 2 chu kì lệnh Chu kì lệnh bằng 4 lần chu kì dao động của thạch anh.
Bộ nhớ chương trình Flash 8Kx14 words, với khả năng ghi xoá khoảng 100 ngàn lần.
Bộ nhớ Ram 368x8bytes.
Bộ nhớ EFPROM 256x8 bytes.
Khả năng ngắt (lên tới 14 nguồn cả ngắt trong và ngắt ngoài).
Ngăn nhớ Stack được chia làm 8 mức.
Trang 7 Truy cập bộ nhớ bằng địa chỉ trực tiếp hoặc gián tiếp
Dải điện thế hoạt động rộng: 2.0V đến 5.5V.
Nguồn sử dụng 25mA.
Công suất tiêu thụ thấp:
<0.6mA với 5V, 4MHz
20uA với nguồn 3V, 32 kHz.
Có 3 timer: timer0, 8 bit chức năng định thời và bộ đếm với hệ số tỷ lệ trước.Timer1,
16 bit chức năng bộ định thời, bộ đếm với hệ số tỷ lệ trước, kích hoạt chế độ Sleep.Timer2, 8 bit chức năng định thời và bộ đếm với hệ số tỷ lệ trước và sau.
Có 2 kênh Capture/ so sánh điện áp (Compare)/điều chế độ rộng xung PWM 10 bit / (CCP).
Có 8 kênh chuyển đổi ADC 10 bit.
Cổng truyền thong nối tiếp SSP với SPI phương thức chủ và I2C (chủ/phụ).Bộ truyền nhận thông tin đồng bộ, dị bộ (USART/SCL) có khả năng phát hiện 9 bit địa chỉ.
Cổng phụ song song (PSP) với 8 bít mở rộng, với RD, WR và CS điều khiển.
2.2 Khối cảm biến: cảm biến ánh sáng và nhiệt độ
a) LDR:
LDR là từ viết tắt của “Light Dependent Resistor”,nghĩa là quang điện trở.
Là 1 thiết bị cảm biến ánh sang dựa theo nguyên tắc hoạt động của quan trở khi thay đổi nguồn ánh sáng chiếu vào,LDR có thể có giá trị điện trở như sau:
+ ánh sáng ban ngày : 5000 ohm
+ tối : 20000000 ohm
Trang 8* LM35 có độ biến thiên theo nhiệt độ : 10mV/1(0C)
Trang 9* Độ chính xác cao, tính năng cảm biến nhiệt độ rất nhạy, ở nhiệt độ 25(0C) nó có sai số không quá1%.Với tầm đo từ 0(0C) đến 128(0C) , tín hiệu ngõ ra tuyến tính liên tục với những thay đổi của tínhiệu nhõ vào.
* Thông số kỹ thuật:
- Tiêu tán công suất thấp
- Dòng làm việc từ 400µA đến 5mA.
+Ở 5(0C) thì điện áp ngõ ra Vout = 2,78VỞ 100(0C) thì điện áp ngõ ra Vout = 3,71V
Tầm biến thiên điện áp tương ứng với nhiệt độ từ 0(0C) đến 100(0C) là 1V
Tính toán nhiệt độ đầu ra và sai số của hệ thống:
Ta có hàm truyền đạt sau:
Trang 10Từ hàm truyền đạt trên ta có : U=t.K
Với K là điện áp đầu ra của LM35 : K=10mV/℃
t là nhiệt độ môi trường [K]
U= t 10mV/℃
Có ADC=11bit n=11
Dải đo :A= [0-5]V
Bước thay đổi n=5/2023 =2,44mV
Giá trị ADC đo được từ giá trị điện áp đầu vào :
ADC_Value = U/n= (t*10mV)/2,44mV Giá trị nhiệt độ đo được :
T=ADC_Value*2,44/10 (℃)
Sai số của hệ thống đo:
+tại 0℃ thì điện áp của LM35 là 10mV
+ tại 150℃ thì điện áp của LM35 là 1,5V
Giải điện áp ADC biến đổi là 1,5-0,01=1,49 (V) +ADC 11 bit nên bước thay đổi của ADC là :n=2,44mV
Trang 11Vậy sai số của hệ thống đo là Y=0,00244/1,49=0,164%
2.3 Khối chấp hành
a) Keypad
Keypad là một "thiết bị nhập" chứa các nút nhấn cho phép người dùng nhập các chữ
số, chữ cái hoặc ký hiệu vào bộ điều khiển Keypad không chứa tất cả bảng mã ASCII như keyboard và vì thế keypad thường được tìm thấy trong các thiết bị chuyên dụng Các nút nhấn trên các máy tính điện tử cầm tay là một ví dụ về keypad Số lượng nút nhấn của một keypad thay đổi phụ thuộc vào yêu cầu ứng dụng Trong bài này tôi giới thiệu cách điều khiển của một loại keypad đơn giản, keypad 4x4.
Gọi là keypad 4x4 vì keypad này có 16 nút nhấn được bố trí dạng ma trận 4 hàng và 4 cột Cách bố trí ma trận hàng và cột là cách chung mà các keypad sử dụng Cũng giống như các ma trận LED, các nút nhấn cùng hàng và cùng cột được nối với nhau, vì thế với keypad 4x4 sẽ có tổng cộng 8 ngõ ra (4 hàng và 4 cột) Mô hình Keypad 4x4 được thể hiện trong
Trang 12“hiện” các chấm này sẽ tạo thành một ký tự cần hiển thị Trong các Text LCD, các mẫu ký
tự được định nghĩa sẵn Kích thước của Text LCD được định nghĩa bằng số ký tự có thể hiển thị trên 1 dòng và tổng số dòng mà LCD có Ví dụ LCD 16x2 là loại có 2 dòng và mỗi dòng có thể hiển thị tối đa 16 ký tự Một số kích thước Text LCD thông thường gồm 16x1, 16x2, 16x4, 20x2, 20x4… Ở đây em chọn LCD 16x2 phù hợp với yêu cầu đề tài.
Text LCD có 2 cách giao tiếp cơ bản là nối tiếp (như I2C) và song song
Trang 13Các chân điều khiển LCD.
Các chân điều khiển việc đọc và ghi LCD bao gồm RS, R/W và EN
RS (chân số 3): Chân lựa chọn thanh ghi (Select Register), chân này cho phép lựa chọn
1 trong 2 thanh ghi IR hoặc DR để làm việc Vì cả 2 thanh ghi này đều được kết nối với các chân Data của LCD nên cần 1 bit để lựa chọn giữa chúng Nếu RS=0, thanh ghi IR được chọn và nếu RS=1 thanh ghi DR được chọn Chúng ta đều biết thanh ghi IR là thanh ghi chứa mã lệnh cho LCD, vì thế nếu muốn gởi 1 mã lệnh đến LCD thì chân RS phải được reset về 0 Ngược lại, khi muốn ghi mã ASCII của ký tự cần hiển thị lên LCD thì chúng ta
sẽ set RS=1 để chọn thanh ghi DR Hoạt động của chân RS được mô tả trong hình 5.
Hình 5 Hoạt động của chân RS.
R/W (chân số 4): Chân lựa chọn giữa việc đọc và ghi Nếu R/W=0 thì dữ liệu sẽ được ghi từ bộ điều khiển ngoài (vi điều khiển AVR chẳng hạn) vào LCD Nếu R/W=1 thì dữ liệu
sẽ được đọc từ LCD ra ngoài Tuy nhiên, chỉ có duy nhất 1 trường hợp mà dữ liệu có thể đọc từ LCD ra, đó là đọc trạng thái LCD để biết LCD có đang bận hay không (cờ Busy Flag
- BF) Do LCD là một thiết bị hoạt động tương đối chậm (so với vi điều khiển), vì thế một
cờ BF được dùng để báo LCD đang bận, nếu BF=1 thì chúng ta phải chờ cho LCD xử lí xong nhiệm vụ hiện tại, đến khi nào BF=0 một thao tác mới sẽ được gán cho LCD Vì thế, khi làm việc với Text LCD chúng ta nhất thiết phải có một chương trình con tạm gọi là wait_LCD để chờ cho đến khi LCD rảnh Có 2 cách để viết chương trình wait_LCD Cách 1
là đọc bit BF về kiểm tra và chờ BF=0, cách này đòi hỏi lệnh đọc từ LCD về bộ điều khiển ngoài, do đó chân R/W cần được nối với bộ điều khiển ngoài Cách 2 là viết một hàm delay
Trang 14giản vì không cần đọc LCD, do đó chân R/W không cần sử dụng và luôn được nối với GND Tuy nhiên, nhược điểm của cách 2 là khoảng thời gian delay cố định nếu quá lớn sẽ làm chậm quá trình thao tác LCD, nếu quá nhỏ sẽ gây ra lỗi hiển thị Trong bài này tôi hướng dẫn bạn cách tổng quát là cách 1, để sử dụng cách 2 bạn chỉ cần một thay đổi nhỏ trong chương trình wait_LCD (sẽ trình bày chi tiết sau) và kết nối chân R/W của LCD xuống GND.
EN (chân số 5): Chân cho phép LCD hoạt động (Enable), chân này cần được kết nối với
bộ điều khiển để cho phép thao tác LCD Để đọc và ghi data từ LCD chúng ta cần tạo một
“xung cạnh xuống” trên chân EN, nói theo cách khác, muốn ghi dữ liệu vào LCD trước hết cần đảm bảo rằng chân EN=0, tiếp đến xuất dữ liệu đến các chân D0:7, sau đó set chân EN lên 1 và cuối cùng là xóa EN về 0 để tạo 1 xung cạnh xuống.
Trang 15Các led đơn lần lượt được gọi tên theo chữ cái A- B -C-D-E-F-G, và dấu chấm dot Như vậy nếu như muốn hiển thị ký tự nào thì ta chỉ cần cấp nguồn vào chân đó là led sẽ sáng như mong muốn
2 Thông số :
LED 7 thanh dù có nhiều biến thể nhưng tựu chung thì cũng chỉ vẫn có 2 loại đó là :
+ Chân Anode chung (chân + các led mắc chung lại với nhau )
+ Chân Catode chung (Chân - các led được mắc chung với nhau )
* Đối với loại Anode chung :
Trang 16+ Chân 3 và 8 là 2 chân Vcc(nối ngắn mạch lại với nhau , sau đó nối chung với chân anode của 8 led đơn ), vậy muốn led nào đó sáng thì chỉ việc nối chân catot xuống mass
Điện áp giữa Vcc và mass phải lớn hơn 1.3 V mới cung cấp đủ led sáng, tuy nhiên không được cao quá 3V
Trang 17Dòng = 20mA
Vậy nếu dùng nguồn 5V , thì áp rơi trên trở = 5 -2 = 3 V.
R = U / I = 3/(20*10^-3) = 150 ôm
2.5 Hoàn thiện sản phẩm
Trang 182.6 Sơ đồ nguyên lý toàn mạch
2.7 Sơ đồ Layout mạch
Trang 192.8 Hình ảnh thật sản phẩm
CHƯƠNG 3: KÊT LUẬN
Sản phẩm chạy ổn định nhưng có một vài thiếu sót chức năng thời gian thực và bật tắt đèn.
Trang 20TÀI LIỆU THAM KHẢO
1 Kỹ thuật vi xử lí - Văn thế Minh
2 Tài liệu tham khảo trên các trang web : picvietnam.com, dientuvietnam.net, tailieu.vn…
Trang 21PHỤ LỤC B: SOFTWARE CODE
void main()
{
char gio,gioc,phut,phutc;
char a_a1[]="hen gio ";
char a_a2[]="da dat gio";
char a_1[]="mat khau";
char b_1[]="mat khau moi";
char c_1[]="nhap lai";
char d_1[]="da thay doi";
char e_1[]="co loi";
Trang 24//if (a==20){ e=0; goto rallau;}
// if (a==50){ e=0; goto rall; }
Trang 25// if (a==20) goto sualai;
// if (a==50){ e=0; goto rall; }
Trang 26nhap_phim();
nhapbanphim(); }
Trang 27if(a==70) { while(a==70) nhap_phim(); e ; }
if(a==20) { while(a==20) nhap_phim(); e++; }
if(a==10) { while(a==10) nhap_phim(); if(BATDEN=='F') BATDEN='O';
else BATDEN='F';
lcd_clear();
lcd_puts(a_a1);
ghikt(gioc);
ghikt(' ');
ghikt(BATDEN);
Trang 28
}
if(e>4) e=0;
if ((a!=luuphim)&&(a<10)){
if(e==0) {if(a<3) gioc=a+48;}
ghikt(' ');
Trang 294) Nhấn phím “A” để thiết lập hẹn giờ
5) Nhấn phím “B” để dịch con trỏ sang phải
6) Nhấn phím “C” để dịch con trỏ sang trái
7) Các phím số để nhập số