ประเภท: วงจรไมโครคอนโทรลเลอร์
จำนวนการดู: 9996
ความเห็นเกี่ยวกับบทความ: 0
การวัดอุณหภูมิและความชื้นบน Arduino - การเลือกวิธีการ
ในการสร้างสถานีตรวจอากาศหรือเครื่องวัดอุณหภูมิในบ้านคุณต้องเรียนรู้วิธีจับคู่บอร์ด Arduino กับอุปกรณ์สำหรับวัดอุณหภูมิและความชื้น การวัดอุณหภูมิสามารถทำได้โดยใช้เทอร์มิสเตอร์หรือเซ็นเซอร์ดิจิตอล DS18B20 แต่ สำหรับวัดความชื้น ใช้อุปกรณ์ที่ซับซ้อนมากขึ้น - เซ็นเซอร์ DHT11 หรือ DHT22 ในบทความนี้เราจะแสดงวิธีการวัดอุณหภูมิและความชื้นโดยใช้ Arduino และเซ็นเซอร์เหล่านี้

การวัดเทอร์มิสเตอร์
วิธีที่ง่ายที่สุดในการกำหนดอุณหภูมิคือการใช้ เทอร์มิสเตอร์. นี่คือประเภทของตัวต้านทานที่มีความต้านทานขึ้นอยู่กับอุณหภูมิโดยรอบ มีเทอร์มิสเตอร์ที่มีค่าสัมประสิทธิ์อุณหภูมิเป็นบวกและลบของความต้านทาน - PTC (เรียกอีกอย่างว่าโพรบ) และเทอร์มิสเตอร์ NTC ตามลำดับ
ในกราฟด้านล่างคุณจะเห็นการขึ้นกับอุณหภูมิของความต้านทาน เส้นประแสดงการพึ่งพาเทอร์มิสเตอร์ TCS เชิงลบ (NTC) และเส้นทึบสำหรับเทอร์มิสเตอร์ TCS เชิงบวก (PTC)

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

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

โดยที่ A, B และ C เป็นค่าคงที่เทอร์มิสเตอร์ที่กำหนดโดยการวัดอุณหภูมิสามอุณหภูมิโดยมีความแตกต่างอย่างน้อย 10 องศาเซลเซียส ในเวลาเดียวกันแหล่งต่าง ๆ บ่งชี้ว่าสำหรับเทอร์มิสเตอร์ 10 kΩ NTC ทั่วไปพวกมันจะเท่ากับ:


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

ในกรณีนี้ B จะถูกระบุในแบบฟอร์ม:

ซึ่งหมายความว่าค่าสัมประสิทธิ์ถูกคำนวณบนพื้นฐานของข้อมูลที่ได้จากการวัดความต้านทานที่อุณหภูมิ 25 และ 100 องศาเซลเซียสและนี่เป็นตัวแปรที่พบบ่อยที่สุด จากนั้นคำนวณโดยสูตร:
B = (ln (R1) - ln (R2)) / (1 / T1 - 1 / T2)
แผนภาพการเชื่อมต่อทั่วไปของเทอร์มิสเตอร์กับไมโครคอนโทรลเลอร์แสดงไว้ด้านล่าง

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

ในการคำนวณความต้านทานของเทอร์มิสเตอร์คุณสามารถใช้สูตรต่อไปนี้:
R of thermistor = R1istor ((Vcc / Voutput) −1)
ในการแปลเป็นภาษาที่เข้าใจได้สำหรับอาร์ดิโนคุณต้องจำไว้ว่าอาร์ดิโนนั้นมี ADC 10 บิตดังนั้นค่าดิจิตอลสูงสุดของสัญญาณอินพุต (แรงดัน 5V) จะเท่ากับ 1,023 ดังนั้นเงื่อนไข:
-
Dmax = 1023;
-
D คือมูลค่าที่แท้จริงของสัญญาณ
แล้ว:
R ของเทอร์มิสเตอร์ = R1⋅ ((Dmax / D) −1)
ตอนนี้เราใช้สิ่งนี้เพื่อคำนวณความต้านทานแล้วคำนวณอุณหภูมิของเทอร์มิสเตอร์โดยใช้สมการเบต้า ในภาษาการเขียนโปรแกรมสำหรับ Arduino. ร่างจะเป็นดังนี้:

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

แผนภาพการเชื่อมต่อของเซ็นเซอร์ ds18b20 ไปยัง Arduino มีลักษณะดังนี้:


นอกจากนี้ยังมีโหมดกาฝาก - แผนภาพการเชื่อมต่อมีลักษณะเช่นนี้ (คุณต้องใช้สายสองเส้นแทนสามสาย):

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

ในการทำงานกับมันคุณต้องดาวน์โหลดไลบรารี Onewire สำหรับ Arduino และสำหรับตัวเซ็นเซอร์เองเราแนะนำให้ใช้ไลบรารี DallasTemperature

ตัวอย่างรหัสนี้แสดงให้เห็นถึงพื้นฐานของการทำงานกับเซ็นเซอร์อุณหภูมิ 1 ผลในองศาเซลเซียสจะถูกส่งออกผ่านพอร์ตอนุกรมหลังจากการอ่านแต่ละครั้ง
DHT11 และ DHT22 - เซ็นเซอร์ความชื้นและอุณหภูมิ

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

แผนภาพการเชื่อมต่อค่อนข้างง่าย:
-
1 ข้อสรุป - โภชนาการ
-
2 ข้อสรุป - ข้อมูล;
-
3 ข้อสรุป - ไม่ได้ใช้;
-
4 ข้อสรุป - ลวดทั่วไป
หากคุณมีเซ็นเซอร์ในรูปแบบของโมดูลมันจะมีสามเอาต์พุต แต่คุณไม่จำเป็นต้องมีตัวต้านทาน - มันถูกบัดกรีไปยังบอร์ดแล้ว

สำหรับการทำงานเราต้องการไลบรารี dht.h ซึ่งไม่อยู่ในชุดมาตรฐานดังนั้นจึงจำเป็นต้องดาวน์โหลดและติดตั้งในโฟลเดอร์ไลบรารีในโฟลเดอร์ที่มี arduino IDE รองรับเซ็นเซอร์ทั้งหมดในตระกูลนี้:
-
DHT 11;
-
DHT 21 (AM2301);
-
DHT 22 (AM2302, AM2321)
ตัวอย่างการใช้ห้องสมุด:

ข้อสรุป
ทุกวันนี้การสร้างสถานีของคุณเองเพื่อวัดอุณหภูมิและความชื้นนั้นง่ายมากด้วยแพลตฟอร์ม Arduino ค่าใช้จ่ายของโครงการดังกล่าวคือ 3-4 ร้อยรูเบิล สำหรับอายุการใช้งานแบตเตอรี่และไม่สามารถส่งออกไปยังเครื่องคอมพิวเตอร์ได้ แสดงตัวอักษร (เราอธิบายไว้ในบทความล่าสุด) จากนั้นคุณสามารถสร้างอุปกรณ์พกพาสำหรับใช้ทั้งที่บ้านและในรถ เขียนในความคิดเห็นอะไรที่คุณต้องการเรียนรู้เกี่ยวกับงานฝีมือโฮมเมดง่ายๆใน arduino!
ดูเพิ่มเติมที่หัวข้อนี้:เซ็นเซอร์ยอดนิยมสำหรับ Arduino - การเชื่อมต่อไดอะแกรมภาพร่าง
ดูได้ที่ e.imadeself.com
: