Tải bản đầy đủ (.pdf) (53 trang)

Khảo sát sensor nhiệt độ công nghệ mems DS18B20 dùng vi điều khiển

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (847.76 KB, 53 trang )

Khoá luận tốt nghiệp

Trường Đại học sư phạm hà nội 2
Khoa Vật lí
**********

NGUYỄN THỊ THU

Khảo sát sensor nhiệt độ
công nghệ mems ds18b20
dùng vi điều khiển

Khoá luận tốt nghiệp đại học
Chuyên ngành: Vật lí kỹ thuật

Người hướng dẫn khoa học
ThS. PHùNG CÔNG PHI KHANH
Hà Nội – 2009

Nguyễn Thị Thu

31C – SPKT – VậT Lý


Khoá luận tốt nghiệp

Lời cảm ơn
Trước tiên, em xin chân thành cảm ơn thầy Phùng Công Phi Khanh,
người đã hướng dẫn em tận tình và hiệu quả giúp em hoàn thành khoá luận.
Em xin cảm ơn các thầy giáo, cô giáo trong khoa Vật lý – trường ĐHSP
Hà Nội 2 đã giúp đỡ em trong suốt quá trình học tập và làm khoá luận.


Cuối cùng em xin cảm ơn gia đình, bạn bè, người thân luôn cổ vũ động
viên em để quá trình nghiên cứu và thực hiện đề tài.

Hà nội, tháng 05 năm 2009

Nguyễn Thị Thu

Nguyễn Thị Thu

31C – SPKT – VậT Lý


Khoá luận tốt nghiệp

Lời cam đoan
Tôi xin cam đoan đề tài: “Khảo sát sensor nhiệt độ công nghệ MEMS
DS18B20 dùng vi điều khiển” là kết quả mà tôi trực tiếp nghiên cứu dưới sự
hướng dẫn tận tình của ths.Phùng Công Phi Khanh và các thầy cô trong khoa
Vật Lý - trường ĐHSP Hà Nội 2.
Các kết quả được nêu trong khoá luận này là trung thực và chưa từng
được ai công bố trong bất kỳ nghiên cứu nào.
Hà nội, tháng 05 năm 2009

Nguyễn Thị Thu

Nguyễn Thị Thu

31C – SPKT – VậT Lý



Khoá luận tốt nghiệp

Mục lục
Mở đầu………………………………………………………….....

1

Nội dung…………………………………………………………..

3

Chương 1. Tổng quan về sensor nhiệt ds18b20…………………..

3

1. Cơ sở lý thuyết……………………………………………………..

3

2. Tổng quan về sensor DS18B20………………………………….

3

2.1 Tính năng…………………………………………………………

3

2.2. Hình dạng………………………………………………………...

4


2.3. Bảng mô tả các chân……………………………………………..

5

2.4. Sơ đồ khối của sensor……………………………………………

5

Chương 2. Khái quát về vi diều khiển 8051 và màn hình tinh thể

24

lỏng LCD …………………………………………………………….
1. Giới thiệu về họ vi điều khiển 8051……………………………….

24

1.1 Sơ đồ khối của chíp 8051………………………………………

24

1.2. Các chân (PINOUT)……………………………………………..

25

2. Màn hiển thị LCD………………………………………………….

29


2.1. Hình dáng

29

2.2. Chức năng các chân

29

Chương 3. Thử nghiệm đo nhiệt độ dùng DS18B20, họ vi điều
khiển 8051 và màn hình tinh thể lỏng LCD……………………….

32

1. Nguồn nuôi (nguồn 5 V)…………………………………………..

32

2. Sơ đồ nguyên lý (phần cứng)………………………………………

33

3. Chương trình phần mềm…………………………………………...

33

4. Kết quả……………………………………………………………..

34

Kết luận…………………………………………………………..


35

Tài liệu tham khảo…………………………………………..

36

Nguyễn Thị Thu

31C – SPKT – VậT Lý


Khoá luận tốt nghiệp

Mở đầu
* Lý do chọn đề tài
Ngày nay, chúng ta đang sống trong thời đại của công nghệ, khoa học
kỹ thuật và của tri thức đi kèm là sự phát triển mạnh mẽ của công nghệ thông
tin và khoa học ứng dụng. Việc ứng dụng khoa học kỹ thuật và công nghệ vào
sản xuất và đời sống góp phần không nhỏ vào sự phát triển mạnh mẽ của nền
kinh tế với nhiều thành tựu to lớn.
Kỹ thuật điện tử cũng vậy, nó đang phát triển nhanh chóng và ngày
càng được ứng dụng rộng rãi trong các lĩnh vực xã hội. Với việc sử dụng các
công nghệ mới, hiện đại, đã cho ra đời nhiều sản phẩm với độ tinh xảo cao và
giá thành hạ.
Công nghệ MEMS (vi cơ điện tử) có khả năng chế tạo ra những sản
phẩm thông minh, khả năng nhận biết và điều khiển khá cao. Thiết bị MEMS
có chức năng, độ tin cậy và độ tinh vi cao với giá thành thấp.
DS18B20 là một sản phẩm của công nghệ MEMS, nó tích hợp cảm biến nhiệt
độ với một mạch điện tử. DS18B20 cho phép đo nhiệt độ với độ chính xác

