วิธีที่ง่ายที่สุดในการสอบเทียบเทอร์มิสเตอร์คืออะไร?


11

ในฐานะที่เป็นงานอดิเรกที่ไม่สามารถเข้าถึงอุปกรณ์ในห้องทดลองได้จริง ๆ แล้วมันเป็นไปไม่ได้เลยที่ฉันจะสอบเทียบเทอร์มิสเตอร์ที่ฉันมี

แน่นอนว่ามีเซ็นเซอร์อุณหภูมิสอบเทียบเช่น DS18B20 แต่เทอร์มิสเตอร์เป็นพิเศษสำหรับ MCU ที่ช้าเช่น Aruino UNO (เมื่อเทียบกับ MCU ใหม่) เป็นปลากระพง

เรามีตัวเลือกอะไรบ้างสำหรับการสอบเทียบเทอร์มิสเตอร์โดยไม่ต้องใช้อุปกรณ์ในห้องปฏิบัติการ


1
ใช้เซ็นเซอร์สอบเทียบเป็น DS18B20 เพื่อรับคุณสมบัติของเทอร์มิสเตอร์
Janka

"snappier" หมายถึงอะไร นั่นไม่ได้ฟังดูเป็นเหตุผลที่ดีถ้าคุณต้องการแก้ไขซอฟต์แวร์บนเทอร์มิสเตอร์ แต่คุณไม่ได้ใช้ DS18B20
Elliot Alderson

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

2
@newbie การสอบเทียบอุณหภูมิเพื่อความแม่นยำนั้นเป็นเรื่องยาก บางช่วงยากกว่าช่วงอื่น ๆ จุดเยือกแข็งของวัสดุที่มีอยู่ทั่วไปสามารถช่วยได้มากขึ้นดังนั้นหากช่วงของคุณรวมวัสดุเหล่านั้นมากขึ้น แต่การอ้างอิงที่ถูกต้องจะสามารถตรวจสอบย้อนกลับไปยังมาตรฐาน NIST หรือ DIN (หรือกลุ่มที่คล้ายกัน) ที่เก็บไว้ในห้องทดลองและจัดการโดยนักฟิสิกส์หรือสองคน มันจะช่วยคำถามของคุณหากคุณระบุช่วงอุณหภูมิและความแม่นยำและความแม่นยำที่คุณค้นหาในช่วงนั้น
jonk

1
@newbie แต่อยู่บ้าน? มองหาความบริสุทธิ์แล้วสร้างชุดน้ำแข็ง / ของเหลวหรืออื่น ๆ หม้อไอน้ำกลั่นตัวบริสุทธิ์ ตัวอย่างเช่นน้ำแข็งที่ผสมกับน้ำมักถูกนำมาใช้มาก - แต่จะช่วยได้มากพอหรือไม่นั้นขึ้นอยู่กับตัวเลขความแม่นยำของคุณและงานที่คุณเต็มใจจะไป คุณยังสามารถใช้น้ำเดือดหรือกรดซัลฟูริกที่ได้รับอนุญาตให้กลั่นตัวที่ด้านล่างของขวด florence (ฉันใช้ทั้งคู่) แต่ผลลัพธ์ก็ขึ้นอยู่กับความสกปรกและความแปรปรวนของความกดอากาศและปัจจัยอื่น ๆ ความต้องการของคุณมีหลายอย่างที่ต้องคำนึงถึงสิ่งที่สามารถแนะนำได้สำหรับความพยายามในการใช้โฮมบรูว์
jonk

คำตอบ:


5

การปรับเทอร์มิสเตอร์ (หรือเซ็นเซอร์ส่วนใหญ่สำหรับเรื่องนั้น) เป็นกระบวนการสองขั้นตอน:

  1. วัดข้อมูลการสอบเทียบ
  2. กำหนดกฎหมายการสอบเทียบที่เหมาะสมกับข้อมูลนั้น

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

การวัดข้อมูลการสอบเทียบ

คุณต้องเติมตารางด้วยคู่ (T, R) เช่นค่าความต้านทานที่วัดได้ที่อุณหภูมิ ข้อมูลการสอบเทียบของคุณควรครอบคลุมช่วงอุณหภูมิทั้งหมดที่คุณต้องการในการใช้งานจริง จุดข้อมูลที่อยู่นอกช่วงนี้ไม่มีประโยชน์มาก มิฉะนั้นยิ่งมีจุดข้อมูลมากเท่าใดก็ยิ่งดีเท่านั้น

