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 ไปใช้กับไฟล์ “อ่างความร้อนในครัวเรือน” ระบบควบคุมที่เราพัฒนาขึ้น. ความเร็วในการแปลงที่รวดเร็ว, ความแม่นยำในการแปลงสูง, และอินเทอร์เฟซที่เรียบง่ายกับไมโครโปรเซสเซอร์ได้นำความสะดวกอย่างมากในการออกแบบฮาร์ดแวร์, ลดต้นทุนอย่างมีประสิทธิภาพและทำให้รอบการพัฒนาสั้นลง.