21
Cm biến mt dây (Phn 1) Ngô Diên Tp Đại Hc Quc Gia Hà Ni (Phn 1) Do nhng tiến bca công ngh, các cm biến không chđược nâng cao vmt cht lượng mà nhiu loi cm biến mới đã lần lượt ra đời; cm biến mt dây là mt thí d. Trước hết xin nói vtên gi: cm biến mt dây không có nghĩa là cảm biến này chmt dây ra mà thut ngmột dây (1 wire) được dùng chđể nhn mnh một đặc điểm ca loi cm biến này là đường dn tín hiu lối ra và đường dẫn điện áp ngun nuôi có thdùng chung trên mt dây dn và không chchung cho mt cm biến mà nhiu cm biến có thsdng chung một đường dn. Trên hình 1 là mt cm biến nhiệt độ mt dây nhưng ta vẫn thy rõ là có 4 dây dn ra. Hình 1: Mt loi cm biến một dây đang lưu hành trên thị trường Nhli hi cui những năm 60 của thế ktrước, các bậc đàn anh đưa tín hiệu đo lường tdưới lkhoan (kthut carota) lên trên mặt đất bng chính đường dẫn điện tngun acquy nuôi cho thiết bđo đặt trong lkhoan được xem như một ktích thì bây givi sra đời ca cm biến mt dây, thành tựu trên được thc hin chbng mt hai mi hàn; lý do là mi thđã được tích hp sn trên cm biến! Do sdụng chung đường dn sliệu đo lường với đường cấp điện áp ngun nên các cm biến một dây đặc bit thích hp vi các ng dụng đo lường đa điểm, khi mà slượng các đường dn sliệu đo lường và đường cấp điện áp ngun trthành mt con srt ln. Chng hn, vi mt kho bo qun có 40 phòng, trong mi phòng cần đo nhiệt độ ti 3 điểm (3 cm biến nhiệt độ) và độ m ti một điểm (1 cm biến độ m); nếu tính trung bình mỗi điểm đo cần 4 đường dn thì tại điểm tp trung sdây dẫn lên đến 640 dây, nghĩa là cần đến mt bó cáp cc kln ! Trong những trường hp này, các cm biến mt dây slàm thay đổi hoàn toàn gii pháp kthut. Nhng tháng gần đây đã có một scm biến một dây được gii thiu vi thtrường, nhưng về mt cu trúc và nguyên lý hoạt động đều có những điểm chung, cho nên để đơn gin ta tìm hiu cm biến mt dây thông qua vic tìm hiu chi tiết loi cm biến nhiệt độ mt dây DS1820.

Cảm biến một dây & DS1820(new)

Embed Size (px)

Citation preview

Page 1: Cảm biến một dây & DS1820(new)

Cảm biến một dây (Phần 1)

Ngô Diên Tập

Đại Học Quốc Gia Hà Nội

(Phần 1)

Do những tiến bộ của công nghệ, các cảm biến không chỉ được nâng cao về mặt chất

lượng mà nhiều loại cảm biến mới đã lần lượt ra đời; cảm biến một dây là một thí dụ.

Trước hết xin nói về tên gọi: cảm biến một dây không có nghĩa là cảm biến này chỉ có

một dây ra mà thuật ngữ một dây (1 wire) được dùng chỉ để nhấn mạnh một đặc điểm của

loại cảm biến này là đường dẫn tín hiệu lối ra và đường dẫn điện áp nguồn nuôi có thể

dùng chung trên một dây dẫn và không chỉ chung cho một cảm biến mà nhiều cảm biến

có thể sử dụng chung một đường dẫn. Trên hình 1 là một cảm biến nhiệt độ một dây

nhưng ta vẫn thấy rõ là có 4 dây dẫn ra.

Hình 1: Một loại cảm biến một dây đang lưu hành trên thị trường

Nhớ lại hối cuối những năm 60 của thế kỷ trước, các bậc đàn anh đưa tín hiệu đo lường

từ dưới lỗ khoan (kỹ thuật carota) lên trên mặt đất bằng chính đường dẫn điện từ nguồn

acquy nuôi cho thiết bị đo đặt trong lỗ khoan được xem như một kỳ tích thì bây giờ với

sự ra đời của cảm biến một dây, thành tựu trên được thực hiện chỉ bằng một hai mối hàn;

lý do là mọi thứ đã được tích hợp sẵn trên cảm biến!

Do sử dụng chung đường dẫn số liệu đo lường với đường cấp điện áp nguồn nên các cảm

biến một dây đặc biệt thích hợp với các ứng dụng đo lường đa điểm, khi mà số lượng các

đường dẫn số liệu đo lường và đường cấp điện áp nguồn trở thành một con số rất lớn.

Chẳng hạn, với một kho bảo quản có 40 phòng, trong mỗi phòng cần đo nhiệt độ tại 3

điểm (3 cảm biến nhiệt độ) và độ ẩm tại một điểm (1 cảm biến độ ẩm); nếu tính trung

bình mỗi điểm đo cần 4 đường dẫn thì tại điểm tập trung số dây dẫn lên đến 640 dây,

nghĩa là cần đến một bó cáp cực kỳ lớn ! Trong những trường hợp này, các cảm biến một

dây sẽ làm thay đổi hoàn toàn giải pháp kỹ thuật.

Những tháng gần đây đã có một số cảm biến một dây được giới thiệu với thị trường,

