Tải bản đầy đủ

Điều Khiển Động Cơ bằng Cảm Biến nhiệt độ DS18B20 8051

TRƯỜNG ĐẠI HỌC GIAO THÔNG VẬN TẢI THÀNH PHỐ HỒ CHÍ MINH
KHOA ĐIỆN – ĐIỆN TỬ VIỄN THÔNG
MÔN: KĨ THUẬT ĐO II

ĐỀ TÀI:
ĐIỀU KHIỂN ĐỘNG CƠ BẰNG CẢM BIẾN NHIỆT ĐỘ DS18B20

GVHD: NGUYỄN HỒNG PHÚC
NHÓM: 12
SVTH : NGUYỄN TRIỆU PHONG 1651050035

TD16A

HÀ THÚC TUẤN

1651050054

TD16A

TRẦN THỊ THỦY TIÊN


1651050040

TD16A


NỘI DUNG:

1. GIỚI THIỆU CHUNG VỀ IC AT89S52
2. CẢM BIẾN NHIỆT ĐỘ DS18B20
3. ĐIỀU KHIỂN ĐỘNG CƠ BẰNG CẢM BIẾN NHIỆT ĐỘ


1.IC 89S52
1.1 Cấu trúc của IC 89S52
Trung tâm của 89S52 vẫn là vi sử lý trung tâm (CPU). Để kích thích cho toàn bộ hệ thống hoạt động, 89S52 có bộ tạo dao đông nội với thạch anh được ghép từ bên ngoài với tần số khoảng từ Mhz
đến 24Mhz. Liên kết các phần tử với nhau là hệ thống BUS nội , gồm có BUS dữ liệu, BUSS địa chỉ và BUSS điều khiển. 89S52 có 8K ROM, 256 bytes RAM và một số thanh ghi bợ nhớ … Nó giao
tiếp với bên ngoài qua 3 cổng song song và một cổng nối tiếp có thể thu, phát dữ liệu nối tiếp với tốc độ lập trình được. Hai bộ định thời 16 bit của 89S52 còn có 2 ngắt ngoài cho phép nó đáp ứng và
xử lý điều kiện bên ngoài theo cách ngắt quãng , rất hiệu quả trong các ứng dụng điều khiển . Thông qua các chân điều khiển và các cổng song song 89S52 có thể có thể mở rộng bộ nhớ ngoài lên
64Kbs dữ liệu
Sau đây là sơ đồ khối vi điều khiển:


•1.2 Sơ lượt về các chân IC89S52
•IC 89S52 có 40 chân. Có 32 chân làm nhiệm vụ xuất nhập, truyền dữ liệu. Các chân
ơhucj vụ ngắt, các chân Timer, trong đó 24 chân làm 2 nhiệm vụ khác nhau. Mỗi
chân có thể là đường xuất nhập, đường điều khiển hoặc là một phần của địa chỉ hay
dữ liệu Thiết kế thường có bộ nhớ ngoài hay các thiết bị ngoại vi sử dụng những Port
để xuất nhập dữ liệu. Tám đường trong mỗi Port được sử dụng như một đơn vị giao
tiếp song song như máy in, bộ biến đổi tương tự số… Hoặc mỗi đường cũng có thể
hoạt động độc lập trong giao tiếp với các thiết bị đơn bit khác : transistor,
LED,switch…

•Sau đây là hình dạng sơ đồ của IC 89S52:


 



Port 0:
- Port 0 (P0.0 – P0.7) có số chân từ 32 – 39.
- Port 0 có hai chức năng:
+ Port xuất nhập dữ liệu (P0.0 - P0.7) → không sử dụng bộ nhớ ngoài.
+ Bus địa chỉ byte thấp và bus dữ liệu đa hợp (AD0 – AD7) → có sử dụng bộ nhớ ngoài.



Port 1:
Port 1: - Port 1 (P1.0 – P1.7) có số chân từ 1 – 8. - Port 1 có một chức năng: Port xuất nhập dữ liệu (P1.0 – P1.7) → sử dụng hoặc không sử dụng bộ nhớ ngoài.



Port 2: Port 2: - Port 2 (P2.0 – P2.7) có số chân từ 21 – 28.
- Port 2 có hai chức năng:
+ Port xuất nhập dữ liệu (P2.0 – P2.7) → không sử dụng bộ nhớ ngoài.
+ Bus địa chỉ byte cao (A8 – A15) → có sử dụng bộ nhớ ngoài



