DS18B20 เป็นเซ็นเซอร์อุณหภูมิดิจิตอล 1 สายที่ผลิตโดย Dallas, ด้วยแพ็คเกจขนาดเล็ก 3 พิน TO-92. ช่วงการวัดอุณหภูมิคือ -55 ℃ ~+125 ℃, และสามารถตั้งโปรแกรมให้มีความแม่นยำในการแปลง A/D ได้ 9 บิต ~ 12 บิต. ความละเอียดการวัดอุณหภูมิสามารถเข้าถึง 0.0625 ℃, และอุณหภูมิที่วัดได้คือเอาต์พุตแบบอนุกรมในรูปแบบของปริมาณดิจิตอล 16 บิตพร้อมการขยายสัญญาณ. แหล่งจ่ายไฟทำงานสามารถนำเสนอได้ที่ปลายระยะไกลหรือสร้างโดยแหล่งจ่ายไฟปรสิต. สามารถเชื่อมต่อ DS18B20 ได้หลายแบบควบคู่ไปกับ 3 หรือ 2 เส้น. ซีพียูต้องการสายพอร์ตเดียวในการสื่อสารกับ DS18B20 หลายสาย, ครอบครองพอร์ตน้อยลงของไมโครโปรเซสเซอร์, ซึ่งสามารถบันทึกโอกาสในการขายและวงจรลอจิกจำนวนมาก. ลักษณะข้างต้นทำให้ DS18B20 เหมาะมากสำหรับระบบตรวจจับอุณหภูมิหลายจุดทางไกล.
2. โครงสร้างภายในของไดอะแกรมวงจร DS18B20 DS18B20
โครงสร้างภายในของ DS18B20 แสดงในรูป 1, ซึ่งส่วนใหญ่ประกอบด้วย 4 ชิ้นส่วน: 64-บิตรอม, เซ็นเซอร์อุณหภูมิ, สัญญาณเตือนอุณหภูมิที่ไม่ระเหยทำให้เกิด TH และ TL, และการลงทะเบียนการกำหนดค่า. การจัดเรียง PIN ของ DS18B20 จะแสดงในรูป 2. DQ คือเทอร์มินัลอินพุต/เอาต์พุตสัญญาณดิจิตอล; GND เป็นแหล่งพลังงาน; VDD เป็นเทอร์มินัลอินพุตแหล่งจ่ายไฟภายนอก (มีสายดินในโหมดการเดินสายไฟฟ้ากาฝาก, ดูรูป 4).
หมายเลขซีเรียล 64 บิตใน ROM จะถูก photoetched ก่อนออกจากโรงงาน. มันถือได้ว่าเป็นรหัสลำดับที่อยู่ของ DS18B20. หมายเลขซีเรียล 64 บิตของแต่ละ ds18b20 นั้นแตกต่างกัน. รหัสตรวจสอบความซ้ำซ้อนของวงจร (crc = x8 + x5 + x4 + 1) มีการจัดรอม 64 บิต. บทบาทของ ROM คือการทำให้แต่ละ DS18B20 แตกต่างกัน, เพื่อให้ DS18B20 หลายตัวสามารถเชื่อมต่อกับรถบัสหนึ่งคัน.
รูป 1, โครงสร้างภายในของ DS18B20
เซ็นเซอร์อุณหภูมิใน DS18B20 เสร็จสิ้นการวัดอุณหภูมิ, ซึ่งมีอยู่ในรูปแบบของการอ่านส่วนประกอบไบนารีแบบขยายขนาด 16 บิต, แสดงในรูปแบบ 0.0625 ℃/lsb, โดยที่ s เป็นบิตสัญญาณ. ตัวอย่างเช่น, เอาต์พุตดิจิตอล +125 ℃คือ 07d0h, เอาต์พุตดิจิตอล +25.0625 ℃คือ 0191h, เอาต์พุตดิจิตอล -25.0625 ℃คือ FF6FH, และเอาต์พุตดิจิตอล -55 ℃คือ FC90H.
23
22
21
20
2-1
2-2
2-3
2-4
ค่าอุณหภูมิต่ำไบต์
MSBLSB
ส
ส
ส
ส
ส
22
25
24
ค่าอุณหภูมิไบต์สูง
สัญญาณเตือนที่อุณหภูมิสูงและต่ำทำให้เกิด TH และ TL, และการลงทะเบียนการกำหนดค่าประกอบด้วยหนึ่งไบต์ของ EEPROM. คำสั่งฟังก์ชันหน่วยความจำสามารถใช้ในการเขียนถึง th, TL, หรือการลงทะเบียนการกำหนดค่า. รูปแบบของการลงทะเบียนการกำหนดค่ามีดังนี้:
0
R1
R0
1
1
1
1
1
MSBLSB
R1 และ R0 กำหนดจำนวนหลักของความแม่นยำสำหรับการแปลงอุณหภูมิ: r1r0 = “00”, 9-ความแม่นยำเล็กน้อย, เวลาการแปลงสูงสุดคือ 93.75ms; r1r0 = “01”, 10-ความแม่นยำเล็กน้อย, เวลาแปลงสูงสุดคือ 187.5ms. r1r0 = “10”, 11-ความแม่นยำเล็กน้อย, เวลาการแปลงสูงสุดคือ 375ms. r1r0 = “11”, 12-ความแม่นยำเล็กน้อย, เวลาการแปลงสูงสุดคือ 750ms. ค่าเริ่มต้นคือความแม่นยำ 12 บิตเมื่อไม่ได้ตั้งโปรแกรมไว้.
การลงทะเบียนความเร็วสูงคือหน่วยความจำ 9 ไบต์. สองไบต์แรกมีข้อมูลดิจิตอลของอุณหภูมิที่วัดได้; 3rd, 4ไทย, และไบต์ที่ 5 เป็นสำเนาชั่วคราวของ Th, TL, และการลงทะเบียนการกำหนดค่า, ตามลำดับ, และจะได้รับการรีเฟรชทุกครั้งที่มีการรีเซ็ตพลังงานเกิดขึ้น; ที่ 6, 7ไทย, และไม่ได้ใช้ไบต์ที่ 8 และแสดงเป็นตรรกะทั้งหมด 1S; ไบต์ที่ 9 อ่านรหัส CRC ของทั้งหมดก่อนหน้านี้ 8 ไบต์, ซึ่งสามารถใช้เพื่อให้แน่ใจว่าการสื่อสารที่ถูกต้อง.
3. ลำดับการทำงาน DS18B20
การไหลของโปรโตคอลการทำงานบรรทัดแรกของ DS18B20 คือ: การเริ่มต้น→คำสั่งการดำเนินการ ROM →คำสั่งการทำงานของหน่วยความจำ→การส่งข้อมูล. ลำดับการทำงานรวมถึงลำดับการเริ่มต้น, เขียนลำดับและอ่านลำดับ, ดังแสดงในรูป 3 (อัน) (ข) (C).
(อัน) ลำดับการเริ่มต้น
(C) อ่านลำดับ
รูป 3, ไดอะแกรมลำดับการทำงาน DS18B20
4. การออกแบบอินเตอร์เฟสทั่วไปของ DS18B20 และไมโครคอมพิวเตอร์ชิปเดี่ยว
รูป 4 ใช้ไมโครคอมพิวเตอร์ MCS-51 ซีรี่ส์เป็นตัวอย่างในการวาดการเชื่อมต่อทั่วไประหว่าง DS18B20 และไมโครโปรเซสเซอร์. ในรูป 4 (อัน), DS18B20 ใช้โหมดแหล่งจ่ายไฟปรสิต, และเทอร์มินัล VDD และ GND ของมันมีสายดิน. ในรูป 4 (ข), DS18B20 ใช้โหมดแหล่งจ่ายไฟภายนอก, และเทอร์มินัล VDD ของมันใช้พลังงานจากแหล่งจ่ายไฟ 3V ~ 5.5V.
อัน) โหมดการทำงานของแหล่งจ่ายไฟกาฝาก
(ข) โหมดการทำงานของแหล่งจ่ายไฟภายนอก
รูป 4 แผนภาพการเชื่อมต่อทั่วไปของ DS18B20 และไมโครโปรเซสเซอร์
สมมติว่าความถี่คริสตัลที่ใช้โดยระบบไมโครคอมพิวเตอร์ชิปเดี่ยวคือ 12MHz, รูทีนย่อยสามเส้นถูกเขียนขึ้นตามช่วงเวลาเริ่มต้น, เขียนเวลาและอ่านเวลาของ DS18B20: init คือรูทีนย่อยการเริ่มต้น; เขียนคือการเขียน (คำสั่งหรือข้อมูล) รูทีนย่อย; อ่านคือรูทีนย่อยข้อมูลการอ่าน. การอ่านและการเขียนข้อมูลทั้งหมดเริ่มต้นจากบิตต่ำสุด.
dateQUP1.0
-
การเริ่มต้น:Clrea
รวมกัน:setbdat
movr2, # 200
INI11:clrdat
djnzr2, ini11; โฮสต์ส่งพัลส์รีเซ็ตสำหรับ3μs× 200 = 600μs
setbdat; โฮสต์ปล่อยรถบัส, และสายพอร์ตจะเปลี่ยนเป็นอินพุต
movr2, # 30
ใน 12:djnzr2, ini12; ds18b20 รอ2μs× 30 = 60μs
CLRC
orlc,ที่; เป็นสายข้อมูล DS18B20 ต่ำ (มีชีพจรอยู่)?
jcini10; DS18B20 ยังไม่พร้อม, เริ่มใหม่
movr6, #80
INI13: orlc, ที่
Jacini14; สายข้อมูล DS18B20 สูง, การเริ่มต้นประสบความสำเร็จ
djnzr6, INI13; เส้นข้อมูลระดับต่ำสามารถอยู่ได้สำหรับ3μs× 80 = 240ms
sjmpini10; การเริ่มต้นล้มเหลว, รีสตาร์ท
INI14: modr2, #240
In15: djnzr2, NI15; DS18B20 ตอบสนองอย่างน้อย2μs× 240 - 48 0μs
ขออีก
;-
เขียน:Clrea
movr3, # 8;วง 8 ครั้ง, เขียนไบต์
WR11:setbdat
movr4, # 8
RRCA;เขียนบิตย้ายจาก A ไปยัง CY
clrdat
WR12:DJNZR4, WR12
;รอ16μs
movdat,ค;คำสั่งจะถูกส่งไปยัง DS18B20 บิตทีละบิต
movr4, # 20
WR13:DJNZR4, WR1 3
; ตรวจสอบให้แน่ใจว่ากระบวนการเขียนมีอายุการใช้งานสำหรับ60μs
DJNZR3, WR11
; ดำเนินการต่อก่อนส่งไบต์
setbdat
ขออีก
;-
อ่าน:Clrea
movr6, # 8; วง 8 ครั้ง, อ่านไบต์
RD11:clrdat
movr4, # 4
ทำให้หมดไป; ระดับต่ำเป็นเวลา2μs
setbdat; ตั้งค่าบรรทัดพอร์ตเป็นอินพุต
RD12:DJNZR4, RD12
; รอ8μs
การเคลื่อนไหว,จาก t
;โฮสต์อ่านข้อมูลของ DS18B20 บิตทีละบิต
RRCA;ข้อมูลการอ่านถูกย้ายไปยัง
movr5, # 30
RD13:DJNZR5, RD13
;ตรวจสอบให้แน่ใจว่ากระบวนการอ่านใช้งานได้นาน60μs
DJNZR6, RD11
;หลังจากอ่านไบต์ข้อมูล, เก็บไว้ใน
setbdat
ขออีก
;-
โฮสต์ต้องผ่านสามขั้นตอนเพื่อควบคุม DS18B20 เพื่อการแปลงอุณหภูมิให้เสร็จสมบูรณ์: การเริ่มต้น, คำแนะนำการดำเนินการ ROM, และคำแนะนำการทำงานของหน่วยความจำ. DS18B20 จะต้องเริ่มต้นการแปลงก่อนที่จะอ่านค่าการแปลงอุณหภูมิ. สมมติว่ามีเพียงชิปเดียวเท่านั้นที่เชื่อมต่อกับหนึ่งบรรทัด, ใช้ความแม่นยำในการแปลง 12 บิตเริ่มต้น, และใช้แหล่งจ่ายไฟภายนอก, สามารถเขียนรูทีนรูทีนย่อยเพื่อทำการแปลงและอ่านค่าอุณหภูมิให้เสร็จสมบูรณ์.
มีพรสวรรค์:lcallinit
mova,# 0cch
lcallwrite; ส่งคำสั่ง skip rom
mova,# 44H
lcallwrite; ส่งคำสั่งเริ่มต้นการแปลง
lcallinit
mova,# 0cch; ส่งคำสั่ง skip rom
lcallwrite
mova,# 0BH; ส่งคำสั่ง Read Memory
lcallwrite
lcallread
movwdlsb,ก
; ส่งไบต์ต่ำของค่าอุณหภูมิไปยัง WDLSB
lcallread
movwdmsb,ก
; ส่งค่าอุณหภูมิไบต์สูงไปยัง WDMSB
ขออีก
-
ไบต์สูงของค่าอุณหภูมิที่อ่านโดยรูทีนย่อย GetWd จะถูกส่งไปยังหน่วย WDMSB, และไบต์ต่ำจะถูกส่งไปยังหน่วย WDLSB. จากนั้นตามรูปแบบการเป็นตัวแทนของไบต์ค่าอุณหภูมิและบิตสัญญาณของมัน, ค่าอุณหภูมิที่แท้จริงสามารถรับได้ผ่านการแปลงอย่างง่าย.
หากมีการเชื่อมต่อ DS18B20 หลายรายการในหนึ่งบรรทัด, โหมดการเชื่อมต่อแหล่งจ่ายไฟปรสิตถูกนำมาใช้, การกำหนดค่าความแม่นยำในการแปลง, สัญญาณเตือนขีด จำกัด สูงและต่ำ, ฯลฯ. จำเป็นต้องมี. จากนั้นการเขียนรูทีนย่อย getwd จะซับซ้อนมากขึ้น. เนื่องจากข้อ จำกัด ด้านพื้นที่, ส่วนนี้จะไม่ถูกอธิบายในรายละเอียด. โปรดดูเนื้อหาที่เกี่ยวข้อง.
เราได้นำ DS18B20 ไปใช้กับไฟล์ “อ่างความร้อนในครัวเรือน” ระบบควบคุมที่เราพัฒนาขึ้น. ความเร็วในการแปลงที่รวดเร็ว, ความแม่นยำในการแปลงสูง, และอินเทอร์เฟซที่เรียบง่ายกับไมโครโปรเซสเซอร์ได้นำความสะดวกอย่างมากในการออกแบบฮาร์ดแวร์, ลดต้นทุนอย่างมีประสิทธิภาพและทำให้รอบการพัฒนาสั้นลง.
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



