สารบัญ:

การวัดอุณหภูมิจาก PT100 โดยใช้ Arduino: 6 ขั้นตอน (พร้อมรูปภาพ)
การวัดอุณหภูมิจาก PT100 โดยใช้ Arduino: 6 ขั้นตอน (พร้อมรูปภาพ)

วีดีโอ: การวัดอุณหภูมิจาก PT100 โดยใช้ Arduino: 6 ขั้นตอน (พร้อมรูปภาพ)

วีดีโอ: การวัดอุณหภูมิจาก PT100 โดยใช้ Arduino: 6 ขั้นตอน (พร้อมรูปภาพ)
วีดีโอ: รู้จัก PT 100 ใน 4 นาที 2024, พฤศจิกายน
Anonim
การวัดอุณหภูมิจาก PT100 โดยใช้ Arduino
การวัดอุณหภูมิจาก PT100 โดยใช้ Arduino

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

ขั้นตอนที่ 1: ส่วนประกอบ

1x PT100 (สองสาย)

1x Arduino (รุ่นใดก็ได้)

แอมพลิฟายเออร์การทำงาน 3x 741 (LM741 หรือ UA741)

ตัวต้านทาน 1x80ohm

ตัวต้านทาน 2x 3.9kohms

ตัวต้านทาน 2x 3.3kohms

ตัวต้านทาน 2x8.2kohms

ตัวต้านทาน 2x 47kohms

1x 5kohms โพเทนชิโอมิเตอร์

1x แหล่งจ่ายไฟสองขั้วหรือแบตเตอรี่ AA ขนาด 8x 1.5V

ฉันใช้ PT100 สองสาย PT100 สามและสี่สายจะมีวงจรที่แตกต่างกัน ค่าตัวต้านทานสำหรับสิ่งเหล่านี้ส่วนใหญ่ไม่จำเป็นต้องเหมือนกันทุกประการกับด้านบน แต่ถ้ามีตัวต้านทานคู่หนึ่งคือ 3.9Kohms หากคุณสลับพวกมันเป็น 5k คุณจะต้องสลับทั้งคู่เป็น 5k ในตอนนั้น ต้องเหมือนกัน เมื่อเราได้วงจร ผมจะพูดถึงผลของการเลือกค่าต่างๆ สำหรับแอมพลิฟายเออร์การทำงาน (op amps) คุณสามารถใช้ op amps อื่น ๆ ได้ แต่นี่คือสิ่งที่ฉันใช้

ขั้นตอนที่ 2: สะพานวีตสโตน

สะพานวีตสโตน
สะพานวีตสโตน
สะพานวีตสโตน
สะพานวีตสโตน
สะพานวีตสโตน
สะพานวีตสโตน

ต้องพูดถึงสูตรการหาอุณหภูมิจากความต้านทานของ PT100 ก่อน แล้วค่อยพูดถึงส่วนแรกของวงจร สูตรความต้านทานมีดังนี้

ภาพ
ภาพ

โดยที่ Rx คือความต้านทาน PT100, R0 คือความต้านทาน PT100 ที่ 0 องศา C, α คือค่าสัมประสิทธิ์ความต้านทานอุณหภูมิ และ T คืออุณหภูมิ

ภาพ
ภาพ

R0 คือ 100ohms เนื่องจากเป็น PT100 หากเป็น PT1000 R0 จะเป็น 1000ohms α คือ 0.00385 โอห์ม/องศา C ที่นำมาจากแผ่นข้อมูล นอกจากนี้ยังมีสูตรที่แม่นยำกว่าที่สามารถพบได้ที่นี่ แต่สูตรข้างต้นจะทำสำหรับโครงการนี้ ถ้าเราเปลี่ยนสูตรเราสามารถคำนวณอุณหภูมิสำหรับความต้านทานที่กำหนดได้:

ภาพ
ภาพ

