Tải bản đầy đủ (.docx) (19 trang)

PHÒNG học THÔNG MINH (có code và mạch nguyên lý)

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (909.98 KB, 19 trang )

PHÒNG HỌC THÔNG MINH


DANH MỤC CÁC TỪ VIẾT TẮT
BJT
MISO
MOSI
LDR
AVR

Bipolar junction transistor


MỤC LỤC
Table of Contents
CHƯƠNG 1: ĐẶT VẤN ĐỀ....................................................................................................................................................10
1.1

Lý do chọn đề tài:....................................................................................................................................................10

1.2

Mục tiêu đề tài:.......................................................................................................................................................10

1.3

Vấn đề cần giải quyết:............................................................................................................................................10

CHƯƠNG 2: NỘI DUNG CỦA ĐỀ TÀI.................................................................................................................................11
2.1 Cơ sở lý thuyết:...............................................................................................................................................................11
2.1.1 Tổng quan về họ vi điều khiển Atmega 328:..........................................................................................................11


2.1.2 Tổ chức bộ nhớ của Atmega328:.........................................................................................................................12
2.1.3 Thanh ghi trạng thái:...............................................................................................................................................14
2.1.4 Giới thiệu chung về cấu trúc bên trong:............................................................................................................15
2.2 Mạch nguyên lý:.............................................................................................................................................................16
2.3 Nguyên lý hoạt động của mạch:.....................................................................................................................................18
2.3.1 Sơ đồ khối chức năng:..........................................................................................................................................18
2.3.2 Giới thiệu sơ lược về nguyên lý hoạt động:............................................................................................................18
2.3.3 Các linh kiện sử dụng trong mạch:.....................................................................................................................19
2.2.4 Phân tích nguyên lý hoạt động của từng phần:.................................................................................................19
CHƯƠNG 3: KẾT QUẢ MÔ PHỎNG....................................................................................................................................21
3.1 Mô hình mô phỏng bằng proteus:..................................................................................................................................21
3.2 Code của mạch:...............................................................................................................................................................21
CHƯƠNG 4: NHẬN XÉT........................................................................................................................................................24
4.1 Ưu điểm:........................................................................................................................................................................24
4.2 Khuyết điểm:..................................................................................................................................................................24
CHƯƠNG 5: KẾT LUẬN........................................................................................................................................................25


CHƯƠNG 1: ĐẶT VẤN ĐỀ

1.1 Lý do chọn đề tài:
Ngày nay việc nghiên cứu ứng dụng vi điều khiển vào các lĩnh vực cuộc sống ngày
càng phổ biến. Trong môi trường làm việc ở văn phòng hay phòng học việc đếm số
lượng nhân viên, số học sinh ra vào để bật tắt đèn giúp cơ quan nơi làm việc tiết kiệm
điện và thời gian ngoài ra nó còn giúp cuộc sống của chúng ta đơn giản hơn, thông minh
hơn. Được sự gợi ý của giáo viên hướng dẫn và qua tìm hiểu em đã chọn được đề tài
nghiên cứu cho đồ án một là phòng học thông minh với ứng dụng là họ vi điều khiển avr
atmega328. Đây cũng là một cơ hội tốt để ứng dụng kiến thức của môn vi xử lí vào thực
tế.
1.2 Mục tiêu đề tài:

Đề tài nhằm mục đích thiết kế và chế tạo mạch đếm số người ra vào phòng, và bật
đèn nếu có người trong phòng khi trời tối, tắt đèn nếu phòng đã đủ sáng sử dụng vi điều
khiển họ AVR Atmega 328 số lượng người sẽ được đếm nhờ diode quang, hiển thị kết
quả đếm được thông qua hệ thống led 7 đoạn, bật tắt đèn nhờ LDR và báo hiệu bằng tín
hiệu đèn led.
1.3 Vấn đề cần giải quyết:
+ Tìm hiểu các tài liệu liên quan đến đề tài cần nghiên cứu, đưa ra các phương pháp tối
ưu cho việc thiết kế chế tạo sản phẩm thực tế.
+ Thiết kế và chế tạo một board mạch gồm các khối: khối nguồn, khối xử lý trung tâm,
khối cảm biến, và khối hiển thị.
+ Tiến hành viết chương trình phối hợp hoạt động các khối dưới sự điều khiển của khối
mạch chính chứa Atmega 328.


