Tải bản đầy đủ (.doc) (26 trang)

Đánh giá tình hình hoạt động chung của nhà hàng the big 1

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 (474.52 KB, 26 trang )

Đề tài: Đo và ổn định độ sáng phòng
NéI DUNG BáO CáO :
I.Mc ớch yờu cu
II.Sơ đồ khối tổng quát.
III.Mạch nguyên lý,tính toán và mạch in.
IV.Lu đồ thuật toán.
V.Phần mềm ®iỊu khiĨn.

I. Mục đích u cầu
Trong thực tế, nhiều khi ta cần đo và ổn định độ sáng của một phịng, một
tồ nhà...Mục đích của bài tốn này là thiết kế hệ thống đo và ổn định độ
sáng phòng một cách tự động. Khoảng ánh sáng cần ổn định đựơc nhập vào

1


theo yêu cầu sử dụng, hệ thống điều khiển sẽ đo và thay đổi độ sáng phòng
theo yêu càu bằng cơ cấu rèm cửa và bóng đèn.

II. Sơ đồ khối tng quỏt
1.Sơ đồ khối :

Sơ đồ khối tổng quát của hệ thống đo lờng và điều khiển là:

Đối t
ợng cần
đo bất
kỳ

Chỉ thị kết
quả



SENSOR

Biến đổi
chuẩn hoá

A/D

P/C/PC

Mức
chuẩn
So sánh

Cơ cấu
Mạch điều
Phát hiện
chấp hành
khiển
Từ sơ đồ khối tổng quát, dựa theo yêu cầu bài toán ta có sơ đồsaikhối
cụ thể của mạch đo và điều khiển ánh sáng là:
ánh sáng

MC
SENSOR

Biến đổi
chuẩn hoá

A/D


2.Giới Cơ
thiệu
cấucác linh kiện chính: điều
a.Quang
chấptrở:
hành
Đặc trng của các cảm biến điện trởkhiển
là sự phụ thuộc của điện trở vào
thông lợng bức xạ và phổ của bức xạ đó.Các tế bào quang dẫn là một trong
những cảm biến quang có độ nhạy cao.Cơ sở vật lý của tế bào quang dẫn là
hiện tợng quang dẫn do kết quả của hiệu ứng quang điện nội:hiện tợng giải
phóng hạt tải điện trong vật liệu dới tác dụng của ánh sáng làm tăng độ dẫn
của vật liệu.
Trong đề tài này ta dùng quang trở RCdS chế tạo bằng bán dẫn đa tinh
thể đồng nhất.Độ nhạy của quang trở rất cao và còn phụ thuộc vào nhiệt độ
làm việc.Điện trở tối của nó khoảng 104-109 ôm ở 270c.Điện trở giảm rất
nhanh khi độ rọi tăng,đơn vị của ®é räi lµ:LUX.

2

I/O


b. Bộ chuyển đổi tương tự/số
Bộ chuyển đổi tương tự – số được sử dụng trong hệ thống là ADC
0809. Đây là IC được chế tạo theo công nghệ CMOS gồm một bộ chuyển
đổi tươngtự - số 8 bit, bộ chọn 8 kênh và một bộ logic điều khiển tương
thích.Bộ chuyển đổi AD 8 bit này dùng phương pháp chuyển đổi xấp xỉ
liên tiếp. Bộ chọn kênh có thể truy xuất bất kỳ kênh nào trong các ngõ

vào tương tự một cách độc lập.
Phương pháp ADC xấp xỉ liên tiếp (Successive- Approximation
ADC) là một trong những phương pháp được sử dụng rộng rãi. Tuy mạch
điện phức tạp nhưng thời gian chuyển đổi lại ngắn hơn. Phương pháp
chuyển đổi ADC xấp xỉ liên tiếp có thời gian chuyển đổi cố định không
phụ thuộc vào điện áp ngõ vào.
VA

+

V’A

-

Logic điều khiển
MSB
LSB

Clock

Start
EOC

Thanh ghi điều khiển

DAC

Sơ đồ khối chuyển đổi ADC dùng phương
pháp xấp xỉ liên tiếp.
- Hoạt động:Khi tác động cạnh xuống của xung start thì ADC bắt