สมมุติว่าเราต้องการวัดบางอย่างซึ่งจะมีช่วงอุณหภูมิ -51.85 ถึง 130 องศาเซลเซียส และเราวาง PT100 ไว้ในวงจรที่แสดงในรูปที่ 1 โดยใช้สมการข้างต้นและสมการของแรงดันไฟออกจากตัวแบ่งแรงดันไฟ (ดังรูป) ในรูปแรก) เราสามารถคำนวณช่วงแรงดันไฟฟ้าได้ ด้านล่างของช่วง T = -51.85(80ohms)

ภาพ
ภาพ

และที่ 130 องศา (150ohms):

ภาพ
ภาพ

ซึ่งจะให้ช่วง 0.1187V และ DC offset ที่ 0.142 เนื่องจากเรารู้ว่าอุณหภูมิของเราจะไม่มีวันต่ำกว่า -51.85 องศาเซลเซียส ซึ่งจะลดความไวในช่วงที่เราสนใจ (80 ถึง 130 โอห์ม) เมื่อเราขยายแรงดันไฟฟ้านี้ เพื่อกำจัด DC offset และเพิ่มความไวของเรา เราสามารถใช้ Wheatstone bridge ซึ่งแสดงในรูปภาพที่สอง

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

ภาพ
ภาพ

แรงดันไฟออกสำหรับ PT100 คือ 80ohms และใช้ค่าอื่นๆ ในภาพ:

ภาพ
ภาพ

และสำหรับ Pt100 คือ 150ohms:

ภาพ
ภาพ

เมื่อใช้วีทสโตน เราจะกำจัด DC offset และเพิ่มความไวหลังจากขยายสัญญาณ ตอนนี้เรารู้แล้วว่า Wheatstone bridge ทำงานอย่างไร เรามาพูดถึงสาเหตุที่เราใช้ 80ohms และ 3.3kohms กัน 80ohms เป็นประเภทที่อธิบายจากสูตรด้านบน เลือกค่านี้ (เราจะเรียกค่านี้ว่า offset resistor Roff) เป็นช่วงอุณหภูมิด้านล่างหรือดีกว่า ต่ำกว่าด้านล่างของช่วงเล็กน้อย หากใช้สำหรับ ระบบควบคุมสำหรับการควบคุมอุณหภูมิหรืออะไรทำนองนั้น คุณต้องการทราบว่าอุณหภูมิต่ำกว่าช่วงอุณหภูมิของคุณต่ำเพียงใด ดังนั้นหาก -51.85C อยู่ด้านล่างสุดของช่วงของคุณ ให้ใช้ 74.975 โอห์ม (-65 องศาเซลเซียส) สำหรับ Roff ของคุณ

ฉันเลือก 3.3k สำหรับ R1 และ R3 ด้วยเหตุผลสองประการ เพื่อจำกัดกระแสและเพิ่มความเป็นเส้นตรงของเอาต์พุต เนื่องจาก PT100 เปลี่ยนความต้านทานเนื่องจากอุณหภูมิ การส่งกระแสไฟที่มากเกินไปจะทำให้การอ่านค่าไม่ถูกต้องเนื่องจากการทำความร้อนในตัวเอง ดังนั้นฉันจึงเลือกกระแสสูงสุด 5-10mA เมื่อ PT100 เป็น 80ohms กระแสไฟจะอยู่ที่ 1.775mA ซึ่งต่ำกว่าช่วงสูงสุดอย่างปลอดภัย คุณลดความต้านทานเพื่อเพิ่มความไว แต่สิ่งนี้อาจส่งผลเสียต่อความเป็นเส้นตรง เนื่องจากเราจะใช้สมการของเส้นในภายหลัง (y=mx+c) ที่มีผลลัพธ์ที่ไม่ใช่เชิงเส้นจะทำให้เกิดข้อผิดพลาด ภาพที่สามมีกราฟของเอาต์พุตบริดจ์โดยใช้ตัวต้านทานบนที่ต่างกัน เส้นทึบคือเอาต์พุตจริง และเส้นประเป็นการประมาณเชิงเส้น คุณสามารถเห็นได้ในกราฟสีน้ำเงินเข้ม (R1&R3=200ohms) ให้ช่วงแรงดันไฟฟ้าที่ใหญ่ที่สุด แต่เอาต์พุตจะเป็นเส้นตรงน้อยที่สุด สีฟ้าอ่อน(R1&R3=3.3kohms) ให้ช่วงแรงดันไฟฟ้าที่เล็กที่สุด แต่เส้นประและเส้นทึบซ้อนทับกันแสดงว่าเป็นเส้นตรงได้ดีมาก

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

