อ่านข้อมูลทดลอง NASA MTB2: จากตารางแรงสู่โจทย์ตรวจเทียบ CFD

อาจารย์และนักศึกษาไทยอ่านกราฟและตารางข้อมูลทดลองอากาศพลศาสตร์ในห้องปฏิบัติการ
ภาพประกอบแนวคิดสร้างด้วย AI

ครั้งนี้เริ่มจากข้อมูลที่วัดจริง

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

NASA Multirotor Test Bed 2 (MTB2) เป็นการทดสอบชุดโรเตอร์ในอุโมงค์ลมเมื่อปี 2022 ศึกษาผลของการจัดวางโรเตอร์ ระยะห่าง มุม และสภาวะการทำงาน หน้าโครงการมีภาพชุดทดลองจริง รายงาน คำอธิบายคอลัมน์ ตารางการทดสอบ และข้อมูลให้ดาวน์โหลด ภาพใต้ชื่อบทนี้เป็นภาพห้องเรียนไทยที่สร้างด้วย AI ไม่ใช่ภาพสถานที่หรืออุปกรณ์ทดลองของ NASA

สถานะงานนี้: อ่านและแปลงข้อมูลทดลองจริงแล้ว แต่ยังไม่ได้สร้างรูปทรงหรือรัน CFD ของ MTB2 จึงยังไม่มีผลตรวจเทียบว่าแบบจำลองของเราตรงกับการทดลอง และข้อมูลนี้ไม่ได้ยืนยันผลของไหลหนืดจากเฟสก่อนหน้า

ลำดับอ่านรายงานและตาราง NASA เลือกสภาพการทดลอง แปลงแรง hub เป็น SI แล้วเตรียม CFD ที่ตรงกัน

อ่านสี่ไฟล์ร่วมกันก่อนเลือกตัวเลข

แหล่งต้นทาง ใช้ตอบคำถามอะไร
Data Report รูปทรง อุปกรณ์ พิกัด การสอบเทียบ การหักแรงพื้นฐาน และขั้นตอนประมวลผลเป็นอย่างไร
ReadMe แต่ละคอลัมน์หมายถึงอะไร ใช้หน่วยใด และมีข้อยกเว้นอะไร
Test Matrix Run นี้จัดวางและติดตั้งโรเตอร์แบบใด เปลี่ยนตัวแปรอะไร
Data Tables v2 ค่าที่บันทึกใน Run และ Point ที่เลือกเป็นเท่าไร

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

Run คือรหัสชุดการทดลอง ส่วน Point คือรหัสจุดบันทึกภายใน Run ไม่ใช่เวลาวินาที ลำดับแถวจึงไม่ใช่วิถีบิน อย่าส่งคอลัมน์ Point ไปเป็นแกนเวลาของ simulator

เลือกกรณีเล็กที่ตรวจย้อนกลับได้

เราเลือก Run 101 ซึ่งรายงานระบุว่าติดตั้งโรเตอร์เดี่ยว R2 แบบสองใบ โดย R2 อยู่ด้านหน้าฝั่งซ้ายเมื่ออ้างอิงการจัดวางของชุดทดสอบ เลือก Point 6, 7, 8 และ 65, 64, 63 เพื่อดูสองกลุ่มความเร็วลมประมาณ 6.2–6.3 และ 12.5–12.6 m/s ที่รอบประมาณ 2,000–3,000 rpm

แม้เป็นการทดสอบโรเตอร์เดี่ยว คอลัมน์ RPM ของหลายตำแหน่งมีค่าในไฟล์ จึง ใช้ RPM ที่ไม่เป็นศูนย์นับจำนวนโรเตอร์ที่ติดตั้งไม่ได้ ต้องตรวจจากรายงานและตารางการทดสอบ ส่วน Run 103 และ 104 มีข้อยกเว้นเรื่องข้อมูลอุโมงค์ลมที่บันทึกด้วยมือใน ReadMe; ตัวอย่างนี้จึงไม่ได้เลือกสอง Run นั้น

ค่าที่ใช้คือ Fz2_H และ Mz2_H ในกรอบ hub ของ R2 หรือกรอบที่จุดศูนย์กลางโรเตอร์ เครื่องหมายและตำแหน่งอ้างอิงต้องยึดต้นทาง โดย +Fz ในแผนภาพ hub ชี้ขึ้น คอลัมน์ _H เป็นข้อมูลที่ประมวลผลแก้ไขแล้วตามรายงาน ไม่ใช่สัญญาณดิบจากเครื่องมือ จึงไม่ลบแรงพื้นฐานหรือ tare ซ้ำอีก

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