đầu chuyển đổi. Mạch logic điều khiển set bit có nghóa lớn nhất (MSB)
của thanh ghi điều khiển lên mức cao và tất cả các bit còn lại ở mức thấp.
Số nhị phân ra ở mạch thanh ghi điều khiển được qua mạch DAC để tạo
ra điện áp tham chiếu V’a.
+ Nếu V’a >Va thì ngõ ra bộ so sánh xuống mức thấp, làm cho
mạch logic điều khiển xóa bit MSB xuống mức thấp.

3


+ Nếu V’amạch logic điều khiển giữ bit MSB ở mức cao.
Tiếp theo mạch logic điều khiển đưa bit có nghóa kế bit MSB lên
mức cao và tạo ở ngõ ra khối DAC một điện áp tham chiếu V’ a rồi đem
so sánh tương tự như bit MSB ở trên. Quá trình này cứ tiếp tục cho đến bit
cuối cùng trong thanh ghi điều khiển. Lúc đó V’a gần bằng Va ngõ ra của
mạch logic điều khiển báo kết thúc chuyển đổi.
Như vậy mạch đổi ra n bit chỉ mất n chu kỳ xung clock nên có thể đạt
tốc độ rất cao. Tuy nhiên nhược điểm của phương pháp ADC xấp xỉ liên
tiếp là không thể đáp ứng với tín hiệu tương tự vào biến đổi cực nhanh .
- Sơ đồ chân ADC 0809:
IN2 IN1 IN0

A

B

C ALE 2-1 2-2

2-3


2-4

2-8 REF 2-6

28
15
ADC0809
1

14

IN3 IN4 IN5 IN6

IN7

START

EOC 2-5 OE

CLK VCC REF GND 2-7

- Chức năng các chân:
+ IN0 đến IN7
: 8 ngõ vào tương tự.
+ A, B, C
: giải mã chọn 1 trong 8 ngõ vào
-1
-8
+ Z đến Z

: ngõ ra song song 8 bit
+ ALE
: cho phép chốt địa chỉ
+ START
: xung bắt đầu chuyển đổi
+ CLK
: xung đồng hồ
+ REF (+)
: điện thế tham chiếu (+)
+ REF (-)
: điện thế tham chiếu (-)
+ VCC
: nguồn cung cấp
- Các đặc điểm của ADC 0809:
+ Độ phân giải 8 bit
+ Tổng sai số chưa chỉnh định  ½ LSB;  1 LSB
4


+ Thời gian chuyển đổi: 100s ở tần số 640 kHz
+ Nguồn cung cấp + 5V
+ Điện áp ngõ vào 0 – 5V
+ Tần số xung clock 10kHz – 1280 kHz
+ Nhiệt độ hoạt động - 40oC đến 85oC
+ Dễ dàng giao tiếp với vi xử lý hoặc dùng riêng
+ Không cần điều chỉnh zero hoặc đầy thang
- Nguyên lý hoạt động: ADC 0809 có 8 ngõ vào tương tự, 8 ngõ ra
8 bit có thể chọn 1 trong 8 ngõ vào tương tự để chuyển đổi sang số 8 bit.
Các ngõ vào được chọn bằng cách giải mã. Chọn 1 trong 8 ngõ vào
tương tự được thực hiện nhờ 3 chân ADDA , ADDB , ADDC như bảng

trạng thái sau:
A

B C

Ngõ vào được chọn

0

0

0

IN0

0

0

1

IN1

0

1

0

IN2


0

1

1

IN3

1

0

0

IN4

1

0

1

IN5

1

1

0


IN6

1

1

1

IN7

Sau khi kích xung start thì bộ chuyển đổi bắt đầu hoạt động ở cạnh
xuống của xung start, ngõ ra EOC sẽ xuống mức thấp sau khoảng 8 xung
clock (tính từ cạnh xuống của xung start). Lúc này bit có trọng số lớn nhất
(MSB) được đặt lên mức 1, tất cả các bit còn lại ở mức 0, đồng thời tạo ra
điện áp có giá trị Vref/2, điện thế này được so sánh với điện thế vào Vin.
+ Nếu Vin > Vref/2 thì bit MSB vẫn ở mức 1.
+ Nếu Vin < Vref/2 thì bit MSB vẫn ở mức 0.
Tương tự như vậy bit kế tiếp MSB được đặt lên 1 và tạo ra điện thế
có giá trị Vref/4 và cũng so sánh với điện áp ngõ vào Vin. Quá trình cứ
tiếp tục như vậy cho đến khi xác định được bit cuối cùng. Khi đó chân
EOC lên mức 1 báo cho biết đã kết thúc chuyển đổi.