ขั้นตอนที่ 3: การขยายเสียง

การขยายเสียง
การขยายเสียง
การขยายเสียง
การขยายเสียง

ในขั้นตอนสุดท้าย เราพบว่าช่วงเอาต์พุตของตัวแบ่งแรงดันไฟฟ้าสองตัวที่ลบออกคือ 0 ถึง 0.1187 แต่เรายังไม่ได้พูดถึงวิธีลบแรงดันไฟฟ้าเหล่านี้ ในการทำเช่นนี้ เราจำเป็นต้องมีดิฟเฟอเรนเชียลแอมป์ซึ่งจะลบอินพุตหนึ่งรายการออกจากอีกอินพุตหนึ่งและขยายค่านี้ด้วยอัตราขยายของแอมป์ วงจรสำหรับแอมป์ดิฟเฟอเรนเชียลแสดงในภาพแรก คุณป้อน Vb+ ลงในอินพุทอินพุทและ Vb- ในอินพุทที่ไม่กลับด้านและเอาท์พุทจะเป็น Vb+ - Vb- โดยมีเกนหนึ่งคือไม่มีการขยาย แต่โดยการเพิ่มตัวต้านทานที่แสดงในภาพ เราได้เพิ่ม 5.731. กำไรจะได้รับโดย:

ภาพ
ภาพ

Ra คือ R5 & R7 และ Rb คือ R6 & R8 แรงดันไฟฟ้าออกได้มาจาก:

ภาพ
ภาพ

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

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

ภาพ
ภาพ

โดยที่ Rc คือตัวต้านทาน 3.9k สองตัวด้านบนและด้านล่างหม้อ

โดยการลด Rgain การขยายจะเพิ่มขึ้น จากนั้นที่จุด Va และ Vb (ขยาย Vb+ และ Vb-) มันเป็นเพียงแอมป์ที่แตกต่างเหมือนเมื่อก่อนและเกนรวมของวงจรเป็นเพียงการคูณกัน

ภาพ
ภาพ

ในการเลือกกำไรที่คุณต้องการทำบางอย่างเหมือนกับที่เราเคยทำกับ Roff เราควรเลือกความต้านทานที่สูงกว่าอุณหภูมิสูงสุดของคุณในช่วงของคุณ เผื่อว่ามันจะผ่านพ้นไป เนื่องจากเราใช้ Arduino ซึ่งมี 5V adc เอาต์พุตสูงสุดของวงจรควรเป็น 5V ที่อุณหภูมิสูงสุดที่คุณเลือก ลองเลือก 150ohms เป็นความต้านทานสูงสุดและแรงดันบริดจ์ที่ไม่ได้ขยายคือ 0.1187V อัตราขยายที่เราต้องการคือ 42.185 (5/0.1187)

สมมติว่าเราเก็บ Ra, Rb และ Rc ไว้ที่ 8.2k, 47k และ 3.9k เราแค่ต้องหาค่าของ pot Rgain:

ภาพ
ภาพ

ดังนั้นเพื่อให้ได้ 5 โวลต์เต็มจากช่วงอุณหภูมิที่เราใช้อยู่ ให้เปลี่ยนค่าของ Rgain เป็น 1.226k แรงดันไฟขาออกที่ออกมาจากดิฟเฟอเรนเชียลแอมป์ได้มาจาก:

ขั้นตอนที่ 4: การเปิดเครื่องวงจร

การเปิดเครื่องวงจร
การเปิดเครื่องวงจร
การเปิดเครื่องวงจร
การเปิดเครื่องวงจร
การเปิดเครื่องวงจร
การเปิดเครื่องวงจร