แปลงหน่วยทีละขั้น

ในคอลัมน์แรง lb หมายถึง pound-force ไม่ใช่มวลปอนด์ ใช้ 1 lbf = 4.4482216152605 N ส่วนโมเมนต์ใช้ 1 in·lbf = 0.1129848290276167 N·m

ปริมาณ สูตรแปลงเป็น SI
แรง F(N) = F(lbf) × 4.4482216152605
โมเมนต์ M(N·m) = M(in·lbf) × 0.1129848290276167
ความเร็วลม V(m/s) = V(ft/s) × 0.3048
ความหนาแน่น ρ(kg/m³) = ρ(slug/ft³) × 515.3788184
ความดันพลวัต q(Pa) = q(psf) × 47.88025898
อุณหภูมิ T(°C) = [T(°F) − 32] × 5/9

ตัวอย่าง Run 101, Point 6: Fz2_H = 2.299 lbf จึงได้ 10.22646 N; Mz2_H = 2.471 in·lbf ได้ 0.279186 N·m; V = 20.7 ft/s ได้ 6.30936 m/s; RPM_2 = 1,999 rpm เท่ากับประมาณ 33.3167 รอบ/s ค่าโมเมนต์ยังเป็นค่ารายงานในกรอบ hub ไม่เปลี่ยนเป็นกำลังเพลาที่รับรองแล้วโดยอัตโนมัติ

คำว่า Q ในไฟล์ NASA นี้หมายถึง corrected dynamic pressure หน่วย psf ไม่ใช่ torque ที่ใช้สัญลักษณ์ Q ในสูตรใบพัดบางเล่ม อ่านหน่วยควบคู่กับชื่อเสมอ และอย่าเขียนทับค่า Q ต้นทางด้วย ½ρV² โดยไม่ตรวจวิธีแก้ไขข้อมูลของต้นทาง

อ่านกราฟพร้อมสภาพการทดลอง

ข้อมูล hub load ของ R2 จาก NASA Run 101 หกจุด แสดง Fz และ Mz ตามรอบหมุนพร้อมกลุ่มความเร็วลม

กราฟเป็นค่าจากข้อมูลที่ NASA เผยแพร่และแปลงหน่วยแล้ว ไม่ใช่ผล CFD ของเรา จุดแต่ละจุดมี Run/Point ให้ตรวจกลับ เส้นประใช้ช่วยตามกลุ่มข้อมูลเท่านั้น ไม่ใช่แบบจำลองทำนายหรือเส้นฟิต ไม่มี error bar เพราะไฟล์ตารางที่ใช้ไม่ได้ให้ standard uncertainty รายจุดมา เปิดกราฟขนาดเต็ม

Point RPM_2 V (m/s) Fz2_H (N) Mz2_H (N·m)
6 1,999 6.30936 10.22646 0.279186
7 2,499 6.30936 15.84901 0.413411
8 2,999 6.21792 23.02844 0.579273
65 2,000 12.58824 13.29573 0.275683
64 2,500 12.49680 20.16824 0.405164
63 3,000 12.52728 27.87700 0.563794

ในกลุ่มลมต่ำ Pitch = 0.01° และ ρ ≈ 1.16476 kg/m³ ส่วนกลุ่มลมสูง Pitch = 0.02° และ ρ ≈ 1.15445 kg/m³ ทั้งสองกลุ่ม Tilt = 0° แต่ความเร็วและอุณหภูมิจริงไม่เท่ากันทุกจุด ดังนั้นเห็นค่า Fz ต่างกันแล้ว ยังสรุปว่าเกิดจากความเร็วลมเพียงตัวแปรเดียวไม่ได้

ทดลองอ่านและสร้างผลซ้ำ

ดาวน์โหลด สมุดงาน NASA MTB2 พร้อม CSV, JSON และโค้ดวิเคราะห์ เริ่มจากเปิด sample/sample-si.csv ด้วยโปรแกรมตารางคำนวณ หรือดู sample/sample.json ซึ่งเก็บทั้งค่าต้นฉบับและผลแปลงพร้อมที่มา

เมื่อต้องการตรวจตั้งแต่ต้น ให้ดาวน์โหลด Data Tables v2 และ ReadMe จาก NASA แล้วใช้คำสั่งใน README ของสมุดงาน ตัวนำเข้าตรวจ SHA-256 เพื่อให้แน่ใจว่าเป็นไฟล์รุ่นเดียวกับบท ตรวจชื่อคอลัมน์ หน่วย และ Run/Point ก่อนแปลง หาก NASA เปลี่ยนไฟล์ ต้องทบทวนเวอร์ชันใหม่ ไม่ข้ามการตรวจ hash