Port 3: Port 3: - Port 3 (P3.0 – P3.7) có số chân từ 10 – 17.
- Port 3 có hai chức năng:
+ Port xuất nhập dữ liệu (P3.0 – P3.7) → không sử dụng bộ nhớ ngoài hoặc các chức năng đặc biệt.
+ Các tín hiệu điều khiển → có sử dụng bộ nhớ ngoài hoặc các chức năng đặc biệt.




Chân PSEN:
- PSEN (Program Store Enable): cho phép bộ nhớ chương trình, chân số 29.
- Chức năng:
+ Là tín hiệu cho phép truy xuất (đọc) bộ nhớ chương trình (ROM) ngoài.
+ Là tín hiệu xuất, tích cực mức thấp



Chân ALE:
- ALE (Address Latch Enable): cho phép chốt địa chỉ, chân số 30.
- Chức năng:
+ Là tín hiệu cho phép chốt địa chỉ để thực hiện việc giải đa hợp cho bus địa chỉ byte thấp và bus dữ liệu đa hợp (AD0 – AD7).
+ Là tín hiệu xuất, tích cực mức cao



 Chân EA\:
- EA (External Access): truy xuất ngoài, chân số 31. - Chức năng:
+ Là tín hiệu cho phép truy xuất (sử dụng) bộ nhớ chương trình (ROM) ngoài.
+ Là tín hiệu nhập, tích cực mức thấp.



Chân XTAL1, XTAL2:
- XTAL (Crystal): tinh thể thạch anh, chân số 18-19.
- Chức năng:
+ Dùng để nối với thạch anh hoặc mạch dao động tạo xung clock bên ngoài, cung cấp tín hiệu xung clock cho chip hoạt động.
+ XTAL1 → ngõ vào mạch tạo xung clock trong chip.
+ XTAL2 → ngõ ra mạch tạo xung clock trong chip.




Chân RST:
- RST (Reset): thiết lập lại, chân số 9. - Chức năng:
+ Là tín hiệu cho phép thiết lặp (đặt) lại trạng thái ban đầu cho hệ thống.
+ Là tín hiệu nhập, tích cực mức cao



Chân Vcc, GND:
- Vcc, GND: nguồn cấp điện, chân số 40 và 20.
- Chức năng: Cung cấp nguồn điện cho chip 8051 hoạt động
Vcc = +5V ± 10% và GND = 0V


1.2 GIAO TIẾP VỚI LCD:


GIAO TIẾP 8051 VỚI LCD:

- LCD cần 8 hay 11 đường I/O để giao tiếp. Nếu sử dụng bus dữ liệu 8 bit thì sẽ cần dùng 11 đường I/O của
8051 để giao tiếp với LCD, với kết nối mạch như sau:
P1.0 – P1.7 (của 8051) nối với DB0 – DB7 (của LCD)
P3.7 (của 8051) nối với E (của LCD)
P3.6 (của 8051) nối với RS
P3.5 (của 8051) nối với RW



XỬ LÍ ĐƯỜNG ĐIỀU KHIỂN E:
- Để thiết lập các lệnh hay gởi dữ liệu ký tự cho LCD, ta phải tạo ra một xung cạnh xuống trên
chân E, do đó ta phải đưa đường E lên mức cao, tạo trễ 1 khoảng thời gian để tạo độ rộng xung và
sau đó ta đưa đường E xuống mức thấp.
SETB E

; E = 1 để tạo cạnh xuống,

ACALL

DELAY

CLR

E

; bắt đầu lệnh LCD

- Để đọc dữ liệu hay trạng thái từ LCD, ta phải tạo ra một xung cạnh lên trên chân E, do đó ta phải
đưa đường E xuống mức thấp, tạo trễ 1 khoảng thời gian để tạo độ rộng xung và sau đó ta đưa
đường E lên mức cao.
CLR

E

ACALL

DELAY

SETB

E

; E = 0 để tạo cạnh lên, bắt

; đầu đọc từ LCD


 91 - AM:
92 -

MOV A,#0B0H

93 -

LCALL WRITE_TEXT

94 -

LCALL CHUAN

95 -

CPL A

; ghi ra màn hình dấu "-"

;lấy bù A

INC A
96 -

MOV B,#0AH

;B=10

97 -

DIV AB

;tách hàng chục và hàng đơn vị sau đó xuất ra

98 -

MOV CHUC,A

99 -

MOV DVI,B

100 101 -

MOV A,CHUC
ADD A,#30H

102 -

LCALL WRITE_TEXT

103 -

MOV A,DVI

104 -

ADD A,#30H

105 -

LCALL WRITE_TEXT

106 -

MOV A,#0DFH

107 -

LCALL WRITE_TEXT

108 -

MOV A,#43H

