Đề 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’a
mạ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: 100s ở 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