nhưng về mặt cấu trúc và nguyên lý hoạt động đều có những điểm chung, cho nên để đơn

giản ta tìm hiểu cảm biến một dây thông qua việc tìm hiểu chi tiết loại cảm biến nhiệt độ

một dây DS1820.

Page 2: Cảm biến một dây & DS1820(new)

DS1820 là một sản phẩm của công ty Dallas (Hoa Kỳ), đây cũng là công ty đóng góp

nhiều vào việc cho ra đời bus một dây và các cảm biến một dây. Hình dạng bên ngoài của

cảm biến một dây DS1820 được mô tả trên hình 2, trong đó dạng vỏ TO-92 với 3 chân là

dạng thường gặp và được dùng trong nhiều ứng dụng, còn dạng vỏ SOIC với 8 chân được

dùng để đo nhiệt độ bề mặt, kể cả da người!

Hình 2: Dạng đóng vỏ và bề ngoài của cảm biến DS1820

Các đặc điểm kỹ thuật của cảm biến DS1820 có thể kể ra một cách tóm tắt như sau:

Sử dụng giao diện một dây nên chỉ cần có một chân ra để truyền thông.

Độ phân giải khi đo nhiệt độ là 9 bit. Dải đo nhiệt độ -55oC đến 125

oC, từng bậc

0,5oC, có thể đạt độ chính xác đến 0,1

oC bằng việc hiệu chỉnh qua phần mềm.

Rất thích hợp với các ứng dụng đo lường đa điểm vì nhiều đầu đo có thể được nối

trên một bus, bus này được gọi là bus một dây (1-wire bus) và sẽ được trình bày

chi tiết trong số tạp chí tới đây.

Không cần thêm linh kiện bên ngoài.

Điện áp nguồn nuôi có thể thay đổi trong khoảng rộng, từ 3,0 V đến 5,5 V một

chiều và có thể được cấp thông qua đường dẫn dữ liệu.

Dòng tiêu thụ tại chế độ nghỉ cực nhỏ.

Thời gian lấy mẫu và biến đổi thành số tương đối nhanh, không quá 200 ms.

Mỗi cảm biến có một mã định danh duy nhất 64 bit chứa trong bộ nhớ ROM trên

chip (on chip), giá trị nhị phân được khắc bằng tia laze.

Đầu đo nhiệt độ số DS1820 đưa ra số liệu để biểu thị nhiệt độ đo được dưới dạng mã nhị

phân 9 bit. Các thông tin được gửi đến và nhận về từ DS1820 trên giao diện 1-wire, do đó

chỉ cần hai đường dẫn gồm một đường cho tín hiệu và một đường làm dây đất là đủ để

kết nối vi điều khiển đến điểm đo. Nguồn nuôi cho các thao tác ghi/đọc/chuyển đổi có thể

được trích từ đường tín hiệu, không cần có thêm đường dây riêng để cấp điện áp nguồn.

Mỗi vi mạch đo nhiệt độ DS1820 có một mã số định danh duy nhất, được khắc bằng laser

trong quá trình chế tạo vi mạch nên nhiều vi mạch DS1820 có thể cùng kết nối vào một

bus 1-wire mà không có sự nhầm lẫn. Đặc điểm này làm cho việc lắp đặt nhiều cảm biến

nhiệt độ tại nhiều vị trí khác nhau trở nên dễ dàng và với chi phí thấp. Theo chuẩn 1-wire

Page 3: Cảm biến một dây & DS1820(new)

độ dài tối đa cho phép của bus là 300 m. Số lượng các cảm biến nối vào bus không hạn

chế.

Để nâng cao độ phân giả lên trên 9 bit ta phải tính toán thêm bằng phần mềm dựa trên các

số liệu lưu trữ trên các thanh ghi nhiệt độ, COUNT REMAIN và COUNT PER C trong

nhóm các thanh ghi nháp (scratchpad). việc tính toán dựa theo phương trình sau:

Khi sử dụng phương trình này cảm biến một dây DS1820 được nâng cấp trở thành một

cảm biến nhiệt độ có độ phân giải cao.

Bộ nhớ ROM 64–BIT

Mỗi cảm biến nhiệt độ DS1820 có một dãy mã 64 bit duy nhất được lưu trữ trong bộ nhớ

ROM từ khi sản xuất bằng kỹ thuật laze. Ý nghĩa của 64 bit mã được giải thích trên hình

3:

Hình 3: Nội dung dãy mã 64-bit trên bộ nhớ ROM

Như vậy dãy mã được chia ra thành 3 nhóm, trong đó:

Tám bit đầu tiên là mã định danh họ một dây, mã của DS1820 là 10h.

48 bit tiếp theo là mã số xuất xưởng duy nhất, nghĩa là mỗi cảm biến DS1820 chỉ

có một số mã.

Tám bit có ý nghĩa nhất là byte mã kiểm tra CRC (cyclic redundancy check), byte

này được tính toán từ 56 bit đầu tiên của dãy mã trên ROM (xem hình 3).

Để truy cập lên cảm biến một dây DS1820 ta phải sử dụng hai nhóm lệnh: các lệnh ROM

và các lệnh chức năng (function commands) bộ nhớ, các lệnh này có thể được mô tả ngắn

gọn như sau:

Sau khi thiết bị chủ (thường là một vi điều khiển) phát hiện ra một xung presence pulse,

