Professional Documents
Culture Documents
Trong cuộc sống hiện đại ngày nay,Cơ-Điện tử là một ngành không thể thiếu và nó đóng
vai trò vô cùng quan trọng.Hầu như toàn bộ các nhà máy,xí nghiệp đều được áp dụng các
kỹ thuật của ngành cơ điện tử và một phần không nhỏ trong số đó là ứng dụng vi điều
khiển.
Dưới sự hướng dẫn của thầy Trần Văn Hùng,nhóm chúng em thực hiện đề tài : Bộ điều
khiển cho ngôi nhà thông minh (Hẹn giờ tắt mở cho đèn trong nhà).
Sau một thời gian nỗ lực không ngừng trong học tập cũng như được sự chỉ dẫn nhiệt tình
của thầy Trần Văn Hùng,nhóm chúng em đã hoàn thành đề tài được giao.Trong quá trình
thực hiện đề tài,do trình độ hiểu biết còn nhiều hạn chế nên đề tài còn nhiều thiếu sót,rất
mong được sự giúp đỡ của thầy để chúng em học tập được tốt hơn.Em xin gửi lời cảm ơn
đến các thầy giáo bộ môn Cơ-Điện tử và đặc biệt là thầy Trần Văn Hùng đã giúp đỡ
chúng em rất nhiều trong quá trình thực hiện đề tài,em xin chân thành cảm ơn.
1
MỤC LỤC
Đề Mục Trang
Chương 1: Nhiệm vụ và phân tích nhiệm vụ 2
1.1.Nhiệm vụ được giao. 2
1.2.Phân tích nhiệm vụ. 2
Chương 2: Thiết kế hệ thống. 3
2.1.Tổng quan về đề tài. 4
2.1.1. Bảng giá linh kiện. 4
2.2.Cấu trúc tổng thể. 5
2.2.1.Chip vi điều khiển 5
2.2.2.Khối tạo thời gian thực. 6
2.2.3.Khối hiển thị (Mạch Led 7 đoạn). 9
2.2.4.Khối công suất. 10
Chương 3 : Lý thuyết liên quan. 11
Chương 4 : Thiết kế phần thiết bị. 12
4.1.Khối điều khiển. 12
4.2.Điều chỉnh thời gian. 13
4.3.Khối hiển thị. 14
4.4.Khối tạo thời gian thực. 15
Chương 5 : Thiết kế phần mềm. 15
5.1.Sơ đồ điều khiển 16
5.2.Code lập trình. 17
Kết Luận 19
2
Chương 1: Nhiệm vụ và phân tích nhiệm vụ.
3
Chương 2: Thiết kế hệ thống
4
2.2.Cấu trúc tổng thể.
ATMEGA32L
2.2.1. Chip vi điều khiển.
Xử dụng chip vi điều khiển ATMEGA32L. Có 4 PORT điều khiển.
+ PORT B: từ PORTB.0=>PORTB.5 điều khiển sáng tắt các Led 7 đoạn.
+ PORT D: từ PORTD.0=>PORTD.6 điều khiển xuất dữ liệu ra Led 7 đoạn.(Hiển thị
thời gian ra Led 7 đoạn).
+ PORTC.7 điều khiển sáng tắt đèn.
+ 2 chân SDA và SCL của PORTC,ứng với PORTC.1 và PORTC.0 có tác dụng như
đường BUS dữ liệu để cho IC thời gian thực DS1307 truy cập vào.Chân SDA: chuỗi dữ
liệu,Chân SCL: dãy xung clock.
+ Chân Reset : Thiết lập lại trạng thái ban đầu cho vi điều khiển.
5
Sơ đồ các chân điều khiển
6
DS1307
DS1307 là IC thời gian thực với nguồn cung cấp nhỏ để (sử dụng Pin 3V)cập nhật thời
gian và ngày tháng.
DS1307 có 7 byte dữ liệu,1 byte điều khiển và 56 byte lưu trữ dành cho người sử dụng.
DS1307 hoạt động với vai trò slave trên đường Bus nối tiếp,việc truy cập được thi hành
với chỉ thị start và một mã thiết bị nhất định được cung cấp bởi địa chỉ các thanh ghi.Tiếp
theo đó là thanh ghi được truy cập liên tục cho đến khi chỉ thị stop được thực thi.
Sơ đồ chân DS1307.
7
Thông tin về thời gian và ngày tháng được lấy ra bằng cách đọc các byte thanh ghi thích
hợp.Thời gian và ngày tháng được thiết lập cũng thông qua các byte thanh ghi này bằng
cách viết vào đó những giá trị thích hợp.Nội dung của các thanh ghi dưới dạng mã
BCD(Binary coded decreaseimal).Bit 7 của thanh ghi second là bit clock haft(CH), khi
bit này được thiết lập 1 thì giao động disable,khi nó được xóa về 0 thì giao động enable.
DS1307 có thể chạy được ở chế độ 24h hay 12h.Bit thứ 6 của thanh ghi hours là bít chọn
chế độ 24h hoặc 12h.
Trong quá trình truy cập dữ liệu,khi chỉ thị START được thực thi thì dòng thời gian được
truyền tới 1 thanh ghi thứ 2,thông tin thời gian sẽ được đọc từ thanh ghi thứ cấp
này.Trong khi đó đồng hồ vẫn tiếp tục chạy.
DS1307 hỗ trợ Bus 2 dây 2 chiều và giao thức truyền dữ liệu.Thiết bị gửi dữ liệu lên Bus
được gọi là bộ phát và thiết bị nhận dữ liệu gọi là bộ thu.Thiết bị điều khiển quá trình này
gọi là Master.Thiết bị nhận sự điều khiển của Master gọi là Slave. Các Bus nhận sự điều
khiển của Master là thiết bị phát ra chuỗi xung clock (SCL) .Master sẽ điều khiển sự truy
cập Bus,tạo ra các chỉ thị START-STOP.
*Sự truyền nhận dữ liệu trên chuỗi Bus 2 dây: Tùy thuộc vào bit R/W mà hai loại truyền
dữ liệu sẽ được thực thi.
+ Truyền dữ liệu từ Master truyền và Slave nhận: Master sẽ truyền Byte đầu tiên là địa
chỉ của Slave,tiếp theo đó là các byte dữ liệu.Slave sẽ gửi lại bit thông báo đã nhận được
(Bit acknowledge) sau mỗi byte dữ liệu nhận được.Dữ liệu sẽ truyền từ bít có giá trị nhất
(MSB).
+ Truyền dữ liệu từ slave và master nhận: byte đầu tiên (địa chỉ của slave) được
truyền tới slave bởi master. Sau đó slave sẽ gửi lại master bit acknowledge. tiếp theo
đó slave sẽ gửi các byte dữ liệu tới master. Master sẽ gửi cho slave các bit
acknowledge sau mỗi byte nhận được trừ byte cuối cùng,sau khi nhận được byte cuối
8
cùng thì bit acknowledge sẽ không được gửi .
Sơ đồ đồng bộ
Led 7 đoạn
9
Led 7 đoạn là loại Led được tích hợp nhiều Led bên trong được nối cùng 1 chân.Trong
thực tế có 2 loại Led 7 đoạn là Anot chung và Katot chung.Trong sơ đồ được chỉ ra ở
hình trên là loại Led Anot chung.Các Led có chung nhau chân nguồn,các chân còn lại
a,b,c,d,e,f,g chân nào được nối với Mass thì chân đó sẽ sáng.
Bảng logic
10
Tranzito A1015 nhận tín hiệu kích từ vi điều khiển,OPTO MOC3020 giúp cách ly nguồn
xoay chiều với mạch vi điều khiển.Triac BT136 hoạt động trong nguồn xoay chiều,khi
cực G được thông sẽ cho dòng xoay chiều chạy qua và đèn sẽ được sáng.
Như hình ở trên,một khi thiết bị ngoại vi kết nối với Bus I2C thì chân SDA của nó sẽ nối
với dây SDA của Bus,chân SCL sẽ nối với dây SCL của Bus.
11
Mỗi dây SDA hay SCL đều được nối với điện áp dương của nguồn cấp thông qua một
điện trở kéo lên.Sự cần thiết của các điện trở kéo này là vì chân giao tiếp của các thiết bị
ngoại vi thường ở dạng cực máng hở.Giá trị của các điện trở này khác nhau tùy thuộc vào
từng thiết bị và chuẩn giao tiếp.Thường giao động trong khoảng 1KΩ đến 4.7KΩ.
Một Bus I2C chuẩn truyền 8 bít dữ liệu có hướng trên đường truyền với tốc độ là
100KBit/S-Chế độ chuẩn(Standard Mode) .Tốc độ truyền có thể lên tới 400KBit/S-
Chế độ nhanh(Fast Mode) và cao nhất là 3.4MBit/S-Chế độ cao tốc(High-Speed
Mode) .
12
Mạch vi điều khiển
Thực hiện chức năng đọc-xuất và xử lý dữ liệu.Thực hiện giao tiếp I2C với DS1307.
4.2.Điều chỉnh thời gian.
13
Gồm 3 nút nhấn.Khi ấn nút thì chân 1 được nối với chân 2 và đưa điện áp nối xuống
Mass.Lúc này điện áp tại chân 2 bằng 0 làm cho vi điều khiển nhận biết được sự thay đổi
này và thực hiện lệnh cần điều khiển.Nút thứ nhất có tác dụng thiết lập cho vi điều khiển
hoạt động ở chế độ bình thường hay chế độ cài đặt thời gian.Nút thứ 2 làm tăng thời gian
cần điều chỉnh,nút thứ 3 làm giảm thời gian cần điều chỉnh.
4.3.Khối hiển thị.
7 chân a,b,c,d,e,f,g của Led 7 đoạn được nối với nhau và nối vào PORTD của vi điều
khiển có tác dụng hiển thị thời gian.Chân số 3 của 6 Led 7 đoạn được nối với 6 chân E
của Tranzito C1815 có tác dụng điều khiển Led sáng tắt theo ý muốn.6 chân B của
Tranzito C1815 được nối với 6 chân của PORTB của vi điều khiển để điều khiển Led
sáng tắt với thời gian mong muốn.
4.4.Khối tạo thời gian thực.
Sử dụng IC thời gian thực DS1307 với nguồn nuôi 3V.Địa chỉ và dữ liệu được truyền nối
tiếp qua đường Bus 2 chiều cung cấp các thông tin về giờ-phút-giây.Chân số 5 và 6 được
nối tương ứng với 2 chân SDA và SCL của vi điều khiển để thực hiện giao tiếp I2C.
Nó hoạt động trong bộ giao động với tần số thạch anh là 32.768KHZ.
14
Sơ đồ khối tạo thời gian thực
15
Chương 5: Thiết kế phần mềm
/*****************************************************
5.1.Sơ đồ điều khiển.
*Giải thích:
Sau khi chương trình bắt đầu hoạt động,hệ thống sẽ giải mã Led 7 đoạn và quét Led.Sau
đó khởi tạo đường truyền I2C và đọc thời gian thực DS1307.Hiển thị thời gian ra 6 Led 7
đoạn.
Thời gian S bắt đầu tăng và mỗi lần tăng tiến hành kiểm tra 1 lần.khi S>59 thì đưa S về
trạng thái ban đầu là 00.Sau đó lại tiếp tục tăng.
16
Khi S>59 thì tăng phút và tiến hành kiểm tra phút.Nếu phút>59 thì tăng giờ và đưa giá trị
phút về 00.Sau đó lại tiếp tục tăng.
Khi Giờ>23 đưa giá trị giờ về 00 đồng thời tiến hành kiểm tra giờ.Sau đó lại tiếp tục
tăng.
Nếu giá trị giờ và phút thỏa mãn đồng thời với điều kiện ta cài đặt trong chuơng trình hẹn
giờ thì VDK sẽ out giá trị 0 hoặc 1 ra để điều khiển sáng tắt đèn.
/*****************************************************
5.2.Code lập trình.
void Read_DS1307()
{
if(ktra==0) //Đang ở chế độ bình thường.
{
if(a==1) //Cho phép cài đặt giữ liệu trong DS1307
{
rtc_set_time(h,m,s);
a=0; //Thoát khỏi cài đặt.
delay_us(2000);
}
rtc_get_time(&h,&m,&s); //Doc du lieu tu DS1307
}
}
******************************************************
void show_led() //Quét Led 7 đoạn.
{
if((ktra==0)||(ktra!=1)||((ktra==1)&&(x<50))) //Hiển thị dữ liệu ra Led với mọi giá trị
của biến ktra
{
PORTD=code[h/10]; //Các Led còn lại tương tự.
led1=1;
delay_us(2000);
led1=0;
PORTD=code[h%10];
led2=1;
delay_us(2000);
led2=0;
}
}
*****************************************************
void check()
{
set0=set1;set1=set; //Ban đầu khi nút chưa được nhấn.
if((set0==1)&&(set1==0)) //Sau khi nhấn nút (Có sườn xuống).
17
{
ktra++;if(ktra>7)ktra=0;
}
switch(ktra)
{
case 0:break;
case 1: //Các nút còn lại tương tự.
{
up0=up1;up1=up;a=1;
if((up0==1)&&(up1==0))
{
h++;if(h>23)h=0;
}
down0=down1;down1=down;
if((down0==1)&&(down1==0))
{
h--;if(h>23)h=23;
}
break;
}
*******************************************************
//Dùng nút nhấn để hẹn giờ.
case 4://tương tự đối với phút.
{
up0=up1;up1=up;a=1;
if((up0==1)&&(up1==0))
{
gio_c++;
if(gio_c>23)gio_c=0;
gio_mo=gio_c;
}
down0=down1;down1=down;
if((down0==1)&&(down1==0))
{
gio_c--;
if(gio_c>23)gio_c=23;
gio_mo=gio_c;//Lưu giá trị vào EEPROM.
}
}
*******************************************************
void alarm()
K=gio_mo; //Đọc giá trị từ EEPROM
U=phut_mo;
P=gio_tat;
V=phut_tat;
18
{
if((h==k)&&(m==u))
{
PORTC.7=0;
}
if((h==p)&&(m==v))
{
PORTC.7=1;
}
}
*****************************************************
*
Kết Luận
Sau một thời gian nỗ lực không ngừng trong học tập cũng như được sự nhiệt tình chỉ bảo
của thầy Trần Văn Hùng cũng như các thầy giáo bộ môn,em đã hoàn thành được đề tài
được giao đó là “ Bộ điều khiển ngôi nhà thông minh(hẹn giờ đóng ngắt đèn.)”.Trong quá
trình thực hiện đề tài em đã đúc kết được rất nhiều kinh nghiệm quý báu cho bản than để
phục vụ em trong quá trình học tập sau này.Qua rất nhiều lần thử nghiệm với mô hình bộ
điều khiển cho ngôi nhà thông minh cuối cùng em cũng đã đạt được thành công mong
muốn.Cũng với đề tài này,trong tương lai em dự định sẽ phát triển nó ở mức cao hơn,có
nhiều ứng dụng trong thực tế hơn như : tự động kết nối với một thuê bao điện thoại khi
xảy ra sự cố trong nhà(chẳng hạn như cháy nhà.),có hệ thống báo cháy và tự động dập tắt
đám cháy trong thời gian nhất định…
Cuối cùng em xin một lần nữa gửi lời cảm ơn chân thành đến thầy Trần Văn Hùng cũng
như các thầy giáo bộ môn đã giúp đỡ chúng em rất nhiều trong quá trình thực hiện đề
tài,em xin chân thành cảm ơn.
19