109 -

LCALL WRITE_TEXT

110 -

LCALL DELAY1

111 -

LJMP MAIN

;cộng giá trị thanh ghi A với 30H để hiển thị số hàng chục lên LCD

;cộng giá trị thanh ghi A với 30H để hiển thị số hàng đơn vị lên LCD

;ghi ra màn hình kí tự

;ghi ra màn hình kí tự C


 112 - DUONG:
113 114 115 -

MOV B,#64H
DIV AB
CJNE A,#0,HANG_TRAM

116 -

LCALL CHUAN

117 -

MOV B,#0AH

118 -

MOV R2,A

119 -

DIV AB

120 -

MOV CHUC,A

121 -

MOV DVI,B

122 -

;B = 100
;nếu A là số nhỏ hơn 100 thì kết quả A = 0, ngược lại A = 1
;nếu A khác 0 nhảy đến HANG_TRAM

;B = 10

;tách hàng đơn vị và hàng chục

MOV A,CHUC

123 -

ADD A,#30H

124 -

LCALL WRITE_TEXT

125 -

MOV A,DVI

126 -

ADD A,#30H

127 -

LCALL WRITE_TEXT

128 -

MOV A,#0DFH

129 -

LCALL WRITE_TEXT

130 -

MOV A,#43H

131 -

LCALL WRITE_TEXT

132 -

LCALL DELAY1

133 -

CJNE R2,#38,KT

;cộng giá trị thanh ghi A với 30H để hiển thị số hàng chục lên LCD

;cộng giá trị thanh ghi A với 30H để hiển thị số hàng đơn vị lên LCD

;ghi ra màn hình kí tự

;ghi ra màn hình kí tự C

;so sánh giá trị thanh ghi R2 với 38


134 - KT:
135 -

JNC ON

;C=0 => ON

136 -

JC OFF

;C=1 => OFF

137 -

LJMP MAIN

138 - ON:
139 -

SETB P2.7

140 -

LJMP MAIN

141 - OFF:
142 -

CLR P2.7

143 -

LJMP MAIN

144 – HANG_TRAM:
145 -

MOV A,#31H

146 -

LCALL WRITE_TEXT

147 -

LCALL CHUAN

148 -

148 -

CLR CY
SUBB A,#64H

149 -

MOV B,#0AH

150 -

DIV AB

151-

MOV CHUC,A

152 -

MOV DVI,B

153 -

MOV A,CHUC

154 -

ADD A,#30H

155 -

LCALL WRITE_TEXT

156 -

MOV A,DVI

;in ra số 1

;CY = 0
;trừ nội dung thanh ghi A với ô nhớ 64H và trừ thêm cờ nhớ C, kết quả cất vào A


 157 -

ADD A,#30H

158 -

LCALL WRITE_TEXT

159 -

MOV A,#0DFH

160 -

LCALL WRITE_TEXT

161 -

MOV A,#43H

162 -

LCALL WRITE_TEXT

163 -

LCALL DELAY1

164 -

LJMP MAIN

;ghi ra màn hình kí tự

;ghi ra màn hình kí tự C


2.CẢM BIẾN NHIỆT ĐỘ DS18B20


CÁC TÍNH NĂNG CƠ BẢN














