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à
Trang 1LỜ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
Trang 2MỤC LỤC
Trang 3Chươ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
Trang 4Chươ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
Trang 52.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
Trang 6Sơ đồ các chân điều khiển 2.2.2.Khối tạo thời gian thực
Trang 7DS1307
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 :
Trang 8Thô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
Trang 9cù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
Trang 10Led 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
Trang 11Tranzito 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 I 2 C 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 I 2 C ở chế độ chuẩn.
Trang 12Mỗ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-400KBit/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
Trang 13Mạ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
Trang 14Gồ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
Trang 15Sơ đồ khối tạo thời gian thực
Trang 16Chươ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
Trang 17Khi 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)
Trang 18{
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;
Trang 19if((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