5


Trong suốt quá trình chuyển đổi chân OE được đặt ở mức 1, muốn
đọc dữ liệu ra chân OE xuống mức 0, nếu có 1 xung start tác động thì
ADC sẽ ngưng chuyển đổi. Mã ra N cho một ngõ vào tùy ý là một số
nguyên.

N 

Trong đó:

256.(VIN  Vref (  ) )
Vref (  )  Vref (  )

Vin
: điện áp ngõ vào hệ so sánh.
Vref(+) : điện áp tại chân REF(+).
Vref(-) : điện áp tại chân REF(-).
Vin

Nếu chọn Vref(-) = 0 thì N = 256. Vref ()
Vref(+) = Vcc = 5V thì đầy thang là 256.
5

Giá trị bước nhỏ nhất: 1 LSB = 28  1 = 0,0196 V/byte
Vậy với 256 bước điện áp vào lớn nhất của ADC0809 là Vin = 5V.
- Mạch tạo xung clock cho ADC 0809: Sử dụng mạch dao động
dùng các cổng NOT để tạo dao động cho ADC như sau:
Vcc
IK

IK

10K

500 pF


Tần số dao động của mạch là f =

1
3RC

Tần số dao động chuẩn là 600 kHz
Suy ra 640 =

1
3RC

Với R từ 100 đến vài k. Ta chọn R =1 k  C = 500 pF.
c.Bộ vi điều khiển
Hệ thống sử dụng bộ vi điều khiển AT89C51 có các đặc điểm sau :
+ 4 kbyte ROM, 128 bit RAM.
+ 4 port vào ra 8 bit.
+ 2 bộ định thời 16 bit.
6


+ 1 port nối tiếp.
+ 64 KB không gian bộ nhớ chương trình mở rộng.
+ 64 KB không gian bộ nhớ dữ liệu mở rộng.
- Sơ đồ khối bộ vi ủieu khieồn AT89C51
Ngắt ngoài

Điều khiển
ngắt

Timer


Các
thanh ghi

RAM / ROM
Đếm /
Định
thời

CPU

Tạo dao
động

XTAL

Điều khiĨn
Bus

C¸c port I/O

EA\ RST PSEN ALE

P0

7

P1

P2


P3

Port nèi
tiÕp

TXD RXD


- Sơ đồ chân bộ vi điều khiển AT89C51
1
3
4
5
6
8
9
10
11
12
13
14
15
16
17
18
19
20

P1.0

P1.1
P1.2
P1.3
P1.4
P1.5
P1.6
P1.7

VCC
P0.0
P0.1
P0.2
P0.3
P0.4
P0.5
P0.6
P0.7

RESET
EA/VP
P3.0
P3.1
P3.2
P3.3
P3.4
P3.5
P3.6
P3.7

ALE/P

PSEN
P2.7
P2.6
P2.5
P2.4
P2.3
P2.2
P2.1
P2.0

X2
X1
VSS

40
39
38
37
36
35
34
33
32
31
30
29
28
27
26
25

24
23
22
21

AT89C51

Sơ đồ chân AT89C51

- Chức năng các chân:
+ Port0: là port đa hợp từ chân 32 đến 39. Nếu không dùng bộ nhớ
mở rộng nó có chức năng như các đường vào ra. Đối với các thiết
kế sử dụng bộ nhớ mở rộng nó còn được sử dụng làm các đường
địa chỉ.
+ Port1: là một port vào ra từ chân 1 đến 8. Các chân được ký
hiệu P1.0, P1.1, P1.2 …P1.8 có thể dùng cho các thiết bị ngoài nếu
cần. Port1 chỉ được dùng trong giao tiếp với các thiết bị ngoài.
+ Port2: là một port có công dụng kép từ chân 21 đến 28, được
dùng như các đường xuất nhập hoặc là byte cao của bus địa chỉ
đối với các thiết kế dùng bộ nhớ mở rộng.
+ Port3: từ chân 10 đến 17. Các chân của port này có nhiều chức
năng, các công dụng chuyển đổi có liên hệ với các đặc tính đặc
biệt của AT89C51 như ở bảng sau :