Vì giao diện 1 dây nên chỉ cần 1 pin cổng.
Mã thiết bị bao gồm 64bit nối tiếp được lưu trên ROM
Không yêu cầu linh kiện phụ trợ ngoài
Có thể lấy nguồn từ đường truyền với dải từ  s 3.0V đến 5.5V
Dải nhiệt độ –55°C to +125°C (–67°F to +257°F) 
độ chính xác lên tới ±0.5°C từ   –10°C to +85°C 
độ phân giải nhiệt độ có thể chọn từ 9 tới 12bit
Thời gian chuyển đổi với độ phân giải 12 bit lên tới  750ms (max.)
Có thể đặt báo động khi ngoài dải điều khiển (cảnh báo được lưu trữ trên nonvolatile
Có sẵn in 8-pin SO (150mil), 8-pin μSOP,  and 3-pin TO-92 packages
Lập trình tương thích với DS1822  
Ứng dụng bao gồm điều khiển nhiệt độ, hệ thống công nghiệp, sản phẩm thương mại, đo nhiệt độ và bất kỳ ứng dụng liên quan tới cảm biến nhiệt độ


MÃ ROM 64 BIT

Mỗi DS18B20 đều có mã định danh với độ lớn 64 bit duy nhất được lưu trong ROM.
- 8 bit thấp nhất của ROM chứa đựng mã quy ước của họ dòng đo nhiệt độ 1 dây DS18B20 với mã là :28h.
- 48 bit tiếp theo là số serial duy nhất của thiết bị.
- 8 bit cuối cùng mà mã kiểm tra CRC tính toán từ 56 bit trước.


BỘ NHỚ:



Bộ nhớ của DS18B20 bao gồm bộ nhớ nháp (SRAM scratchpad), thanh ghi lưu trữ kích hoạt cảnh báo cao và
thấp (TH và TL) và thanh ghi cấu hình, cả hai thanh ghi này đều trang bị  bộ nhớ EEPROM. Lưu ý rằng nếu nếu
chức năng cảnh báo không được sử dụng thì thanh ghi T H và TL có thể được sử dụng như bộ nhớ đa mục đích.



Byte 0 và Byte 1 của bộ nhớ nháp chứa đựng LSB và MSB của thanh ghi nhiệt độ. Những Byte này chỉ có thể
đọc.







Byte 2 và 3 truy cập thanh ghi TH và TL .
Byte 4 chứng đựng dữ liệu của thanh ghi cấu hình .
Byte 5, 6 và 7 để dành riêng cho sử dụng bởi thiết bị, ta không thể ghi đến các byte này
Byte 8 chứa đựng mã CRC của byte 0 đến byte 7 của bộ nhớ nháp.
Dữ liệu trong các thanh ghi EEPROM không mất đi khi ngắt nguồn cấp; khi có nguồn cấp lại dữ liệu trong các
thanh ghi này sẻ được nạp vào bộ nhớ nháp theo vị trí byte tương ứng. Dữ liệu này có thể nạp lại bằng lệnh từ

EEPROM bằng lệnh E [B8h]

Bộ nhớ SRAM scratchpad


THANH GHI CẤU HÌNH:

Byte thứ 4 của bộ nhớ nháp chứa đựng thanh ghi cấu hình, với tổ chức như hình bên dưới. Người dùng có thể thiết lập độ phân giải của DS18B20 sử dụng bit R0 và R1. Khi cấp
nguồn mặt định R0=1, R1=1 (độ phân giải 12 bit). Bit thứ 7 và bit 0 đến bít 4trong thanh ghi cấu hình được để dành riêng cho thiết bị và không thể ghi đè


CÁC LỆNH CƠ BẢN:
SEARCH ROM [F0h]
- Khi hệ thống đươc cấp nguồn, thiết bị đóng vai trò master phải xác định mã ROM của tất cả các thiết bị slave được đấu trên cùng bus, việc làm này cho phép thiết bị master xác định số lượng
thiết bị salve và kiểu thiết bị
READ ROM (33h)
- Lệnh này chỉ dùng khi trên bus có 1 cảm biến DS1820, nếu không sẽ xảy ra xung đột trên bus do tất cả các thiết bị tớ cùng đáp ứng. Nó cho phép đọc 64 bit mã ROM (8 bit mã định tên linh kiện
(10h), 48 bit số xuất xưởng, 8 bit kiểm tra CRC) và không sử dụng quy trình Search Rom
MATCH ROM (55h)
- Lệnh này được gửi đi cùng với 64 bit ROM tiếp theo, cho phép bộ điều khiển bus chọn ra chỉ một cảm biến DS1820 cụ thể khi trên bus có nhiều cảm biến DS1820 cùng nối vào. Chỉ có DS1820
nào có 64 bit trên ROM trung khớp với chuỗi 64 bit vừa được gửi tới mới đáp ứng lại các lệnh về bộ nhớ tiếp theo. Còn các cảm biến DS1820 có 64 bit ROM không trùng khớp sẽ tiếp tục chờ
một xung reset. Lệnh này được sử dụng cả trong trường hợp có một cảm biến một dây, cả trong trường hợp có nhiều cảm biến một dây.
SKIP ROM (CCh)
- Thiết bị master có thể sử dungj lệnh này để gửi đến tất cả các thiết bị slave trên bus một các đồng thời mà không cần gửi mã ROM định danh của thiết bị. Ví dụ như thiết bị master ra lệnh cho
tất cả các DS18B20 trên Bus chuyển đổi nhiệt độ một cách đồng thời bởi gửi lệnh SKIP ROM và lệnh CONVERT T (44h)


ALARM SEARCH (ECh)
- Tiến trình của lệnh này giống hệt như lệnh Search ROM, nhưng cảm biến DS1820 chỉ đáp ứng lệnh này khi xuất hiện điều kiện cảnh báo trong phép đo nhiệt độ cuối cùng. Điều kiện cảnh báo
ở đây được định nghĩa là giá trị nhiệt độ đo được lớn hơn giá trị TH và nhỏ hơn giá trị TL là hai giá trị nhiệt độ cao nhất và nhiệt độ thấp nhất đã được đặt trên thanh ghi trong bộ nhớ của
cảm biến.
- Sau khi thiết bị chủ (thường là một vi điều khiển) sử dụng các lệnh ROM để định địa chỉ cho các cảm biến một dây đang được đấu vào bus, thiết bị chủ sẽ đưa ra các lệnh chức năng DS1820.
Bằng các lệnh chức năng thiết bị chủ có thể đọc ra và ghi vào bộ nhớ nháp (scratchpath) của cảm biến DS1820. khởi tạo quá trình chuyển đổi giá trị nhiệt độ đo được và xác định chế độ cung
cấp điện áp nguồn. Các lệnh chức năng có thể được mô tả ngắn gọn như sau:
WRITE SCRATCHPAD (4Eh)
- Lệnh này cho phép ghi 2 byte dữ liệu vào bộ nhớ nháp của DS1820. Byte đầu tiên được ghi vào thanh ghi TH (byte 2 của bộ nhớ nháp) còn byte thứ hai được ghi vào thanh ghi TL (byte 3 của
bộ nhớ nháp). Dữ liệu truyền theo trình tự đầu tiên là bit có ý nghĩa nhất và kế tiếp là những bit có ý nghĩa giảm dần. Cả hai byte này phải được ghi trước khi thiết bị chủ xuất ra một xung
reset hoặc khi có dữ liệu khác xuất hiện.
READ SCRATCHPAD (BEh)
- Lệnh này cho phép thiết bị chủ đọc nội dung bộ nhớ nháp. Quá trình đọc bắt đầu từ bit có ý nghĩa nhất của byte 0 và tiếp tục cho đến byte thứ 9 (byte 8 – CRC). Thiết bị chủ có thể xuất ra
một xung reset để làm dừng quá trình đọc bất kỳ lúc nào nếu như chỉ có một phần của dữ liệu trên bộ nhớ nháp cần được đọc.


COPYSCRATCHPAD (48h)
- Lệnh này copy nội dung của hai thanh ghi TH và TL (byte 2 và byte 3), và thanh ghi cấu hình từ bộ nhớ nháp đến bộ nhớ EEPROM. Nếu cảm biến được sử dụng trong chế độ sử dụng nguồn ký
sinh, trong 10us (tối đa) sau khi truyền lệnh này, thiết bị master phải cho phép một  "strong pullup" lên bus.
CONVERT T (44h)
- Lệnh này khởi động một quá trình đo và chuyển đổi giá trị nhiệt độ thành số (nhị phân). Sau khi chuyển đổi giá trị kết quả đo nhiệt độ được lưu trữ trên thanh ghi nhiệt độ 2 byte trong bộ nhớ
nháp. Trong thời gian đang chuyển đổi nếu thực hiện lệnh đọc thì các giá trị đọc ra đều bằng 0.
READ POWER SUPPLY (B4h)
- Một lệnh đọc tiếp sau lệnh này sẽ cho biết DS1820 đang sử dụng chế độ cấp nguồn như thế nào, giá trị đọc được bằng 0 nếu cấp nguồn bằng chính đường dẫn dữ liệu và bằng 1 nếu cấp nguồn
qua một đường dẫn riêng


- READTEMP:
166-

SETB IN

167-

CALL RESETT

168 -

MOV A,#0CCH ; cho phép nhiều cảm biến chuyển đổi đồng thời

169 -

CALL WRITE

170 -

MOV A,#44H

171 –

CALL WRITE

172 -

CALL RESETT

173 -

MOV A,#0CCH

174 -

CALL WRITE

175 -

MOV A,#0BEH

176 -

CALL WRITE

177-

CALL READ

178 -

MOV R3,A

;chuyển đổi giá trị nhiệt độ thành số (nhị phân)

;đọc nội dung dữ liệu từ bộ nhớ nháp của cảm biến


1.3. TIMER:
8051 có 2 timer 16 bit: THx (byte cao) ; TLx (byte thấp)
+ Timer 0
+ Timer 1
1.3.1. Các thanh ghi của timer
a. Thanh ghi chế độ đònh thời (TMOD):

+ M1, M0: chọn chế độ hoạt động.
+ C/T: bit chọn chức năng đếm hoặc đònh thời cho timer.
+ Gate: bit điều khiển cổng cho bộ đònh thời.


Tài liệu bạn tìm kiếm đã sẵn sàng tải về

Tải bản đầy đủ ngay

×

×