DS18B20 là cảm biến nhiệt độ kỹ thuật số 1 dây do DALLAS sản xuất, với gói nhỏ TO-92 3 chân. Phạm vi đo nhiệt độ là -55oC ~ + 125oC, và nó có thể được lập trình để đạt độ chính xác chuyển đổi A/D 9-bit~12-bit. Độ phân giải đo nhiệt độ có thể đạt 0,0625oC, và nhiệt độ đo được xuất ra nối tiếp dưới dạng đại lượng kỹ thuật số 16 bit có phần mở rộng dấu. Nguồn điện hoạt động của nó có thể được đưa vào ở đầu xa hoặc được tạo ra bởi nguồn điện ký sinh. Nhiều DS18B20 có thể được kết nối song song với 3 hoặc 2 dòng. CPU chỉ cần một đường cổng để giao tiếp với nhiều DS18B20, chiếm ít cổng của bộ vi xử lý, có thể tiết kiệm rất nhiều dây dẫn và mạch logic. Những đặc điểm trên khiến DS18B20 rất phù hợp với các hệ thống phát hiện nhiệt độ đa điểm ở khoảng cách xa.
2. Cấu trúc bên trong sơ đồ mạch DS18B20 ds18b20
Cấu trúc bên trong của DS18B20 được thể hiện trong Hình 1, trong đó chủ yếu bao gồm 4 các bộ phận: 64-bit ROM, cảm biến nhiệt độ, Báo động nhiệt độ không bay hơi kích hoạt Th và TL, và các thanh ghi cấu hình. Cách sắp xếp chân của DS18B20 được thể hiện trong hình 2. DQ là thiết bị đầu ra/đầu ra tín hiệu kỹ thuật số; GND là mặt đất sức mạnh; VDD là thiết bị đầu cuối đầu vào nguồn điện bên ngoài (nối đất ở chế độ nối dây điện ký sinh, xem hình 4).
Số serial 64-bit trong ROM được photoetched trước khi xuất xưởng. Nó có thể được coi là mã chuỗi địa chỉ của DS18B20. Số serial 64-bit của mỗi DS18B20 là khác nhau. Mã kiểm tra dự phòng theo chu kỳ (CRC=X8+X5+X4+1) của ROM 64-bit được sắp xếp. Vai trò của ROM là làm cho mỗi DS18B20 trở nên khác biệt, để có thể kết nối nhiều DS18B20S với một xe buýt.
Nhân vật 1, cấu trúc bên trong của DS18B20
Cảm biến nhiệt độ trong DS18B20 hoàn thành việc đo nhiệt độ, được cung cấp dưới dạng số đọc phần bù nhị phân mở rộng dấu 16 bit, được biểu thị dưới dạng 0,0625oC/LSB, S ở đâu là bit dấu hiệu. Ví dụ, Đầu ra kỹ thuật số +125 là 07D0H, Đầu ra kỹ thuật số +25.0625 là 0191h, đầu ra kỹ thuật số của -25,0625oC là FF6FH, và đầu ra kỹ thuật số của -55 là FC90H.
23
22
21
20
2-1
2-2
2-3
2-4
Giá trị nhiệt độ byte thấp
MSBLSB
S
S
S
S
S
22
25
24
Giá trị nhiệt độ byte cao
Cảnh báo nhiệt độ cao và thấp kích hoạt TH và TL, và thanh ghi cấu hình bao gồm một byte EEPROM. Lệnh chức năng bộ nhớ có thể được sử dụng để ghi vào TH, TL, hoặc thanh ghi cấu hình. Định dạng của thanh ghi cấu hình như sau:
0
R1
R0
1
1
1
1
1
MSBLSB
R1 và R0 xác định số chữ số có độ chính xác để chuyển đổi nhiệt độ: R1R0 = “00”, 9-độ chính xác bit, thời gian chuyển đổi tối đa là 93,75ms; R1R0 = “01”, 10-độ chính xác bit, thời gian chuyển đổi tối đa là 187,5ms. R1R0 = “10”, 11-độ chính xác bit, thời gian chuyển đổi tối đa là 375ms. R1R0 = “11”, 12-độ chính xác bit, thời gian chuyển đổi tối đa là 750ms. Mặc định là độ chính xác 12 bit khi không được lập trình.
Thanh ghi tốc độ cao là bộ nhớ 9 byte. Hai byte đầu tiên chứa thông tin kỹ thuật số về nhiệt độ đo được; ngày thứ 3, 4th, và byte thứ 5 là bản sao tạm thời của TH, TL, và các thanh ghi cấu hình, tương ứng, và được làm mới mỗi lần thiết lập lại bật nguồn; ngày thứ 6, 7th, và byte thứ 8 không được sử dụng và được biểu diễn dưới dạng tất cả các logic 1; byte thứ 9 đọc mã CRC của tất cả các byte trước đó 8 Byte, có thể được sử dụng để đảm bảo giao tiếp chính xác.
3. Trình tự làm việc DS18B20
Luồng giao thức làm việc đầu tiên của DS18B20 là: Khởi tạo → Lệnh vận hành ROM → Lệnh vận hành bộ nhớ → truyền dữ liệu. Trình tự làm việc của nó bao gồm trình tự khởi tạo, viết tuần tự và đọc tuần tự, như trong hình 3 (Một) (b) (c).
(Một) Trình tự khởi tạo
(c) Đọc trình tự
Nhân vật 3, Sơ đồ trình tự làm việc DS18B20
4. Thiết kế giao diện điển hình của DS18B20 và máy vi tính đơn chip
Nhân vật 4 lấy máy vi tính chip đơn dòng MCS-51 làm ví dụ để vẽ kết nối điển hình giữa DS18B20 và bộ vi xử lý. Trong hình 4 (Một), DS18B20 áp dụng chế độ cung cấp điện ký sinh, và các đầu cuối VDD và GND của nó được nối đất. Trong hình 4 (b), DS18B20 sử dụng chế độ cấp nguồn bên ngoài, và thiết bị đầu cuối VDD của nó được cấp nguồn bằng nguồn điện 3V ~ 5,5V.
Một) Chế độ làm việc cung cấp điện ký sinh
(b) Chế độ làm việc của nguồn điện bên ngoài
Nhân vật 4 Sơ đồ kết nối điển hình của DS18B20 và bộ vi xử lý
Giả sử rằng tần số tinh thể được sử dụng bởi hệ thống máy vi tính đơn chip là 12 MHz, ba chương trình con được viết theo thời gian khởi tạo, ghi thời gian và đọc thời gian của DS18B20: INIT là chương trình con khởi tạo; VIẾT là viết (lệnh hoặc dữ liệu) chương trình con; READ là chương trình con đọc dữ liệu. Tất cả việc đọc và ghi dữ liệu bắt đầu từ bit thấp nhất.
DATEQUP1.0
……
BAN ĐẦU:CLREA
INI10:THIẾT LẬP
MOVR2,#200
INI11:CLRDAT
DJNZR2,INI11; Máy chủ gửi xung đặt lại trong 3μs×200=600μs
THIẾT LẬP; Chủ nhà thả xe buýt, và dòng cổng được thay đổi thành đầu vào
MOVR2,#30
IN12:DJNZR2,INI12; DS18B20 chờ 2μs×30=60μs
CLRC
ORLC,CÁI ĐÓ; Đường dữ liệu DS18B20 có ở mức thấp không (xung tồn tại)?
JCINI10; DS18B20 chưa sẵn sàng, khởi tạo lại
MOVR6, #80
INI13: ORLC, CÁI ĐÓ
JCINI14; Đường dữ liệu DS18B20 lên cao, khởi tạo thành công
DJNZR6, INI13; dòng dữ liệu ở mức thấp có thể tồn tại trong 3μs × 80 = 240μs
SYMPINI10; khởi tạo thất bại, khởi động lại
INI14: MOVR2, #240
IN15: DJNZR2, INI15; DS18B20 phản hồi trong ít nhất 2μs × 240 = 48 0μs
RET
;-------------------------
VIẾT:CLREA
MOVR3,#8;Vòng lặp 8 lần, viết một byte
WR11:THIẾT LẬP
MOVR4,#8
RRCA;Bit ghi di chuyển từ A tới CY
CLRDAT
WR12:DJNZR4,WR12
;Đợi 16μs
MOVDAT,C;Từ lệnh được gửi tới DS18B20 từng chút một
MOVR4,#20
WR13:DJNZR4,WR1 3
; Đảm bảo rằng quá trình ghi kéo dài trong 60μs
DJNZR3,WR11
; Tiếp tục trước khi gửi một byte
THIẾT LẬP
RET
;------------------------
ĐỌC:CLREA
MOVR6,#8; Vòng lặp 8 lần, đọc một byte
RD11:CLRDAT
MOVR4,#4
KHÔNG; Mức thấp kéo dài trong 2μs
THIẾT LẬP; Đặt dòng cổng thành đầu vào
RD12:DJNZR4,RD12
; Đợi 8μs
MOVC,TỪ T
;Máy chủ đọc dữ liệu của DS18B20 từng chút một
RRCA;Dữ liệu đã đọc được chuyển đến A
MOVR5,#30
RD13:DJNZR5,RD13
;Đảm bảo quá trình đọc kéo dài 60μs
DJNZR6,RD11
;Sau khi đọc một byte dữ liệu, lưu trữ nó trong A
THIẾT LẬP
RET
;-------------------------
Máy chủ phải trải qua ba bước để điều khiển DS18B20 để hoàn tất quá trình chuyển đổi nhiệt độ: khởi tạo, hướng dẫn hoạt động rom, và hướng dẫn hoạt động bộ nhớ. DS18B20 phải được khởi động để bắt đầu chuyển đổi trước khi đọc giá trị chuyển đổi nhiệt độ. Giả sử rằng chỉ có một chip được kết nối với một dòng, độ chính xác chuyển đổi 12-bit mặc định được sử dụng, và một nguồn điện bên ngoài được sử dụng, chương trình con GETWD có thể được viết để hoàn thành việc chuyển đổi và đọc giá trị nhiệt độ.
CỔNG:LCALLINIT
DI CHUYỂN,#0CCH
LCALLWRITE; gửi lệnh bỏ qua ROM
DI CHUYỂN,#44H
LCALLWRITE; gửi lệnh bắt đầu chuyển đổi
LCALLINIT
DI CHUYỂN,#0CCH; gửi lệnh bỏ qua ROM
LCALLWRITE
DI CHUYỂN,#0 BEH; gửi lệnh đọc bộ nhớ
LCALLWRITE
LALLREAD
MOVWDLSB,MỘT
; gửi byte giá trị nhiệt độ thấp tới WDLSB
LALLREAD
MOVWDMSB,MỘT
; gửi byte giá trị nhiệt độ cao tới WDMSB
RET
……
Byte cao của giá trị nhiệt độ được đọc bởi chương trình con GETWD được gửi đến đơn vị WDMSB, và byte thấp được gửi đến đơn vị WDLSB. Sau đó theo định dạng biểu diễn byte giá trị nhiệt độ và bit dấu của nó, giá trị nhiệt độ thực tế có thể thu được thông qua phép biến đổi đơn giản.
Nếu nhiều DS18B20 được kết nối trên một dòng, chế độ kết nối nguồn điện ký sinh được thông qua, cấu hình độ chính xác chuyển đổi, báo động giới hạn cao và thấp, vân vân. được yêu cầu. Khi đó việc viết chương trình con GETWD sẽ phức tạp hơn. Do hạn chế về không gian, phần này sẽ không được mô tả chi tiết. Vui lòng tham khảo nội dung liên quan.
Chúng tôi đã áp dụng thành công DS18B20 vào “bồn tắm sưởi ấm gia đình” hệ thống điều khiển chúng tôi đã phát triển. Tốc độ chuyển đổi nhanh của nó, độ chính xác chuyển đổi cao, và giao diện đơn giản với bộ vi xử lý đã mang lại sự tiện lợi lớn cho công việc thiết kế phần cứng, giảm chi phí một cách hiệu quả và rút ngắn chu kỳ phát triển.
English
Afrikaans
العربية
বাংলা
bosanski jezik
Български
Català
粤语
中文(简体)
中文(漢字)
Hrvatski
Čeština
Nederlands
Eesti keel
Suomi
Français
Deutsch
Ελληνικά
हिन्दी; हिंदी
Magyar
Bahasa Indonesia
Italiano
日本語
한국어
Latviešu valoda
Lietuvių kalba
македонски јазик
Bahasa Melayu
Norsk
پارسی
Polski
Português
Română
Русский
Cрпски језик
Slovenčina
Slovenščina
Español
Svenska
ภาษาไทย
Türkçe
Українська
اردو
Tiếng Việt