nó có thể xuất ra một lệnh ROM. Có 5 loại lệnh ROM, mỗi lệnh dài 8 bit. Thiết bị chủ

phải đưa ra lệnh ROM thích hợp trước khi đưa ra một lệnh chức năng để giao tiếp

với cảm biến DS18S20.

Lệnh ROM

- READ ROM (33h)

Page 4: Cảm biến một dây & DS1820(new)

Cho phép đọc ra 8 byte mã đã khắc bằng laser trên ROM, bao gồm: 8 bit mã định tên linh

kiện (10h), 48 bit số xuất xưởng, 8 bit kiểm tra CRC. 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.

- 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)

Lệnh này cho phép thiết bị điều khiển truy nhập thẳng đến các lệnh bộ nhớ của DS1820

mà không cần gửi chuỗi mã 64 bit ROM. Như vậy sẽ tiết kiệm được thời gian chờ đợi

nhưng chỉ mang hiệu quả khi trên bus chỉ có một cảm biến.

- SEARCH ROM (F0h)

Lệnh này cho phép bộ điều khiển bus có thể dò tìm được số lượng thành viên tớ đang

được đấu vào bus và các giá trị cụ thể trong 64 bit ROM của chúng bằng một chu trình dò

tìm.

- 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.

Lệnh chức năng bộ nhớ

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)

Page 5: Cảm biến một dây & DS1820(new)

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ấy của byte 0 và tiếp tục cho đến byte rhứ 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ào bộ nhớ

EEPROM. Nếu cảm biến được sử dụng trong chế dộ cấp nguồn l bắt đầu việc đo.

- 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 Thời gian chuyển đổi không quá 200 ms, 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.

Đến đây ta có thể thấy là việc sử dụng các lệnh vừa trình bày là một công việc không đơn

giản, nhất là với những bạn đọc chưa từng tìm hiểu về kỹ thuật vi xử lý. Cũng vì vậy mà

trong khuôn khổ một bài viết ta chưa thể hiểu hể cách làm chủ hoạt động của một cảm

biến một dây. Trong phần sau sẽ trình bày thêm về cách ghép nối cảm biến một dây với

vi điều khiển và tổ chức của bus một dây.

Phần 2

Có lẽ cảm biến nhiệt độ một dây DS1820 là một trong số ít các cảm biến một dây khó

giao tiếp nhất (tất nhiên ta có thể tự an ủi là nếu làm chủ được DS1820 thì các cảm biến

một dây khác cũng trở nên dễ dàng bị khống chế !). Trường hợp cảm biến độ ẩm một dây

Page 6: Cảm biến một dây & DS1820(new)

DS2438 lại hoàn toàn khác, sự phức tạp về mặt cấu tạo đã được nhà sản xuất đảm nhận

nên người dùng được hưởng nhiều thuận lợi.

Về các cảm biến độ ẩm ta đều biết: để xác định chính xác độ ẩm tương đối thì cả ba

thông số là nhiệt độ của cảm biến, điện áp lối ra của cảm biến và điện áp nguồn nuôi phải

được xác định (đo) chính xác. Vì vậy nếu có một cách nào đấy thực hiện hiện được ba

phép đo kể trên một cách đồng thời hoặc được thực hiện chỉ bằng một linh kiện thì phép

đo độ ẩm tương đối sẽ trở nên đơn giản đi rất nhiều mà vẫn bảo đảm được độ chính xác

mong muốn. Xuất phát từ ý tưởng đó, công ty Dallas (Hoa Kỳ) đã thiết kế và giới thiệu

với thị trường một bộ giám sát điện áp được dùng để tích hợp thành cảm biến một dây

với ký hiệu là DS2438, trong đó các bộ biến đổi A/D dùng cho việc đo điện áp và nhiệt

độ để suy ra độ ẩm đều đã được tích hợp trên chip. Ngoài ra trên chip còn có bộ biến đổi

dòng điện (current converter) 10 bit, một bộ tích dòng (current accumulator) một bộ đếm

thời gian. Vi mạch DS2438 thường được gọi là bộ giám sát pin thông minh (Smart

Battery Monitor). Chưa phải là tất cả, trên chip DS2438 còn có bộ nhớ không tự mất dữ

liệu (nonvolatile) với dung lượng 40 byte để lưu trữ các thông tin định chuẩn cho cảm

biến.

Hình 1: Bố trí chân của vi mạch DS2348.

Bộ giám sát DS2438 được đóng gói khi xuất xưởng dưới dạng vi mạch 8 chân hai hàng

(DIP) với cách bố trí chân được mô tả trên hình 1.

Như vậy là về thực chất thì bộ giám sát DS2438 không phải là một cảm biến được thiết

kế để tích hợp với một cảm biến độ ẩm thông thường để hình thành cảm biến 1 dây, đó là

cảm biến độ ẩm HIH-3605 của công ty Honeywell. Vì vậy trước khi tìm hiểu bản chất

một dây của DS2438 ta nên tìm hiểu chi tiết về cảm biến HIH-3605

Những đặc tính chính của HIH-3605 có thể kể ra là:

Điện áp lối ra thay đổi tuyến tính theo %RH

Khả năng thay thế đã được tinh chỉnh bằng kỹ thuật laze

Page 7: Cảm biến một dây & DS1820(new)