cao.
Với lòng say mê môn học và ham học hỏi, nghiên cứu để rõ hơn về lĩnh
vực này, chúng tôi chọn đề tài: “Khảo sát sensor nhiệt độ công nghệ MEMS
DS18B20 dùng vi điều khiển”.
* Mục đích và nhiệm vụ của đề tài
+ Mục đích
- Tìm hiểu về sensor nhiệt Ds18b20 công nghệ MEMS.
- Họ vi điều khiển 8051 và màn hình tinh thể lỏng LCD.
- Thử nghiệm sensor DS18B20 dùng vi điều khiển và LCD.
+ Nhiệm vụ
- Tìm hiểu tổng quan về sensor DS18B20.
Nguyễn Thị Thu

31C – SPKT – VậT Lý


Khoá luận tốt nghiệp
- Tìm hiểu họ vi điều khiển 8051.
- Thử nghiệm mạch đo nhiệt độ dùng sensor DS18B20 và vi điều khiển
hiển thị bằng màn hình tinh thể lỏng LCD.
* Đối tượng nghiên cứu
- Sensor công nghệ MEMS DS18B20.
* Phạm vi nghiên cứu
- Nghiên cứu cấu tạo DS18B20.
- Các thông số kỹ thuật của DS18B20.
- Sử dụng DS18B20 cho mạch đo nhiệt độ.
* ý nghĩa nghiên cứu
- Hiểu được cấu tạo và nguyên lý hoạt động của sensor DS18B20.
- Khảo sát Hoạt động của DS18B20 dùng vi điều khiển 8051.
- Khảo sát các thông số kỹ thuật DS18B20.

* Phương pháp nghiên cứu
- Nghiên cứu lý thuyết kết hợp thực nghiệm.
* Cấu trúc của khoá luận
Chúng tôi cấu trúc luận văn làm 3 phần:
Chương 1: Tổng quan về sensor nhiệt DS18B20
Chương này, chúng tôi trình bày về cấu tạo, nguyên lý và tính năng của
DS18B20. Cách thức giao tiếp của sensor với vi điều khiển 8051.
Chương 2: Khái quát về vi điều khiển 8051 và màn hình tinh thể lỏng LCD
Chương này chúng tôi tìm hiểu về cấu tạo, nhiệm vụ các chân của họ vi
điều khiển 8051 và LCD.
Chương 3: Thử nghiệm đo nhiệt độ dùng DS18B20, họ vi điều khiển 8051
và màn hình LCD

Nguyễn Thị Thu

31C – SPKT – VậT Lý


Khoá luận tốt nghiệp
Chương này, chúng tôi đưa ra sơ đồ nguyên lý và chương trình phần
mềm thiết kế mạch đo nhiệt độ dùng DS18B20, vi điều khiển 8051 và hiển thị
bàng màn hình tinh thể lỏng LCD.

Nguyễn Thị Thu

31C – SPKT – VậT Lý


Khoá luận tốt nghiệp


NỘI DUNG
Chương 1. tổng quan về sensor nhiệt ds18b20
1. Cơ sở lý thuyết

Sensor nhiệt là một loại đầu đo để xác địng nhiệt độ môi trường, cơ thể,
vật thể,... hiện nay có rất nhiều loại sensor nhiệt khác nhau. Tuy nhiên ta có
thể phân ra làm hai loại chính: Sensor tương tự và sensor số.
Sensor tương tự có cấu tạo như một nhiệt điện trở, tức là điện trở thay
đổi theo nhiệt độ và điện trở của sensor tỷ lệ với điện thế mà nó xuất ra trên
chân giao tiếp. Điện trở thay đổi thì hiệu điện thế cũng thay đổi tương ứng.
Để sử dụng trước tiên ta cần thông qua ADC chuyển tín hiệu tương tự thành
tín hiệu số, sau đó dùng vi điều khiển đọc giá trị số này và cho hiển thị thông
qua Led 7 thanh hoặc hiển thị trên màn hình tinh thể lỏng LCD.
Sensor số là loại cảm biến đã được tích hợp sẵn nên có khả năng xuất ra
tín hiệu số mà không cần đến ADC. Thông thường có giao tiếp 1 - Wire. Để
sử dụng loại này ta chỉ cần kết nối sensor với vi điều khiển, đọc dữ liệu từ
sensor đưa về và hiển thị trên Led 7 thanh hoặc màn hình tinh thể lỏng LCD.
Với độ chính xác cao và nhiều ứng dụng rộng rãi nên đề tài này chúng
tôi lựa chọn sensor số DS18B20 với mục tiêu là đề cao độ chính xác của thiết
bị đo nhiệt độ và những ứng dụng trong các lĩnh vực khác nhau.
2. Tổng quan về sensor DS18B20
2.1. Tính năng
- Là thiết bị chỉ dùng duy nhất một chân để giao tiếp với giao diện 1 Wire. Chuẩn này cũng phổ biến và được sử dụng rộng rãi trong nhiều thiết bị
và chúng có thể cùng tồn tại trên bus cùng DS18B20.

