ความน่าเชื่อถือของเซ็นเซอร์อุณหภูมิ DS18x20


11

ฉันใช้ DS18x20 ของ Maxim (จริง ๆ แล้วฉันมีมากกว่าหนึ่งตัวแปร) เซ็นเซอร์อุณหภูมิ 1 สายเพื่อบันทึกอุณหภูมิในห้องต่างๆในบ้านของฉันหนึ่งครั้งต่อนาที เกี่ยวกับการอ่านหนึ่งพันครั้งฉันได้รับบางสิ่งที่ปลอมกลับมาอย่างสมบูรณ์ ในช่วงกลางของลำดับที่ค่อยๆเพิ่มขึ้นจาก 65F เป็น 70F ฉันได้รับ -32.1F หรือ 15.64F

มีคนอื่นที่มีปัญหาแบบนั้นหรือนี่เป็นสิ่งผิดปกติกับการตั้งค่าของฉันหรือไม่? หากนี่เป็นเพียงปัญหาที่ทราบเกี่ยวกับสิ่งเหล่านี้ฉันจะต้องทำสิ่งที่ชอบอ่านสามครั้งและโยนออกนอกขอบเขต

เพียงไม่กี่คำสั่งเกี่ยวกับการตั้งค่าของฉัน:

  • ฉันทำงานที่ 3.3V
  • ฉันกำลังตรวจสอบผลรวมตรวจสอบการอ่านเมื่อมันกลับมาที่ arduino และตรงกับ (หรือฉันคิดว่ามันทำ - อาจมีข้อผิดพลาดในรหัสนั้นเสมอ)
  • สิ่งเหล่านี้กำลังหมดอำนาจปกติไม่ใช่กำลังของปรสิต
  • ฉันมีตัวต้านทานแบบดึงขึ้น 4.7K
  • ฉันใช้เซ็นเซอร์เดียวเท่านั้นในแต่ละแพลตฟอร์มการตรวจจับ
  • เซ็นเซอร์อยู่บน PCB ที่ติดกับ Arduino ซึ่งกำลังอ่าน
  • ฉันเห็นปัญหาเดียวกันกับการอ่านจากอาร์ดิโนต่าง ๆ (diecimilla, pro-mini, custom custom)

คำตอบ:


5

ฉันเห็นสิ่งนี้ในบางครั้งด้วย DS18B20 สำหรับแอปพลิเคชันของฉันมันง่ายพอที่จะกรองผลลัพธ์ปลอมด้วยรหัส


เป็นเรื่องดีที่ได้ยินว่ามีคนอื่นดูเหมือนสิ่งนั้น อัลกอริทึมการกรองของคุณคืออะไร?
edebill

ฉันอยากจะแนะนำให้คุณทำในสิ่งที่คุณพูดเอาการอ่าน 3 ครั้ง 5 จะดีขึ้น 7 ดีกว่านั้น แต่ถ้ามีข้อผิดพลาดของบางสิ่งรอบ ๆ 1/1000 คุณก็แค่ต้องใช้ 3 ค่ามัธยฐาน ปัญหาจะได้รับการแก้ไข ถ้าคุณใช้เวลา 5 มันจะเกิดเหตุการณ์ประหลาดที่จะมีปัญหา
Kortuk

ตอนนี้ฉันกำลัง 5 ฉันพยายามเพียงแค่เพิ่มสูงขึ้น 2 แต่ข้อผิดพลาดยังคงคืบคลานในคืนที่ผ่านมา (ฉันมี 3 เซ็นเซอร์อ่านทุกนาทีดังนั้นฉันได้รับดาต้าพอยน์หลายพันต่อวัน)
edebill

3

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


3

นี่อาจเป็นเพราะตัวควบคุมอ่านผิดอย่างน้อยหนึ่งบิตของการตอบสนองของอุณหภูมิภายใต้เงื่อนไขการโหลดสูงบางอย่างหรือเนื่องจากการรบกวนทางไฟฟ้าทำให้เกิดการรบกวนอย่างน้อยหนึ่งบิต

ลองดูแผ่นข้อมูลอย่างละเอียดที่นี่http://www.rentron.com/Files/ds18b20.pdf

บนหน้า 5 แสดงว่าลำดับไบนารีที่แน่นอนสำหรับ 85C คือ:

+85°C 0000 0101 0101 0000

ในทำนองเดียวกันสำหรับ 25C ก็คือ:

+25.0625°C 0000 0001 1001 0001

ในบางกรณีหากตัวควบคุมขาดหายไปสักหน่อยคุณจะได้รับค่าที่เป็นอุณหภูมิจริงซึ่งแสดงเป็นแบบไบนารี่และบิทกะบิต บ่อยครั้งที่นี่คือ 1 / 2x มูลค่าเป้าหมายใน C

บางครั้งคุณอาจได้รับสัญญาณรบกวนทางไฟฟ้าและผู้ควบคุมอ่านแทะทั้งหมด 1 วินาทีในกรณีนี้คุณจะได้รับตัวเลขเช่น 15.64 ซึ่งแสดงเป็นเลขฐานสองใกล้กับตัวเลขระหว่าง 65 และ 70F จริง ๆ พวงของ 1s ที่จุดเริ่มต้น


2

สำหรับสิ่งที่คุ้มค่าฉันได้ทำงานกับ DS18B20 สองสามเดือนก่อน ฉันถ่ายทำวิดีโอสั้นและเขียนบทความในบล็อกของฉันซึ่งมีลิงก์ไปยังตัวอย่างและโค้ดตัวอย่าง หวังว่านี่จะช่วยได้บ้าง! http://dailyduino.com/archives/552


2

ฉันมี 13 คนทำงานอยู่ในบ้านของฉันตั้งแต่ประมาณสี่ปีแล้ว ฐานข้อมูลยากต่อการจัดการอีกต่อไป (ฉันติดตามตัวอย่างทั้งหมด) แต่ฉันไม่เห็นพฤติกรรมแบบนี้ แต่ทุก ๆ ครั้งที่เซ็นเซอร์มากกว่าหนึ่งหยุดการทำงานและปิดกั้นสิ่งอื่น ๆ วิธีเดียวในการนี้ (ที่ฉันค้นพบ) คือการปิดแรงดันไฟฟ้าของอุปทานเป็นเวลาสองสามวินาที ดังนั้นฉันจึงเพิ่มรีเลย์เล็ก ๆ ลงในบอร์ดของฉันและเมื่อใดก็ตามที่ไมโครสัมผัสถึงพฤติกรรมนี้มันจะรีเซ็ตทั้งสายโซ่ของเซ็นเซอร์ มันเกิดขึ้นสองสามครั้งต่อสัปดาห์


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