เพื่อวัดความต้านทานที่ผมแนะนำให้คุณ กับการใช้โอห์มมิเตอร์ ใช้การตั้งค่าเดียวกันแทนที่คุณจะใช้สำหรับการวัดการสอบเทียบภายหลังจริง ด้วยวิธีนี้ข้อผิดพลาดใด ๆ ที่เป็นระบบในการวัดความต้านทาน (เช่น ADC offset และ gain error) จะถูกสอบเทียบ

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

การใช้เทอร์โมมิเตอร์วัดไข้ที่รู้จักกันดีนั้นอาจจะง่ายกว่า แต่ก็ยังมีข้อแม้อยู่บ้าง:

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

วางทั้งสองเข้าด้วยกันภายในตู้ที่มีความเฉื่อยความร้อนสูง (ตู้เย็นหรือเตาอบ) อาจช่วยได้ที่นี่

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

การปรับกฎหมายการสอบเทียบ

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

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

การนำไฟฟ้าในเทอร์มิสเตอร์ NTC เป็นกระบวนการที่ทำงานด้วยความร้อน ความเป็นสื่อกระแสไฟฟ้าสามารถถูกจำลองโดย สมการ Arrhenius :

G = G exp (−E a / (k B T))

โดยที่ G เรียกว่า "ปัจจัยล่วงหน้าแทนค่า", E aคือพลังงานกระตุ้น , k Bคือ ค่าคงที่ Boltzmannและ T คืออุณหภูมิสัมบูรณ์

สิ่งนี้สามารถจัดใหม่เป็นกฎเส้นตรง:

1 / T = บันทึก A + B (R)

โดยที่ B = k B / E a ; A = B บันทึก (G ); และ log () เป็นลอการิทึมธรรมชาติ

หากคุณใช้ข้อมูลการสอบเทียบและพล็อต 1 / T เป็นฟังก์ชั่นของ log (R) (ซึ่งโดยทั่วไปคือพล็อต Arrheniusที่สลับแกน) คุณจะสังเกตเห็นว่ามันเกือบจะเป็นเส้นตรง แต่ไม่ใช่เส้นตรง การออกจากเส้นตรงส่วนใหญ่มาจากความจริงที่ว่าปัจจัยพรีเอ็กซ์โปเนนเชียลขึ้นกับอุณหภูมิเล็กน้อย เส้นโค้งนั้นเรียบเนียนพอที่จะติดตั้งได้อย่างง่ายดายด้วยพหุนามต่ำ:

1 / T = c 0 + c 1บันทึก (R) + c 2 บันทึก (R) 2 + c 3บันทึก (R) 3 + ...

หากช่วงอุณหภูมิที่คุณสนใจนั้นสั้นพอการประมาณเชิงเส้นอาจดีพอสำหรับคุณ คุณจะใช้สิ่งที่เรียกว่า““ model” โดยที่ค่าสัมประสิทธิ์βคือ 1 / B หากคุณใช้พหุนามระดับที่สามคุณอาจสังเกตเห็นว่า ค่าสัมประสิทธิ์c 2สามารถถูกละเลยได้ หากคุณเพิกเฉยคุณก็จะได้สมการ Steinhart – Hart ที่มีชื่อเสียงสม

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

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


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

2
@newbie: ฉันไม่เข้าใจ“ การอ่านค่าเทอร์มิสเตอร์เป็นประมาณ 2.2 องศา” เทอร์มิสเตอร์ไม่ให้การอ่านเป็นองศา คุณหมายถึงว่าคุณได้ลองใช้กฎหมายการสอบเทียบ (มาจากไหน?) ที่อ่านค่า 2.2 ° C? หากเป็นกรณีนี้และการชดเชยนี้เป็นค่าคงที่อย่างเคร่งครัดคุณเข้าใกล้มีข้อบกพร่องเล็กน้อยของการมีกฎหมายการแปลงที่ซับซ้อนมากขึ้นด้วยขั้นตอนทางคณิตศาสตร์พิเศษ หากการชดเชยไม่คงที่อย่างเคร่งครัดการทำซ้ำแบบพอดีควรให้ผลลัพธ์ที่ดีกว่า
Edgar Bonet

11

