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

กราฟเป็นค่าจากข้อมูลที่ 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 เพื่อดูความไว ไม่ใช่ขอบเขตต่ำสุดและสูงสุดของการทดลองจริง

ที่ 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 โดยเตรียมสามระดับเพื่อประเมินแนวโน้มการลู่เข้า การมีสามกริดอย่างเดียวไม่ได้รับรองว่าผลเข้าสู่ช่วงที่ใช้ประมาณความคลาดเคลื่อนได้แล้ว
- กำหนดโจทย์เดียวกัน: ใช้ R2 รูปทรงใบพัดและการติดตั้งที่ตรง Run 101 รวมส่วนรองรับและผลอุโมงค์ลมตามขอบเขตที่เลือก อย่าใช้ใบพัดรุ่นอื่นแทนเพียงเพราะเส้นผ่านศูนย์กลางใกล้กัน
- กำหนดตัวเลขรายจุด: รอบ ลม ความหนาแน่น มุม อุณหภูมิ และแบบจำลอง turbulence ต้องมีที่มา ไม่ใช้ค่าปัดของทั้งกลุ่มแทนทุกจุด
- กำหนดสิ่งที่จะเทียบ: เช่น Fz2_H หลังการประมวลผลที่สอดคล้องกัน พร้อมกรอบ hub และจุดอ้างอิง ไม่เทียบแรงลำทั้งลำกับแรงโรเตอร์หนึ่งตัว
- ตรวจการคำนวณ: ตรวจกริด ก้าวเวลา การเฉลี่ยแรง การลู่เข้า และความไวต่อเงื่อนไขก่อนดูว่าผลใกล้ข้อมูลวัดเพียงใด
- ประเมินความไม่แน่นอน: แยกส่วนการวัด อินพุตและตัวเลข ค่าความสามารถของเครื่องมือหรือ calibration residual ไม่ใช่ standard uncertainty ของแต่ละจุดโดยอัตโนมัติ
เมื่อมีข้อมูลครบแล้วจึงใช้ เครื่องมือเทียบค่าพร้อมความไม่แน่นอน ค่าที่มองด้วยตาแล้วใกล้กันไม่เพียงพอสำหรับสรุป validation และข้อมูลแรงโรเตอร์นี้ยังไม่ใช่ airframe_drag_only ของส่วนเชื่อม DroneSim
บรรณานุกรมและเครดิตข้อมูล
- Conley และคณะ, Multirotor Test Bed Second Wind Tunnel Entry Data Report, NASA/TM–20250004795, 2025: วิธีทดลอง พิกัด การประมวลผลและ test matrix
- NASA Ames, Multirotor Test Bed 2: Data Tables v2, ReadMe, Test Matrix และ Rotor Positions ที่ใช้ในบท
- NASA — Validation Assessment: ขอบเขตการตรวจเทียบกับข้อมูลวัด
- NIST — Combined Standard Uncertainty: การรวมความไม่แน่นอนตามสมมติฐานที่ระบุ
กราฟและตารางตัวอย่างเรียบเรียงจากข้อมูล NASA เพื่อการศึกษา พร้อมเก็บ Run/Point และค่าต้นฉบับในสมุดงาน ไม่มีการรับรองเว็บไซต์หรือแบบจำลองของเราโดย NASA ตรวจแหล่งข้อมูล 26 กันยายน 2569