8


Bit
Tên
Chức năng chuyển đổi

P3.0
RXD
Dữ liệu nhận cho port nối tiếp
P3.1
TXD
Dữ liệu phát cho port nối tiếp
P3.2
INTO
Ngắt 0 bên ngoài
P3.3
INT1
Ngắt 1 bên ngoài
P3.4
T0
Ngõ vào của timer/counter 0
P3.5
T1
Ngõ vào của timer/counter 1
P3.6
WR
Xung ghi bộ nhớ dữ liệu ngoài
P3.7
RD
Xung đọc bộ nhớ dữ liệu ngoài
+ PSEN (Program Store Enable): AT89C51 có 4 tín hiệu điều
khiển. PSEN là tín hiệu ra trên chân 29, nó là tín hiệu điều khiển
cho phép bộ nhớ chương trình mở rộng và thường được nối đến
chân OE (Output Enable) của một EPROM để cho phép đọc các
byte mã lệnh. PSEN sẽ ở mức thấp trong thời gian lấy lệnh. Các
mã nhị phân của chương trình được đọc từ EPROM qua bus và

được chốt vào thanh ghi lệnh của AT89C51 để giải mã lệnh. Khi
thi hành chương trình trong ROM nội PSEN sẽ ở mức thụ động
(mức cao).
+ ALE (Address Latch Enable): tín hiệu ra ALE trên chân 30.
AT89C51dùng ALE để giải các bus địa chỉ và dữ liệu đa hợp. Khi
port 0 vừa là bus dữ liệu vừa là byte thấp của địa chỉ, ALE là tín
hiệu để chốt địa chỉ vào một thanh ghi bên ngoài trong nữa đầu
của chu kỳ bộ nhớ. Sau đó, port 0 dùng để xuất hoặc nhập dữ liệu
trong nữa sau chu kỳ của bộ nhớ.
+ EA (External Access): Tín hiệu vào EA trên chân 31 thường
được mắc lên mức cao (+5V) hoặc mức thấp (GND). Nếu ở mức
cao, AT89C51 thi hành chương trình từ ROM nội trong khoảng địa
chỉ thấp (4K). Nếu ở mức thấp, chương trình chỉ được thi hành từ
bộ nhớ mở rộng. Nếu EA được nối mức thấp, bộ nhớ bên trong
chương trình AT89C51 sẽ bị cấm và chương trình thi hành từ
EPROM mở rộng. Người ta còn dùng chân EA làm chân cấp điện
áp 21V khi lập trình cho EPROM trong AT89C51.

9


+ RST (Reset): Ngõ vào RST trên chân 9 là ngõ reset của
AT89C51. Khi tín hiệu này được đưa lên mứùc cao trong ít nhất 2
chu kỳ, các thanh ghi trong AT89C51 sẽ được thiết lập về những
giá trị thích hợp để khởi động hệ thống. RST có thể được kích khi
cấp điện dùng một mạch R-C. Sơ đồ mạch Reset được sử dụng
+5V

+5V


100

10UF

8 ,2 K

Mạch reset

trong hệ thống:
Trạng thái của tất cả các thanh ghi của
AT89C51/8031 sau khi reset hệ thống được tóm tắt trong
bảng sau:
Thanh ghi
Nội dung
Đếm chương trình
0000H
Tích lũy
00H
B
00H
PSW
00H
SP
07H
DPTR
0000H
Port 0-3
FFH
IP
XXX00000B

IE
0XX00000B
Các thanh ghi định thời
00H
SCON
00H
SBUF
00H
PCON(HMOS)
0XXXXXXB
PCON(CMOS)
0XXX0000B
+ Các ngõ vào bộ dao động trên chip: Như đã thấy trong các hình
trên, AT89C51 có một bộ dao động trên chip. Nó thường được nối