Nguyễn Thị Thu

31C – SPKT – VậT Lý



Khoá luận tốt nghiệp
- Để cùng hoạt động trên bus 1 - Wire, mỗi thiết bị có một vùng ROM
dài 64 bit để lưu trữ mã số riêng của nó (như địa chỉ...). Trong dãy mã số sẽ
có mã số của họ (loại) linh kiện và mã số riêng của nó trong họ.
- Có khả năng liên kết mạng, thích hợp cho các cảm biến nhiệt tại nhiều
điểm.
- Nguồn cung cấp trong khoảng từ 3,0 V đến 5 V. Có thể lấy nguồn
nuôi từ bên ngoài hoặc nguồn từ bên trong từ tín hiệu giao tiếp (nguồn ký
sinh).
- Không tiêu thụ năng lượng ở chế độ nghỉ.
- Giải đo nhiệt độ trong khoảng -55˚C đến 125˚C. Với khoảng đo từ 10˚C đến 80˚C độ chính xác của thiết bị đạt ± 0.5˚C. Có thể lập trình được độ
phân giải từ 9 bit đến 12 bit.
- Mất tối đa 750 ms để chuyển đổi nhiệt độ ra số (ở độ phân giải 12
bit).
- Có thể thiết đặt nhiệt độ cảnh báo và giá trị thiết đặt không bị mất khi
mất nguồn. ứng dụng trong mạch bảo vệ về sự thay đổi của nhiệt độ. Có thể
dùng lệnh (Alarm seach command) để nhận ra và xác định địa chỉ DS18B20
nào trong mạng đang có nhiệt độ vượt quá giới hạn thiết đặt trước.
2.2. Hình dạng

Nguyễn Thị Thu

31C – SPKT – VậT Lý


Khoá luận tốt nghiệp

Hình1: Hình dạng của sensor DS18B20
2.3. Mô tả các chốt


PIN
SO

SOP

1, 2,

2, 3, 5,

6, 7,

6, 7

NAME

function

TO - 92
N.C

Không nối với gì cả (bỏ không)

8
3

8

3

VDD


Hồi tiếp dương

4

1

2

DQ

Đường dữ liệu vào/ ra

5

4

1

GND

Nối đất, hồi tiếp âm

Bảng 1: Bảng mô tả các chân
2.4. Sơ đồ khối của sesor DS18B20

4.7
K

PARASITE

POWER
CIRCUIT

MEMORY
CONTROL
LOGIC

Nguyễn Thị Thu

31C – TEMPERATURE
SPKT – VậT Lý
SENSOR

DQ

64BIT
ROM
AND
1-Wire
PORT

TH (REGISTER)
SCRATCHAP