นี่เป็นขั้นตอนสุดท้ายของวงจร คุณอาจสังเกตเห็น Vcc+ และ Vcc- บนวงจรออปแอมป์ เนื่องจากพวกเขาต้องการทั้งแรงดันบวกและแรงดันลบเพื่อให้ทำงานได้อย่างถูกต้อง คุณสามารถรับออปแอมป์แบบรางเดี่ยวได้ แต่ผมตัดสินใจ ที่จะใช้แอมป์พวกนี้เหมือนที่ผมเคยนอนเล่นอยู่ ดังนั้นเราจะจ่าย +6V และ -6V มีสามวิธีที่เราสามารถทำได้ ภาพแรกแสดงในภาพแรกที่เราต้องจ่ายไฟสองตัวหรือขั้วเอาท์พุตสองขั้วจากแหล่งจ่ายไฟเดียว มีทั้งที่ 6V และมีเอาต์พุตบวกหนึ่งตัวเชื่อมต่อกับขั้วลบของอีกตัวหนึ่ง 6V ของแหล่งจ่ายไฟด้านบนจะเป็น +6V ของเรา ค่าบวกของแหล่งจ่ายไฟด้านล่างคือ GND และค่าลบของแหล่งจ่ายไฟด้านล่างคือ -6V เชื่อมต่อในลักษณะนี้เท่านั้นหาก GNDs ของวัสดุสิ้นเปลืองทั้งสองถูกแยกออกจากกันหรือจะทำให้แหล่งจ่ายไฟของคุณเสียหาย อุปกรณ์จ่ายไฟเชิงพาณิชย์ทั้งหมดจะต้องแยก GND ออก แต่ถ้าคุณต้องการตรวจสอบ ให้ใช้เครื่องทดสอบความต่อเนื่องบนมัลติมิเตอร์ของคุณ ถ้ามันดัง อย่าใช้การตั้งค่านี้และใช้อันถัดไป ในการจัดหาโฮมเมดของฉัน ฉันเป่าฟิวส์ทำเช่นนี้

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

การตั้งค่าสุดท้ายนี้มีไว้สำหรับแหล่งจ่ายไฟที่มีเอาต์พุตเพียงเอาต์พุตเดียว โดยจะใช้บัฟเฟอร์แอมพลิฟายเออร์เกน 1 เพื่อสร้างกราวด์เสมือนโดยส่งแรงดันไฟจ่ายครึ่งหนึ่งผ่านแอมป์บัฟเฟอร์ จากนั้น 12V จะทำหน้าที่เป็น +6V และเทอร์มินัล GND จริงจะเป็น -6V

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

ขั้นตอนที่ 5: วงจรเต็มและรหัส

วงจรเต็มและรหัส
วงจรเต็มและรหัส
วงจรเต็มและรหัส
วงจรเต็มและรหัส
วงจรเต็มและรหัส
วงจรเต็มและรหัส

วงจรทั้งหมดแสดงไว้ด้านบนและสร้างขึ้นใน Circuits.io ใหม่ของ Autodesk ซึ่งช่วยให้คุณสร้างวงจรบนเขียงหั่นขนม แก้ไขไดอะแกรมวงจร (แสดงในภาพที่ 2) และไดอะแกรม PCB และส่วนที่ดีที่สุดช่วยให้คุณจำลองวงจรจากเขียงหั่นขนมและ สามารถตั้งโปรแกรม Arduino และเชื่อมต่อในโหมดเขียงหั่นขนมได้ ด้านล่างหน้าคือการจำลองและคุณสามารถเล่นกับสองหม้อได้ หากคุณต้องการทำซ้ำวงจรและใส่ค่าของคุณเอง คุณสามารถค้นหาวงจรได้ที่นี่ หม้อแรกคือ 70 โอห์มและในซีรีย์ที่มีตัวต้านทาน 80 โอห์มซึ่งจำลอง PT100 ที่มีช่วง 80-150 โอห์ม ส่วนหม้อที่สองคือเกนของแอมป์เครื่องมือวัด น่าเศร้าที่ฉันใช้ไลบรารี่ที่ฉันดาวน์โหลดมาเพื่อโค้ดของฉัน ดังนั้น Arduino จึงไม่รวมอยู่ในวงจรด้านล่าง แต่คุณต้องเชื่อมต่อสายเพิ่มเติมเพียงสองสายเท่านั้น หากคุณคุ้นเคยกับ LTspice มากขึ้น ฉันได้รวมไฟล์ asc เข้ากับวงจรแล้ว