การอ่าน Thermistor นั้นค่อนข้างยุ่งยาก วิธีการสอบเทียบข้างต้นไม่มีผลตอบแทนต่อการตรวจจับข้อผิดพลาดมันจะสร้างสองจุดของเส้นโค้งลอการิทึม (เส้นโค้งการตอบสนองของเทอร์มิสเตอร์

ซึ่งหมายความว่าสำหรับการเปลี่ยนแปลงอุณหภูมิทุก ๆ 0.1 ° C การเปลี่ยนแปลงของนักข่าวที่มีต่อความต้านทานจะแตกต่างกันไปขึ้นอยู่กับช่วงของอุณหภูมิ ป้อนคำอธิบายรูปภาพที่นี่

ในตอนแรกคุณอาจพบข้อผิดพลาดประมาณ 2 ถึง 5 ° C จากอุณหภูมิจริง แต่ไม่มีข้อผิดพลาดเพียงการอ่านที่ไม่ดี

คุณไม่ได้โพสต์รายละเอียดใด ๆ เกี่ยวกับวิธีที่คุณอ่านเทอร์มิสเตอร์นี้ Arduino อาจจะเป็นอย่างไร ฉันต้องบอกว่าบางไลบรารีไม่ทำงานเลยดังนั้นคุณต้องสร้างฟังก์ชันเฉพาะเพื่อทำเช่นนั้น

โพสต์คำอธิบายโดยละเอียดเกี่ยวกับวิธีการอธิบายลักษณะและอ่านเทอร์มิสเตอร์ โพสต์เป็นภาษาสเปน แต่ในแท็กรหัสคำอธิบายทั้งหมดเป็นภาษาอังกฤษล้วน

เมื่อคุณได้รับ Coeficients ABC แล้วความผิดพลาดของคุณจะอยู่ที่ประมาณ 0.1 ° C จากการวัดอื่นแม้แต่ในสาย LAN ยาว 6 เมตร

การทดสอบเทอร์มิสเตอร์ 4 ตัว การทดสอบนี้อ่านในเวลาเดียวกันกับเทอร์มิสเตอร์ 4 ตัวคุณสามารถเห็นความแตกต่างของอุณหภูมิเล็กน้อยจาก 2 ตัวในมือของฉัน


@newbie นี่เป็นวิธีการที่เหมาะสม หากคุณไม่สามารถทำตามคำแนะนำได้โปรดตอบกลับภายในหนึ่งวันและฉันจะค้นหารหัส arduino ของฉันและค้นหาข้อมูลอ้างอิงที่มีและเขียนคำตอบที่นี่
piojo

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

ฉันคัดลอกและวางส่วนรหัสของคำตอบ; // นี่คือตัวอย่างโค้ดเกี่ยวกับวิธีการอ่านเทอร์มิสเตอร์ "Thermimistor.h" Lib ที่นั่นเท่านั้น acepts Beta // coeficient และในกรณีของฉันให้ผลลัพธ์ที่ไม่ถูกต้องนี่เป็นวิธีที่แม่นยำมากขึ้นในการอ่าน // เทอร์มิสเตอร์ ในกรณีที่คุณมี meassurements ที่แปลกหรือผิดโปรดทำตามขั้นตอนนี้: // // เพื่อให้ได้ผลลัพธ์ acurrate สำหรับรหัสนี้คุณจะต้อง; // มัลติมิเตอร์, เทอร์มิสเตอร์ NTC, อีกอุณหภูมิใช้งาน // โพรบมิเตอร์ // ขั้นตอนที่ 1 - ตั้งค่ามัลติมิเตอร์บนโหมดความต้านทานการ meassurement
Alejandro Santiago

// ขั้นตอนที่ 2 - อ่านและบันทึกความต้านทานที่เกิดขึ้นจริงของเทอร์มิสเตอร์ // และอุณหภูมิที่แท้จริง (อนุญาต 1 นาทีเพื่อให้ meassurement เสถียร) // น้ำร้อนและถ้วย // ขั้นตอนที่ 3 - วางเซ็นเซอร์ทั้งคู่ (เทอร์มิสเตอร์และโพรบวัดอุณหภูมิใน // ผู้รับที่มีน้ำที่อุณหภูมิแวดล้อม) // ในถ้วยอีกใบให้น้ำอุ่น // เพิ่มน้ำร้อนจนกว่าคุณจะร้อนเกินกว่า 10 ° C เครื่องวัดอุณหภูมิรอ // การเสถียรของ meassurement และเพิ่มอุณหภูมิและความต้านทาน // เพิ่มน้ำมากขึ้นเพื่อให้ความร้อนแก่องค์ประกอบ 20 °จาก meassurement แรก // จดบันทึกอุณหภูมิและความต้านทาน
Alejandro Santiago

1
@ newbie หากคุณมีเทอร์มิสเตอร์ NTC คุณจะต้องคำนวณค่าคงที่ A, B และ C และเสียบเข้ากับสมการ Steinhart Hart เพื่อแก้อุณหภูมิจากความต้านทาน คุณต้องการการวัดอุณหภูมิ / ความต้านทานสามระดับเพื่อค้นหาค่าคงที่เหล่านี้ (ค่าคงที่แตกต่างกันตามเทอร์มิสเตอร์และการหาค่าคงที่คือการสอบเทียบของคุณ) บทความนี้แสดงวิธีการทำ แต่เนื่องจากใช้คณิตศาสตร์เมทริกซ์ฉันแนะนำให้หาเครื่องคิดเลขออนไลน์ thinksrs.com/downloads/pdfs/applicationnotes/ …
piojo

9

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

หากเซ็นเซอร์ของคุณทนได้ให้วางลงในกาต้มน้ำเดือด ที่ระดับน้ำทะเลที่จะให้การอ่านอ้างอิงได้ 100 ° C

หากคุณต้องการให้เซ็นเซอร์ของคุณกันน้ำเพื่อกันซึมคุณจะต้องเผื่อเวลาสำหรับการอ่านเพื่อทำให้เสถียร

แผนผัง

จำลองวงจรนี้ - แผนผังที่สร้างโดยใช้CircuitLab

รูปที่ 1. เส้นโค้งการปรับเทียบเชิงเส้นอย่างง่าย

  • y1 คือความต้านทานแรงดันไฟฟ้าหรือค่า ADC อ่านที่ 0 ° C
  • y2 คือความต้านทานแรงดันไฟฟ้าหรือค่า ADC อ่านที่ 100 ° C

T=100Y-Y1Y2-Y1

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


3
สิ่งนี้จะให้สองคะแนนซึ่งคุณสามารถใช้ในการคำนวณเบต้าสำหรับทั้งสอง temps การตอบสนองในช่วงนั้นจะไม่มีที่ไหนเลยใกล้กับเส้นตรง (สมมติว่า OP หมายถึงเมื่อเขา / เธอเรียกมันว่า "เทอร์มิสเตอร์")
Scott Seidman

1
@newbie: ดูการอัปเดต
ทรานซิสเตอร์

5
@newbie ตามที่ Transistor เขียนในตอนท้ายวิธีการนี้อาจไม่ดีพอ ฉันไม่สามารถจินตนาการได้ว่ามันจะดีพอตรงไปตรงมา สิ่งเดียวที่วิธีนี้จะทำให้คุณได้คือการทำซ้ำ (ควร 40 ° C จะเท่ากับ 40 ° C เสมอ แต่จริง ๆ แล้วอาจเป็น 20 ° C หรือ 60 ° C)
piojo

2
น้ำบริสุทธิ์เดือดที่ 100 ° C หากความดันอยู่ที่ 1.01325 บาร์หรือ 1,013.25 มิลลิบาร์หรือเฮกตาร์ ความดันที่ระดับน้ำทะเลขึ้นอยู่กับสภาพอากาศ
Uwe

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

2

เครื่องวัดอุณหภูมิเชิงเส้นมีข้อผิดพลาดกำไรและชดเชย

  • อุปกรณ์ไบโพลาร์น่าจะชดเชยออฟเซตที่ 0V
  • บริดจ์ตัวจ่ายเดี่ยวจะมีอัตราส่วน Vref หรือ R ของ Vref หรือ Vcc โดยที่ออฟเซ็ตถูกโมฆะที่อุณหภูมิที่กำหนด โดยปกติจะเป็นแบบสมมาตรซึ่งจะสอดคล้องกับจุดกึ่งกลางของช่วงการออกแบบของคุณ
  • เทอร์มิสเตอร์ถูกสอบเทียบที่ 25'C พร้อมกราฟความไวเฉพาะกับตัวแปร 2 ตัว

  • ในการปรับเทียบคุณต้องมีการวัด 2 ระดับเท่านั้น

    • ปรับค่าใด ๆ ที่ error voltage = null = 0, Vt = Vref
    • ได้รับการปรับที่ T สูงสุด
      • สำหรับบริดจ์ 4 R ทั่วไปซึ่งโดยปกติจะเป็นจุดกึ่งกลางอุณหภูมิ
  • ใช้เทอร์โมมิเตอร์ที่ดีกว่าเพื่อการสอบเทียบหรือ
    • ใช้น้ำน้ำแข็งและน้ำเดือดเป็น 0, 100'C
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.