Tiêu tốn năng lượng ít

Độ chính xác cao (±2% RH, trong khoảng 0-100% RH không bị đọng nước, ở

25oC và điện áp nguồn nuôi 5 VDC)

Thời gian đáp ứng nhanh

Hoạt động ổn định, độ trôi thấp

Chịu tác động của hoá chất.

Cảm biến độ ẩm HIH-3605 là một vi mạch tích hợp đơn khối (monolithic) được thiết kế

cho mục đích OEM (Original Equipment Manufac-turer) với số lượng lớn. Cho đến nay

cảm biến độ ẩm HIH-3605 là một trong số ít các cảm biến tích hợp được nhiều đặc tính

ưu việt như: chính xác, daei đo rộng, không bị đọng nước và không đắt. Do có quan hệ

tuyến tính giữa độ ẩm tương đối và điện áp lối ra nên có thể đấu cảm biến trực tiếp vào

một lối vào của vi điều khiển. Với dòng tiêu thụ điển hình chỉ cỡ 200 mA, cảm biến HIH-

3605 tỏ ra là một linh kiện lý tưởng sử dụng trong các thiết bị đo cầm tay dùng nguồn

nuôi bằng pin. Cảm biến độ ẩm HIH-3605 thường được đóng gói khi xuất xưởng dưới

dạng vi mạch hai hàng chân SIP (Single In-line Package), có thể hàn được.

Cấu tạo của cảm biến HIH-3605 được mô tả trên hình 2. Một đặc điểm có thể dễ dàng

nhận thấy là hai lớp platin xốp được xen kẽ bằng một lớp polyme dẫn nhiệt (thermoset).

Phía trên lại có thêm một lớp polyme để loại bỏ ảnh hưởng của bụi bẩn và chống nước

đọng lại khi có độ ẩm 100%. Với cách cấu này, cảm biến độ ẩm tương đối HIH-3605 về

thực chất là một phần tử điện dung có lớp cách điện được chế tạo bằng vật liệu polyme

cách nhiệt thermoset được vi chỉnh bằng công nghệ laze trong quá trình chế tạo (laser

trimmed thermoset), với các phần tử định dạng tín hiệu được tích hợp ngay trên chip.

Cảm biến HIH-3605 có những biến tướng khác nhau, chủ yếu liên quan đến dạng đóng

vỏ và đặc tính của tín hiệu lối ra, được phân biệt bằng các chữ cái bổ sung như A, A-CP,

B và B-CP.

Hình 2: Cấu trúc của cảm biến độ ẩm HIH-3605.

Do đặc điểm thiết kế, các cảm biến HIH 3605 rất nhạy cảm với sự phóng điện tĩnh điện

vì vật nên cẩn thận khi định dùng tay để cầm các cảm biến loại này.

Page 8: Cảm biến một dây & DS1820(new)

Một số các thông số cần quan tâm đến khi thíet kế các thiết bị đo độ ẩm dùng cảm biến

HIH-3605 có thể kể ra là: midity

Độ tuyến tính RH: ±0.5% RH (điển hình)

Độ trễ RH: ±1.2% RH cực đại

Độ lặp lại RH: ±0.5% RH

Thời gian đáp ứng RH: 15 sec

Độ ổn định của giá

trị đo:

±1% RH, khi độ ẩm được giữ

cố định ở 50% trong 5 năm (!)

Điện áp nguồn nuôi: 4-5,8 V, giá trị định chuẩn ghi

ở 5 VDC

Dòng tiêu thụ: 200 mA ở 5 VDC, 2 mA ở 9

VDC

Hình 3: Một cảm biến một dây có kích thước nhỏ có thể phát hiện được sự thay đổi

độ ẩm do nước bốc hơi từ tay người, trên đồ thị chỉ ra sự trhay đổi độ ẩm tương đối

từ 38% lên 81%.

Một điểm đáng lưu ý khi sử dụng các cảm biến độ ẩm loại này là phản ứng của cảm biến

tương đối nhạy với ánh sáng; khi chiếu ánh sáng có cường độ lớn vào bên ngoài cảm biến

có thể gây nên sự trôi giá trị đến 3% ở 90% RH. Vì vậy các cảm biến độ ẩm thường được

đóng gói trong một hộp bằng nhựa (xem hình 5). Cảm biến HIH 3085 đã được đóng gói

thành cảm biến một dây có kích thước nhỏ hơn đầu ngón tay (xem hình 3), Trên vỏ cảm

biến ta cío thể nhìn rõ dòng chữ “1-wire H” (H: Honeywell). Bằng loại cảm biến này

người ta đã thử đo sự thay đổi độ ẩm do nước bốc ra từ lòng bàn tay khi có đặt thêm vào

một cảm biến độ ẩm. Từ đồ thị trên hình 4, độ ẩm thay đổi từ 38% RH lên đến giá trị

81% RH.

Page 9: Cảm biến một dây & DS1820(new)

Hình 4: Đồ thị mô tả sự thay đổi độ ẩm do hơi nước bốc ra từ tay người cầm cảm

biến.

Thông thường, cảm biến một dây trên cơ sở HIH-3605 được đóng vỏ trong một hộp nhựa

có kích thước không nhỏ. Trên hình 5 là một cảm biến độ ẩm tương đối một dây đang

được giới thiệu trên thị trường, khi đó chỉ còn hai dây dẫn lối ra. Loại cảm biến này khi