TL(REGISTER


Khoá luận tốt nghiệp

Hình 2: Sơ đồ khối của sensor DS18B20


2.4.1. Nguồn cung cấp của sensor DS18B20
Trong đầu đo của DS18B20 có một mạch quản lý nguồn đặc biệt. Nó
có thể lấy năng lượng từ đường dữ liệu (Data) DQ khi VDD nối đất rồi lưu trữ
vào một tụ bên trong, việc này diễn ra mỗi khi DQ ở mức cao. Hoặc nó có thể
lấy nguồn cung cấp ở bên ngoài khi VDD nối với nguồn 3V -> 5V.
Dòng tiêu thụ của DS18B20 lên đến 1.5 mA nên để thiết bị làm việc
chính xác cần phải cung cấp đủ dòng cho thiết bị. Có hai cách cung cấp nguồn
cho DS18B20: - Sử dụng nguồn ký sinh:
Do đặc điểm cấu tạo (1 - Wire) nên khi ở mức cao DQ chỉ có thể cấp
một dòng tối đa là 5V/ 4.7 K= 1 mA (không đủ cho thiết bị). Để khắc phục
điều này người ta dùng thêm trở kéo tích cực Mosfet. Vi điều khiền phải cần
thêm một chân nữa để đóng mở Mosfet. Trong quá trình làm việc thì hoạt
động chuyển đổi nhiệt sang số và hoạt động dùng lệnh coppy vùng nhớ E² là
tiêu thụ dòng lớn nhất.

Nguyễn Thị Thu

31C – SPKT – VậT Lý


Khoá luận tốt nghiệp
Do vậy ngay sau khi gửi lệnh conrvert T hoặc lệnh coppy E² thì Mosfet
phải được mở (chậm nhất là 10 ỡs) để DQ được kéo trực tiếp lên nguồn ngoài
của VĐK và khi đó DQ mới đủ dùng cho đầu đo. Khi đầu đo thực hiện xong
việc chuyển đổi nhiệt sang số hoặc thực hiện xong lệnh coppy E² thì Mosfet
bị cấm bởi VĐK trả đường cho DQ về trạng thái giao tiếp bình thường. Chú ý
không dùngnguồn ký sinh với nhiệt độ quá 100˚C vì khi đó hiện tượng hiện
tượng rò rỉ điện tích là đáng kể và mạch điều khiển nguồn sẽ không thể giao
tiếp chính xác.

- Sử dụng nguồn ngoài cho đầu đo:
Cung cấp nguồn ngoài thông qua chân VDD nối với nguồn 3V -> 5V,
khi đó không cần Mosfet và do đó nhiều đầu đo có thể hoạt động hoạt động
trên một bus.
2.4.2. Đặc điểm 1 - Wire bus
2.4.2.1. Phần cứng
Các chân giao tiếp nối với bus 1 - Wire đều được cấu tạo là loại cực
máng hở để tránh đoản mạch (ví dụ: Khi các thiết bị này đưa ra mức logic 5V
lên bus mà thiết bị khác lại giữ mức 0 lên bus thì coi như là nguồn nuôi nối
với đất cùng nối với một dây).
Quan sát cấu tạo ở hình sau:

Nguyễn Thị Thu

31C – SPKT – VậT Lý


Khoá luận tốt nghiệp

Hình 3: Sơ đồ 1 – Wire bus
=> Với cấu tạo như trên khi xảy ra mức xung đột logic thì nguồn nuôi
không nối trực tiếp với đất mà qua trở kéo 4.7 K nên không bị đoản mạch
(đảm bảo an toàn cho thiết bị).
Qua đó ta thấy rằng dòng tối đa trên bus là 1mA (khi bus ở trạng thái
0V). Mức logic trên bus tuân theo mức AND logic. Ta quan sát bảng các mức
logic như bảng sau:

Mức logic của chủ

Mức logic của tớ


Mức logic của bus

1

1

1

1

0

0

0

1

0

0

0

0

Nguyễn Thị Thu

31C – SPKT – VậT Lý



Khoá luận tốt nghiệp

Bảng 2: Các mức logic
Nhận xét:
+ Chủ phát ra mức 1 thì mức logic của bus phụ thuộc vào tớ tức là chủ
nhả bus cho tớ điều khiển.
+ Và khi tớ ở mức 1 thì chủ sẽ điều khiển bus.
+ Nếu cả chủ và tớ đều nhả bus thì khi đó ta nói bus rỗi.
+ Trên bus chỉ có một chủ nhưng có thể có nhiều tớ và chủ luôn là thiết
bị khởi phát qua quá trình giao tiếp và quyết định sẽ đi theo chiều nào. Vì chỉ
có một dây nên các thiết bị trên bus phải tuân thủ chặt chẽ quy tắc thời gian
của hệ thống bus 1 - Wire.
2.4.2.2. Các trạng thái của bus 1 - Wire
- Trên bus 1 - Wire diễn ra 7 trạng thái cơ bản sau:
+ Reset pulse: Xung do thiết bị chủ tạo ra để báo cho thiết bị tớ biết bắt
đầu hoạt động.
+ Presence pulse: Xung của DS18B20 tạo ra để đáp lại reset pulse của
chủ.
+ Write 0: Chủ gửi bít 0 cho DS18B20.
+ Write 1: Chủ gửi bít 1 cho DS18B20.
+ Read 0: Chủ đọc được bit 0 từ DS18B20.
+ Read 1: Chủ đọc được bit 1 từ DS18B20.
- Trong 7 trạng thái trên thì chỉ có “presence pulce” là do DS18B20 chủ động
khởi phát còn lại là do vi điều khiển 8051 chủ động khởi phát.
- Cụ thể các trạng thái là:

Nguyễn Thị Thu


31C – SPKT – VậT Lý


Khoá luận tốt nghiệp
+ Bus rỗi: Khi không có dữ liệu trên bus hay không cần truy xuất gì thì
cả chủ và tớ đều đưa ra mức logic 1 vì vậy lúc này bus ở mức cao (High).
Bình thường khi bus ở mức High khi cần truy xuất thì chủ hoặc tớ kéo bus
xuống mức thấp (Low)...(tuỳ từng trường hợp) trong một thời gian nhất định
nào đó phải trả bus về mức High (khi kết thúc truy xuất).
+ Reset - pulce: Chủ sẽ kéo bus xuống mức Low trong vòng 480 ỡs ->
960 ỡs. Sau đó chủ nhả bus về mức High.
+ Presence pulce: Sau khi bus ở mức Low trên 480 ỡs thì DS18B20
xác nhận xung reset. Sau sườn lên của xung reset, DS chờ thêm 15 => 60 ỡs
rồi kéo bus xuống mức Low trong 60 => 240 ỡs để tạo xung presence. Kết
thúc nó trả bus về mức cao.
+ Write 0: Bình thường bus ở mức High, khi muốn viết bit 0, chủ kéo
bus xuống mức Low trong vòng 60 => 120 ỡs. Sau đó trả về mức cao.
+ Write 1: Kéo bus xuống mức thấp trong khoảng thời gian 1 -> 15 ỡs.
Rồi trả bus về mức cao.
+ Chờ thêm 60 => 120 ỡs để DS18B20 xác định dữ liệu.

+ Ví dụ: Viết 4 bit 1011

tslot

tREC

tslot

tREC


tslot

tREC

tslot

tslow 1

Nguyễn Thị Thu

31C – SPKT – VậT Lý


Khoá luận tốt nghiệp

Write 1

Write 0

tslot: Là khe thời gian dành cho việc đọc (cũng như viết) 1 bit
60 ỡs< tslot< 120 ỡs.
tREC: (Recoverytime): Thời gian nghỉ giữa các lần đọc/ viết các bit
1.0 < tREC < +∞.

tlow 1: Vì các thiết bị chủ là người khởi phát quá trình đọc/ ghi trên bus.
mà bình thường bus ở mức cao (bus rỗi) nên nó sẽ kéo bus xuống Low để cho
tớ biết rằng bắt đầu khe thời gian đọc/ viết.
Giả sử ta vừa ghi xong một bit nào đó rồi trả bus về mức High vậy khi
nào DS18B20 ta ghi bus tiếp theo để còn tiếp nhận. DS18B20 sẽ xét trạng thái

logic của bus để lưu bit. (1 ỡs < tslow 1 <15 ỡs).
2.4.2.3. Cách đọc/ viết các khe thời gian:
=> Quan sát phần bảng dưới đây ta thấy ở phần gạch chéo là thời điểm
mà trạng thái của bus không xác định hoặc đang chuyển từ trạng thái bit 0 lên
bit 1. Vì vậy ta không xét đến trạng thái của bus ở thời điểm trên.

Nguyễn Thị Thu

31C – SPKT – VậT Lý


Khoá luận tốt nghiệp

Hình 4: Cách đọc viết các khe thời gian
2.4.3. Trao đổi dữ liệu với DS18B20
Trong DS18B20 có hai vùng nhớ chính: ROM và RAM
2.4.3.1. ROM
Có 64 bit chỉ có thể đọc không ghi không xoá được. Đi kèm là bộ phận điều
khiển ROM

8 - bit CRC

MSB

LSB

48-bit SERIAL

8-bit FAMILY CODE


NUMBER

(28h)

MSB

LSB MSB

LSB

Hình 5: Cấu tạo ROM
Nguyễn Thị Thu

31C – SPKT – VậT Lý


Khoá luận tốt nghiệp
Mỗi DS18B20 chứa mã số duy nhất dài 64 bit trong ROM. 8 bit thấp
nhất chứa mã số của họ DS18B20 (Là 28h), 48 bit tiếp theo là mã số riêng của
từng DS18B20. 8 bit cuối cùng là mã CRC của 56 bit đầu. 64 bit ROM cùng
phần điều khiển ROM sẽ cho phép DS18B20 hoạt động được với hệ thống
bus 1 - Wire. ROM được chế tạo bằng công nghệ lasered. Tất cả các thiết bị
dùng giao tiếp 1 - wire đều sử dụng ROM làm giao diện kết nối đầu đo vào
mạng 1 - Wire, giúp các đầu đo có thể giao tiếp với các thiết bị khác bằng
giao thức 1 - Wire. Vì vậy ta phải làm việc với mạch điều khiển ROM của
từng đầu đo trước khi truy xuất dữ liệu thật trong đầu đo.
2.4.3.2. RAM
Có hai loại:
- Vùng thứ nhất là vùng nhớ tổng hợp (Scratchpad)
- Vùng thứ hai là vùng nhớ E²PROM

Quan sát hình sau:

Hình 6: Sơ đồ khối của RAM
* Scratchpad memory:

Nguyễn Thị Thu

31C – SPKT – VậT Lý


Khoá luận tốt nghiệp
Là vùng nhớ tổng hợp có thể vừa đọc vừa ghi được nhưng dữ liệu sẽ
mất khi mất nguồn nuôi. Bao gồm 8 byte dữ liệu và 1 byte CRC:
- 2 byte đầu là byte thấp và byte cao của giá trị nhiệt độ vừa được
chuyển đổi (giá trị mặc định khi cấp nguồn là +85˚C) Chỉ có thể đọc chứ
không thể ghi vào 2 byte này.
- 3 byte tiếp theo là TH, TL và config (cấu hình):
+ TH, TL chứa giới hạn trên và giới hạn dưới của nhiệt độ cho phép.
Khi nhiệt độ cao hơn TH và thấp hơn TL thì DS18B20 thiết đặt cảnh báo. Có
thể sử dụng TH, TL vào mục đích khác tuỳ ý.
+ Config chứa giá trị cấu hình độ phân giải cho đầu đo. Byte 4 của
vùng nhớ tổng hợp scratchpad chứa sổ đăng ký cấu hình, được minh hoạ ở
hình 8 dưới đây.

Hình 7: Cấu tạo config
Ta có thể quyết định việc cài đặt cấu hình thông qua việc thay đổi bit
R0 và R1. Các giá trị mặc định như bảng sau:
Quyết định

Thời gian chuyển đổi

( Lớn nhất )

R1

R0

( Bits)

0

0

9

93.75 ms

(tCONV/8)

0

1

10

187.5 ms

(tCONV/4)

1


0

11

375 ms

(tCONV/2)

1

1

12

750 ms

(tCONV )

Bảng 3: Bảng các giá trị của R1 và R2
Nguyễn Thị Thu

31C – SPKT – VậT Lý


Khoá luận tốt nghiệp
=> Bảng trên cho ta biết giá trị R1, R0 để có độ phân giả từ 9 đến 12
bit. Mặc định là R1 = R0 = 1 (12 bít).
Chú ý:
TH, TL và config có thể coi như là bản sao của E² RAM vì sau khi cấp
nguồn thì giá trị E² RAM được tự động sao chép ra TH, TL và config của

Scratchpad.
- 3 byte đệm giúp ta chuyển dữ liệu vào vùng nhớ E² RAM. Dữ liệu
phải được ghi vào đây rồi mới sử dụng được lệnh coppy scratchpad (48h) để
nạp vào E² RAM. Hoặc sau khi gửi lệnh Recall E² (B8h) thì dữ liệu trong E²
RAM được chuyển ra 3 byte này tương ứng rồi mới mới sử dụng được lệnh
Read scratchpad (BEh).
- CRC: Là cách thức kiểm tra lỗi của dữ liệu được truyền đi có chính
xác hay không. Có thể hiểu:
+ Từ những dữ liệu thật trong bộ nhớ của DS18B20 (64 - bit ROM) sẽ
tính toán theo một quy tắc nào đó để tạo ra byte CRC tương ứng với dữ liệu
lúc đó.
+ Khi ta đọc dữ liệu ra khỏi bộ nhớ thì byte CRC được DS18B20 gửi
kèm theo ở cuối. Sau khi đọc xong dữ liệu thật ta dùng dữ liệu ấy để tính ra
byte CRC theo quy tắc mà DS18B20 đã tính. Sau đó đem so sánh giữa byte
vừa tính được và byte CRC được gửi kèm cùng dữ liệu. Nếu khác nhau thì có
lỗi trên đường truyền dữ liệu. Vì quy tắc đó đảm bảo từ một giá trị đầu chỉ
tính ra một byte CRC duy nhất tương ứng với dữ liệu ấy. Nhưng CRC chỉ
phát hiện lỗi chứ không sửa lỗi và trong điều kiện hiện nay thì DS18B20 đang
hoạt động rất ổn định.
+ Máy chủ có thể sử dụng máy phát hàm để tính toán và so sánh byte
CRC như hình sau:

Nguyễn Thị Thu

31C – SPKT – VậT Lý


Khoá luận tốt nghiệp

Hình 8: Sơ đồ máy phát hàm

Quy tắc:
+ Chỉ dùng dấu cộng theo modul 2 (M2) và dịch bit 0.
+ Thanh ghi dịch ban đầu = 0.
+ Các bit dữ liệu sẽ được đưa lần lượt vào (LSB đầu tiên) cho
đến khi hết các byte M2.
+ CRC0 = input M2 CRC0 => CRC3 M2 CRC0 => CRC4 =
CRC4 M2 CRC0.
+ Quay trái CRC
+ Sau khi hết bit input cuối cùng, giá trị còn lại trên CRC được
ghép vào dữ liệu và truyền theo.
* E² ROM - Electrically earsable ROM:
Đây là vùng nhớ không bay hơi (không mất dữ liệu khi mất nguồn).
Cũng bao gồm 3 byte là TH, TL và config nhưng không truy xuất dữ liệu trực
tiếp từ đây mà phải sao chép sang TH, TL và config của Scratchpad.
2.4.3.3. Dạng dữ liệu của DS18B20
Kiểu dữ liệu của nhiệt độ lưu trong bộ nhớ của DS18B20

Hình 9: Thanh ghi nhiệt độ
Nguyễn Thị Thu

31C – SPKT – VậT Lý


Khoá luận tốt nghiệp
- DS18B20 gồm 2 byte:
+ 4 bit thấp là phần lẻ sau dấu phẩy: Bít 0, bít 1, bít 2, bít 3.
+ 7 bit tiếp theo là phần nguyên: Bit 4, bít 5, bít 6, bít 7, bít 8, bít 9, bít
10.
+ 5 bít cao nhất là dấu của nhiệt độ (0 = “+”; 1 = “-”)
+ Dữ liệu đến và đi khỏi DS18B20 đều truyền từ bit LSB đầu tiên và

cuối cùng là bit MSB (từ phải sang trái).
- Cách đọc nhiệt độ của DS18B20:
+ Nhiệt độ đọc về dạng hex nên ta phải đổi ra thập phân khi hiển thị.
Giả sử ta đọc được 2 byte nhiệt độ:
Bước 1: So sánh bit MSB, nếu= 0 thì in ra dấu “+” rồi nhảy sang bước
3. Nếu = 1 thì in ra dấu “-” rồi tiếp tục đến bước 2.
Bước 2: Chuyển 2 byte vừa nhận được sang dạng bù 2 của chính nó.
Bước 3: Chuyển 7 bit phần nguyên vào thanh ghi A và in ra giá trị
thanh ghi nàydưới dạng thập phân (chính là in ra 3 số phần nguyên của nhiệt
độ).
Bước 4: In ra dấu “,”.
Bước 5: In ra 4 số sau dấu “,” dạng thập phân (4 bít thấp nhất).
Chú ý:
+ Nhiệt độ âm là bù 2 của nhiệt độ dương.
VD: +10.125˚C là FF5Eh
+ Ví dụ một số dạng dữ liệu như sau:
Dữ liệu dạng Hex

Dữ liệu dạng số

Nhiệt độ (˚C)

07D0h

0000 0111 1101 0000

+ 125

0550h


0000 0101 0101 0000

+ 85

0191h

0000 0001 1001 0001

+ 25.0625

00A2h

0000 0000 1010 0010

+ 10.125

0008h

0000 0000 0000 0001

+ 0.5

Nguyễn Thị Thu

31C – SPKT – VậT Lý


Khoá luận tốt nghiệp

000h


0000 0000 0000 0000

0

FFF8h

1111 1111 1111 1000

- 0.5

FF5Eh

1111 1111 0101 1110

- 10.125

FE6Fh

1111 1110 0110 1111

- 25.0625

FC90h

1111 1100 1001 0000

-55

Bảng 4: Một số dạng dữ liệu

Sau khi DS18B20 convert xong nhiệt độ, giá trị sẽ được so sánh với giá
trị của hai thanh ghi TH và TL tương ứng với bít dấu của nhiệt độ. Nếu kết
quả nhiệt độ lớn hơn TH hoặc nhỏ hơn TL thì sẽ có tín hiệu cảnh báo nhiệt độ
quá giới hạn cài đặt và khi đó DS18B20 sẽ đáp ứng lệnh Alarm search. Nhờ
đó mà ta có thể phát hiện được ngay đầu đo nào đang cảnh báo.
2.4.4. Các bước giao tiếp với DS18B20
Có 3 bước chính:
+ Khởi phát.
+ Thủ tục ROM (lệnh ROM).
+ Đọc/ viết bộ nhớ/ điều khiển…
2.4.4.1. Khởi phát
+ Tạo xung reset.
+ Nhận xung presence.
2.4.4.2. Thủ tục ROM
Có 5 thủ tục (5 lệnh) sau: Read ROM; Match ROM; Search ROM; Skip
ROM; Alarm search.
* Read ROM [33h]
Sau khi gửi lệnh này cho DS18B20 nó sẽ trả lại dữ liệu chứa trong 64
bit ROM, đầu tiên là mã số họ của DS18B20, rồi đến 48 bít mã số đầu đo và

Nguyễn Thị Thu

31C – SPKT – VậT Lý


Khoá luận tốt nghiệp
cuối cùng là 8 bit CRC. Lệnh này chỉ dùng nếu chỉ có một đầu đo thì tất cả
chúng sẽ cùng gửi dữ liệu lên bus một lúc => dễ sảy ra xung đột dữ liệu.
* Match ROM [65h]
Sau khi gửi lệnh này, chủ sẽ gửi tiếp 64 bit mã ROM của đầu đo nó cần

truy xuất (giả sử chủ đã biết hết mã số trong ROM của mỗi đầu đo trên bus).
Khi đó chỉ đầu đo nào có mã số ROM giống với mã số mà chủ vừa gửi mới
đáp ứng các lệnh tiếp theo. Các đầu đo có mã số không phù hợp sẽ chờ cho
đến xung reset tiếp theo. Lệnh này có thể sử dụng với một hay nhiều đầu đo
gắn trên bus.
* Skip ROM [CCh]
Lệnh này có nghĩa là xoá bỏ qua việc kiểm tra ROM. Sau khi gửi lệnh
này ta có thể gửi ngay các lệnh truy xuất bộ nhớ mà không cần quan tâm đến
64 bit ROM. Nhưng nếu trên bus có nhiều đầu đo mà ta gửi lệnh Skip ROM
rồi gửi lệnh Read Memory, thì sảy ra xung đột dữ liệu trên bus vì tất cả các
đầu đo sẽ gửi dữ liệu trong bộ nhớ lên bus một lúc.
* Search ROM [F0h]
Nếu lần đầu tiên các thiết bị chủ kết nối đến các đầu đo trong mạng và
nó chưa hề biết các mã số ROM của tổng đầu đo thì nó có thể dùng lệnh này
để học mã ROM của từng đầu đo và lưu vào bộ nhớ của mình cho những lần
giao tiếp sau. Lệnh này dùng nếu có nhiều đầu đo trên bus.
* Alarm Search [EcH]
Lệnh này giống như lệnh Search ROM nhưng khác là chỉ có đầu đo nào
trong mạng đang có cảnh báo nhiệt độ quá giới hạn thì mới trả lời lại lệnh
Alarm Search. Đầu đo sẽ duy trì trạng thái cảnh báo của nó chừng nào mà
nhiệt độ (của lần convert cuối cùng) vượt quá giới hạn của TH và TL. Vì vậy

Nguyễn Thị Thu

31C – SPKT – VậT Lý


Khoá luận tốt nghiệp
sau khi xác định được đầu đo nào đó có cảnh báo thì nên cho nó convert lại
một lần nữa để cho chắc chắn.

=> Các lệnh này đều do mạch điều khiển giao tiếp và 64 bit ROM của
DS18B20 đáp ứng. Chỉ sau khi thực hiện xong một trong năm lệnh ROM trên
ta mới có thể thực hiện các lệnh liên quan đến bộ nhớ dữ liệu.
2.4.4.3. Đọc/ viết bộ nhớ/ điều khiển…
* Wite Schatchpad [BEh]
Sau khi gửi lệnh này thì 3 byte (TH, TL, config) sẽ được gửi vào
Scratchpad. Cả 3 byte được ghi trước khi reset, nếu có byte nào chưa truyền
được hết vào Scatchpad thì coi như 3 byte chưa được ghi vào Scratchpad.
Hơn nữa đây mới chỉ là ghi vào Scatchpad chứ chưa phải là lưu vào E² RAM.
* Read Scratchpad [BEh]
Sau khi lệnh này được gửi lên, chỉ có thể khởi phát đọc khe thời gian để
đọc hết 9 byte trong Scratchpad, bắt đầu là byte thấp nhất của nhiệt độ, kết
thúc là byte CRC. Nếu không muốn đọc hết 9 byte có thể reset bất cứ lúc nào.
Chú ý:
Trong Scratchpad có 3 byte “Reseryed” chỉ dùng để tính ra mã CRC
(giá trị của 3 byte không có ý nghĩa).
* Coppy Scratchpad [48h]
Sau khi chủ gửi lệnh này, DS18B20 sẽ chuyển 3 byte TH, TL và
Config từ Scratchpad vào vùng nhớ không bay hơi theo thứ tự tương ứng.
Việc coppy này mất nhiều thời gian (10 ms) và tiêu tốn năng lượng lớn. Nếu
chủ bus khởi phát đọc bus ngay sau lệnh này thì sẽ nhận được bit 0, chỉ khi
nào quá trình coppy kết thúc thì DS18B20 mới trả bus về 1. Nếu trong chế độ
nguồn ký sinh thì chủ bus phải được kéo dài bus lên nguồn qua mosfet ít nhất
là 10ms sau khi gửi lệnh.
* Convert T [44h]
Nguyễn Thị Thu

31C – SPKT – VậT Lý



×