10


với thạch anh giữa hai chân 18 và 19. Tần số thạch anh thông
thường là 12MHz.
+ Các chân nguồn: AT89C51 vận hành với nguồn đơn +5V. Vcc
được nối vào chân 40 và Vss (GND) được nối vào chân 20.
d.Cấu trúc ca ng c bc
Hình: Cấu trúc của motor bớc.
Hoạt động của động cơ bớc:
Các cuộn dây đợc cấp dòng theo một vòng tròn, mỗi chu kì cấp dòng động
cơ quay đợc 1 vòng.
AA'

BB'


t

CC'

t

DD'

t

t
Hình: Hoạt động của từng cuộn dây trong motor bíc.

11


A

QA

B

QB

C

QC

D


QD

Step motor

12V

Hình: Sơ đồ nguyên lí của khối khuếch đại công suất động cơ.
Bộ khuếch đại công suất sử dụng 1 transitor công suất cho mỗi cuộn dây:
"ABCD"= "0001" "0010"  "0100"  "1000"  "0001" ......
 "ABCD" thùc hiện lệnh dịch 4 lần, động cơ quay 1 vòng.
Giả sử động cơ quay 1000vòng/phút đến 10000vòng/phút trong khoảng T1
đến T2.
Ta có công thức: n=kT
n1=1000vòng/phút = 16,6vòng/giây
"ABCD" quay16,6x4lần = 66,4lần/giây.
Với xung nhịp = 17,4kHz cứ 17,4kHz/66.4=262 xung =1 "ABCD" quay
1 lần.
n2=10000vòng phút, tơng tự trên, 26 xung =2 "ABCD" quay 1 lần.
Khi nhiệt độ biến thiên từ T0 đến T8, thì biến chỉ báo nhiệt độ VT biến thiên
từ 000.0000.0000b đến 8x255=2040=111.1111.1000b.
1/26-1/262=kx2040
k=1.69.10-5
Khi ở nhiệt độ TX 1/ - 1/262 = 1,69.10-5x(VT-0)
12


= 59172/(VT+227).
Nh vậy, với tần số xung là 17,4kHz thì cứ xung thì "ABCD" quay 1 lần.
III.Sơ đồ nguyên lý,tính toán và mạch in.

1.Sơ đồ nguyên lý.
5V

khối hiển thị
khối nguồn

VOUT

3

1

VIN

3

VOUT

5V

3

2200uF

C12

104

C8


+

1000uF

C11

104

C14

+

1000uF

12

10

8

6

4

2

10

8


6

2

74LS04

74LS04

74LS04

74LS04

74LS04

74LS04

74LS04

74LS04

74LS04

74LS04

74LS04

U33A

U33B


U33C

U33D

U33E

U33F

U34A

U34B

U34C

U34D

U34E

U34F

1

8

C10

+

2


C7

2

BRIDGE

4

16

74LS04

74LS138
TRANSFORMERCT

104

X1

X2

X3

X4

X5

X6

X7


X8

X9

X10

X11

X12

5V
5V

GND

BC[0:3 ]

7
1

74LS138
8

A1

khối chuyển đổi tơng tự - số

U38


U37

U35

5V

4
5

+ C17
10uF

5V

D[0 :7 ]

R26

1

Rm

5V

VT0

LM741

a
f


6

2 R30

12
11
10
9
8
7

GND

G1
G2A
G2B

b

6

74LS04

a
f

5

A2

A3

B3

khèi vi ®iỊu khiĨn

U43

X9
X10
X11
X12

15
14
13
12
11
10
9
7

A1

1

3 +

Y0
Y1

Y2
Y3
Y4
Y5
Y6
Y7

b

-12V

7912/SIP

A
B
C

12
11
10
9
8
7

VOUT

6
4
5


a
f

1
GND

VIN
U40

2

CdS

1
2
3
U44C

A2
A3

B0
B1
B2

104

3

A1


C6

+

1000uF
2

b

C9

104

A2
A3

C10

+

12
11
10
9
8
7

C11
2200uF

12V

VCC

U21

16

5V

R4

OE

U39

CLK