CHƯƠNG 2: NỘI DUNG CỦA ĐỀ TÀI
2.1 Cơ sở lý thuyết:
2.1.1 Tổng quan về họ vi điều khiển Atmega 328:
Giới thiệu chung về cấu trúc phần cứng:
Atmega328 là một chíp vi điều khiển được sản xuất bời hãng Atmel thuộc họ
MegaAVR có sức mạnh hơn hẳn Atmega8. Atmega 328 là một bộ vi điều khiển 8
bít dựa trên kiến trúc RISC bộ nhớ chương trình 32KB ISP flash có thể ghi xóa
hàng nghìn lần, 1KB EEPROM, một bộ nhớ RAM vô cùng lớn trong thế giới vi xử
lý 8 bít (2KB SRAM)
Với 23 chân có thể sử dụng cho các kết nối vào hoặc ra i/O, 32 thanh ghi, 3 bộ
timer/counter có thể lập trình, có các gắt nội và ngoại (2 lệnh trên một vector ngắt),
giao thức truyền thông nối tiếp USART, SPI, I2C. Ngoài ra có thể sử dụng bộ biến
đổi số tương tự 10 bít (ADC/DAC) mở rộng tới 8 kênh, khả năng lập trình được
watchdog timer, hoạt động với 5 chế độ nguồn, có thể sử dụng tới 6 kênh điều chế
độ rộng xung (PWM), hỗ trợ bootloader.


Hình 1. Sơ đồ chân Atmega 328
+At mega328 gồm có 4 port :port A, port B, port C và port D đều có 8 bit có trở
kéo lên trong vừa có thể lmf đầu ra vừa có thể làm đầu vào.
+Vcc và GND :2 chân cấp nguồn cho vi điều khiển hoạt động.
+Reset đây là chân reset cứng khởi động lại mọi hoạt động của hệ thống.
+2 chân XTAL1, XTAL2 các chân tạo bộ dao động ngoài cho vi điều khiển, các
chân này được nối với thạch anh (hay sử dụng loại 4M), tụ gốm (22pF).
+Chân Avcc thường được nối lên Vcc nhưng khi sử dụng bộ ADC thì chân này
được nối qua 1 cuộn cảm lên Vcc với mục đích ổn định điện áp cho bộ biến đổi.


* Port B gồm có 8 chân từ chân số 14 đến 19 ( PB0 đến PB5) và chân 9, 10 ( PB6,
PB7). Với 3 chân có chức năng đặt biệt là chân 16 đến 18 tương ứng với SS,
MISO, MOSI là ba chân nạp chương trình cho vi điều khiển.
* Port C gồm có 7 từ chân 23 đến 28 và chân số 1 ( PC0 đến PC6) với chân số 1 có
chức năng đặc biệt là RESET.
* Port D gồm có 8 chân từ chân số 2 đến 6 và từ 11 đến 13 ( PD0 đến PD7 ) với
chân 9 và chân 10 là 2 chân gắn dao động thạch anh.
-Timer 8 bit: 2.
- Timer 16 bit: 1.
- ADC: 6 kênh, 10 bit.
- Giao tiếp: TWI (I2C), UART, SPI
* Điện áp hoạt động:
Atmega8L: 2.7V – 5.5V.
Atmega328: 4.5V – 5.5V…
* Atmega8 có 4 cách RESET:
- Reset khi cấp nguồn.
- Reset ngoài (thông qua chân RESET).
- Watchdog RESET.
- Reset khi nguồn bị sụt áp.