đóng vỏ chung với một cảm biến nhiệt có giá khoảng 199 đô la Mỹ.

Hình 5: Một cảm biến độ ẩm một dây được gới thiêu trên thị trường.

Để hình thành một cảm biến độ ẩm một dây, cảm biến Honeywell HIH-3605 được ghép

nối với bộ giám sát điện áp DS2438 theo mạch điện trên hình 6. Phiên bản thu nhỏ của

loại cảm biến này tích hợp hai chip trong hình vẽ ngay cạnh nhau trên một bản mạch. Khi

Page 10: Cảm biến một dây & DS1820(new)

đó từ cảm biến sẽ chỉ có hai đường dẫn ra: một đường nối đất (GND) và một đương dùng

chung cho dữ liệu (DATA) và điện áp nguồn nuôi.

Hình 6: Kết nối cảm biến độ ẩm vói bộ giám sát DS2438 để tạo ra cảm biến độ ẩm

một dây.

Đo độ ẩm tương đối bằng cảm biến 1 dây

Hoạt động của mạch điện có thể mô tả ngắn gọn như sau: Nguồn nuôi cho cảm biến được

cấp từ nhóm các linh kiện CR1 và C1. Để tính ra độ ẩm tương đối bộ giám sát DS2438

đọc giá trị điện áp sụt trên cảm biến Vdd, và điện áp lối ra của cảm biến Vad. Đồng thời

DS2438 cũng tạo ra tín hiệu bù trừ nhiệt độ từ một cảm biến nhiệt độ 13 bit tích hợp sẵn

trên chip. Cặp linh kiện R1 và C2 đóng vai trò một bộ lọc thông thấp.

Trong mạch điện trên hình 5 tụ điện C1 và một trong các điốt Schottky trong nhóm CR1

tạo thành một bộ chỉnh lưu nửa chu kỳ cung cấp điện áp nuôi cả cảm biến và vi mạch

giám sát DS2438 bằng cách “nhúp” (stealing) điện áp này từ bus khi điện áp đạt giá trị 5

V trong các khoảng thời gian không diễn ra quá trình truyền thông tin. Đây là cách cấp

nguồn nuôi “ký sinh” được sử dụng phổ biến trong các linh kiện 1 dây nhằm tạo ra điện

áp nguồn nuôi để cảm biến tự hoạt động. Điốt Schottky còn lại nối giữa đường DATA và

đất (GND) đảm nhận nhiệm vụ bảo vệ mạch bằng cách ghim không cho mức tín hiệu

xuống thấp hơn điện áp đất quá 0,4 V. Dưới sự điều khiển của vi mạch chủ bus U1,

DS2438 giám sát điện áp nguồn nuôi cấp cho U2, cảm biến độ ẩm và điện áp Vdd (pin 5)

dùng để nuôi chính bộ giám sát. Tiếp đó bộ giám sát đo điện áp ở lối ra của U2 và trên

chân vào analog (chân 4). Cuối cùng, bộ giám sát DS2438 thông báo nhiệt độ tính theo

độ C từ lối ra của bộ biến đổi 13 bit được tích hợp trên chip. Tiếp đó phần mềm nạp sẵn

trên vi điều khiển hoặc máy tính sẽ sử dụng các dữ liệu này để tính toán và hiển thị giá trị

đúng của độ ẩm tương đối.

Điểm I/O DATAchính là một lối vào của vi điều khiển. Khi đó việc tính toán giá trị độ

ẩm tương đối để đưa ra hiển thị có thể được mô tả tóm tắt như sau:

Điện áp lối ra của cảm biến độ ẩm Honeywell HIH-3605 là điện áp analog có biên độ tỷ

lệ với điện áp nguồn nuôi. Do đó để biến đổi trực tiếp biên độ điện áp thành độ ẩm tương

Page 11: Cảm biến một dây & DS1820(new)

đối RH cần phải biết (bằng cách đo !) cả điện áp nguồn nuôi và điện áp ở lối ra của cảm

biến để áp dụng công thức:

RHcb = (VOUT/ VSUPPLY) – 0,16/ 0,0062

ở đây RHcb là độ ẩm tương đối cảm biến. Công thức này được áp dụng cho nhiệt độ

25oC. Để hiệu chỉnh hết quả do sai lệch nhiệt độ tiến hành đo và do vậy sẽ nhận được giá

trị đúng của độ ẩm tương đối, ta sử dụng công thức:

RHtrue = RHcb/ (1,0546 – 0,00216 T)

ở đây T là nhiệt độ được tính ra độ C. Do DS2438 thông báo nhiệt độ theo đơn vị đo là

độ C nên việc áp dụng cong thức trên rất thích hợp đối với các cảm biếm một dây. Trong

trường hợp nhiệt độ được tính theo độ F thì giá trị đúng của độ ẩm tương đối RH được

tính theo công thức:

RHtrue = RHcb/ (1,093 – 0,0012 T)

với T là nhiệt độ được tính ra độ F.

Đây là những công thức cần được chú ý đến khi lập trình để xử lý các kết quả đọc được

trong vi điều khiển và đưa ra hiển thị.

Như vậy, bằng việc tích hợp một cảm biến đo độ ẩm thông thường với một vi mạch giám

sát điện áp ta nhận được một cảm biến độ ấm một dây theo đúng nghĩa: dữ liệu và điện áp

