DS18B20 ของฉันกำลังอ่านสูง ฉันจะทำให้มันคืนอุณหภูมิที่ถูกต้องได้อย่างไร?


10

ฉันกำลังทำงานกับระบบควบคุมความร้อนสำหรับบ้านของฉัน แต่มีปัญหากับเซ็นเซอร์อุณหภูมิอ่านสูงกว่าที่ฉันคาดไว้

ฉันมีโคลน Arduino Mini Mini Pro 5V ติดกับโมดูลรีเลย์หน้าจอ HD47780 และโมดูล Tiny RTC ที่มี DS18B20 ติดอยู่

DS18B20 ใช้พลังงานจาก 5v Vcc ที่ใช้กับโมดูล Tiny RTC แทนที่จะใช้พลังงานปรสิตในบรรทัด DQ (เพราะฉันไม่แน่ใจว่าไลบรารี Onewire สนับสนุนโหมดการทำงานนี้) และแผ่นข้อมูล DS18B20บอกว่า Vcc อาจอยู่ระหว่าง 3.0v และ 5.5v ฉันวัดพลังงานที่ได้รับการควบคุมจาก Mini Pro ที่กำลัง 5.2 โวลต์

ฉันกำลังเปรียบเทียบอุณหภูมิจาก DS ที่มีเทอร์โมที่มีอยู่ในห้องพัก (BI โลหะ) จอภาพ RS อุณหภูมิสก์ท็อปที่มีสองเซ็นเซอร์ขนาดเล็ก'เทอร์โมไฮโกรมิเตอร์'และสองโลหะเครื่องวัดอุณหภูมิตู้เย็น (ในไตรมาสบนของอุณหภูมิของมัน ช่วง) † ค่าที่อ่านได้จาก DS นั้นจะสูงกว่าค่าที่อ่านได้จากเซ็นเซอร์อื่น ๆ ประมาณ 1-2 องศาซึ่งอยู่ในระดับของกันและกัน

†ไม่ใช่ของจริง แต่เป็นสิ่งที่คล้ายกัน

การอ่านฟอรัมต่าง ๆ ฉันได้ยินมาว่าเซ็นเซอร์เหล่านี้ค่อนข้างแม่นยำ แต่อาจได้รับความร้อนจากส่วนประกอบที่อยู่ใกล้ ๆ พวกเขาดังนั้นฉันจึงย้ายเซ็นเซอร์ไปยังสายเคเบิลขนาด 20 ซม. และวางไว้ห่างจากอุปกรณ์อิเล็กทรอนิกส์อื่น ๆ เรื่องนี้ไม่ทำให้เกิดความแตกต่าง

ฉันอ่านแล้วว่า DS สามารถกลายเป็นความร้อนในตัวเองได้หากมีแรงดันไฟฟ้า Vcc สูงเกินไปดังนั้นฉันจึงเพิ่ม LED สีแดงที่มีแรงดัน 1.7v ตกและวัดแรงดันไฟฟ้าใหม่บน DS เป็น 3.5v แต่อีกครั้งหลังจากรอ อุณหภูมิจะคงที่อีกครั้งทำให้ไม่แตกต่างกัน

ใครช่วยแนะนำว่าทำไม DS ถึงอ่านสูงและฉันจะทำอย่างไรเพื่อป้องกันปัญหานี้


คุณมีความมั่นใจแค่ไหนที่เทอร์โมสตัลในห้องของคุณไม่ได้อ่านแค่ระดับต่ำแค่ 1-2 องศาเท่านั้น? คุณควรจะได้รับเครื่องวัดอุณหภูมิที่สามและเปรียบเทียบเพื่อกำหนดตำแหน่งของคุณ offset เป็นจริงที่มาจาก เนื่องจากเทอร์โมมิเตอร์ RS นั้นใช้อุปกรณ์อิเล็กทรอนิคส์เดียวกันกับเซ็นเซอร์ทั้งสองจึงไม่น่าจะมีประโยชน์อะไรเลยสำหรับการอ้างอิงการสอบเทียบสองแบบ
Connor Wolf

คำตอบ:


9

ฉันได้วางเซ็นเซอร์ DS18B20 จำนวนมากเข้าไว้ในโหนดเซ็นเซอร์ต่างๆ - อาจจะประมาณ 50 หรือมากกว่านั้น ฉันได้เรียนรู้เล็กน้อยเกี่ยวกับการอ่านที่ส่งคืนจากพวกเขา ฉันรู้ว่าคุณได้แยกสิ่งเหล่านี้บางอย่างออกจากสาเหตุ แต่ก็เป็นการดีที่จะยืนยันว่าปัญหาเหล่านี้เป็นปัญหา

ฉันไม่รู้ว่าคุณใช้เซลเซียสหรือฟาเรนไฮต์หรือไม่ดังนั้นระดับของปัญหาจึงไม่ชัดเจน

เครื่องทำความร้อนที่มีการแปล

ฉันไม่คิดว่า Arduino เป็นชิป "ร้อน" แต่การวาง DS18B20 ไว้ในตู้ที่มี Arduino และ LCD ทำให้ฉันเห็นการอ่านสูงกว่าที่คาดไว้ประมาณ 2-3 ° C

การย้ายมันออกไปนอกตัวเครื่องได้รับการแก้ไข

ความร้อนจากการแปลงสูง / บ่อย