2.1.2 Tổ chức bộ nhớ của Atmega328:
* Bộ nhớ chương trình ( Program memory ) : Là bộ nhớ Flash lập trình và xóa
được. Bộ nhớ chương trình gồm 2 phần: các vector ngắt ( interrupts vectors ) và
các mã lệnh chương trình ( instruction ). Các interrupts vectors nằm ở phần đầu
của bộ nhớ chương trình và độ dài tùy vào từng loại chip. Tiếp sau interrupts
vectors là các instruction, đây là các mã lệnh để chip thực thi, chương trình viết
cho chip sẽ load vào phần này.
* Bộ nhớ dữ liệu (Data memory): Đây là bộ nhớ quan trọng nhất của chip, khi lập
trình chủ yếu truy cập bộ nhớ này. Data memory gồm có 5 phần:
Các thanh ghi chức năng (Register file): tất cả chip AVR đều có 32 thanh ghi(từ
0x00 -> 0x1F) và đều là thanh ghi 8 bit. Các Register file được đặt tên theo thứ tự
R0-R31. Các thanh ghi này dùng để truy cập trực tiếp các instruction, dùng để
thực hiện các phép toán,..
Các thanh ghi xuất nhập (I/O Register): I/O Register gồm 60 thanh ghi, là các ngõ
giao tiếp vi điều khiển với các thiết bị ngoại vi, tất cả các thanh ghi trạng thái,
điều khiển,... của các thiết bị ngoại vi đều nằm ở đây. Ví dụ như các thanh ghi
DDRB,DDRC,DDRD dùng để khai báo trạng thái I/O cho các Port B,C,D.


Ram tĩnh (Internal SRAM ): là không gian chứa các biến trong quá trình thực thi
chương trình.
Ram ngoại (External SRAM): các chip AVR có thể gắn thêm bộ nhớ ngoài để sử
dụng thêm biến, và phần bộ nhớ này chỉ tồn tại khi chip sử dụng thêm
bộ nhớ
ngoài.
EEPROM (Electrically Ereasable Programmable ROM) : là bộ nhớ khá quan
trọng của vi điều khiển AVR, bộ nhớ này là ROM nên không bị xóa khi mất điện
nên được dùng để lưu trữ dữ liệu. Bộ nhớ EEPROM được tách riêng với 4 phần
trên và địa chỉ bắt đầu 0x00.
* Vùng nhớ I/O là cửa ngõ giao tiếp giữa CPU và thiết bị ngoại vi. Tất cả các

thanh ghi điều khiển, trạng thái…của thiết bị ngoại vi đều nằm ở đây. Về việc điều
khiển các PORT của AVR, mỗi PORT liên quan đến 3 thanh ghi DDRx, PORTx và
PINx, tất cả 3 thanh ghi này đều nằm trong vùng nhớ I/O. Xa hơn, nếu muốn truy
xuất các thiết bị ngoại vi khác như Timer, chuyển đổi Analog/Digital, giao tiếp
USART…đều thực hiện thông qua việc điều khiển các thanh ghi trong vùng nhớ
này.
Vùng nhớ I/O có thể được truy cập như SRAM hay như các thanh ghi I/O. Nếu sử
dụng instruction truy xuất SRAM để truy xuất vùng nhớ này thì địa chỉ của chúng
được tính từ 0x0020 đến 0x005F. Nhưng nếu truy xuất như các thanh ghi I/O thì
địa chỉ của chúng đựơc tính từ 0x0000 đến 0x003F.
Instruction OUT dùng xuất giá trị ra các thanh ghi I/O, lệnh này sử dụng địa chỉ
kiểu thanh ghi, cấu trúc của lệnh như sau: OUT A, Rr, trong đó A là địa chỉ của
thanh ghi trong vùng nhớ I/O, Rr là thanh ghi RF, lệnh OUT xuất giá trị từ thanh
ghi Rr ra thanh ghi I/O có địa chỉ là A. Vì các thanh ghi trong vùng I/O không
được hiểu theo tên gọi như các Register file, khi lập trình cho các thanh ghi này,
người lập trình cần nhớ địa chỉ của từng thanh ghi, đây là việc tương đối khó
khăn. Tuy nhiên, trong hầu hết các phần mềm lập trình cho AVR, địa chỉ của tất cả
các thanh ghi trong vùng I/O đều được định nghĩa trước trong 1 file Definition,
chỉ cần đính kèm file này vào chương trình của bạn là có thể truy xuất các thanh
ghi với tên gọi của chúng.