แบบฝึก 1: ใช้ Point 8 คำนวณ 5.177 lbf เป็น N ด้วยตนเอง แนวคำตอบคือประมาณ 23.02844 N หากได้ 2.348 kg ให้กลับไปตรวจว่ากำลังแปลงแรงหรือมวล

แบบฝึก 2: เทียบ Point 6 กับ 65 แล้วระบุอย่างน้อยสามค่าที่ไม่เท่ากัน แนวคำตอบได้แก่ RPM จริง ความเร็วลม ความหนาแน่น Pitch และอุณหภูมิ จึงควรใช้เงื่อนไขรายจุดเมื่อเตรียม CFD

แบบฝึก 3: จะใส่ uncertainty = 0 เพราะไฟล์ไม่มีได้หรือไม่? ไม่ได้ ให้เก็บเป็น null หรือสถานะยังไม่ทราบ แล้วหางบความไม่แน่นอนที่สอดคล้องกับเครื่องมือ การประมวลผล และปริมาณที่เลือกก่อน

เปรียบเทียบแรงโดยตัดผลของขนาดและรอบหมุน

แรงที่มากขึ้นอาจเกิดจากรอบหมุนที่สูงขึ้น เราจึงสร้าง สัมประสิทธิ์ไร้มิติ เพื่อดูแนวโน้มร่วมกัน กำหนด n = RPM/60 หน่วยรอบ/s และ D = 24.5 นิ้ว = 0.6223 m ตามขนาด nominal ในตาราง 7.2.2 ของรายงาน:

C_Fz = Fz2_H / (ρ n² D⁴)
C_Mz = Mz2_H / (ρ n² D⁵)
ความเร็วปลายใบพัดจากการหมุน = π n D
อัตราส่วนความเร็วสำหรับบทนี้ = V / (n D)

ρ คือความหนาแน่น kg/m³, Fz2_H คือแรง N และ Mz2_H คือโมเมนต์ N·m ตัวส่วนของสูตรแรกมีหน่วย N และสูตรที่สองมีหน่วย N·m จึงหารแล้วไม่มีหน่วย เราคงชื่อ C_Fz และ C_Mz เพื่อบอกว่าเป็นการหารค่าที่วัดในกรอบ hub ไม่สรุปว่าเป็นแรงขับบริสุทธิ์หรือกำลังเพลาที่ตรวจยืนยันแล้ว

ตัวอย่าง Point 6: n ≈ 33.3167 รอบ/s ได้ C_Fz ≈ 0.0527434, C_Mz ≈ 0.00231385, ความเร็วปลายใบพัดจากการหมุน ≈ 65.1345 m/s และ V/(nD) ≈ 0.304315 ค่าความเร็วปลายใบพัดนี้ยังไม่รวมความเร็วลมสัมพัทธ์และความเร็วเหนี่ยวนำ

Point 8 ให้ C_Fz ≈ 0.0527691 ซึ่งใกล้ Point 6 แม้แรง N จะสูงกว่ามาก เป็นตัวอย่างว่าการปรับด้วยรอบช่วยให้อ่านแนวโน้มง่ายขึ้น แต่ข้อมูลเพียงสามจุดในกลุ่มเดียวและไม่มี uncertainty ยังใช้ยืนยันกฎการแปรผันไม่ได้

อย่าสับสนกับ J ของใบพัดที่ลมเข้าในแนวแกน: บทนี้ใช้ความเร็วอุโมงค์ V ในอัตราส่วน V/(nD) เท่านั้น ยังไม่ได้ฉายเวกเตอร์ลมเข้าสู่แกนโรเตอร์ จึงไม่ใช้สูตรประสิทธิภาพ η = J C_T/C_P กับตัวเลขนี้ และไม่ส่งสัมประสิทธิ์แรงโรเตอร์เข้าตารางแรงต้านลำตัวของ DroneSim

ใน ZIP รัน python diagnostics.py เพื่อสร้างค่าทั้งหกจุดซ้ำได้ด้วย Python มาตรฐาน โปรแกรมตรวจ hash ของข้อมูลก่อนคำนวณ สูตรนี้ใช้ D nominal เดียวกันทุกจุดเพื่อการศึกษา ตารางต้นทางระบุ radius 12.245 นิ้วด้วย ซึ่งไม่เท่ากับครึ่งหนึ่งของ 24.5 นิ้วพอดี จึงต้องยืนยันขนาดที่ใช้จริงก่อนสร้าง geometry หรือเทียบสัมประสิทธิ์กับงานอื่น

