PHẦN 1 : GIỚI THIỆU I.ĐẶT VẤN ĐỀ : Để đáp ứng được yêu cầu đo và khống chế nhiệt độ tự động, thì có nhiều phương pháp để thực hiện, nghiên cửu khảo sát vi điều khiển 8051 nhóm thực hiện
Trang 1PHẦN 1 : GIỚI THIỆU
I.ĐẶT VẤN ĐỀ :
Để đáp ứng được yêu cầu đo và khống chế nhiệt độ tự động, thì có nhiều phương pháp để thực hiện, nghiên cửu khảo sát vi điều khiển 8051 nhóm thực hiện nhận thấy rằng: ứng dụng vi điều khiển 8051 vào việc đo và khống chế nhiệt độ tự động là phương pháp tối ưu nhất
II.GIỚI HẠN ĐỀ TÀI :
Với thời gian ngắn và đây chỉ là một bài tập lớn nên nhóm quyết định chỉ dừng lại
ở việc thiết kế hệ đo nhiêt độ và hiển thị nhiệt trên đồ thị, phát tín hiệu cảnh báo khi nhiệt độ vượt một ngưỡng mà chúng ta đặt Nhiệt độ đo được giới hạn trong pham vi từ
00C đến 1000C
Trang 2
PHẦN II: TÌM HIỂU VỀ CÁC LINH KIỆN
CỔNG NỐI TIẾP
Cổng nối tiếp sử dụng khá rộng rãi trong việc ghép nối với máy
tính
Khoảng cách truyền của cổng nối tiếp là tốt hơn so với cổng
song song
Ý nghĩa các chân:
tiếp
Thông số của cổng nối tiếp:
Điện aáp quy định đối với mức logic 1 nằm trong khoảng từ -3V đến -12V; mức logic 0
là khoảng +3V đến +12V Tốc độ truyền dữ liệu được quy định chuẩn gồm các tốc độ sau: 300,600, 1200, 2400, 4800, 9600, 19200, …, 56600 baud, độ dài cực đại của cáp nối là 15m khi không có bộ đệm
Trên máy tính có 2 cổng nối tiếp có địa chỉ là 3F8H và 2F8H
Trang 3 Vi điều khiển 89C51
a GIỚI THIỆU :
Bộ vi điều khiển viết tắt là Micro-controller, là mạch tích hợp trên một chip có thể lập trình được, dùng để điều khiển hoạt động của một hệ thống Theo các tập lệnh của người lập trình, bộ vi điều khiển tiến hành đọc, lưu trữ thông tin, xử lý thông tin, đo thời gian và tiến hành đóng mở một cơ cấu nào đó
b KHẢO SÁT BỘ VI ĐIỀU KHIỂN 8051 :
IC vi điều khiển 8051 thuộc họ MCS51 có các đặt điểm sau :
-4kbyte ROM (được lập trình bởi nhà sản xuất chỉ có ở 8051)
-128 búyt RAM
-4port I10 8bit
-Hai bộ định thời 16bit
-Giao tiếp nối tiếp
-64KB 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
-một bộ xử lí luận lí (thao tác trên các bit đơn)
-210 bit được địa chỉ hóa
-bộ nhân / chia 4s
1 Cấu trúc bên trong của 8051 :
Trang 4Phần chính của vi điều khiển 8051 là bộ xử lí trung tâm (CPU: central processing unit ) bao gồm :
- Thanh ghi tích lũy A
- Thanh ghi tích lũy phụ B, dùng cho phép nhân và phép chia
- Đơn vị logic học (ALU : Arithmetic Logical Unit )
- Từ trạng thái chương trình (PSW : Prorgam Status Word)
- Bốn băng thanh ghi
- Con trỏ ngăn xếp
- Ngoài ra còn có bộ nhớ chương trình, bộ giải mã lệnh, bộ điều khiển thời gian và logic
2 Sơ đồ chân của 8051
Trang 53 Các nhóm lệnh của 8051
Tập lệnh của 8051 được chia thành 5 nhóm:
- Số học
- Luận lý
- Chuyển dữ liệu
- Chuyển điều khiển
Ta sẽ không nói chi tiết về tập lệnh của 8051
ĐO NHIỆT ĐỘ
a Các Phươg Pháp Đo Nhiệt Độ
Đo nhiệt độ là một phương thức đo lường không điện,đo nhiệt độ được chia thành nhiều dãi:
+ Đo nhiệt độ thấp
+ Đo nhiệt độ trung bình
+ Đo nhiệt độ cao
Việc đo nhiệt độ được tiến hành nhờ các dụng cụ hổ trợ chuyên biệt như:
+ Cặp nhiệt điện
+ Nhiệt kế điện kế kim loại
+ Nhiệt điện trở kim loại
+ Nhiệt điện trở bán dẫn
+ Cảm biến thạch anh
Việc sử dụng các IC cảm biến nhiệt để đo nhiệt độ là một phương pháp thông dụng được nhóm sử dụng trong đề tài này, nên ở đây chỉ giới thiệu về IC cảm biến nhiệt
b Nguyên lý hoạt động chung của IC đo nhiệt độ
IC đo nhiệt độ là một mạch tích hợp nhận tín hiệu nhiệt độ chuyển thành tín hiệu điện dưới dạng dòng điện hay điện áp Sự tác động của nhiệt độ tạo ra điện tích tự do và các lổ trống trong chất bán dẫn Bằng sự phá vỡ các phân tư û, bứt các electron thành dạng tự do di chuyển qua vùng cấu trúc mạng tinh thể tạo sự xuất hiện các lỗ trống Làm cho tỉ lệ điện tử tự do và lổ trống tăng lên theo qui luật hàm mũ với nhiệt độ Dựa vào đặc tính rất nhạy của các bán dẫn với nhiệt độ,tạo ra điện áp hoặc dòng điện, tỉ lệ thuận với nhiệt độ tuyệt đối.Đo tín hiệu điện ta biết được giá trị của nhiệt độ cần đo
Trang 6 CHUYỂN ĐỔI TƯƠNG TỰ – SỐ
a KHÁI NIỆM CHUNG
Ngày nay việc truyền đạt tín hiệy cũng như quá trình điều khiển và chỉ thị phần lớn được thực hiện theo phương pháp số Trong khi đó tín hiệu tự nhiên có dạng tương tự như:nhiệt độ,áp suất ,cường độ ánh sáng,tốc độ quay,tín hiệu âm thanh…Để kết nối giữa nguồn tín hiệu tượng tự với các hệ thống xử lý số người ta dùng các mạch chuyển đổi tương tự sang số(ADC) nhằm biến đổi tín hiệu tương tự sang số hoặc trong trừơng hợp ngược lại cần biến đổi tín hiệu số sang tương tự thi dùng các mạch DAC (Digital Analog Converter)
b NGUYÊN TẮT THỰC HIỆN CHUYỂN ĐỔI ADC
Mạch chuyển đổi tin hiệu tương tự sang số,chuyển một tín hiệu ngõ vào tương tự (dòng điện hay điện áp) thành dạng mã số nhị phân có giá trị tương ứng
Chuyển đổi ADC có rất nhiều phương pháp.Tuy nhiên,mỗi phương pháp điều có những thông số cơ bản khác nhau:
+Độ chính xác của chuyển đổi AD
+ Tốc độ chuyển đổi
+ Dãi biến đổi của tín hiệu tương tự ngõ vào
Trang 7 Hoạt động
-Đầu tiên kích xung start để bộ ADC hoạt động
Tại một tần số được xác định bằng xung clock bộ điều khiển làm thay đổi thành số nhị phân được lưu trữ trong thanh ghi(Register).-Số nhị phân trong thanh ghi được chuyển thành dạng điện áp V’a bằng bộ chuyển đổi DA
-Bộ so sánh,so sánh V’a với điện áp ngõ vào Va Nếu V’a < Va thì ngõ ra của bộ
so sánh vẫn giữ mức cao Khi V’a > Va ngõ ra của bọâ so sánh xuống mức thấp và quá trình thay đổi số của thanh ghi ngưng Lúc này V’a gần bằng Va , những số trong thanh ghi là những số cần chuyển đổi
Trong đề tài này bộ ADC sử dụng là ADC 0804LCD
PHẦN III: THIẾT KẾ VÀ THI CÔNG
III Thiết kế và phân tích hoạt động từng khối:
1 Bộ cảm biến:
Để đo nhiệt độ được chính xác, tất nhiên cần có một đầu dò thích hợp Đầu dò là một cảm biến nhiệt độ có nhiệm vụ vận chuyển từ nhiệt độ qua tín hiệu điện ựa vào lý thuyết và thực tế của mạch cần thiết kế ta dùng phương pháp đo bằng IC cảm biến nhiệt độ Các IC cảm biến nhiệt độ có độ chính xác cao, dễ tìm và giá thành rẻ Một trong số đó là IC LM35, là loại thông dụng trên thị trường hiện nay, đồng thời nó có những đặc tính làm việc phù hợp với thiết kế chi tiết của mạch
a Một số tính chất cơ bản của LM35:
- LM35 có độ biến thiên theo nhiệt độ: 10mV / 1oC
- Độ chính xác cao, tính năng cảm biến nhiệt độ rất nhạy, ở nhiệt độ 25oC nó có sai số không quá 1% Với tầm đo từ 0oC – 128oC, tín hiệu ngõ ra tuyến tính liên tục với những thay đổi của tín hiệu ngõ vào
- Thông số kỹ thuật:
Tiêu tán công suất thấp
Dòng làm việc từ 400A – 5mA
Dòng ngược 15mA
Dòng thuận 10mA
Độ chính xác: khi làm việc ở nhiệt độ 25oC với dòng làm việc 1mA thì điện áp ngõ ra từ 2,94V – 3,04V
-Đặc tính điện:
Theo thông số của nhà sản xuất LM35, quan hệ giữa nhiệt độ và điện áp ngõ ra như sau:
Vout = 0,01ToK
Trang 8= 2,73 + 0,01ToC.
Vậy ứng với tầm hoạt động từ 0oC – 100oC ta có sự biến thiên điện áp ngõ ra là:
Ở 0oC thì điện áp ngõ ra Vout = 2,73 (V)
Ở 5oC thì điện áp ngõ ra Vout = 2,78 (V)
………
Ở 100oC thì điện áp ngõ ra Vout = 3,73 (V)
Tầm biến thiên điện áp tương ứng với nhiệt độ từ 0oC - 100oC là 1V
b Thiết kế cụ thể mạch cảm biến dùng LM35:
+ Sơ đồ mạch :
+ Tính toán và chọn linh kiện:
Ta có:
400A < IR < 5mA
400A <
R
V0
5
< 5 mA
mA
V
5
5 0 < R < V A
400
Vì: 2,73V Vo 3,73
Nên: 254 < R < 5,7 k (1)
Mặt khác, theo thông số của nhà sản xuất điện áp trên LM35 tại Tc = 25oC, IR = 1mA thì Vo = 2,98 (V), ta có:
400A < 5 R2,98< 5mA (2)
Từ (1) và (2): chọn R = 2,2 k
chọn biến trở chỉnh offset VR = 15 k
2 Thiết kế bộ chuyển đổi ADC:
2.1 Giới thiệu ADC 0809:
Bộ ADC 0809 là một thiết bị CMOS tích hợp với một bộ chuyển đổi từ tương tự sang 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
Vout VR +5V
LM35
Trang 9này dùng phương pháp chuyển đổi xấp xỉ tiếp Bộ chọn kênh có thể truy xuất bất kềnh nào trong các ngõ vào tương tự một cánh độc lập
Thiết bị này loại trừ khả năng cần thiết điều chỉnh điểm 0 bên ngoài và khả năng điều chỉnh tỉ số làm tròn ADC 0809 dễ dàng giao tiếp với các bộ vi xử lý
* Sơ đồ chân ADC 0809:
* Ý nghĩa các chân:
IN0 đến IN7 : 8 ngõ vào tương tự
A, B, C : giải mã chọn một trong 8 ngõ vào
Z-1 đến Z-8 : 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ủaADC 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: 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
ADC0804
28 15
1 14
IN2 IN1 IN0 A B C ALE z -1 z -2 z -3 z -4 z -8 REF z -6
START
IN3 IN4 IN5 IN6 IN7 EOC z -5 OE CLK VCC REF GND z -7
Trang 10Cá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:
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 thế có giá trị Vref/2, điện thế này được so sánh với điện thế vào in
+ 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
Trong suốt quá trình chuyển đổi 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 ref
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 Vin = 5V
A B C Ngõ vào được chọn 0
0 0 0 1 1 1 1
0 0 1 1 0 0 1 1
0 1 0 1 0 1 0 1
IN0 IN1 IN2 IN3 IN4 IN5 IN6 IN7
Trang 11 Biểu đồ thời gian của ADC 0809.
3 Max 232.
Trang 12Max 232 là Ic lái điện áp, có nhiệm vụ tương thích điện áp TTL của vi điều khiển Bởì vì chuẩn RS232 khơng tương thích với mức logic TTL, do vậy nó yêu cầu mợt bợ điều khiển đưởng truyền để chuyển đởi mức điện áp RS232 về các mức TTL và ngược lại IC MAX232
sẽ liên kết giữa vi điều khiển và jump cởng Com của máy tính, từ đó tạo cầu nới cho việc truyền dữ liệu giữa vi điều khiển và máy tính
Chức năng chân của MAX232:
T1 in và T2 in là chân ngỏ vào phát
T1 out và T2 out là chân ngỏ ra phát
R1 in và R2 in la ngỏ vào thu
R1 out và R2 out là ngỏ ra thu
LCD 16*2
Mơ tả chi tiết các chân:
+VSS: Chân nới đất cho LCD, khi thiết kế mạch ta nới chân này với GND của mạch điều khiển
+VDD: Chân cấp nguồn cho LCD, khi thiết kế mạch ta nới chân này với VCC=5V của mạch điều khiển
+Vee: Chân này dùng để điều chỉnh đợ tương phản của LCD
+RS: Chân chọn thanh ghi (Register select) Nới chân RS với logic “0” (GND) hoặc logic
“1” (VCC) để chọn thanh ghi
+ Logic “0”: Bus DB0-DB7 sẽ nới với thanh ghi lệnh IR của LCD (ở chế đợ “ghi” - write) hoặc nới với bợ đếm địa chỉ của LCD (ở chế đợ “đọc” - read)
+ Logic “1”: Bus DB0-DB7 sẽ nới với thanh ghi dữ liệu DR bên trong LCD
+R/W: Chân chọn chế đợ đọc/ghi (Read/Write) Nới chân R/W với logic “0” để LCD hoạt đợng ở chế đợ ghi, hoặc nới với logic “1” để LCD ở chế đợ đọc
+E Chân cho phép (Enable) Sau khi các tín hiệu được đặt lên bus DB0-DB7, các lệnh chỉ được chấp nhận khi có 1 xung cho phép của chân E
4 Phần lập trình
a Lập trình cho IC 89s52
#include <at89x52.h>
#include <stdio.h>
sbit WRADC = P3^6 ;
sbit LED1 = P0^0;
sbit LED2 = P0^3;
sbit LED3 = P0^6;
#define Port_adc P2
unsigned int i,n,dk,j;
unsigned int adc,vadc,muccao,mucthap;
char sbuff[6];
void delay_ms(unsigned int ms)
{
Trang 13}
void Ngat_serial(void) interrupt 4
{
if(RI)
{
RI=0;
sbuff[dk] = SBUF;
if ((dk>0)&&(sbuff[dk-1]==0xFA)&&(sbuff[dk]==0xAF)) {
sbuff[0] = 0XFA;
sbuff[1] = 0xAF;
dk = 2;
}
else
{
dk++;
if(dk>4)
{
if(sbuff[4]==0xAA) {
muccao = sbuff[2]; mucthap = sbuff[3]; }
dk = 0;
}
}
}
}
void ad_convert(void)
{
adc = 0;
Port_adc = 0xff;
WRADC = 0;
delay_ms(10);
WRADC = 1;
delay_ms(10);
adc = Port_adc;
}
void Out(unsigned char temp)
{
SBUF=temp;
while(!TI);
TI = 0;
Trang 14}
void Send_to_pc(unsigned int adata)
Out(0xDA);
Out(0xAD);
Out((unsigned char)(adata));
Out(0XAB);
}
void main()
{
EA = 1;
ES = 1;
SCON = 0x52;
TMOD = 0x20;
TH1 = -3;
TR1 = 1;
adc = 0;
vadc = 0;
muccao = 30;
mucthap = 20;
while(1)
{
ad_convert();
vadc = adc;
Send_to_pc(vadc);
LED1 = LED2 = LED3 = 1 if(vadc > muccao)LED3 = 0;
if(vadc < mucthap)LED1 = 0;
if((vadc > mucthap)&&(vadc < muccao))LED2 = 0; }
}
c lập trình Ghép nối
Private DataCom As Integer
Private X, Y
Private DataTemp As Integer
Private Buff(6) As Integer
Private Index, mucCao, mucThap As Integer
Private Sub Form_Load()
Timer1.Enabled = True
Timer2.Enabled = False
Trang 15
DataTemp = 0
Log.AddItem "Temperatures Communication with PC by ComPort"
Log.AddItem "Please connect Hardware & Power to PC"
Leven
dothi.Line -(0, 100 - DataTemp), vbBlue
End Sub
Sub Leven()
Log.ListIndex = Log.ListCount - 1
End Sub
Private Sub MSComm1_OnComm()
Dim DataReceive As String
Dim DataCom As Long
DataReceive = MSComm1.Input
If (MSComm1.CommEvent = comEvReceive) And DataReceive <> "" Then Buff(Index) = Asc(DataReceive)
Debug.Print "nhan duoc:" & Buff(Index)
If Index > 0 Then
If (Buff(Index - 1) = 218) And (Buff(Index) = 173) Then
Buff(0) = 218
Buff(1) = 173
Index = 1
End If
End If
Index = Index + 1
If (Index > 4) Then
If (Buff(3) = &HAB) Then
DataTemp = Buff(2) - 120
End If
Index = 0
End If
End If
End Sub
Private Sub Start_Click()
If MSComm1.PortOpen = False Then
With MSComm1
Trang 16.RThreshold = 1
.InputLen = 1
.Settings = "9600,N,8,1"
.DTREnable = False
.CommPort = 1
.PortOpen = True
End With
Log.AddItem "Com Port connect "
Leven
dothi.Cls
dothi.Line -(0, 100 - DataTemp), vbBlue
Timer2.Enabled = True
Timer2.Interval = 100
TimerCom.Enabled = True
X = 0
End If
End Sub
Private Sub Stop_Click()
If MSComm1.PortOpen = True Then
MSComm1.PortOpen = False
Log.AddItem "ComPort Disable connect to module" Leven
DataTemp = 0
DisTemp.Caption = 0
Timer2.Enabled = False
dothi.Cls
X = 0
Y = 100 - DataTemp
TimerCom.Enabled = False
End If
End Sub
Private Sub TempCao_KeyPress(KeyAscii As Integer) Select Case KeyAscii
Case 48 To 57, 8 ' 0-9 & Backspace
Case Else
KeyAscii = 0
End Select
End Sub