2.1.3 Thanh ghi trạng thái:
Nằm trong vùng nhớ I/O, thanh ghi SREG có địa chỉ I/O là 0x003F và địa chỉ bộ
nhớ là 0x005F (thường đây là vị trí cuối cùng của vùng nhớ I/O) là một trong số
các thanh ghi quan trọng nhất của AVR, vì thế mà tôi dành phần này để giới thiệu


về thanh ghi này. Thanh ghi SREG chứa 8 bit cờ (flag) chỉ trạng thái của bộ xử lí,
tất cả các bit này đều bị xóa sau khi reset, các bit này cũng có thể được đọc và ghi
bởi chương trình. Chức năng của từng bit được mô tả như sau:


Bit 0 – C (Carry Flag: Cờ nhớ): là bit nhớ trong các phép đại số hoặc logic
Bit 1 – Z (Zero Flag: Cờ 0): cờ này được set nếu kết quả phép toán đại số hay phép
Logic bằng 0.
Bit 2 – N (Negative Flag: Cờ âm): cờ này được set nếu kết quả phép toán đại số
hay phép Logic là số âm.
Bit 3 – V (Two’s complement Overflow Flag: Cờ tràn của bù 2): hoạt động của cờ
này có vẻ sẽ khó hiểu cho bạn vì nó liên quan đến kiến thức số nhị phân (phần bù),
chúng ta sẽ đề cập đến khi nào thấy cần thiết.
Bit 4 – S (Sign Bit: Bit dấu): Bit S là kết quả phép XOR giữa 1 cờ N và V, S=N xor
V.
Bit 5 – H (Half Carry Flag: Cờ nhờ nữa): cờ H là cờ nhớ trong 1 vài phép toán đại
số và phép Logic, cờ này hiệu quả đối với các phép toán với số BCD.
Bit 6 – T (Bit Copy Storage): được sử dụng trong 2 Instruction BLD (Bit LoaD) và
BST (Bit STorage). Tôi sẽ giải thích chức năng Bit T trong phần giới thiệu về BLD
và BST.
Bit 7 – I (Global Interrupt Enable) : Cho phép ngắt toàn bộ): Bit này phải được set
lên 1 nếu trong chương trình có sử dụng ngắt. Sau khi set bit này, bạn muốn kích
hoạt loại ngắt nào cần set các bit ngắt riêng của ngắt đó. Hai instruction dùng riêng
để Set và Clear bit I là SEI và CLI.

2.1.4 Giới thiệu chung về cấu trúc bên trong:
*Sơ đồ cấu trúc bên trong Atmega 328:


2.2 Mạch nguyên lý:


4.7k
2


PB0

K

A

R11

Q3

3

10k

R51 220

PD1

R52 220

PD2

R53 220

PD3

R54 220

PD4


R55 220

PD5

C1815

A
B
D
F

R57 220

LED2
F

A

A

G

B

B

P

C


DP
CA1

C

D

D

DP
CA1

CA2

E

E

CA2

A

F

F
B

B


C

C

D

D

E

E

E

R56 220

PD6

LED1
A

F

G

G
G
P

1


THU

PHAT

PD0

C

10k

10k

G

R1
R12

R2

Q16

3

A1015 PC4

Q4

3


R9 4K7

A1015

1

R50 4K7

2

PB1

K

PC0/ADC0/PCINT8
PC1/ADC1/PCINT9
PC2/ADC2/PCINT10
PC3/ADC3/PCINT11
PC4/ADC4/SDA/PCINT12
PC5/ADC5/SCL/PCINT13
PC6/RESET/PCINT14

Q5

3

C1815

10k
THU1


PHAT1

AREF
AVCC

23
24
25
26
27
28
1

PB0
PB1
PB2
MOSI
MISO
SCK

C6
R10
10k

33p

X1
16M


