วิธีการทำงานของแอปวัดระดับ: อธิบาย Accelerometers
โทรศัพท์ของคุณรู้ว่าทิศทางใดคือลง เพราะมี MEMS accelerometer — เซนเซอร์ระบบแม่ เล็กมิครอนที่วัดความเร่งแรงโน้มถ่วงในสามแกนพร้อมกัน แอปวัดระดับอ่านตัวเลขสามตัวนี้ นำไปใช้ตรีโกณมิติ และแสดงผลลัพธ์เป็นมุม กระบวนการทั้งหมดเกิดขึ้นหลายร้อยครั้งต่อวินาที เงียบ ๆ ภายในชิปเล็กกว่าเมล็ดข้าว นี่คือวิธีการทำงานอย่างแน่นอน
- MEMS accelerometers ราคาประมาณ $0.50 ในการผลิตจำนวนมาก แต่บรรลุความแม่นยำ ±0.1-0.3° หลังการปรับเทียม
- คำนวณ Pitch และ roll โดยใช้สูตร arctan ที่นำไปใช้กับการอ่านแรงโน้มถ่วง 3 แกน
- Spirit Level Pro ใช้ exponential moving average (alpha=0.15) เพื่อปรับให้เรียบสัญญาณรบกวนของเซนเซอร์ 60-80%
- การเปลี่ยนแปลงอุณหภูมิ 10°C สามารถเปลี่ยนการอ่านเซนเซอร์ MEMS ได้ 0.1-0.5° ทำให้การปรับเทียมบนไซต์มีความสำคัญ
- สำหรับการวัดแบบคงที่ accelerometer เพียงลำพังก็เพียงพอ — ไม่จำเป็นต้องใช้ไจโรสโคป
MEMS Accelerometer คืออะไร?
MEMS ย่อมาจาก Micro-Electro-Mechanical Systems ตามที่ STMicroelectronics ผู้ผลิต MEMS รายใหญ่ที่สุดแห่งหนึ่งของโลก องค์ประกอบการสำเร็จรูปภายใน accelerometer สมาร์ตโฟนสมัยใหม่มีขนาดประมาณ 300 ไมครอน × 300 ไมครอน — เล็กกว่าเมล็ดเกลือ (STMicroelectronics, 2024) ชิปเหล่านี้ราคาประมาณ $0.50 ต่อชิ้นในปริมาณการผลิต แต่บรรลุความแม่นยำเชิงมุมที่เทียบได้กับอุปกรณ์ที่มีราคาแพงกว่ามากหลายเท่า
กลไกมีความหรูหราอยู่ที่การออกแบบ มวลขนาดเล็กลอยอยู่บนสปริงซิลิโคนขนาดเล็ก แกะสลักโดยตรงลงบนพื้นผิวชิปโดยใช้กระบวนการ photolithography เดียวกับที่ใช้สร้างทรานซิสเตอร์ เมื่อชิปเอียง แรงโน้มถ่วงของโลกจะเบี่ยงเบนมวลที่ลอยอยู่ การเบี่ยงเบนดังกล่าวจะเปลี่ยนความจุไฟฟ้าระหว่างหลักปากแหวนขนาดเล็ก ชิปวัดการเปลี่ยนแปลงความจุไฟฟ้านี้และแปลงเป็นค่าความเร่งในหน่วยของ g (แรงโน้มถ่วง)
เมื่อคุณถือโทรศัพท์นิ่ง accelerometer ไม่ได้วัดการเคลื่อนไหว — วัดองค์ประกอบของแรงโน้มถ่วงที่กระทำตามแต่ละแกนของมัน นี่คือข้อมูลเชิงลึกสำคัญที่อยู่เบื้องหลังแอปวัดระดับทั้งหมด แรงโน้มถ่วงเป็นแรงที่ทราบและคงที่ หากคุณทราบว่าแรงของมันกระทำตามแกนแต่ละแกนเท่าใด คุณจะสามารถคำนวณทิศทางที่แน่นอนของโทรศัพท์ได้
Accelerometer 3 แกนวัดการเอียงอย่างไร?
Accelerometer 3 แกนกำหนดระบบพิกัดให้กับโทรศัพท์: X วิ่งจากซ้ายไปขวา Y วิ่งจากบนลงล่าง และ Z วิ่งจากหน้าไปหลัง เมื่อโทรศัพท์นอนราบบนโต๊ะ แรงโน้มถ่วงกระทำโดยสมบูรณ์ตามแกน Z ดังนั้นเซนเซอร์อ่านประมาณ 9.81 m/s² บน Z และ 0 บน X และ Y ทั้งคู่ เอียงโทรศัพท์และแรงโน้มถ่วงจะกระจายใหม่ — น้อยกว่าบน Z มากกว่าบน X และ Y ตรงตามสัดส่วนของมุม
ตรีโกณมิติในการแปลงการอ่านสามครั้งนี้เป็นมุมนั้นตรงไปตรงมา Pitch (การเอียงจากหน้าไปหลัง) และ roll (การเอียงจากซ้ายไปขวา) คำนวณโดยใช้ฟังก์ชันแทนเจนต์ผกผัน:
สูตรทั้งสองนี้เป็นแกนกลางคณิตศาสตร์ทั้งหมดของแอปวัดระดับ ป้อนค่า accelerometer สามค่าดิบ เรียกใช้การคำนวณ และคุณจะได้ pitch และ roll เป็นเรเดียน คูณด้วย 180/π เพื่อแปลงเป็นองศา นั่นคือหมายเลขที่แสดงบนหน้าจอ
ทำไมต้องใช้รากที่สองของอีกสองแกนในตัวส่วนแทนที่จะเป็นเพียงแกนเดียว? มันช่วยให้สูตรมีความแม่นยำตลอดช่วง 360° ของการหมุน การใช้ตัวส่วนแกนเดียวอาจทำให้เกิดข้อผิดพลาดเมื่อโทรศัพท์เข้าใกล้ตำแหน่งแนวตั้ง เพราะแกนหนึ่งจะกลายเป็นศูนย์ และการหารก็กลายเป็นไม่เสถียร ขนาดเวกเตอร์ในตัวส่วนหลีกเลี่ยงสิ่งนี้ทั้งหมด
Spirit Level Pro แสดง pitch และ roll ที่เป็นไปตามเวลา ด้วยการปรับให้เรียบของ EMA ชุดความเสียดทาน 5 ชุด และการปรับเทียมแบบแท็ป ไม่จำเป็นต้องดาวน์โหลด
ลองใช้ Spirit Level Pro ฟรีทำไมข้อมูลเซนเซอร์ดิบจึงมีสัญญาณรบกวนมาก?
ผลลัพธ์ MEMS accelerometer ดิบมีสัญญาณรบกวนค่อนข้างมาก โทรศัพท์ที่อยู่นิ่งสมบูรณ์จะให้ผลลัพธ์ accelerometer ที่ผันผวน ±0.02-0.05 g จากโมเมนต์ไปยังโมเมนต์ ขับเคลื่อนโดยสัญญาณรบกวนทางความร้อนในอิเล็กทรอนิกส์เซนเซอร์ การสั่นสะเทือนหลายครั้งจากอาคาร และข้อผิดพลาด quantization ในตัวแปลง analog-to-digital โดยไม่มีตัวกรอง ฟองวัดระดับอาจสั่นไหวอย่างต่อเนื่อง ทำให้ไม่สามารถใช้งานสำหรับงานที่แม่นยำได้
สัญญาณรบกวนสามประเภทส่งผลต่อการอ่าน accelerometer สัญญาณรบกวนทางความร้อนเป็นการผันผวนของกระแสไฟฟ้าแบบสุ่มเกิดจากความร้อน — มันหลีกเลี่ยงไม่ได้และตั้งขีดพื้นของสัญญาณรบกวนขั้นสุดท้ายสำหรับเซนเซอร์ สัญญาณรบกวนจากการสั่น มาจากสภาพแวดล้อม: คอมเพรสเซอร์ตู้เย็น ก้าวเดิน การจราจร ความไม่เสถียรของอคติเป็นการเลื่อนความถี่ต่ำโดยที่จุดศูนย์ของเซนเซอร์ลอยไปตามเวลา แต่ละตัวต้องการวิธีการจัดการที่แตกต่างกัน
วิธีแก้ไขซอฟต์แวร์มาตรฐานคือตัวกรองความถี่ต่ำ ซึ่งผ่านการเปลี่ยนแปลงช้า ๆ (เช่น การเอียงแท้จริง) ในขณะที่บล็อกการเปลี่ยนแปลงที่รวดเร็ว (เช่น การสั่น) การใช้งานที่พบบ่อยที่สุดคือ exponential moving average (EMA) การอ่านใหม่แต่ละครั้งจะมีส่วนช่วยเหลือ alpha ต่อผลลัพธ์ ส่วนที่เหลือจะถูกพกไปข้างหน้าจากค่าที่ผ่านการกรองครั้งก่อน:
Spirit Level Pro ใช้ EMA ที่มี alpha=0.15 เราตั้งค่านั้นหลังจากทดสอบตัวเลือกต่าง ๆ ค่าต่ำกว่า (alpha=0.05) ให้ผลลัพธ์ที่เรียบมากแต่รู้สึกไม่ตอบสนอง — ฟองอากาศมีความล่าช้าที่เห็นได้ชัดเมื่อคุณเคลื่อนโทรศัพท์ ค่าที่สูงกว่า (alpha=0.3) มีความตอบสนองมากขึ้น แต่มีสัญญาณรบกวนพอที่จะทำให้การจับการอ่านที่แม่นยำนั้นยากขึ้น Alpha=0.15 เป็นจุดที่ฟองรู้สึกมีชีวิตชีวาโดยไม่รู้สึกประหม่า
ไจโรสโคปมีบทบาทใดบ้าง?
ไจโรสโคปวัดความเร็วเชิงมุม — อัตราที่โทรศัพท์หมุนในองศาต่อวินาที — ไม่ใช่ทิศทางสัมบูรณ์ นี่เป็นความแตกต่างที่สำคัญ ไจโรสโคปเพียงลำพังไม่สามารถบอกได้ว่าโทรศัพท์เป็นระดับ มันทราบว่าโทรศัพท์กำลังหมุนอยู่หรือไม่ และเร็วแค่ไหน สำหรับการวัดระดับแบบคงที่ accelerometer เพียงลำพังจะให้ทุกสิ่งที่ต้องการ
ที่ซึ่งไจโรสโคปจะมีประโยชน์คือ sensor fusion: การรวมข้อมูล accelerometer และ gyroscope เพื่อปรับปรุงประสิทธิภาพเมื่อโทรศัพท์กำลังเคลื่อนไหว Accelerometers เก่งในการวัดการเอียงแบบคงที่ แต่ตอบสนองอย่างช้าและมีเสียงต่อการเคลื่อนไหวที่รวดเร็ว ไจโรสโคปเก่งในการติดตามการหมุนที่รวดเร็ว แต่เดินทางเมื่อเวลาผ่านไป (การอ่านของพวกเขาสะสมข้อผิดพลาด) ตัวกรอง Kalman หรือตัวกรองส่วนเสริมจะรวมสตรีมทั้งสอง โดยใช้ไจโรสโคปสำหรับการติดตามแบบไดนามิกที่รวดเร็วและ accelerometer เพื่อแก้ไขการเลื่อนลอยในระยะยาว
แอปวัดระดับส่วนใหญ่ รวมถึง Spirit Level Pro ไม่จำเป็นต้องใช้ sensor fusion เนื่องจากสถานการณ์การวัดเป็นแบบคงที่ — คุณวางโทรศัพท์บนพื้นผิวและรอให้มันตกลง Accelerometer จัดการสิ่งนี้ได้อย่างสมบูรณ์ Sensor fusion มีความสำคัญมากขึ้นสำหรับการนำทางเฉื่อย (การทราบตำแหน่งที่โดรนจะไป) มากกว่าสำหรับการวัดว่าชั้นวางนั้นเป็นระดับหรือไม่
ทำไมการปรับเทียมจึงสำคัญมาก?
เซนเซอร์ MEMS ทั้งหมดมีชดเชยการผลิต — อคติเล็กน้อยที่อบแห้งในระหว่างการผลิต การศึกษาปี 2017 ในวารสาร IEEE Sensors Journal พบว่า accelerometers สมาร์ตโฟนที่ยังไม่ได้ปรับเทียมแสดงชดเชยเฉลี่ย ±1.2° บน 20 อุปกรณ์ยอดนิยม บางตัวถึง ±2.5° (IEEE Sensors Journal, 2017) ชดเชยนั้นเป็นระบบ: ส่งผลต่อการอ่านทั้งหมดโดยจำนวนเดียวกัน ในทิศทางเดียวกัน
การปรับเทียมทำงานโดยวัดชดเชยนี้บนพื้นผิวอ้างอิงที่ทราบและเก็บไว้ Spirit Level Pro บันทึกค่าการปรับเทียมใน localStorage ภายใต้คีย์ calibrationPitch และ calibrationRoll การอ่านทั้งหมดที่ตามมาจะลบชดเชยที่เก็บไว้ก่อนแสดงผลลัพธ์ ชดเชยนั้นถูกปลดปล่อยออกจากนั้น
หากไม่มีการปรับเทียม ชดเชย 1.5° หมายความว่าการอ่านทั้งหมดจึง 1.5° ผิด แอปอาจแสดง 0.0° ในขณะที่โทรศัพท์นอนบนความชันที่ 1.5° ด้วยการปรับเทียม โทรศัพท์เดียวกันนั้นถึง ±0.1-0.3° — การปรับปรุง 5-10 เท่าโดยไม่ต้องใช้ต้นทุน
อุณหภูมิส่งผลต่อความแม่นยำอย่างไร?
เซนเซอร์ MEMS มีความไวต่ออุณหภูมิ สปริงซิลิโคนที่ทำให้มวลการพิสูจน์ลอยตัวจะขยายและหดตัวตามการเปลี่ยนแปลงอุณหภูมิ ทำให้การอ่านจุดศูนย์เลื่อน accelerometers ระดับผู้บริโภคส่วนใหญ่เลื่อน 0.1-0.5° สำหรับการเปลี่ยนแปลงอุณหภูมิทุก ๆ 10°C (Analog Devices ADXL345 datasheet, 2023) การนำโทรศัพท์จากรถยนต์ที่อุ่น (25°C) เข้าไปในโรงจอดรถที่เย็น (5°C) จะนำเข้าการเลื่อน 1.0° ที่อาจเกิดขึ้นก่อนที่เซนเซอร์จะกลับมาเสถียร
ผลกระทบต่อการปฏิบัติ: ปรับเทียมที่อุณหภูมิที่คุณจะทำงาน การปรับเทียมที่ทำในสำนักงานที่อุ่นจะไม่ชดเชยพฤติกรรมของเซนเซอร์อย่างเต็มที่ในโรงจอดรถที่เย็น นี่ไม่ได้หมายความว่าต้องใจจดใจจ่ออุณหภูมิสำหรับทุกงาน สำหรับการแขวนรูปหรือตรวจสอบชั้นวาง การเลื่อนนั้นเล็กน้อย สำหรับงานความแม่นยำภายใน ±0.2° ให้โทรศัพท์อยู่นิ่งสองนาทีหลังจากการเปลี่ยนแปลงอุณหภูมิอย่างมีนัยสำคัญก่อนการปรับเทียม
iPhone เทียบกับ Android: ฮาร์ดแวร์เซนเซอร์แตกต่างกันหรือไม่?
ใช่ และความแตกต่างมีความสำคัญ Apple ออกแบบสแต็กเซนเซอร์การเคลื่อนไหวของตัวเอง iPhones ตั้งแต่ iPhone 6s เป็นต้นไปรวมตัวสร้างความร้อนร่วมการเคลื่อนไหวที่ออกแบบโดย Apple (M9 และสิ่งที่ตามมา) ซึ่งจัดการข้อมูลเซนเซอร์อย่างอิสระจาก CPU หลัก Samsung Galaxy flagships ใช้เซนเซอร์จาก STMicroelectronics (ชุด LSM6DSO) ซึ่งรวม accelerometer 3 แกนและไจโรสโคป 3 แกนบนชิปเดียว โทรศัพท์ Google Pixel ใช้เซนเซอร์จาก Bosch (BMI270) และ TDK InvenSense ขึ้นอยู่กับรุ่น
ในทางปฏิบัติ iPhones ที่มีข้อมูลจำเพาะสูงสุดและ Androids ที่มีข้อมูลจำเพาะสูงสุดดำเนินการเกือบเหมือนกันหลังการปรับเทียม ทั้งสองบรรลุ ±0.1-0.15° ส่วนแบ่งที่แท้จริงคือระหว่าง flagship และ budget Android โทรศัพท์งบประมาณใช้ MEMS ที่มีระดับต่ำ — โดยทั่วไป 10-12 bit resolution เทียบกับ 14-16 bit บน flagships — และแสดง 2-3 เท่าของเสียงหลังจากการอ่านเซนเซอร์ หลังการปรับเทียม โทรศัพท์งบประมาณส่วนใหญ่มักจะถึง ±0.3-0.4° ซึ่งเพียงพอสำหรับงาน DIY ส่วนใหญ่
องค์ประกอบที่แยกแยะประสิทธิภาพวัดระดับของ iPhone มากที่สุดไม่ใช่ accelerometer เอง — มันคือ Apple Motion Coprocessor ที่ทำงานควบคู่กับ CPU หลัก มันเก็บข้อมูลเซนเซอร์อย่างต่อเนื่องในอัตราการสุ่มตัวอย่างสูง แม้ว่าแอปจะไม่อยู่ในพื้นหลัง ซึ่งจะให้ตัวกรอง EMA จุดข้อมูลเพิ่มเติมต่อวินาที นี่คือเหตุผลว่าทำไม iPhones ถึงรู้สึกเรียบเนียนเป็นพิเศษในแอปวัดระดับ แม้ว่าข้อมูลจำเพาะของเซนเซอร์ดิบอาจดูเปรียบได้กับทางเลือก Android
คำถามที่พบบ่อย
แอปวัดระดับทำงานอย่างไรบนโทรศัพท์?
แอปวัดระดับใช้ MEMS accelerometer ในตัวของโทรศัพท์เพื่อวัดทิศทางของความเร่งแรงโน้มถ่วงบนสามแกน (X, Y, Z) เมื่อโทรศัพท์เอียง แรงโน้มถ่วงจะกระจายใหม่ระหว่างแกน แอปจะคำนวณ pitch และ roll โดยใช้สูตร arctan นำไปใช้การปรับให้เรียบเพื่อลดสัญญาณรบกวนของเซนเซอร์ และแสดงผลลัพธ์เป็นระดับหรือการอ่านมุมตัวเลข การคำนวณทั้งหมดทำงานหลายร้อยครั้งต่อวินาที
ความแม่นยำของ accelerometer ของโทรศัพท์สำหรับการใช้วัดระดับ?
โทรศัพท์ที่มีข้อมูลจำเพาะสูงสุดบรรลุ ±0.1-0.3° หลังการปรับเทียม โทรศัพท์ Android งบประมาณสามารถแสดง ±0.5-1.5° โดยไม่ได้ปรับเทียมเนื่องจากเซนเซอร์ MEMS ที่มีความละเอียดต่ำกว่าและความแปรปรวนของการผลิตที่สูงกว่า การศึกษา IEEE Sensors Journal ปี 2017 พบว่าการปรับเทียมเพียงอย่างเดียวจะลดข้อผิดพลาดเฉลี่ยมากกว่า 70% ในชั้นอุปกรณ์ สำหรับงาน DIY และการค้าส่วนใหญ่ โทรศัพท์ระดับกลางที่ปรับเทียมแล้วมีความแม่นยำเพียงพอ (IEEE Sensors Journal, 2017)
แอปวัดระดับใช้ไจโรสโคปหรือไม่?
สำหรับการวัดระดับแบบคงที่ไม่ใช่ accelerometer เพียงลำพังให้มุมเอียง ไจโรสโคปวัดความเร็วของการหมุนมากกว่าตำแหน่ง ดังนั้นมันไม่สามารถบอกได้ว่าโทรศัพท์เป็นระดับ — มันรู้เพียงว่าหมุนเร็วแค่ไหน แอปบางตัวใช้ sensor fusion (รวมเซนเซอร์ทั้งสอง) สำหรับการอ่านที่เรียบขึ้นระหว่างการเคลื่อนไหว แต่สำหรับการกดโทรศัพท์กับผนังหรือพื้นผิวและการอ่านมุม accelerometer จะจัดการทุกอย่าง
ทำไมแอปวัดระดับของฉันจึงอ่านค่าผิดเพียงเล็กน้อยแม้บนพื้นผิวเรียบ?
สาเหตุที่พบบ่อยที่สุดคือชดเชยการผลิต — ทุกชิป MEMS มีอคติแบบโรงงานเล็กน้อยที่ทำให้อ่านค่าไม่เท่ากับศูนย์แม้ว่าจะเป็นแบบเรียบอย่างสมบูรณ์ การปรับเทียมแอปบนพื้นผิวอ้างอิงที่ทราบแล้วแก้ไขปัญหานี้ได้ สาเหตุอื่น ๆ ได้แก่ การเลื่อนอุณหภูมิ (0.1-0.5° ต่อการเปลี่ยนแปลง 10°C) เคสโทรศัพท์ที่เอียงอุปกรณ์เล็กน้อยบนพื้นผิว หรือฝุ่นและเศษซากบนพื้นผิว การปรับเทียมบนโต๊ะกระจกที่สะอาดหลังจากการเปลี่ยนแปลงอุณหภูมิใด ๆ จะแก้ไขปัญหาส่วนใหญ่
ภาพรวมที่สมบูรณ์
แอปวัดระดับทำงานเพราะฟิสิกส์นั้นเชื่อถือได้ แรงโน้มถ่วงคงที่ accelerometers วัดมันอย่างต่อเนื่อง และตรีโกณมิติแปลงตัวเลขสามตัวเป็นมุม โซ่จากองค์ประกอบการสำเร็จรูป MEMS เพื่อแสดงผลฟองนั้นสมบูรณ์ — ไม่มีการคาดเดา ไม่มีกล่องดำ
สิ่งที่แยกแยะแอปวัดระดับที่ดีจากแอปที่ไม่ใช่นั้นไม่ใช่การเข้าถึงฮาร์ดแวร์ที่ดีกว่า โทรศัพท์ flagship ทั้งหมดมาพร้อมกับเซนเซอร์ที่มีความสามารถเกินกว่า ความแตกต่างอยู่ในซอฟต์แวร์: การกรองสตรีมเซนเซอร์ดิบได้ดีเพียงใด วิธีการปรับเทียมที่ใช้และเก็บไว้ วิธีการตั้งค่าความอดทนแม่แบบแม่นยำสำหรับงานจริง ให้ทำให้ถูกต้องแล้ว $0.50 MEMS ชิปจะส่งมอบความแม่นยำที่เปรียบเทียบได้ดีกับเครื่องมือเฉพาะที่มีราคาแพงกว่ายี่สิบเท่า
การทำความเข้าใจว่าเซนเซอร์ทำงานอย่างไรยังทำให้คุณเป็นผู้ใช้ที่ดีขึ้น ปรับเทียมที่อุณหภูมิการทำงาน เอาเคสออกสำหรับการอ่านที่แม่นยำ ปล่อยให้การอ่านตกลงสักครู่ก่อนที่จะไว้ใจ ลักษณะการทำงานเหล่านี้เป็นไปตามสิ่งที่ฮาร์ดแวร์กำลังทำ