Đề tài : Đo và ổn định độ sáng phòng
Trang 1Đề tài: Đo và ổn định độ sỏng phũng
NộI DUNG BáO CáO :
I.Mục đớch yờu cầu
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
Trang 2
I Mục đớch yờ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
toà nhà Mục đớch của bài toỏ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
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 tổng 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à:
Từ sơ đồ khối tổng quát, dựa theo yêu cầu bài toán ta có sơ đồ khối
cụ thể của mạch đo và điều khiển ánh sáng là:
I/O
So sánh
àP/àC/PCA/D
Chỉ thị kết quả
Trang 32.Giới thiệu các linh kiện chính:
a.Quang trở:
Đặc trng của các cảm biến điện trở 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
b Bộ chuyển đổi tương tự/số
Boọ chuyeồn ủoồi tửụng tửù – soỏ ủửụùc sửỷ duùng trong heọ thoỏng laứ ADC
0809 ẹaõy laứ IC ủửụùc cheỏ taùo theo coõng ngheọ CMOS goàm moọt boọ chuyeồn ủoồi tửụngtửù - soỏ 8 bit, boọ choùn 8 keõnh vaứ moọt boọ logic ủieàu khieồn tửụng thớch.Boọ chuyeồn ủoồi AD 8 bit naứy duứng phửụng phaựp chuyeồn ủoồi xaỏp xổ lieõn tieỏp Boọ choùn keõnh coự theồ truy xuaỏt baỏt kyứ keõnh naứo trong caực ngoừ vaứo tửụng tửù moọt caựch ủoọc laọp
Phửụng phaựp ADC xaỏp xổ lieõn tieỏp (Successive- Approximation ADC) laứ moọt trong nhửừng phửụng phaựp ủửụùc sửỷ duùng roọng raừi Tuy maùch ủieọn phửực taùp nhửng thụứi gian chuyeồn ủoồi laùi ngaộn hụn Phửụng phaựp
chuyeồn ủoồi ADC xaỏp xổ lieõn tieỏp coự thụứi gian chuyeồn ủoồi coỏ ủũnh khoõng phuù thuoọc vaứo ủieọn aựp ngoừ vaứo
+
-DAC Thanh ghi ủieàu khieồn Logic ủieàu khieồn MSB LSB
Trang 4- 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
+ Nếu V’a<Va thì ngõ ra của bộ so sánh vẫn ở mức cao và làm cho 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:
ADC0809 28
15
1
14
IN2 IN1 IN0 A B C ALE 2 -1 2 -2 2 -3 2 -4 2 -8 REF 2 -6
START
IN3 IN4 IN5 IN6 IN7 EOC 2 -5 OE CLK V
CC REF GND 2 -7
Trang 5+ A, B, C : giải mã chọn 1 trong 8 ngõ vào+ Z-1 đến Z-8 : ngõ ra song song 8 bit
+ ALE : cho phép chốt địa chỉ
- 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+ 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:
0 0 0 0 1 1 1
0 0 1 1 0 0 1
0 1 0 1 0 1 0
IN0 IN1 IN2 IN3 IN4 IN5 IN6
Trang 61 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
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
) ( )
(
) ( ) (
256
− +
ref IN
V V
V V N
Trong đó: 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(-)
Nếu chọn Vref(-) = 0 thì N = 256
) ( +
ref
in
V V
Vref(+) = Vcc = 5V thì đầy thang là 256
Giá trị bước nhỏ nhất: 1 LSB = 285−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:
Trang 7Tần số dao động của mạch là f = 3RC1
Tần số dao động chuẩn là 600 kHz
Suy ra 640 = 3RC1
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
+ 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 điều khiển AT89C51
Vcc
500 pF
10K
IK
IK
Trang 8TXD RXD
P0 P1 P2 P3EA\ RST PSEN ALE
CPU
Port nối tiếp Các port I/O
Tạo dao
động
Đếm /
Định thời
XTAL
Trang 9- Sơ đồ chân bộ vi điều khiể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 :
AT89C51
X1
19 X218
P3.1
11 P3.010
Trang 10Bit Tên Chức năng chuyển đổi
Dữ liệu nhận cho port nối tiếp Dữ liệu phát cho port nối tiếp Ngắt 0 bên ngoài
Ngắt 1 bên ngoài Ngõ vào của timer/counter 0 Ngõ vào của timer/counter 1 Xung ghi bộ nhớ dữ liệu ngoài 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
Trang 11+ 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
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
00H
00H 07H 0000H FFH XXX00000B 0XX00000B 00H
00H 00H 0XXXXXXB 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 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
Trang 12+ 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 của động cơ bước
H×nh: CÊu trĩc cđa motor bíc
Trang 13Hì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
T2
Ta có công thức: ∆n=k∆T
→ "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
12V QC
QB QA
Trang 14Khi 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
→ k=1.69.10-5
Khi ở nhiệt độ TX→ 1/∂ - 1/262 = 1,69.10-5x(VT-0)
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.
-12V
khối hiển thị
Q10 2N2222
+ C22
R22 1K
U33C 74LS04
R30
U7
ADC0809
10 9 7
17 8 20
CLK OE EOC
D0 D3 D6
START ALE
REF+
IN0 IN3 IN6 A
Q14 2N2222
Q14 2N2222
R24 1K
C6 104
18 15 12 COM GND
IN1 IN4 IN7 OUT1 OUT4 OUT7
5V
X1
U33A 74LS04
SW4 RESET
5V
Enter X2
+ C16
U14
7447
7 6
4 5 13 10 14
D0 D3
BI/RBO RBI LT A D G
C2 33pF
SW1 A5
R9
Q13 2N2222
R19 C10
khối tạo xung cho ADC0809
CTRL1
X8 X10 C8
6 A Y3 Y6
G1 G2A
1K
Q15 2N2222
R15 D4
Q9 2N2222
U33F 74LS04
6 A Y3 Y6
G1 G2A
Q12 2N2222
khối nguồn
+12V
PhimTang
U34F 74LS04
U33B 74LS04
Q5 2N2222
X3
+
C12 1000uF
31
1 4 7 21 24 27 10 13 16 39 36 33 RST
GND PSEN ALE/PROG
EA/VPP
P1.0 P1.3 P1.6 P2.0/A8 P2.3/A11 P2.4/A12 P2.5/A13 P2.6/A14 P3.0/RXD P3.3/INT1 P3.4/T0 P3.7/RD
P0.0/AD0 P0.1/AD1 P0.2/AD2 P0.3/AD3 P0.4/AD4 P0.5/AD5 P0.6/AD6
+
C11 2200uF
N1 A7
Trang 152.TÝnh to¸n khèi c¶m biÕn.
(với Uso là điện áp sau khi chuyển đổi A/D)
thay vào biểu thức trên ta được
Đồ 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 trên là tuyến tính, ta có:
5 V
1 2 V
- 1 2 V
V T 0 -
Trang 16E = 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,
Trang 17Sơ đồ mạch in tổng quát
Trang 18IV Lưu đồ thuật toỏn
V Phần mềm điều khiển
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
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
Hiển thị ra đèn LED các giá trị về
ánh sáng
Trang 19Module khai báo: đây là 1 tệp tiêu đề đặt tên là “define.h”
độ 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
Trang 21#include <define.h>
void Delay(unsigned int time);
void Hienthi(unsigned time);
// -unsigned char QuetDuLieuSo()
{
unsigned char so,i;
unsigned int Sum;
Trang 22#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 thoivoid HienthiLEDDuoi(); //Display to 7 bar LED gia tri anh sang can duoivoid HienthiLEDTren(); //Display to 7 bar LED gia tri anh sang can trenvoid Hienthi(unsigned int time);
void Duavao7447(bit bi0,bit bi1,bit bi2,bit bi3);
Trang 23Q3_hn=(gt&0x08)?1:0;
}
void Khoitaoht(unsigned char gt)
Trang 25#include <define.h>
//Khai bao cac bien dung trong chuong trinh
Trang 26unsigned char Eso, Solantran;
unsigned int E, EDuoi, ETren, BuocRem;
//Cac ham dung trong chuong trinh
void HienthiLEDHienThoi(); //Ham hien thi ra LED 7 thanh
void HienthiLEDDuoi();
void HienthiLEDTren();
void Hienthi(unsigned int time);
unsigned char QuetDuLieuSo(); //Lay du lieu tu cac cam bien o cac vi tri va luu vao bo nho
unsigned int AnhSang(unsigned char so);
void KiemTra()interrupt 1; //Ngat do bo dinh thoi 0
void Delay(int time);
//Chuong trinh chinh
void main()
{
//Cho phep ngat do bo dinh thoi 0 va ngat ngoai 0
IE=0x83; //10000011 EA=1 va ET0=1 , EX0=1
PX0=1; //Uu tien cho ngat ngoai 0
IT0=1; //Chon ngat ngoai 0 duoc kich thich boi canh
//Khoi tao bo dinh thoi 0 va bo dinh thoi 1
BuocRem = 0; //Khoi tao rem o vi tri dong han
//Khoi tao dong co buoc
CTRL0 = 0;
CTRL1 = 0;