nguồn nuôi được truyền chỉ trên một đường dẫn (1 dây). Mã nhận dạng (ID) của linh kiện

được tạo ra từ DS2438 còn dữ liệu để đọc ra kết quả được truyền từ chân Vdd.

Trong phần sau sẽ trình bày tiếp về cách ghép nối cảm biến một dây với vi điều khiển

thành một hệ thống đo và tổ chức của bus một dây.

(Phần cuối)

Khi muốn đưa các cảm biến 1 dây vào sử dụng ta cần hiểu rõ cách đấu nối các cảm biến

đó với nhau và với các bộ phận phụ trợ như thế nào. Các cảm biến một dây được nối vào

bus 1 dây. Trước hết gọi là bus vì có nhiều thành viên được đấu nối vào hay như thường

nói là có nhiều thành viên tham gia; còn là bus 1 dây vì các thành viên liên hệ với nhau

chỉ thông qua một dây (không kể đường dây dẫn nối đất). Khi sử dụng nhiều cảm biến thì

bus một dây hình thành một mạng (network) và cũng có những đặc tính riêng. Vì vậy

trước hết ta tìm hiểu về tôpô của mạng.

Page 12: Cảm biến một dây & DS1820(new)

Tôpô mạng 1 dây: Mặc dù mạng 1 dây vẫn thường được xem là "hoàn toàn tự do" về

mặt cấu trúc, nhưng dựa trên sự phân bố của các cảm biến "tớ" và cách tổ chức của các

đường dây nối ta vẫn có thể phân loại ra một số kiểu:

1) Tôpô đường thẳng: Bus đường thẳng là một đường dẫn đơn lẻ, bắt đầu từ môđun chủ

và kéo dài tới thành viên "tớ" được đặt ở xa nhất.

2) Tôpô phân nhánh: Bus 1 dây là một đường trục chính đơn lẻ bắt đầu ở môđun chủ và

kết thúc ở thành viên "tớ" nằm xa nhất. Các thành viên tớ khác được gắn vào đường trục

chính trên khoảng cách từ 3 m trở lên.

3) Tôpô hình sao: Bus 1 dây được phân chia ở hoặc ở gần môđun chủ và toả ra thành

nhiều nhánh với những độ dài khác nhau, đầu cuối của mỗi nhánh là một thiết bị "tớ" như

mô tả trên hình vẽ dưới đây.

Mục đích đặt ra khi thiết kế các bus 1 dây là làm sao bus có cấu hình đơn giản như có thể.

Trên thực tế, khi thiết kế các mạng 1 dây người ta thường đưa vào các điện trỏ đệm (xem

hình dưới). Điện trở này được đặt ở vị trí mà nhánh được nối với đường trục chính. Giá

trị của điện trở đệm cho mỗi nhánh thường được chọn là 150 W.

Một số thuật ngữ trong mạng 1 dây: Khi bàn luận về mạng một dây có hai thuật ngữ

thường được sử dụng để mô tả và đánh giá tính năng của mạng. Đó là:

Page 13: Cảm biến một dây & DS1820(new)

Bán kính: của mạng là khoảng cách (cũng là độ dài của đường dẫn) đo bằng mét và tính

từ môđun chủ đến thành viên ở xa nhất

Trọng số (weight): của mạng là độ dài tổng cộng của các đường dẫn kết nối trong mạng,

tính bằng mét.

Chẳng hạn trong một mạng hình sao có các nhánh là: 10 m, 20 m và 30 m thì bán kính

của mạng là 30 m còn trọng số của mạng là 60 m. Về mặt ý nghĩa, trọng số của mạng sẽ

hạn chế thời gian tăng của xung ở trên cáp, trong khi bán kính lại quyết định thời gian

phản xạ chậm nhất của tín hiệu. Thông thường, không có một mạng 1 dây nào có được

bán kính lớn hơn 750 m, vì ở khoảng cách này thời gian trễ sẽ gây ảnh hưởng quá đáng

đến giao thức truyền. Có điều là trên thực tế lại có nhiều hệ số khác tác động làm cho bán

kính nhỏ hơn giá trị này.

Mạng chuyển mạch

Khi có nhiều thành viên tham gia bus thì mức độ phức tạp của mạng, bán kinh và trọng

số của mạng cũng tăng theo. Để tránh hậu quả này có thể sử dụng một phương pháp, theo

đó bus được phân chia ra thành những nhánh rồi sử dụng biện pháp chuyển mạch điện tử

lần lượt kết nối từng nhánh với thành viên chủ (xem hình vẽ). Như vậy bằng việc sử dụng

một linh kiện chuyển mạch điện tử, tại một thời điểm một nhóm các thành viên được đấu

nối chỉ theo tôpô đường thẳng. Câc nhà sản xuất cũng thiết kế riêng các linh kiện chỉ để

dùng vào mục đích chuyển mạch, chẳng hạn loại DS2409 của công ty Dallas (Hoa Kỳ).

Cũng cần lưu ý là trong trường hợp mạng hình sao, néu bổ sung một linh kiện chuyển

mạch giữa các nhánh của hình sao thì tại một thời điểm ta cũng có tôpô đường thẳng.

Trong thí dụ trên hình vẽ, nếu sử dụng mạng hình sao thì bán kính của mạng là 150 m,

