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
Trang 1Trường Đại học sư phạm hà nội 2
Người hướng dẫn khoa học
ThS PHùNG CÔNG PHI KHANH
Hà Nội – 2009
Trang 2Lờ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
Trang 3Lờ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
Trang 4Mụ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ể lỏng LCD ………
24 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
Trang 5Mở đầ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
Trang 6- 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
Trang 7Chươ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
Trang 8NỘ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
Trang 9- Để 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)
-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
Trang 10Bảng 1: Bảng mô tả các chân
2.4 Sơ đồ khối của sesor DS18B20
PARASITE POWER CIRCUIT
MEMORY CONTROL
4.7
K
Trang 11
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
Trang 12Do 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:
Trang 13Hì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:
Trang 14Bả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
+ 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à:
Trang 15+ 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
Trang 16tlow 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
Write 0
Write 1
Trang 17
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
Trang 18Mỗ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
Trang 19Là 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 ( Bits)
Thời gian chuyển đổi ( Lớn nhất )
Trang 20=> 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:
Trang 21Hì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 độ
Trang 22- 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 độ)
Trang 23đó 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ó 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à
Trang 24cuố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
* 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
Trang 25sau 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
là 10ms sau khi gửi lệnh
* Convert T [44h]
Trang 26Sau khi nhận được lệnh này DS18B20 sẽ tự động chuyển đổi nhiệt độ
và sau 750 ms (nếu độ phân giải 12 bit) kết quả này sẽ có trong 2 byte của Scratchpad Cũng như khi coppy Scratchpad, DS18B20 sẽ gửi lên bus bit 0 trong khi convert (thể hiện nó đang bận) khi nào xong ta sẽ đọc được 1 Nếu trong chế độ nguồn ký sinh thì bus phải được kéo lên nguồn nhờ Mosfet ngay lập tức cho đến khi nào convert xong
* Recall E² [B8h]
Giống như lệnh coppy Scratchpad nhưng dữ liệu đi theo chiều ngược lại tức là 3 byte TH, TL và Config được chuyển từ vùng nhớ không bay hơi sang vùng nhớ tổng hợp Scratchpad Lệnh này được thực hiện tự động khi cấp nguồn cho đầu đo
* Read Power Supply [B4h]
Sau khi gửi lệnh này và khởi phát đọc khe thời gian ta sẽ nhận đươc bít
0 nếu sử dụng nguồn ký sinh và bit 1 nếu sử dụng nguồn ngoài
Chú ý:
Sau khi gửi lệnh coppy Scratchpad, convert T, recall Scratchpad thì bus
sẽ bận vì các đầu đo sẽ kéo bus xuống mức thấp cho đến khi xong việc vì vậy
ta sẽ không thực hiện được các lệnh khác Vì vậy để tiết kiệm thời gian, để tất
cả các đầu đo đều hoạt động ta làm như sau:
Gửi lệnh Skip ROM đến các đầu đo
Gửi lệnh convert T đến tất cả các đầu đo các đầu đo sẽ convert T Chờ