PC0

C5

RES

2

14
15
16
17
18
19
9
10

1

PB0/ICP1/CLKO/PCINT0
PB1/OC1A/PCINT1
PB2/SS/OC1B/PCINT2
PB3/MOSI/OC2A/PCINT3
PB4/MISO/PCINT4
PB5/SCK/PCINT5
PB6/TOSC1/XTAL1/PCINT6
PB7/TOSC2/XTAL2/PCINT7

C4


K_RES

33p
PC4
PC5

10uF

1

A

R15

21
20

PD0/RXD/PCINT16
PD1/TXD/PCINT17
PD2/INT0/PCINT18
PD3/INT1/OC2B/PCINT19
PD4/T0/XCK/PCINT20
PD5/T1/OC0B/PCINT21
PD6/AIN0/OC0A/PCINT22
PD7/AIN1/PCINT23

1

10k


4.7k

10k

U3
2
3
4
5
6
11
12
13

2

R13

R16

R14

PD0
PD1
PD2
PD3
PD4
PD5
PD6


1

PC5

2

2

A

K

7SEG-A8

A

K

ATMEGA328P

U55

2

A

8
2
1


10K

R4 10K

3

Q1
C1815

LM358

JACK-DC-

1N4007

1

C22

C1
104

470uF

VI

VO

3


D111

C2

LED-RED

104

R222
330

1

3

4

RV1

2

10K R3

1

3

PB2

K


A

U1:A

A

K

LDR

7805

D1
+

GND

J2

4K7

2

K

R5


BURN_E

10k

K

RL1

A

D9

1
2

MISO
SCK
MOSI

RES

A

1N4148

2

K

D8

OUT1


1
2
3
4
5
6

R6

R7
PC0

Q2

3

C1815-H

1

10k

2.3 Nguyên lý hoạt động của mạch:
2.3.1 Sơ đồ khối chức năng:

2.3.2 Giới thiệu sơ lược về nguyên lý hoạt động:
Nguyên lý hoạt động của mạch dựa trên nguyên tắc phát và thu sóng hồng
ngoại từ led phát và led thu tạo ra tín hiệu xung với hai mức thấp (0v), và
mức cao (5v) khi không có người đi qua giữa hai led thu và phát thì led thu

sẽ nhận được ánh sáng hồng ngoại làm cho điện trở của led thu giảm mạnh,
lúc này điện áp rơi trên điện trở ngõ vào nối với transtor gần bằng với điện
áp nguồn Vcc nên transtor Q1, Q2 ta sẽ code cho vi điều khiển xuất giá trị 0
ra led bảy đoạn.
Khi có người lướt qua lượt cặp led thu phát 1 rồi đến cập thu phát 2 thì code
cho vi điều khiển xuất ra giá trị tương ứng trên led bảy đoạn, ngược lại thì vi
điều khiển sẽ xuất giá trị trừ đi 1 đến 0 thì dừng lại, song song đó nếu có
người trong phòng mà trời tối thì LDR có nhiệm vụ bật tắt đèn tương ứng.


2.3.3 Các linh kiện sử dụng trong mạch:
a. Điện trở:
b. Tụ điện:
c. Led thu phát hồng ngoại
d. Vi diều khiển Atmega328
e. Transtor
f. Led 7 Đoạn
g. Ic ổn áp 7805
h. LDR
2.2.4 Phân tích nguyên lý hoạt động của từng phần:
a. Mạch thu phát hồng ngoại:

R1
10k

R12

R2
10k


4.7k

2

PB0

Q3
C1815

A

3

1

THU

PHAT

K

10k

K

A

R11

Khi led thu nhận được ánh sáng hồng ngoại làm cho điện trở của led thu giảm

mạnh lúc này xuất hiện điện áp phân cực tại chân B của transtor làm cho transtor
dẫn lúc này mức điện áp tại chân PB0 sẽ ở mức 1 ngược lại nếu gặp vật cản sẽ ở
mức 0.
b. Mạch điều khiển đèn tự động:


K

R5
4K7

LDR

2

A

8