còn trọng số là 450 m; trong khi nếu sử dụng chuyển mạch điện tử thì bán kính vẫn giữ

nguyên nhưng trọng số giảm xuống chỉ còn 150 m. Những kết quả, những lời bàn luận về

mạng không chuyển mạch vẫn có thể áp dụng cho từng nhánh của mạng chuyển mạch.

Trên thực tế, chúng tôi thấy sử dụng mạng chuyển mạch sẽ tốn thêm một linh kiện

chuyển mạch (DS2409), nhưng việc viết chương trình cũng như việc đưa hệ thống vào

ứng dụng sẽ đơn giản hơn rất nhiều.

Page 14: Cảm biến một dây & DS1820(new)

Giao tiếp của bus 1 dây về mặt phần cứng với môđun chủ tương đối đơn giản. Trong

trường hợp đơn giản nhất bus 1 dây được nối trực tiếp vào một cổng vào/ ra của vi điều

khiển (xem hình vẽ trên), đồng thời có thêm một điện trở nối lên nguồn dương (điện trở

pull-up) đóng vai trò tải của mạch cực góp ở lối ra và tạo mức lôgic HIGH mặc định.

Trong trường hợp muốn cải thiện đặc tính của bus ta có thể bổ sung thêm một tranzito

MOS như ở hình vẽ trên.

Điểm cuối cùng cần nắm vững để làm chủ bus 1 dây là hiểu được quá trình trao đổi dữ

liệu trên bus. Quá trình này diễn ra trong những khoảng thời gian ngắn, được gọi là

những khe thời gian (time slot). Các khe thời gian được môđun chủ tạo ra bằng phần

cứng, nhưng thời điểm tạo ra và thông số vủa khe thời gian lại do phần mềm quy định,

nên trên thực tế việc điều khiển quá trình trao đổi dữ liệu trên bus 1 dây cũng không phức

tạp. Thí dụ trên hình vẽ dưới đây mô tả một khe thời gian "Read One" hoặc "Write One".

Page 15: Cảm biến một dây & DS1820(new)

Để có khe thời gian này, môđun chủ (thường là vi điều khiển hoặc PC) kéo đường dẫn

bus xuống mức lôgic thấp trong khoảng thời gian chừng 10 micrô giây rồi trả lại mức cao

mặc định. Nên chú ý là sườn xuống của xung được điều khiển bằng mạch tốc độ tăng/

giảm xung (slew rate). Khe thời gian kéo dài khoảng 70 micrô giây sau đó lại chuyển

sang một khe thời gian khác.

Một thí dụ khác là tạo xung reset hệ thống như mô tả trông hình dưới đây.

Để có được dạng xung này, trong trường hợp cần reset hệ thống, môđun chủ kéo đường

dẫn bus xuống mức lôgic thấp trong 480 micrô giây. Đây là khoảng thời gian dài hơn bất

kỳ một khe thời gian nào có thể giữ bus 1 dây ở mức thấp. Tất cả các thành viên trên bus

nhận dạng hiện tượng này như là thao tác báo hiệu reset bus, đồng thời đáp ứng lại xung

Page 16: Cảm biến một dây & DS1820(new)

reset bus bằng cách phát ra xung báo hiệu có mặt (presence pulse). Tất cả các thành viên

"tớ" trên bus đều phát xung trình diện trong cùng một chu kỳ và các xung sẽ phủ lên nhau

tạo thành một xung đơn như ở trên hình vẽ.

Một thí dụ cuối cùng là thao tác ghi giá trị "0" (Write Zero), giản đồ thời gian được mô tả

như trên hình dưới đây:

Để tạo khe thời gian ghi giá trị "Zero" môđun chủ kéo đường dẫn bus xuống mức lôgic

thấp trong khoảng thời gian 60 micrô giây, sau đó trả lại mức HIGH mặc định trong 10

micrô giây trước khi bắt đầu một khe thời gian khác.

Một điểm chung trong ba thí dụ trên là độ dài của khoảng thời gian mà môđun chủ kéo

bus xuống mức lôgic LOW đóng một vai trò quyết định đối với loại khe thời gian.

Thay lời kết luận: Việc tìm hiểu và làm chủ một hệ thống bus 1 dây trong một khoảng

thời gian không dài là một việc làm không dễ dàng. Nhưng nếu hiểu được bản chất của

quá trình thì ta có thể tiếp cận dần dần, từ các hệ thống với một-hai cảm biến, thực hiện

một vài câu lệnh đến các hệ thống có số lượng lớn. Vấn đề quan trọng nhất là đọc kỹ tài

liệu hướng dẫn của từng loại cảm biến một dây định dùng.

(Theo: Tạp chí TĐHNN)

Page 17: Cảm biến một dây & DS1820(new)

Trong cảm biến một dây (One wire bus), dữ liệu được truyền theo từng bit, và thu nhận

theo từng Bit một.

Khác với các chuẩn ít dây cự li gần khác như I2C, SPI, 1Wirebus không có xung đồng bộ,

vì thế sự đồng bộ được thực hiện qua việc qui định thời gian mức điện áp tồn tại trên Bus.

Trong đồng bộ kiểu này:

+Đồng bộ khung cuộc truyền: được thực hiện bởi một xung reset mức thấp kéo dài hơn

400us. Toàn bộ hệ thống 1WB sẽ reset và báo lại một tín hiệu sẵn sàng cũng bằng 1 xung