5V

20

GND

1
2
3
4
5
6

16

4

BI/RBO

GND

D0
D1
D2
D3

A
B
C
D
E
F
G

13
12
11
10
9
15
14

1K

1K
1K
1K
1K
1K
1K

8

Ente r
Kic h

5V
5V

R20 1K
Ente r
N2

N1

R1

N0

10uF

LM741

18


R3 1K

+ C4
1uF

PhimGia m
R19

+ C1
10uF

100

12Mhz
C2
33pF

C3
33pF

SW3

SW1

SW2

RESET
-12V


Nhap
SW4

12V
R15
8.2 K

CTRL0

CTRL2

U32A
1

2

CLK
CTRL3

7414

10

COM

5

18
17
16

15
14
13
12
11

4

OUT1
OUT2
OUT3
OUT4
OUT5
OUT6
OUT7
OUT8

6

IN1
NI 2
IN3
IN4
IN5
IN6
IN7
IN8

3
2

1

GND

1
2
3
4
5
6
7
8

CTRL1
1.5 K

102

khèi phÝm bÊm

U44

R30

C7

MG1

ULN2803
9


MOTORSTEPPER

khèi tạo xung cho ADC0809
Mạch ĐộNG Cơ

2.Tính toán khối cảm biến.
5V

1

7
1
3
2

+

R 30

6
V T0

LM 741

R m

-1 2 V

13


U 43

4
5

C dS

12V

2

R 4

1K

PhimTang

Y1
4
5

5V

7
1
2
6

31

29

EA/VPP
PSEN

RST

LT
RBI

7447

C0
C1
C2
C3

10
11
12
13
14
15
16
17

P3.0/RXD
P3.1 /T XD
P3.2 /INT0
P3.3 /INT1

P3.4 /T0
P3.5 /T1
P3.6 /WR
P3.7/RD

P0.0/AD0
P0.1/AD1
P0.2/AD2
P0.3/AD3
P0.4/AD4
P0.5/AD5
P0.6/AD6
P0.7/AD7

3
5

BC[0:3 ]

VCC

40

ALE/PROG

19

ADC0809

VCC


2
3
4
5
6
7
8
9
A0
A1
A2
A3
A4
A5
A6
A7
A6

A3

A2

A7

9

CLK

6


2 + C16

D1879048547

D4LED7
U14

B0
B1
B2
B3
C0
C1
C2
C3

13

3 +
10

10

GND

7
1

R28


9

A5

AT89C51

21
22
23
24
25
26
27
28

P2.0/A8
P2.1/A9
P2.2 /A10
P2.3 /A11
P2.4 /A12
P2.5 /A13
P2.6 /A14
P2.7 /A15

XTAL2

REF-

22


39
38
37
36
35
34
33
32

P1.0
P1.1
P1.2
P1.3
P1.4
P1.5
P1.6
P1.7

XTAL1

ALE

PhimGiam

16

REF+

1

2
3
4
5
6
7
8
30

A0
A1
A2
A3
A4
A5
A6
A7

CTRL3

12

U13
D0
D1
D2
D3
D4
D5
D6

D7

A4

CTRL2

+12V

25
24
23
6

START

PhimTang

A
B
C

EOC

A1

7
5V

D0
D1

D2
D3
D4
D5
D6
D7

A0

1
2
3
4
5

17
14
15
8
18
19
20
21

D0
D1
D2
D3
D4
D5

D6
D7

CTRL0

Sensor

NI 0
IN1
IN2
IN3
IN4
IN5
IN6
IN7

CTRL1

26
27
28

VT0

11

U7
+ C22
1uF


VCC

-12V

BC[0:3 ]

e
d
p
c
g
A4

D4LED7
1
2
3
4
5
6

D[0 :7 ]

D4LED7
1
2
3
4
5
6


e
d
p
c
g
A4

e
d
p
c
g
A4

5V
10K

R24
1K

13

VIN

Q15
2N2222

R23
1K


11

1

X1
X2
X3
X4
X5
X6
X7
X8

15
14
13
12
11
10
9
7

Q14
2N2222

R22
1K

9


4

AC220V/5 0Hz

Y0
Y1
Y2
Y3
Y4
Y5
Y6
Y7

