เซนเซอร์อุณหภูมิสายยาว อ่านได้บ้างไม่ได้บ้าง

เซนเซอร์อุณหภูมิสายยาว อ่านได้บ้างไม่ได้บ้าง - Image 1
08/08/2025•Admin Team•
IoTSensorTutorial

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

ในจังหวะนี้ อาการอ่านได้บ้างไม่ได้บ้างจึงไม่ได้หมายความว่าโค้ดที่เคยใช้พังไปเองเสมอไป ระบบที่กำลังสื่อสารกันเปลี่ยนจากชุดสายสั้นบนโต๊ะเป็นอีกชุดหนึ่งแล้ว แม้ชื่อเซนเซอร์จะยังเป็น DS18B20 เหมือนเดิมก็ตาม

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

รู้จักการต่อที่ใช้อยู่ก่อนเพิ่มความยาว

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

ตัวเซนเซอร์รองรับทั้งการจ่ายไฟผ่านขา VDD และแบบ parasite power ที่อาศัยสายข้อมูล เงื่อนไขการดูแลไฟในช่วงแปลงอุณหภูมิจึงต่างกันด้วย หากทำระบบใหม่และยังมีอิสระเรื่องสาย การแยกไฟเลี้ยงกับข้อมูลจะช่วยให้เราไล่ปัญหาแต่ละส่วนได้ตรงไปตรงมาขึ้น แต่ก็ยังต้องตรวจแรงดันที่หัววัดจริง

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

แนวคิดเส้นทางไฟเลี้ยง สายข้อมูลที่มี pull-up และกราวด์ร่วมของ DS18B20 แบบจ่ายไฟภายนอก ไม่ใช่วงจรเข้าขาจริง

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

pull-up กับรูปร่างของสายมีผลร่วมกัน

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

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

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

ถ้าจะลองปรับ pull-up ก็ควรตรวจข้อจำกัดการดึงสายและแรงดันร่วมกัน ไม่ลดค่าลงเรื่อยๆ โดยหวังว่าจะทำให้สายแข็งแรงขึ้นอย่างเดียว การปรับควรมีเหตุผลและทดสอบกับรูปแบบสายที่ตั้งใจใช้จริง

อ่านค่าต้องรอให้การแปลงเสร็จด้วย

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

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

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

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

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

ค่าผิดปกติควรมีสถานะของมันเอง

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

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

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

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

เก็บประวัติความผิดพลาดให้แยกจากประวัติอุณหภูมิ

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

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

สรุป

เมื่อ DS18B20 เริ่มอ่านไม่สม่ำเสมอหลังเพิ่มสาย ให้ไล่ทั้งวิธีจ่ายไฟ pull-up รูปแบบการเดินสาย และจังหวะเริ่มวัดกับอ่านข้อมูล แล้วแยกความผิดพลาดออกจากอุณหภูมิจริงก่อนบันทึก การมีฐานทดสอบสายสั้นและรายการหัววัดที่ชัดจะช่วยให้รู้ว่าควรแก้การต่อส่วนไหน และทำให้ค่าที่นำไปใช้อธิบายสภาพหน้างานได้มากขึ้นครับ

Command Eng Logo
CMD yourNgineers
เลขประจำตัวผู้เสียภาษี0805564000814
บทความ
ติดต่อบริษัท คอมมานด์ เอ็นจ์ จำกัด
81/36 เพอร์เฟค พาร์คบางนาตำบลบางเสาธง อำเภอบางเสาธงจังหวัดสมุทรปราการ 10570
team@commandeng.in.th+66 89 393 5191
Facebook Page | Command EngLine | Command Eng Official
© Copyright 2022-2026 Command Eng Co., Ltd.v1.0.4 · 0d556ab · 2026-11-03 15:23