thấp trên Bus khoảng hơn 400us. Giữa hai khoảng thời gian này sẽ tồn tại một khaỏng

thời gian bus ở trạng thái 1.

+Đồng bộ bit: Việc đồng bộ bit cũng được thực hiện dựa trên việc bộ xử lý chủ (hoặc tớ)

phát ra những khe thời gian với mức logic đối nghịch với mức logic phát đi. Các khe thời

gian được qui định rất chặt chẽ về thời gian tồn tại trên bus.

Nói chung để hiểu rõ hơn cần đọc kỹ Datasheet DS1820.

+Những điểm đặc biệt:

-Giao tiếp chỉ một chân.

-Có khả năng tận dụng điện áp trên tín hiệu nhờ bộ lọc thông thấp trong chip làm VCC

-Đo nhiệt đọ rất chính xác và ổn định với sai số +-0.5 độ

-Rất nhỏ gọn

+Nhược điểm:

-Qui định về thời gian chặt chẽ quá (đang tìm cách nối với máy in máy tính nhưng ko biết

delay1us trong VC++).

-Truy cập chậm (mất khoảng hơn 1000us) => không phù hợp với điều khiển đáp ứng

nhanh.

-Hu hu hu...đắt tiền quá đi mất trong khi sinh viên thì ...khỏi nói (mua khoảng 50->60k ở

Tương Lai)

Vài dòng lan man...

Cho các bạn mới tìm hiểu một đoạn mã nguồn (xài OK luôn) viết bằng KeilC.

//***********

#include<reg51.h>

unsigned char nhietdo;

void delay(unsigned char time) {

while(time) {

time--;

}

}

//********************8

void write_time_slot(bit data_bit) {

DQ = 0;

_nop_();

_nop_();

DQ = data_bit;

delay(3);

DQ = 1;

Page 18: Cảm biến một dây & DS1820(new)

_nop_();

_nop_();

_nop_();

}

//********************

bit read_time_slot() {

bit dummy;

DQ = 0;

_nop_();

_nop_();

DQ = 1;

_nop_();

_nop_();

_nop_();

_nop_();

_nop_();

_nop_();

_nop_();

_nop_();

_nop_();

dummy = DQ;

delay(7);

return dummy;

}

//********************

void reset() {

DQ = 0;

delay(300);

DQ = 1;

}

//********************

//void device_available() { //Ham nay han che dung de phong truong hop bi treo

// reset();

// delayus(70);

// while(DQ) {}

//}

//********************

void write_byte_1820(unsigned char data_byte) {

bit dummy_write;

char i;

for (i=0;i<=7;i++) {

dummy_write = data_byte & 0x01;

write_time_slot (dummy_write);

data_byte = data_byte >> 1;

}

DQ = 1;

Page 19: Cảm biến một dây & DS1820(new)

delay(10);

}

//********************

int read_temp() {

bit dummy_read;

char i;

int dummy_data, data_read = 0;

for (i=0;i<=7;i++) {

dummy_read = read_time_slot();

dummy_data = dummy_read;

data_read = data_read | (dummy_data << i);

}

DQ = 1;

delay(10);

return data_read;

}

//********************

void nhan_temp() {

DQ = 1;

delay(300);

reset ();

delay(50);

write_byte_1820(0xcc);

write_byte_1820(0x44);

reset ();

delay(50);

write_byte_1820(0xcc);

write_byte_1820(0xbe);

nhietdo = read_temp();

delay(300);

tp = nhietdo & 0x01;

nhietdo = (nhietdo & 0xfe) >> 1;

}

//****************

void main() {

while(1) {

nhan_temp();

P0 = nhietdo; //Hiển thị dữ liệu ra led đơn

}

}

Page 20: Cảm biến một dây & DS1820(new)

Bằng Assempler:

dq bit p2.7

gnd bit p2.6

dem equ r2

;@@@@@@@@@@@@@@@@@@@@@

org 0000h

jmp CHUONG_TRINH_CHINH

write_time_slot:

clr dq

nop

nop

mov dq, c

mov r5, #30

lcall delay

setb dq

nop

nop

ret

read_time_slot:

clr dq

nop

nop

setb dq

nop

nop

nop

nop

nop

nop

nop

nop

mov c, dq

mov r5,#50

lcall delay

ret

reset_ds1820:

clr dq

mov r5,#255

lcall delay

setb dq

mov r5,#255

lcall delay

ret

write_byte:

mov dem,#8

Page 21: Cảm biến một dây & DS1820(new)

write_lai: rrc a

lcall write_time_slot

djnz dem, write_lai

setb dq

mov r5,#50

lcall delay

ret

read_byte:

mov dem,#8

read_lai: lcall read_time_slot

rrc a

djnz dem, read_lai

mov r5,#50

lcall delay

ret

delay:

djnz r5,$

ret

delay_long:

mov r6,#0ffh

delay_lai: lcall delay

djnz r6, delay_lai

ret

CHUONG_TRINH_CHINH:

setb dq

clr gnd

again:

lcall reset_ds1820

mov a,#0cch

lcall write_byte

mov a,#44h

lcall write_byte

lcall reset_ds1820

mov a,#0cch

lcall write_byte

mov a,#0beh

lcall write_byte

lcall read_byte

mov p0,a

lcall reset_ds1820

lcall delay_long

jmp again

end