dfgbnhn
Trang 1I Mục đích, yêu cầu của đề tài:
- Sơ đồ khối mạch đo nhiệt độ
- Tìm hiểu nguyên tắc hoạt động của thiết bị cảm biến (cảm biến nhiệt)và ứng dụng cảu nó trong thực tiễn
II Nguyên lý hoạt động và nguyên lý đo.
1 Các linh kiện sử dụng trong mạch.
- Sử dụng vi điều khiển họ 8051
- Đo nhiệt độ bằng cảm biến nhiệt LM35 thông qua bộ thiết kế mạch chuyển đổi ADC0804
- Hiển thị bằng led 7 đoạn
2 Nguyên lý một số linh kiện phục vụ cho công việc đo lường.
2.1 Chip ADC 0804.
Chíp ADC 0804 là bộ chuyển đổi tương tự sang số trong họ các loạt ADC
0800 từ hãng National Semiconductor Nó cũng được nhiều hãng khác sản xuất, làm việc với +5V và có độ phân giải là 8 bít Ngoài độ phân giải thì thời gian chuyển đổi cũng là một yếu tố quan trọng khác khi đánh giá một bộ ADC Thời gian chuyển đổi được định nghĩa như là thời gian mà bộ ADC cần để chuyển một đầu vào tương tự thành một số nhị phân Trong ADC
0804 thời gian chuyển đổi thay đổi phụ thuộc vào tần số đồng hồ được cấp tới chân CLK và CLK IN nhưng không thể nhanh hơn 110µs Các chân của ADC 804 được mô tả như sau:
2.1.1 Chân CS- chọn chíp: Là một đầu vào tích cực mức thấp được sử dụng
để kích hoạt chíp ADC 804 Để truy cập ADC 804 thì chân này phải ở mức thấp
2.1.2 Chân RD(đọc): Đây là một tín hiệu đầu vào được tích cực mức thấp
Các bộ ADC chuyển đổi đầu vào tương tự thành số nhị phân tương đương với nó và giữ nó trong một thanh ghi trong RDđược sử dụng
Nhiệt độ
môi trường
hiển thị
Khối điều khiển
Trang 2để nhận dữ liệu được chuyển đổi ở đầu ra của ADC 804 Khi CS = 0 nếu một xung cao - xuống - thấp được áp đến chân RDthì đầu ra số 8 bít được hiển diện ở các chân dữ liệu D0 - D7 Chân RD cũng được coi như cho phép đầu ra
2.1.3 Chân ghi WR(thực ra tên chính xác là “Bắt đầu chuyển đổi”) Đây là
chân đầu vào tích cực mức thấp được dùng để báo cho ADC 804 bắt đầu quá trình chuyển đổi Nếu CS = 0 khi WRtạo ra xung cao - xuống
- thấp thì bộ ADC 804 bắt đầu chuyển đổi giá trị đầu vào tương tự Vin
về số nhị phân 8 bít Lượng thời gian cần thiết để chuyển đổi thay đổi phụ thuộc vào tần số đưa đến chân CLK IN và CLK R Khi việc chuyển đổi dữ liệu được hoàn tất thì chân INTR được ép xuống thấp bởi ADC 804
2.1.4 Chân CLK IN và CLK R.
Chân CLK IN là một chân đầu vào được nối tới một nguồn đồng hồ ngoài khi đồng hồ ngoài được sử dụng để tạo ra thời gian Tuy nhiên
804 cũng có một bộ tạo xung đồng hồ Để sử dụng bộ tạo xung đồng
hồ trong (cũng còn được gọi là bộ tạo đồng hồ riêng) của 804 thì các chân CLK IN và CLK R được nối tới một tụ điện và một điện trở như chỉ ra trên hình 3.6.1 Trong trường hợp này tần số đồng hồ được xác định bằng biểu thức:
RC 1 , 1
1
f =
Giá trị tiêu biểu của các đại lượng trên là R = 10kΩ và C= 150pF và tần số nhận được là f = 606kHz và thời gian chuyển đổi sẽ mất là
110µs
2.1.5 Chân ngắt INTR(ngắt hay gọi chính xác hơn là “kết thúc chuyển đổi’)
Đây là chân đầu ra tích cực mức thấp Bình thường nó ở trạng thái cao và khi việc chuyển đổi hoàn tất thì nó xuống thấp để báo cho CPU biết là dữ liệu được chuyển đổi sẵn sàng để lấy đi Sau khi INTR
xuống thấp, ta đặt CS = 0 và gửi một xung cao 0 xuống - thấp tới chân
RDlấy dữ liệu ra của 804
2.1.6 Chân Vin (+) và Vin (-)
Đây là các đầu vào tương tự vi sai mà Vin = Vin (+) - Vin (-) Thông thường Vin (-) được nối xuống đất và Vin (+) được dùng như đầu vào tương tự được chuyển đổi về dạng số
2.1.7 Chân VCC
Đây là chân nguồn nuôi +5v, nó cũng được dùng như điện áp tham chiếu khi đầu vào Vref/2 (chân 9) để hở
2.1.8 Chân Vref/2
Trang 3Chân 9 là một điện áp đầu vào được dùng cho điện áp tham chiếu Nếu chân này hở (không được nối) thì điện áp đầu vào tương tự cho ADC 804 nằm trong dải 0 đến +5v (giống như chân VCC) Tuy nhiên, có nhiều ứng dụng mà đầu vào tương tự áp đến Vin cần phải khác ngoài dải 0 đến 5v Chân Vref/2 đượcdùng để thực thi các điện áp đầu vào khác ngoài dải 0 - 5v Ví dụ, nếu dải đầu vào tương tự cần phải là 0 đến 4v thì Vref/2 được nối với +2v
Hình 3.6.1: Kiểm tra ADC 0804 ở chế độ chạy tự do.
Bảng 3.6.1: Điện áp Vref/2 liên hệ với dải Vin
ADC080 4
+5 V 1
1 1
4 1 2 10
9 19
10k
150p F
11 12 13 14 15 16 17 18
3 5
to
LED s
Noma lly
Open STAR T
D0 D1 D2 D3 D4 D5 D6 D7 W R INT R
D GND RD CS
CLK in
CLK R
A GND Vref/
2
Vin(-)
Vin(+
)
20 Vc c
10k
PO T
Trang 4- * Khi Vref/2 hở thì đo được ở đó khoảng 2,5V
- Kích thước bước (độ phân dải) là sự thay đổi nhỏ nhất mà ADC
có thể phân biệt được
2.1.9 Các chân dữ liệu D0 - D7.
Các chân dữ liệu D0 - D7 (D7 là bít cao nhất MSB và D0 là bít thấp nhất LSB) là các chân đầu ra dữ liệu số Đây là những chân được đệm ba trạng thái và dữ liệu được chuyển đổi chỉ được truy cập khi chân CS = 0 và chân RDbị đưa xuống thấp Để tính điện áp đầu ra ta
có thể sử dụng công thức sau:
buoc thuoc kich
V
Với Dout là đầu ra dữ liệu số (dạng thập phân) Vin là điện áp đầu vào tương tự và độ phân dải là sự thay đổi nhỏ nhất được tính như là (2 ×
Vref/2) chia cho 256 đối với ADC 8 bít
2.2 Dải nhiệt độ và sự thay đổi trở kháng theo nhiệt độ của LM35
Các bộ biến đổi (Transducer) chuyển đổi các đại lượng vật lý ví dụ như nhiệt độ, cường độ ánh sáng, lưu tốc và tốc độ thành các tín hiệu điện phụ thuộc vào bộ biến đổi mà đầu ra có thể là tín hiệu dạng điện áp, dòng, trở kháng hay dung kháng Ví dụ, nhiệt độ được biến đổi thành về các tín hiệu điện sử dụng một bộ biến đổi gọi là Thermistor (bộ cảm biến nhiệt), một bộ cảm biến nhiệt đáp ứng sự thay đổi nhiệt độ bằng cách thay đổi trở kháng nhưng đáp ứng của nó không tuyến tính
Bảng 3.6.2: Trở kháng của bộ cảm biến nhiệt theo nhiệt độ.
Nhiệt độ ( 0 C) Trở kháng của cảm biến (kΩ)
Bảng 3.6.3: Hướng dẫn chọn loạt các cảm biến nhiệt họ LM35.
Mã sản phẩm Dải nhiệt độ Độ chính xác Đầu ra
Trang 5
2.2.1 Các bộ cảm biến nhiệt họ LM35.
Loạt các bộ cảm biến LM35 là bộ cảm biến nhiệt mạch tích hợp chính xác cao mà điện áp đầu ra của nó tỷ lệ tuyến tính với nhiệt độ theo thang độ Celsius Chúng cũng không yêu cầu cân chỉnh ngoài vì vốn chúng đã được cân chỉnh Chúng đưa ra điện áp 10mV cho mỗi sự thay đổi 10C Bảng 3.6.3
hướng dẫn ta chọn các cảm biến họ LM35
2.2.2 Phối hợp tín hiệu và sơ đồ khối phối ghép LM35 với 8051
Xét trường hợp nối một LM35 tới một ADC 804 Sự thay đổi trở kháng phải được chuyển thành điện áp để có thể được sử dụng cho các, ADC 804 có độ phân dải 8 bít với tối đa 256 bước (28) và LM35 (hoặc ML34) tạo điện áp 10mV cho mỗi sự thay đổi nhiệt độ 10C nên ta có thể tạo điều kiện Vin của ADC 804 tạo ra một Vout = 2560mV (2,56V) cho đầu ra đầu thang đo do vậy, nhằm tạo ra Vout đầy thang 2,56V cho ADC 804 ta cần đặt điện áp Vref/2 = 1,28V Điều này làm cho Vout của ADC 804 đáp ứng trực tiếp với nhiệt độ được hiển thị trên LM35 Các giá trị của Vref/2 được cho ở bảng 3.6.1
Bảng 3.6.4: Nhiệt độ.
Nhiệt độ ( 0 C) V in (mV) V out (D7 – D0)
Trang 62.2.3 Cảm biến nhiệt LM35DZ:
Trong bài này chúng ta sử dụng con LM35DZ
* Đặc điểm:
+ Dải nhiệt độ biến đổi: 0 đến 100 độ +Nhiệt độ ra thẳng thang đo Celcius nghĩa là ở
25 độ C điện áp ra là 0.25V + Tương ứng 10mV/độ C + Đảm bảo độ chính xác 0.5 độ C tại nhiệt độ 25
độ C
Vi điều khiển
8051 Hiển thị led 7 đoạn
Điều khiển hệ thống cảnh báo
ADC 0804
Cảm biến nhiệt
LM35
Môi trường cần điều khiển nhiệt độ
805 1
ADC80 4
P2.
5 P2.
6 P1.
0
P1.
7 P2.
7
D0
D7 INTR
GN D
A GNDVref/
2
CLK IN
CLK R
VCC
Vin(+
) Vin(-)
5V
RD WR
CS
D Q
Q
D Q
Q
Set to 1.28V
GN D
LM35 or LM34
2.5 k
10 k
Trang 7+ Làm việc với nguồn nuôi 4V đến 30V
+ Trở kháng ra thấp 0.1 ohm với tải 1mA
+ Khả năng tự làm nóng thấp, 0.08 độ C trong không khí
*Cách mắc: đơn giản là nối chân +Vs với nguồn và
chân GND với đất chân OUTPUT nối với chân Vin+ của ADC0804
* Ghép nối LM35 với ADC0804
* Sơ đồ thời gian hoạt động:
Trang 94 Nguyên lý đo và chuyển đổi tương tự/số của ADC
Khi nhiệt độ môi trường thay đổi ± 1làm cho trở kháng của cảm biến LM35 thay đổi dẫn đến điện áp đầu vào Vin của ADC thay đổi Điện áp Vin
vào ADC sẽ được so sánh với Ud của ADC Ud có thể thay đổi từ 0V đến 2(Vref/2)
Trang 10Ban đầu Ud = 0, nếu Vin > Ud khi đó Ud sẽ được cộng thêm một giá trị là
U
∆ U d =U d + ∆U , trong đó :
mV
V
256
) 2 / ( 2
=
=
∆
đồng thời giá trị bộ đếm tăng thêm 1 Quá trình so sánh cứ như vậy đến khi nào Ud =Vin thì dừng Khi đó giá trị của bộ đếm chính là giá trị thập phân Giá trị thập phân này sẽ được đưa qua một bộ giải mã, giải mã ra nhị phân rồi đưa ra các chân AD0 – AD7
Đánh giá độ chính xác của phép đo
Khả năng tự làm nóng của LM35DZ trong không khí là 0,1oC
Cảm biến LM35 có hệ số nhiệt là 10mV/oC, do đó sai số về nhiệt độ của LM35DZ sẽ là 0,5oC Khi đó điện áp đầu vào Vin sẽ được làm tròn lên hoặc xuống Khi Vin đi vào so sánh với điện áp Ud của ADC, ta nhận thấy rằng mức điện áp của ADC là 10mV nên sai số mà nó gây ra là 0,5mV tương ứng với giá trị nhiệt độ là 0,5oC
Vậy sai số tổng cộng của hệ thống là 1.1oC
Do vậy nhiệt độ thưc tế của ta sẽ là : treal = tđo ± 1,1 oC
Phương pháp mà ta dùng ở đây là phương pháp vi phân bậc thang
Độ chính xác của ADC0804 bị giới hạn bởi tần số lấy mẫu (thường là 600->640KHz) và số bít của dữ liệu đầu ra (8 bít) tương ứng với tối đa là
256 mức điện áp có thể chuyển đổi và so sánh,ngoài ra điện áp đưa vào chân Vref/2 cũng quyết định điện áp vi phân bậc thang trong phép chuyển đổi của ADC.Nếu điện áp đưa vào chân này là 1.28 V thì điện áp so sánh max là 2x1.28= 2.56 V kết hợp với dải nhiệt độ chuyển đổi của LM35DZ là từ
0->100oC ( vẫn nhở hơn 255) nên mỗi bước điện áp ứng với 2.56/256=10mV.Điện áp Vref/2 càng lớn thì bước điện áp bậc thang càng lớn
Trang 11do đó độ chính xác của phép đo càng nhỏ hay nói cách khác ta mắc phải một sai số lớn hơn
Để tăng độ chính xác của phép đo lên ta có thể dùng một cảm biến khác có độ chính xác cao hơn, có thể giảm điện áp đưa vào chân Vref/2 để giảm bước điện áp vi phân bậc thang của ADC, Tuy nhiên, khi bước điện áp của ADC và cảm biến không đồng nhất thì sẽ gây khó khăn cho quá trình xử
lý dữ liệu đưa ra khâu hiển thị hoặc có thể gây ra sai số.Tùy thuộc vào phép hiện thị mà người ta có thể đặt giá trị điện áp cho chân Vref/2 sao cho hợp lý
Ta có thể mắc theo sơ đồ sau để tăng độ chính xác của phép đo :
vin
C8
100u
C10
104
C11
104
RV1
1k
C12
104
27.0
3
1
VOUT 2
U1
LM35
C5
150p
NHIET DO
Trang 126 Các linh kiện khác:
- Các loại điện trở, tụ điện, LED, led 7 thanh
- Thạch anh 12Mhz để tạo dao động
- IC ổn áp LM7805 tạo ra nguồn có điện áp 5V không đổi
7 Thiết kế mạch:
a.Sơ đồ nguyên lý.
vin
rd
rst
rst
rd wr
1
4
vin
tang
giam
chedo
batdau
ketthuc
tang chedo ketthuc
VIN+
6 VIN-7 VREF/2 9 CLK IN 4
A GND 8 RD 2 WR 3 INTR 5 CS 1
D GND 10 DB7(MSB) DB0(LSB) DB6 DB5 DB4 DB3 DB2 DB1 11 12 13 14 15 16 17 18 CLK R 19
U3
ADC0804
R5
10k
C1
150p
2 3 4 5 6 7 8 9
RP1
RESPACK-8
Q1
BC184
R6
4k7
Q2
BC184
R7
4k7
Q3
BC184
R8
4k7
Q4
BC184
R9
4k7
D1
LED-YELLOW
X1
CRYSTAL
C2
33p
C3
33p
R10
10k C4
10u
N1
R11
10k
D2
LED-RED
D3
LED-GREEN
XTAL2 18 XTAL1 19
ALE
30 PSEN 29 RST 9
P0.0/AD0 39 P0.1/AD1 38 P0.2/AD2 37 P0.3/AD3 36 P0.4/AD4 35 P0.5/AD5 34 P0.6/AD6 33 P0.7/AD7 32
P1.0/T2 1 P1.1/T2EX 2 P1.2 3 P1.3 4 P1.4 5 P1.5 6 P1.6 7 P1.7 8
P3.0/RXD 10 P3.1/TXD 11 P3.2/INT0 12 P3.3/INT1 13 P3.4/T0 14
P3.7/RD 17 P3.6/WR P3.5/T1 16 15 P2.7/A15 28
P2.0/A8 21 P2.1/A9 22 P2.2/A10 23 P2.3/A11 24 P2.4/A12 25 P2.5/A13 26 P2.6/A14 27
U4
AT89C52
N2 N3
1 2 3 4
A B C D E F G D
K2
C8
100u
C10
104
C11
104
RV1
1k
C12
104
27.0
3 1
VOUT 2
U1
LM35
C5
150p
NHIET DO
N4 N5 N6
2 3 4 5 6 7 8 9
RP2
RESPACK-8
VI
U2
7805
C6
1000u
C7
100u
1
J1
TBLOCK-I2
R1
100R
D4
LED-YELLOW
R2
100R
R3
100R
R4
100R
BR1
BRIDGE
b Sơ đồ mạch in.
Trang 14c Code lập trình
#include<reg51.h>
int array[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90}; sbit rd=P3^7; //Read signal P3.7
sbit wr=P3^6; //Write signal P3.6
sbit intr= P3^5; //INTR signal P3.4 //cai dat de ADC0804 hoat dong
sbit led0=P2^0;
sbit led1=P2^1;
sbit led2=P2^2; //dieu khien 4 led 7 doan
sbit led3=P2^3;
sbit d1=P2^4;
sbit d2=P2^5; //dieu khien led vang, xanh, do
sbit d3=P2^6;
sbit tang=P3^0;
sbit giam=P3^1;
sbit chedo=P3^2;
sbit batdau=P3^3;
sbit ketthuc=P3^4;
unsigned int adc_avg,nhietdo,dc;
void delay()
{
unsigned int i;
for(i=1;i<=1000;i++); //ham tre
}
void read()
{
wr=1;
while(intr); //che do de cho ADC hoat dong
Trang 15adc_avg=P1;
rd=1;
}
void chedo1()
{
int a,b;
a=nhietdo/10;
b=nhietdo%10;
led3=1;
P0=array[a];
delay();
led3=0;
led2=1;
P0=array[b];
delay();
led2=0;
led1=1;
P0=0x9c;
delay();
led1=0;
led0=1;
P0=0xc6;
delay();
led0=0;
} void set_dc()
{
while (chedo==0){}//cho phim duoc nha
do
{
if (tang==0) //neu phim tang duoc an
{ while (tang==0) {}// cho phim duoc nha dc++;
if (dc>100) dc=27;
}
if (giam==0) // neu phim giam duoc an {
Trang 16while (giam==0){}//cho phim nha dc ;
if (dc<5) dc=27;
} led3=1;
P0=array[dc/10];
delay();
led3=0;
led2=1;
P0=array[dc%10];
delay();
led2=0;
led1=1;
P0=0x9c;
delay();
led1=0;
led0=1;
P0=0xc6;
delay();
led0=0;
} while (chedo==1);
}
void chedo2()
{
int i=0;
while (batdau==0){}
while (i<100)
{
led3=1;
P0=array[dc/10];
delay();
led3=0;
led2=1;
P0=array[dc%10];
delay();
led2=0;
led1=1;
Trang 17P0=0x9c;
delay();
led1=0;
led0=1;
P0=0xc6;
delay();
led0=0;
i++;
}
}
void set()
{
set_dc();
while(chedo==0){}
}
void baoled()
{
if (nhietdo<dc)
{ d1=0;
d2=1;
d3=1;
} else if (nhietdo>dc)
{ d2=0;
d1=1;
d3=1;
}
else if (nhietdo==dc) {d3=0;
d2=1;
d1=1;
} }
void main()
{
int i;
Trang 18led0=led1=led2=led3=0;
d1=d2=d3=1;
while(1)
{
read(); //cho ADC hoat dong for(i=1;i<=100;i++)
{
nhietdo=adc_avg*1.953125; //gia tri can hien thi
chedo1();
if (batdau==0)
{ chedo2();
}
if (chedo==0) {set();}
baoled();
} }
}
III Kết Luận
Kết thúc bài lập lớn môn cảm biến đo lường chúng e đã biết thêm được nguyên lý hoạt động của LM35 và bộ chuyển đổi tương tự sang số ADC0804
Chúng em xin chân thành cảm ơn sự giúp đỡ của thầy !
Tài liệu tham khảo
1 Họ vi điều khiên 8051 – Ngyễn Tăng Cường
2 Vi điều khiển với lập trình C_Ngô Diện Tập