แบบฝึก 4: ถ้าเปลี่ยนเฉพาะ D ให้เพิ่มเป็นสองเท่า โดยตรึงแรง รอบและความหนาแน่น C_Fz จะเหลือเท่าใด? คำตอบคือ 1/16 ของเดิม ส่วน C_Mz เหลือ 1/32 แสดงว่าความคลาดเคลื่อนของขนาดอ้างอิงมีผลมาก

ทำไมยังใส่แถบความไม่แน่นอนให้กราฟไม่ได้

รายงาน §9.1.2 อธิบายการใช้ข้อมูลสอบเทียบและสถิติตามเวลา แต่ XLSX ที่ใช้ในบทนี้ให้ค่าเฉลี่ย ไม่ได้ให้ข้อมูลครบสำหรับสร้าง uncertainty ของแต่ละจุดคืน รายงานยังแยก confidence interval กับ prediction interval ซึ่งนำมาปฏิบัติเหมือน standard uncertainty โดยตรงไม่ได้

ค้นเพิ่มเติมพบ บทความทดลอง MTB2 ของ NASA ในงาน Forum 81 ซึ่งให้ค่าประกอบสมการสอบเทียบในตาราง 4 สำหรับ LC2: σ_Fz = 0.29 lbf และ σ_Mz = 0.56 in·lbf บทความใช้ค่าเหล่านี้ร่วมกับเวกเตอร์แรงดัน เมทริกซ์จากการสอบเทียบ และส่วนความแปรผันตามเวลา เพื่อสร้างช่วง prediction 95% ค่าตารางนี้จึงยังไม่ใช่ uncertainty ของ Run 101 แต่ละ Point และยังไม่ควรนำไปใส่ error bar โดยตรง

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

สำหรับปริมาณ y ที่คำนวณจากอินพุต x หลายตัว แนวทาง GUM ของ BIPM ใช้ความไวของ y ต่ออินพุตและความแปรปรวนร่วม:

u²(y) ≈ Σᵢ Σⱼ (∂y/∂xᵢ)(∂y/∂xⱼ) cov(xᵢ,xⱼ)

cov บอกว่าอินพุตสองตัวแปรร่วมกันอย่างไร สำหรับ C_Fz ที่ไม่เป็นศูนย์ หากอินพุตเป็นอิสระจริงและใช้การประมาณเชิงเส้น จะได้:

[u(C_Fz)/|C_Fz|]² ≈ [u(Fz)/|Fz|]² + [u(ρ)/ρ]²
                       + 4[u(n)/n]² + 16[u(D)/D]²

ตัวคูณ 4 และ 16 มาจากเลขชี้กำลัง 2 และ 4 ที่ยกกำลังสองอีกครั้ง สำหรับ C_Mz ตัวคูณของความไม่แน่นอน D เปลี่ยนเป็น 25 หากข้อมูลสัมพันธ์กัน ต้องกลับไปใช้สูตรที่มี covariance ไม่ตัดทิ้งโดยไม่มีหลักฐาน การไม่มีค่า u จึงหมายถึง ยังคำนวณไม่ได้ ไม่ใช่ u = 0

ชุดข้อมูลสมมติสำหรับทดลองต่อได้ทันที

เพื่อฝึกคำนวณระหว่างรอข้อมูลเฉพาะการทดลอง เราสร้าง ชุดความไว 18 แถว จากค่าเฉลี่ย NASA เดิมหกจุด ร่วมกับสมมติฐานสามระดับใน ZIP โฟลเดอร์ hypothetical การสร้างชุดนี้ไม่เปลี่ยนค่าต้นฉบับ ไม่เพิ่มผลวัดปลอม และไม่สร้างผล CFD ขึ้นแทนการรัน solver

สมมติฐานฐานคือ standard uncertainty ของ Fz = 0.1 N, Mz = 0.005 N·m, ρ = 0.01 kg/m³, รอบ = 5 rpm และ D = 0.001 m โดยสมมติให้อินพุตอิสระกัน ตัวเลขกลมเหล่านี้เลือกเพื่อฝึกใช้สูตรเท่านั้น ไม่ใช่สเปกเครื่องมือหรือความไม่แน่นอนที่ NASA รายงาน อีกสองระดับคูณทุกค่า u ด้วย 0.5 และ 2 เพื่อดูความไว ไม่ใช่ขอบเขตต่ำสุดและสูงสุดของการทดลองจริง