หากคุณให้ชิปที่มี Vcc สูงและทำการแปลงบ่อยครั้ง (เช่นบ่อยเท่าที่คุณจะทำได้) ชิปนั้นจะอุ่นขึ้น ฉันเห็นการอ่านที่เพิ่มขึ้นนี้ประมาณ 1-2 ° C

ฉันไม่ได้เห็นปัญหาของ Vcc สูงเพียงอย่างเดียว แต่ฉันใช้ DS18B20 ส่วนใหญ่ในโหมดกาฝากและแปลงได้มากที่สุดทุกๆ 10 วินาที โดยทั่วไปโหมดที่ทำงานในโหมดแอคทีฟจะปิดเครื่องเมื่อไม่ได้ใช้งาน

OneWire และ DallasTemperature ทำหน้าที่สนับสนุนโหมดกาฝาก

เซ็นเซอร์อุณหภูมิบางตัวเท่านั้นที่ถูกสร้างขึ้น

ฉันมีเซ็นเซอร์วัดอุณหภูมิหลายตัวก่อนที่ฉันจะเริ่มเล่นกับ DS18B20 เกือบไม่มีข้อยกเว้นเหล่านี้อยู่ภายใต้การอ่าน ส่วนใหญ่ขึ้นอยู่กับเทอร์มิสเตอร์และการสอบเทียบไม่ดี ฉันคิดว่า DS18B20 อ่านมากกว่า แต่เมื่อฉันใช้เทอร์โมคัปเปิลและมิเตอร์ที่ดีฉันสามารถตรวจสอบว่ามันถูกต้อง

นี่คือการเรียนรู้ที่จะเชื่อถือ DS18B20

ความร้อนดำเนินการตามลวด

หากคุณมีเซ็นเซอร์บนลวดเส้นลวดจะนำความร้อนมาใช้อย่างน่าประหลาดใจ นี่อาจเป็นปัญหาเมื่อใช้สายไฟตามท่อ

ปลอม DS18B20

เซ็นเซอร์เหล่านี้ได้รับความนิยมอย่างมากและสิ่งนี้ดูเหมือนจะทำให้เกิดการปลอมขึ้นมา ฉันมีเซ็นเซอร์กันน้ำสเตนเลสสตีลหลายชุดที่อ่านเกินกำหนดและหมดเวลา พวกเขาทำงานกับห้องสมุด OneWire แต่ไม่ใช่อาจารย์ DS2482 OneWire ฉันเคยได้ยินว่าคนที่ใส่แบตเตอรี่ TO-92 ปกติเป็นของปลอมเช่นกัน


ในภูมิปัญญาของซอฟต์แวร์กระดานฉันไม่ได้รับอนุญาตให้ตอบคำถามนี้ดังนั้นฉันจะเพิ่มความคิดเห็นที่นี่ เมื่อฉันพบวิธีที่ยากในgithub.com/PaulStoffregen/OneWire/issues/91หากคุณใช้ชิป 3.3V คุณต้องเปลี่ยนตัวต้านทาน 4.7k เป็นตัวต้านทาน 2.7k หรือเซ็นเซอร์บางตัวจะส่งคืนค่าที่ไม่ถูกต้อง
Marc Merlin

2

ในกรณีของฉันการเดินสายระหว่าง uC ของฉันและเซ็นเซอร์สั้นเกินไปและส่งความร้อน ฉันคิดว่าไม่น่าจะเป็นไปได้ในตอนแรกเนื่องจากเซ็นเซอร์อุณหภูมิอื่นกำลังรายงานอุณหภูมิที่แม่นยำในระยะทางเดียวกัน ฉันย้ายมันไปยังตำแหน่งอื่นบนกระดานและ voila!


1

บางทีคุณอาจต้องการปรับเทียบเซ็นเซอร์ของคุณ

มันจะอ่านอะไรเมื่อแช่ในน้ำเดือด (สมมติว่าระดับน้ำทะเล)? 102.5 องศาเซลเซียส นั่นจะให้การสอบเทียบที่อุณหภูมิสูงถึง -2.5C

เห็นได้ชัดว่าดีกว่าการสอบเทียบรอบอุณหภูมิที่คุณคาดหวังให้ฉันวัด นั่นหมายถึงการไว้วางใจ (หรือค่าเฉลี่ย?) อุปกรณ์การวัดบางอย่างและปรับเทียบกับสิ่งนั้น


1

ฉันเห็นการชดเชยหลายองศา C เมื่อใช้ DS18B20 บนบัส 3.3V เปลี่ยนเป็นบัส 5.0V ที่เสถียรและฉันได้รับค่าที่สมเหตุสมผลมากขึ้น (ทดสอบโดยมีและไม่มีกำลังกาฝาก)


น่าสนใจขอบคุณและตรงข้ามกับสิ่งที่บางคนรายงาน ฉันสงสัยว่านี่เป็นปัญหาของ DS18B20 ปลอมหรือไม่
มาร์คบูธ

0

ฉันได้ทำการทดลอง ถ้า DS18B20 ใช้สายสั้น <1 ซม. ไปยัง Arduino Pro Micro ของฉันการอ่านค่านั้นมากกว่าระดับสิ่งแวดล้อม 5 องศา บนสายเคเบิลที่มีความยาว> 10 ซม. จากบอร์ด arduino และไม่ว่าจะติดตั้งตัวต้านทานไว้ที่ใด (ใกล้กับ arduino หรือใกล้กับ DS18B20) การอ่านค่าก็ดี

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.