Q13
2N2222

R24
1K

5

+

G1
G2A
G2B

Q15
2N2222


R23
1K

3

-

A
B
C

Q14
2N2222

R22
1K

1

2

8

6
4
5

7805/SIP


Q13
2N2222

R21
1K

13

6
4

U36
7812/SIP

Q12
2N2222

R11
1K

11

SWKEY-YM061

U39

Q11
2N2222

R9

1K

9

5

Q10
2N2222

R8
1K

5

1

GND

2

GND

1
2
1

GND

J1


D1879048547

Q9
2N2222

R7
1K

3

1
2
3

1

T2

VCC

U20

5V
12V
SW5

Q5
2N2222

R6

1K

12

Q4
2N2222

5V


Theo công thức phân áp có:
Ura=Vcc.Rm/ (RCdS+Rm)
suy ra

Rcds

(3.1)

R V  U ra 
 m cc
U ra

mặt khác ta có quan hệ giữa Ura và Uso là:
U ra 

U so
Vcc
255

(3.2)


(với Uso là điện áp sau khi chuyển đổi A/D)
A/D

Ura

Uso

thay vào biểu thức trên ta được
Rcds 

255 Rm
 Rm
U so

(3.3)

E

E1
E2
Đồ thị biểu thị sự phụ thuộc của điện trở CDS vào độ sáng
coi gần đúng sự phụ thuộc
R1 trên là tuyến
R2 tính, ta có: Rcds
E = b – a.R
(3.4)
bằng thực nghiệm ta xác định được cặp các giá trị R1, R2 tương ứng với E1,
E2 , từ đó ta xác định được các hệ số a,b. ta có:
E1 = b - a.R1

E2 = b – a.R2
từ đó suy ra:
E1  E2
R2  R1
E R  E2 R1
b 1 2
R2  R1
a

14


với E1= 1000, đo được R1=1800
E2=500, đo được R2=27090
 a=0,55 ; b=2000
thay biểu thức (2.3) vào (2.4) ta tìm được biểu thức liên hệ giữa tín hiệu sau
bộ A/D và độ sáng là:
E b  aRm 

a 255Rm
U so

(3.5)

chọn Rm = 10K
3.Sơ đồ mạch in

Sơ đồ lớp trên và lớp dưới

15



Sơ đồ mạch in tổng quát

16


IV. Lu thut toỏn
Begin

Khởi tạo

Kiểm tra có
ngắt nối
tiếp không ?

Thay đổi giá
trị mẫu

Hiển thị ra
đèn LED

Kiểm tra có
ngắt định thời
không?

Hiển thị ra đèn
LED các giá trị về
ánh sáng


Nhận dữ liệu
từ cảm biến

Xử lí dữ liệu và đa
tín hiệu tơng ứng ra
cơ cấu chấp hành

V. Phn mm iu khin
Chơng trình đựoc viết bằng ngôn ngữ lập trình C trên môi trờng RIDE
Chơng trình đợc chia thành 5 module chính:
1. Module khai báo
2. Module điều khiển ADC
3. Module hiển thị
4. Module nhạp giá trị mẫu
5. Module xử lí chính
Sau đây la code cụ thể của phần mềm điều khiển:
//************************************************************
Module khai báo: đây là 1 tệp tiêu đề đặt tên là define.h
//************************************************************
#include <reg51.h>
17


#include <string.h>
#include <stdlib.h>
#include <math.h>
//Dinh nghia cac cong
at 0x80 sbit CTRL0;
at 0x81 sbit CTRL1;
at 0x82 sbit CTRL2;