U1:A
2
3

Q1
C1815

3

1


LM358
4

RV1

R4 10K

10K
2

10K R3

1

1
3

PB2

Khi ánh sáng trong phòng lớn nó sẽ làm giảm điện trở bên trong LDR dẫn đến có
dòng chạy qua cấp cho opamp, opamp có nhiệm vụ khuếch đại tín hiệu điện áp
ngõ ra để phân cực cho BJT và làm cho BJT dẫn xuất mức điện áp ngõ ra cho vi
điều khiển.


CHƯƠNG 3: KẾT QUẢ MÔ PHỎNG
3.1 Mô hình mô phỏng bằng proteus:

3.2 Code của mạch:
#include <mega328p.h>

#include <delay.h>
#define rl PORTC.0

// khai báo chân điều khiển role

#define l1 PORTC.5

// khai báo chân điều khiển led 1

#define l2 PORTC.4

// khai báo chân điều khiển led 2

#define cb1 PINB.0

// khai báo chân nhận tín hiệu ngõ vào cảm biến 1

#define cb2 PINB.1

// khai báo chân nhận tín hiệu ngõ vào cảm biến 2

#define LDR PINB.2
unsigned char
so[10]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90}; // ma 7 doan


unsigned char soNguoi = 0,chuc = 0,dv = 0 ;
void hienthi7doan()
{
int i;

chuc = soNguoi/10;
dv = soNguoi%10;

PORTD = so[chuc];
l1 = 0 ;
for (i = 0;i<200;i++){}
l1 = 1;

PORTD = so[dv];
l2 = 0 ;
for (i = 0;i<200;i++){}
l2 = 1;
}
void main(void)
{

PORTB=0x00;
DDRB=0x00;
PORTC=0x00;
DDRC=0xff;
PORTD=0xff;


DDRD=0xff;
cb1 = cb2 = LDR = 1;
while (1)
{
// Place your code here
hienthi7doan();
if(cb1 == 0)

{
while(cb2 == 1){hienthi7doan();}
if(soNguoi < 100)soNguoi++;
while(cb2 == 0){hienthi7doan();}
}
if(cb2 == 0)
{
while(cb1 == 1){hienthi7doan();}
if(soNguoi > 0)soNguoi--;
while(cb1 == 0){hienthi7doan();}
}

if(LDR == 1)rl = 0;
else
{
if(soNguoi > 0)rl = 1;else rl = 0;
}
}


}

CHƯƠNG 4: NHẬN XÉT
4.1 Ưu điểm:
Mạch phòng học thông minh có ưu điểm gọn nhẹ hoạt động ổn định chính xác dễ lắp
đặt và sửa chữa, mạch có giá trị thiết thực trong cuộc sống đếm được số người ra vào
phòng và bắt tắt đèn một cách dễ dàng, giúp tiết kiệm điện và thời gian, mạch này
hoat động ở dòng điện một chiều 5v nên ít hao tốn năng lượng.
4.2 Khuyết điểm:
Bên cạnh những ưu điểm mạch còn tồn tại một số khuyết điểm như sau: tín hiệu

hồng ngoại của led phát không đủ mạnh để truyền đi xa trong không gian nên để led
thu nhận duocdj tín hiệu mạnh và ổn định thì led thu và led phát phải đặt không quá
xa chính vì vậy mà những cửa lớn vậy sẽ không khả thi.


CHƯƠNG 5: KẾT LUẬN
Đồ án 1 là một bài tập lớn, một thử thách đối với sinh viên tuy nhiên với đồ án này
giúp cho sinh viên vận dụng một cách cụ thể kiến thức mình đã học một cách sáng
tạo và làm quen dần với các liên kiện thực tế cũng như hiểu được nguyên lý hoạt
động và chức năng của chúng. Qua đó giúp sinh viên làm quen dần các phương pháp
nghiên cứu và làm việc nhóm để hoàn thành nhiệm vụ một cách tốt nhất hơn nữa
giúp sinh viên khỏi bỡ ngỡ với đồ án tốt nghiệp sau này.




×