สัดส่วนความแปรปรวนจากอินพุตสมมติของ C_Fz และ C_Mz ที่ Point 6 ไม่ใช่ความไม่แน่นอนของ NASA

ที่ Point 6 และสมมติฐานฐาน จะได้ u(C_Fz) ≈ 0.00080970 และ u(C_Mz) ≈ 0.00005091 เป็นผลการคำนวณภายใต้สมมติฐานที่ประกาศ ไม่ใช้เป็น error bar บนกราฟข้อมูลวัดด้านบน เมื่อเพิ่ม u ของทุกอินพุตสองเท่า ค่า u ของผลลัพธ์จะเพิ่มสองเท่า แต่สัดส่วนความแปรปรวนแต่ละแหล่งยังเท่าเดิม

เปิด assumed-inputs.json แล้วทดลองเปลี่ยนค่า รัน python sensitivity.py --output my-sensitivity จะได้ CSV พร้อมที่มาของสมมติฐานในโฟลเดอร์ใหม่ ทุกแถวติดสถานะ hypothetical และ physical_validation=False ชุดนี้ใช้ทดสอบการคำนวณและช่วยวางแผนว่าควรเก็บข้อมูลใดเพิ่ม ส่วน CAD ของชิ้นทดลองยังระบุว่าไม่มี จึงยังไม่ใช่ชุดสำหรับยืนยัน CFD ของ MTB2

เตรียม benchmark โดยไม่ข้ามหลักฐาน

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

ZIP รุ่นนี้มี benchmark-plan.md แผนตั้งแต่ตรวจ geometry จนถึงศึกษากริด/ก้าวเวลา และ request-data.txt ร่างคำขอรายละเอียดให้เจ้าของเว็บตรวจและส่งเอง รายงาน §13 แนะนำให้ติดต่อทีมวิจัยเพื่อข้อมูลรูปทรงเพิ่มเติม ขณะค้นแหล่งสาธารณะรอบนี้ยังไม่พบชุด CAD และ uncertainty รายจุดที่ครบพอปิดงาน validation จึงยังไม่ได้สร้าง CFD ที่อ้างว่าตรง specimen

แผนตรวจกริดอ้างอิง NASA: Examining Spatial Convergence โดยเตรียมสามระดับเพื่อประเมินแนวโน้มการลู่เข้า การมีสามกริดอย่างเดียวไม่ได้รับรองว่าผลเข้าสู่ช่วงที่ใช้ประมาณความคลาดเคลื่อนได้แล้ว

  1. กำหนดโจทย์เดียวกัน: ใช้ R2 รูปทรงใบพัดและการติดตั้งที่ตรง Run 101 รวมส่วนรองรับและผลอุโมงค์ลมตามขอบเขตที่เลือก อย่าใช้ใบพัดรุ่นอื่นแทนเพียงเพราะเส้นผ่านศูนย์กลางใกล้กัน
  2. กำหนดตัวเลขรายจุด: รอบ ลม ความหนาแน่น มุม อุณหภูมิ และแบบจำลอง turbulence ต้องมีที่มา ไม่ใช้ค่าปัดของทั้งกลุ่มแทนทุกจุด
  3. กำหนดสิ่งที่จะเทียบ: เช่น Fz2_H หลังการประมวลผลที่สอดคล้องกัน พร้อมกรอบ hub และจุดอ้างอิง ไม่เทียบแรงลำทั้งลำกับแรงโรเตอร์หนึ่งตัว
  4. ตรวจการคำนวณ: ตรวจกริด ก้าวเวลา การเฉลี่ยแรง การลู่เข้า และความไวต่อเงื่อนไขก่อนดูว่าผลใกล้ข้อมูลวัดเพียงใด
  5. ประเมินความไม่แน่นอน: แยกส่วนการวัด อินพุตและตัวเลข ค่าความสามารถของเครื่องมือหรือ calibration residual ไม่ใช่ standard uncertainty ของแต่ละจุดโดยอัตโนมัติ

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

บรรณานุกรมและเครดิตข้อมูล

กราฟและตารางตัวอย่างเรียบเรียงจากข้อมูล NASA เพื่อการศึกษา พร้อมเก็บ Run/Point และค่าต้นฉบับในสมุดงาน ไม่มีการรับรองเว็บไซต์หรือแบบจำลองของเราโดย NASA ตรวจแหล่งข้อมูล 26 กันยายน 2569

NASA MTB2wind tunnelข้อมูลทดลองvalidationแรงโรเตอร์