at 0x83 sbit CTRL3;
at 0x84 sbit START_ALE;
at 0x85 sbit OE_ADC;
at 0x86 sbit PhimTang;
at 0x87 sbit PhimGiam;
sbit Enter = P3^2;
sbit Kich = P3^4;
sbit Chuyen = P3^7;
at 0xA0 sbit b0;
at 0xA1 sbit b1;
at 0xA2 sbit b2;
at 0xA3 sbit b3;
at 0xA4 sbit Q0;
at 0xA5 sbit Q1;
at 0xA6 sbit Q2;
at 0xA7 sbit Q3;
//************************************************************
Module nhập giá trị mẫu: Module này có chức năng thay đổi giá trị mẫu
nhiệt độ cần ổn định
//************************************************************
#include <define.h>
//Khai bao cac bien
extern unsigned int E, EDuoi, ETren;
//Khai bao cac ham
void HienthiLEDDuoi(); //Display to 7 bar LED gia tri can duoi
void HienthiLEDTren(); //Display to 7 bar LED gia tri can tren
void Hienthi(unsigned time);
void Delay(unsigned int time);
void ThietLap()interrupt 0; //Ngat ngoai 0
//-----------------------------------------------------------------------------------void ThietLap()interrupt 0 //Ngat ngoai 0

{
bit NhapXong;
Delay(100);
EX0=0;//Vo hieu hoa ngat ngoai 0
while (Enter==0) {};
NhapXong=0;
while (NhapXong==0)
{
while ((PhimTang==1)&&(PhimGiam==1)&&(Chuyen==1))
{
HienThiLEDDuoi();
}
18


if (Chuyen==0)
{
NhapXong=1;
while (Chuyen==0) {};
}
else
{
if (PhimTang==0) {EDuoi=EDuoi+1;}
if (PhimGiam==0) {EDuoi=EDuoi-1;}
while ((PhimTang==0)||(PhimGiam==0))
{
HienThiLEDDuoi();
}
}
}

NhapXong=0;
while (NhapXong==0)
{
while ((PhimTang==1)&&(PhimGiam==1)&&(Chuyen==1))
{
HienThiLEDTren();
}
if (Chuyen==0)
{
NhapXong=1;
while (Chuyen==0) {};
}
else
{
if (PhimTang==0) {ETren=ETren+1;}
if (PhimGiam==0) {ETren=ETren-1;}
while ((PhimTang==0)||(PhimGiam==0))
{
HienThiLEDTren();
}
}
}
Hienthi(2);
EX0=1; //Cho phep ngat ngoai 0 hoat dong tro lai
Delay(100);
}
//----------------------------------------------------------------------------------------//************************************************************
Module ®iỊu khiĨn ADC0809
//************************************************************
#include <define.h>

void Delay(unsigned int time);
void Hienthi(unsigned time);
//----------------------------------------------------------------unsigned char QuetDuLieuSo()
19


{

unsigned char so,i;
unsigned int Sum;
Sum=0;
for (i=0; i<20; i++)
{
START_ALE=1;
START_ALE=0;
Hienthi(1); //Doi cho ADC chuyen doi xong
P1=0xFF;
OE_ADC=1;
so=P1; //Lay du lieu ve anh sang
OE_ADC=0;
Sum = Sum + so;
}
so = Sum/20;
return so;

}
//----------------------------------------------------------------------unsigned int AnhSang(unsigned char so)
{
unsigned int tg;
tg=4*so-4;

return tg;
}
//---------------------------------------------------------------------//************************************************************
Module điều khiển hiển thị ra đèn LED
//************************************************************
#include <define.h>
// Variables used in this program
extern unsigned int E, EDuoi, ETren;
bit Q0_hn, Q1_hn, Q2_hn, Q3_hn, Q0_ht, Q1_ht, Q2_ht, Q3_ht,
Q0_hc, Q1_hc, Q2_hc, Q3_hc, Q0_hdv, Q1_hdv, Q2_hdv, Q3_hdv;
//Functions used in this program
void Delay(unsigned int time);
void Khoitaoht(unsigned char gt);
void Khoitaohc(unsigned char gt);
void Khoitaohdv(unsigned char gt);
void Khoitao(unsigned int num);
void HienthiLEDHienThoi(); //Display to 7 bar LED gia tri anh sang hien
thoi
void HienthiLEDDuoi(); //Display to 7 bar LED gia tri anh sang can duoi
void HienthiLEDTren(); //Display to 7 bar LED gia tri anh sang can tren
void Hienthi(unsigned int time);
void Duavao7447(bit bi0,bit bi1,bit bi2,bit bi3);
//-----------------------------------------------------------------------//Noi dung cac ham
//-----------------------------------------------------------------------void TatLED()
20



×