ต่อพิน A0 เข้ากับเอาต์พุตของดิฟเฟอเรนเชียล amp

เชื่อมต่อ GND ของ Arduino กับ GND ของวงจร (ไม่ใช่ -6V)

และนั่นคือวงจรที่ทำเสร็จแล้ว ตอนนี้เข้าสู่โค้ด ก่อนหน้านี้ฉันบอกว่าเราจะใช้สูตร y=mx+c ทีนี้เราจะคำนวณ m(ความชัน) และ c(ออฟเซ็ต) ใน Arduino เราจะอ่านแรงดันไฟฟ้า แต่สมการอุณหภูมิต้องการให้เราทราบความต้านทานของ PT100 ดังนั้นวิธีที่เราทำได้คือแทนที่ Serial.println(temp) ด้วย Serial.println(V) และบันทึก แรงดันและความต้านทานที่อุณหภูมิสองระดับ เมื่อทำการทดสอบนี้ ให้ปล่อย PT100 ทิ้งไว้สักครู่ เช่น หนึ่งหรือสองนาที และเก็บให้ห่างจากแหล่งความร้อนใดๆ (แสงแดด พัดลมแล็ปท็อป ร่างกายของคุณ ฯลฯ)

จุดแรกที่เราสามารถทำได้คืออุณหภูมิห้อง เมื่อคุณเชื่อมต่อวงจรและทำงานแล้ว ให้บันทึกแรงดันไฟฟ้า (Vt1) ที่อ่านโดย Arduino บนจอภาพอนุกรมและถอด PT100 ออกอย่างรวดเร็วและบันทึกความต้านทาน (Rt1) ไว้ อย่าใส่ มือบนโพรบเมื่อถอดออกเพราะจะเปลี่ยนความต้านทาน สำหรับอุณหภูมิที่สอง เราสามารถวางโพรบในน้ำน้ำแข็งหรือน้ำร้อน (ระวังหากใช้น้ำร้อน) และทำซ้ำสิ่งที่เราทำก่อนที่จะพบ Vt2 และ Rt2 หลังจากที่คุณวางโพรบลงในของเหลวแล้ว รอหนึ่งหรือสองนาทีเพื่อให้ความต้านทานคงที่ หากคุณสนใจในการตอบสนองเวลาของ PT100 ให้บันทึกแรงดันไฟฟ้าที่ปิดของมอนิเตอร์แบบอนุกรมทุกๆ 2 วินาทีหรือมากกว่านั้น และเราสามารถวาดกราฟจากสิ่งนี้ได้ และฉันจะอธิบายในภายหลัง เมื่อใช้แรงดันและความต้านทานทั้งสอง เราสามารถคำนวณความชันได้ดังนี้:

ภาพ
ภาพ

Rt1 และ Rt2 เป็นความต้านทานที่อุณหภูมิสองอุณหภูมิและเหมือนกันกับแรงดันไฟฟ้า Vt1 และ Vt2 จากความชันและหนึ่งในสองชุดของจุดที่คุณบันทึกไว้ เราสามารถคำนวณออฟเซ็ตได้:

ภาพ
ภาพ

C ควรใกล้เคียงกับ Roff จริงของคุณ จากการจำลองของฉัน ฉันคำนวณค่าเหล่านี้:

ภาพ
ภาพ

จากความต้านทานนี้ เราสามารถหาอุณหภูมิของเราได้โดยใช้สูตรที่เรามีตอนเริ่มต้น:

ภาพ
ภาพ

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

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

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

