You are on page 1of 19

LỜI NÓI ĐẦU

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.

Nha Trang,ngày 10 tháng 06 năm 2010.

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ụ.

1.1.Nhiệm vụ được giao.


Thiết kế và chế tạo bộ điều khiển cho ngôi nhà thông minh (Hẹn giờ đóng mở đèn).
2.2.Phân tích nhiệm vụ.
*Tài liệu tham khảo:
+ Giáo trình Kỹ thuật ứng dụng Vi Điều Khiển,interface board designed và điện tử công
suất của thầy Trần Văn Hùng.
+ Các tài liệu liên quan tham khảo trên mạng internet.
+ Tham khảo ý kiến chuyên môn của các thầy trong bộ môn cơ điện tử.
*Thiết kế phần cứng.
Thiết kế hệ thống bao gồm khối điều khiển (mạch vi điều khiển),khối hiển thị (mạch led
7 đoạn anot chung),khối thời gian thực (mạch DS1307),khối công suất (mạch công suất).
Trong khối điều khiển bao gồm chip vi xử lý ATMEGA32L,thực hiện chức năng điều
khiển,đọc-xuất dữ liệu.
Khối hiển thị bao gồm 6 led 7 đoạn,tương ứng hiển thị 00-00-00(giờ-phút-giây).Trong
khối hiển thị có 6 tranzito C1815 thực hiện chức năng kích mở cho từng led 7 đoạn sáng.
Khối thời gian thực bao gồm 1 ic thời gian thực DS1307 được sử dụng để cập nhật thời
gian và ngày tháng.Để giúp ic hoạt động,sử dụng nguồn nuôi pin 3V.
Khối công suất được sử dụng để đóng ngắt các đèn với nguồn xoay chiều.Sử dụng Triac
BT137 để hoạt động trong nguồn xoay chiều.IC cách ly MOC3020 được dùng để cách ly
mạch vi điều khiển với nguồn xoay chiều.
* Software : sử dụng ngôn ngữ lập trình CodeVision AVR để lập trình điều khiển.
*Giải thuật điều khiển :
+ Yêu cầu tìm hiểu:
Cách quét led và hiển thị giữ liệu ra led 7 đoạn.
Cách kích mở các Tranzito C1815 để làm sang tắt các led.
Cách đọc giữ liệu từ IC thời gian thực DS1307.
Cách hẹn giờ điều khiển đóng ngắt đèn.
Nguyên tắc hoạt động của IC thời gian thực DS1307.
Cách ghi-đọc dữ liệu trong EEPROM.

3
Chương 2: Thiết kế hệ thống

2.1.Tổng quan về đề tài.


Đề tài “ Thiết kế bộ điều khiển ngôi nhà thông minh(hẹn giờ đóng tắt các đèn)” với yêu
cầu chung là hiển thị thời gian thực ra Led 7 đoạn và hẹn giờ đóng ngắt các đèn.
Trong quá trình thiết kế,đề tài thường gặp phải những lỗi như : Chập mạch,các thanh của
Led 7 đoạn bị đứt nét,nhiễu mạch…
Biện pháp khắc phục:
+ Kiểm tra thật kỹ trước khi cấp nguồn nuôi cho mạch.
+ Dùng nhựa thông phủ bên ngoài mạch để bảo vệ.
+ Dùng đồng hồ số để test mạch.
+ Lưu ý: Mạch công suất hoạt động với nguồn xoay chiều nên phải hết sức cẩn thận khi
test mạch(Cần phải có ít nhất 2 người khi test mạch).
2.1.1. Bảng giá linh kiện.

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


Led 7 Seg 10 3.000vnd 30.000vnd
Nút nhấn 6 500.vnd 3.000vnd
Pin 3V 1 9.000vnd 9.000vnd
DS1307 1 10.000vnd 10.000vnd
Đế cắm Pin 1 6.000vnd 6.000vnd
Tranzito C1815 10 1000.vnd 10.000vnd
Lược đực 2 2.000vnd 4.000vnd
Lược cái 2 2.000vnd 4.000vnd
Dây Pin 2 8 2.000vnd 16.000vnd
Dây Pin 6 1 4.000vnd 4.000vnd
Dây Pin 7 2 4.000vnd 8.000vnd
Dây Pin 3 1 2.000vnd 2.000vnd
Trở công suất 3 1.000vnd 3.000vnd
Tụ 2 1.000vnd 2.000vnd
Bóng đèn 1 3.000vnd 3.000vnd
MOC3020 1 5.000vnd 5.000vnd
Triac(BT137) 1 6.000vnd 6.000vnd
Thùng xốp 1 12.000vnd 12.000vnd
ATMEGA32 1 64.000vnd 64.000vnd
Tổng Cộng 201.000vnd

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

2.2.2.Khối tạo thời gian thực.

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.

Vcc: nối với nguồn


X1,X2: nối với thạch anh 32,768 kHz
Vbat: đầu vao pin 3V
GND: nối Mass
SDA: chuỗi data
SCL: dãy xung clock
DS1307 có 56 byte SRAM,dữ liệu được truyền và nhận qua đường Bus 2 chiều,nó cung
cấp thông tin về giờ-phút-giây,ngày-tháng-năm.
Chân số 7 của IC DS1307 là chân SQW/OUT.Đây là chân đo xung của DS1307 hoạt
động ở 4 chế độ 1HZ,4.096HZ,8.192HZ,32.768HZ.Các chế độ này được quy định bởi
thanh ghi Control register.
Chân VCC: đầu vào là 5V DC giúp cho IC hoạt động,IC có thể được truy cập và giữ liệu
có thể đọc và viết.
Khi nguồn pin 3V được cấp vào và VCC nhỏ hơn 1.25VBAT thì quá trình đọc và viết
không được thực thi tuy nhiên chức năng timekeeper không bị ảnh hưởng bởi điện áp vào
thấp.Khi VCC < VBAT thì RAM và Tinekeeper sẽ được chuyển tới nguồn cung cấp trong
(thường là nguồn Pin 3V) .
Chân SCL (Serial clock input) : SCL được sử dụng để đồng bộ sự chuyển dữ liệu trên
đường dây nối tiếp.
Chân SDA (Serial data input/out) : là chân vào ra cho 2 đường nối tiếp,chân SDA thiết kế
theo kiểu cực máng hở,đòi hỏi phải có một điện trở kéo trong khi hoạt động.
Hai chân X1,X2 được nối với thạch anh tần số 32.768KHZ, là một mạch tạo dao động
ngoài,để mạch hoạt động ổn định thì cần phải mắc thêm 2 tụ 27n.
* Sơ đồ địa chỉ RAM và RTC :

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ộ

2.2.3.Khối hiển thị (Mạch Led 7 đoạn).

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

2.2.4.Khối công suất.

Mạch công suất

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.

Chương 3: Lý Thuyết Liên Quan

*Lý thuyết I2C.


Một giao tiếp I2C có 2 dây: Serial data(SDA) và Serial clock(SCL).SDA là đường truyền
dữ liệu hai hướng và SCL là đường truyền xung đồng hồ và chỉ theo một hướng.

Bus I2C và các thiết bị ngoại vi

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.

Kết nối thiết bị vào Bus I2C ở chế độ chuẩn.

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Ω.

Truyền nhận giữ liệu chủ-tớ

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) .

Chương 4: Thiết kế phần thiết bị

4.1.Khối điều khiển

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.

Mạch nút nhấn

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

You might also like