หากคุณสนใจที่จะดูโครงการอื่นๆ ที่ฉันทำ เข้าไปที่ my

บล็อก: Roboroblog

YouTube Channel: Roboro

หรือดูคำแนะนำอื่น ๆ ของฉัน: ที่นี่

หาก HTML ยุ่งกับโค้ดด้านล่าง ให้แนบโค้ดมาด้วย

* รหัสนี้คำนวณอุณหภูมิโดยใช้ PT100

* เขียนโดย Robor * Github: <a href="https://github.com/RonanB96/Read-Temp-From-PT100-… <a href="https://github.com/RonanB96/Read-Temp- From-PT100-… <a href="https://github.com/RonanB96/Read-Temp-From-PT100-… >>>>>>>>> * Circuit: <a href=" href="https://github.com/RonanB96/Read-Temp-From-PT100-… <a href=" https://github.com/ronanb96/read-temp-from-pt100-…="">>>>>>>>>> * Blog: <a href=" href="https://github.com/RonanB96/Read-Temp-From-PT100-… <a href=" https://github.com/ronanb96/read-temp-from-pt100-…="">>>>>>>>>> * Instrustable Post: <a href=" href="https://github.com/RonanB96/Read-Temp-From-PT100-… <a href=" https://github.com/ronanb96/read-temp-from-pt100-…="">>>>>>>>>> * */ //You'll need to download this timer library from here //https://www.doctormonk.com/search?q=timer #include "Timer.h" // Define Variables float V; float temp; float Rx; // Variables to convert voltage to resistance float C = 79.489; float slope = 14.187; // Variables to convert resistance to temp float R0 = 100.0; float alpha = 0.00385; int Vin = A0; // Vin is Analog Pin A0 Timer t; // Define Timer object

void setup() {

Serial.begin(9600); // Set Baudrate at 9600 pinMode(Vin, INPUT); // Make Vin Input t.every(100, takeReading); // Take Reading Every 100ms } void loop() { t.update(); // Update Timer } void takeReading(){ // Bits to Voltage V = (analogRead(Vin)/1023.0)*5.0; // (bits/2^n-1)*Vmax // Voltage to resistance Rx = V*slope+C; //y=mx+c // Resistance to Temperature temp= (Rx/R0-1.0)/alpha; // from Rx = R0(1+alpha*X) // Uncommect to convet celsius to fehrenheit // temp = temp*1.8+32; Serial.println(temp); }

Step 6: Time Response of PT100

เวลาตอบสนองของ PT100
เวลาตอบสนองของ PT100

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

ภาพ
ภาพ

โดยที่ tau(τ) คือค่าคงที่เวลา K คืออัตราขยายของระบบและ s คือตัวดำเนินการ Laplace ซึ่งสามารถเขียนเป็น jω โดยที่ ω คือความถี่

ค่าคงที่เวลาบอกคุณว่าระบบคำสั่งแรกใช้เวลานานเท่าใดในการชำระที่ค่าใหม่ และกฎหรือนิ้วโป้งคือ 5*tau คือระยะเวลาที่ใช้ในการชำระที่สถานะคงตัวใหม่ เกน K จะบอกคุณว่าอินพุตจะถูกขยายเท่าใด สำหรับ PT100 อัตราขยายคือเท่าใดความต้านทานที่เปลี่ยนแปลงหารด้วยการเปลี่ยนแปลงของอุณหภูมิ จากการเลือกค่าสุ่มสองค่าจากเอกสารข้อมูลนี้ ฉันได้รับ 0.3856 โอห์ม/C

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

ภาพ
ภาพ

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

ภาพ
ภาพ

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

ภาพ
ภาพ

δ(t) หมายถึงแรงกระตุ้น เช่น DC offset 20 องศา C ในกรณีนี้ คุณสามารถเขียน 20 ในสมการของคุณเมื่อคำนวณสิ่งนี้ นี่คือสมการมาตรฐานสำหรับการก้าวเข้าสู่ระบบลำดับที่หนึ่ง:

ภาพ
ภาพ

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

แนะนำ: