मोबाइल डिवाइसों में ऐक्सलरोमीटर एक MEMS संवेदक है जो डिवाइस की स्थिति और गति निर्धारित करने के लिए तीन अक्षों पर रैखिक त्वरण मापता है। Google Android Sensors Guide (2025) के अनुसार, ऐक्सलरोमीटर मोबाइल एप्लिकेशनों में सबसे अधिक उपयोग होने वाला संवेदक है। MEMS तकनीक संवेदक को 1 मिमी के चिप में रखने की अनुमति देती है जो 1 मीलीवाट से कम बिजली की खपत करता है।
मुख्य बातें
एक्सलरोमीटर एक माइक्रोइलेक्ट्रोमैकैनिकल (MEMS) संवेदक है जो तीन पारस्परिक लंबवत अक्षों पर त्वरण के प्रक्षेपण को मापता है: X (क्षैतिज, दाएँ ओर), Y (ऊर्ध्वाधर, ऊपर की ओर) और Z (स्क्रीन तल के लंबवत)। आराम की अवस्था में, एक्सलरोमीटर Z अक्ष पर 9.8 m/s² दर्शाता है — यह पृथ्वी के केंद्र की ओर निर्देशित गुरुत्वाकर्षण त्वरण है। इस मान के आधार पर, सिस्टम डिवाइस की स्थिति निर्धारित करता है: यदि Z मान 0 के करीब है और Y मान -9.8 m/s² के करीब है, तो डिवाइस क्षैतिज रूप से घूमा हुआ है। एक्सलरोमीटर माप सीमा आमतौर पर चिप मॉडल के आधार पर ±2g, ±4g, ±8g या ±16g होती है।
आधुनिक एक्सलरोमीटर कई प्रमुख पैरामीटर्स द्वारा पहचाने जाते हैं: संवेदनशीलता (0.001 m/s² से), नमूना दर (1000 Hz तक), माप सीमा और शोर स्तर। फ्लैगशिप डिवाइसों में 1600 Hz तक की आवृत्ति और सक्रिय मोड में 0.5 mW से कम बिजली की खपत के साथ STMicroelectronics LSM6DSO या Bosch BMI270 संवेदक लगे होते हैं। नमूना दर जितना अधिक होगा, एप्लिकेशन को उतना ही विस्तृत संकेत मिलेगा — गेम्स को 200–400 Hz की आवश्यकता होती है, जबकि कदम गिनती के लिए 10–50 Hz पर्याप्त है। संवेदक का शोर माप सटीकता को प्रभावित करता है और आमतौर पर OS स्तर पर लो-पास फ़िल्टर द्वारा क्षतिपूर्ति की जाती है।
एक MEMS एक्सलरोमीटर आंतरिक रूप से सिलिकॉन की एक सूक्ष्म संरचना से मिलकर बना होता है: एक प्रूफ़ मास जो स्थिर इलेक्ट्रोड के बीच लचीली कैंटिलीवर्स पर टांगी होती है। जब त्वरण होता है, द्रव्यमान खिसकता है, जिससे गतिशील और स्थिर तत्वों के बीच धारिता बदलती है — इस बदलाव को मापा जाता है और एक विद्युत संकेत में बदला जाता है। एक बंद-लूप फ़ीडबैक सर्किट द्रव्यमान को इलेक्ट्रोस्टैटिक बल का उपयोग करके केंद्रीय स्थिति में रखती है, पूरे रेंज में रैखिकता सुनिश्चित करती है। ओपन-लूप सिस्टम में, द्रव्यमान स्वतंत्र रूप से चलता है, जिससे गणना सरल होती है लेकिन सटीकता कम होती है। STMicroelectronics (2025) के अनुसार, बंद-लूप एक्सलरोमीटर 0.1 mg/°C से कम तापमान बहाव के साथ 0.001g तक की सटीकता प्राप्त करते हैं।
एक्सलरोमीटर के तीन अक्ष तीन स्थानिक आयामों के अनुरूप हैं: X (बाएँ-दाएँ झुकाव), Y (ऊपर-नीचे) और Z (स्क्रीन के सापेक्ष आगे-पीछे)। जब डिवाइस स्क्रीन ऊपर करके टेबल पर पड़ा होता है, गुरुत्वाकर्षण त्वरण वेक्टर Z अक्ष पर 9.8 m/s² पर होता है। जब डिवाइस झुकाया जाता है, गुरुत्वाकर्षण प्रक्षेपण अक्षों के बीच पुनर्वितरित हो जाते हैं — इन प्रक्षेपणों से, झुकाव कोण 0.1 डिग्री तक की सटीकता के साथ परिगणित किया जा सकता है। गुरुत्वाकर्षण के प्रभाव के बिना गति का पता लगाने के लिए, त्वरण के गतिशील घटक (डिवाइस की अपनी गति) को स्थैतिक घटक (गुरुत्वाकर्षण) से अलग करने के लिए एक हाइ-पास फ़िल्टर का उपयोग किया जाता है।
Android पर, एक्सलरोमीटर तक पहुंच SensorManager क्लास और SensorEventListener इंटरफ़ेस के माध्यम से प्रदान की जाती है। एप्लिकेशन SENSOR_SERVICE सिस्टम सेवा प्राप्त करता है, TYPE_ACCELEROMETER संवेदक का अनुरोध करता है, और एक निर्दिष्ट अपडेट दर के साथ एक लिस्नर पंजीकृत करता है। सिस्टम मानों की एक सरणी के साथ प्रत्येक नए माप के साथ onSensorChanged को कॉल करता है: values[0] = X, values[1] = Y, values[2] = Z। नीचे Kotlin में एक्सलरोमीटर डेटा पढ़ने का एक पूर्ण उदाहरण है।
val sensorManager = getSystemService(SENSOR_SERVICE) as SensorManager
val accelerometer = sensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER)
val sensorEventListener = object : SensorEventListener {
override fun onSensorChanged(event: SensorEvent) {
val x = event.values[0]
val y = event.values[1]
val z = event.values[2]
// झुकाव कोण की गणना
val pitch = Math.atan2(
x.toDouble(),
Math.sqrt(y.toDouble() * y + z.toDouble() * z)
)
// नए कोण के साथ UI अपडेट करना
textViewAngle.text = "झुकाव: ${Math.toDegrees(pitch)}°"
}
override fun onAccuracyChanged(
sensor: Sensor, accuracy: Int
) { }
}
sensorManager.registerListener(
sensorEventListener,
accelerometer,
SensorManager.SENSOR_DELAY_GAME
)
उदाहरण में, SensorManager.SENSOR_DELAY_GAME अपडेट दर को ~50 Hz पर सेट करता है, जो गेम्स और इंटरैक्टिव एप्लिकेशनों के लिए इष्टतम है। कदम गिनती के लिए, SENSOR_DELAY_NORMAL (~5 Hz) का उपयोग करें; सटीक माप के लिए, SENSOR_DELAY_FASTEST (~200 Hz) का उपयोग करें। onSensorChanged में, event.values सरणी में वर्तमान संवेदक रीडिंग्स होती हैं। X, Y, Z मानों के आधार पर, atan2 का उपयोग करके पित्च कोण की गणना की जाती है — यह ओरिएंटेशन संवेदक का उपयोग किए बिना डिवाइस की स्थिति निर्धारित करने का मूल सूत्र है। बैटरी बचाने के लिए onPause में लिस्नर को अपंजीकृत करना न भूलें।
private val alpha = 0.8f
private val gravity = FloatArray(3)
private val linearAcceleration = FloatArray(3)
override fun onSensorChanged(event: SensorEvent) {
// गुरुत्वाकर्षण निष्कर्षण के लिए लो-पास फ़िल्टर (LPF)
gravity[0] = alpha * gravity[0] + (1 - alpha) * event.values[0]
gravity[1] = alpha * gravity[1] + (1 - alpha) * event.values[1]
gravity[2] = alpha * gravity[2] + (1 - alpha) * event.values[2]
// गुरुत्वाकर्षण घटाना — रैखिक त्वरण प्राप्त करना
linearAcceleration[0] = event.values[0] - gravity[0]
linearAcceleration[1] = event.values[1] - gravity[1]
linearAcceleration[2] = event.values[2] - gravity[2]
}
गुरुत्वाकर्षण घटक (स्थैतिक वेक्टर) को निकालने के लिए alpha गुणांक वाला कम-पास फ़िल्टर; इसे घटाने पर डिवाइस का शुद्ध त्वरण (रैखिक त्वरण) मिलता है। यह दिशा को ध्यान में रखे बिना गति का पता लगाने के लिए आवश्यक है — उदाहरण के लिए, कदम, झटका या प्रभाव का पता लगाना। 0.8 का alpha मान का मतलब है कि फ़िल्टर लगभग 20% नए संकेत को पास करता है और 80% पिछले को बनाये रखता है — बिना किसी महत्वपूर्ण विलंब के शोर को खत्म करने के लिए पर्याप्त।
iOS पर, एक्सलरोमीटर तक पहुंच Core Motion फ़्रेमवर्क के CMMotionManager क्लास के माध्यम से प्रदान की जाती है। एप्लिकेशन एक मैनेजर उदाहरण बनाता है और एक क्यू और हैंडलर के साथ startAccelerometerUpdates को कॉल करता है। डेटा CMAccelerometerData के रूप में लौटाया जाता है, जिसमें x, y और z फ़ील्ड के साथ एक CMAcceleration संरचना होती है। नीचे शोर फ़िल्टरिंग के साथ Swift में एक्सलरोमीटर डेटा प्राप्त करने का एक उदाहरण है।
import CoreMotion
let motionManager = CMMotionManager()
motionManager.accelerometerUpdateInterval = 1.0 / 60.0
guard motionManager.isAccelerometerAvailable else { return }
motionManager.startAccelerometerUpdates(to: OperationQueue.current!) {
data, error in
guard let acceleration = data?.acceleration,
error == nil else { return }
// g में मान (1 g = 9.8 m/s²)
let magnitude = sqrt(
acceleration.x * acceleration.x +
acceleration.y * acceleration.y +
acceleration.z * acceleration.z
)
// यदि magnitude > 2.5 g — झटका पहचाना गया
if magnitude > 2.5 {
DispatchQueue.main.async {
self.handleShake()
}
}
}
उदाहरण में, accelerometerUpdateInterval को 1/60 सेकंड (~60 Hz) पर सेट किया जाता है — सहज एनिमेशन और गेम्स के लिए इष्टतम। isAccelerometerAvailable विधि जांचती है कि संवेदक डिवाइस पर उपलब्ध है या नहीं। त्वरण मान g इकाइयों में लौटाए जाते हैं (1 g = 9.8 m/s²)। magnitude वेक्टर की गणना तीन घटकों के यूक्लिडियन नॉर्म के रूप में की जाती है — यदि मान 2.5 g से अधिक है, तो इसे डिवाइस झटका माना जाता है। अपडेट रोकने के लिए, स्क्रीन से बाहर निकलते समय हमेशा stopAccelerometerUpdates को कॉल करें।
एक्सलरोमीटर का उपयोग मोबाइल एप्लिकेशनों की एक विस्तृत श्रृंखला में किया जाता है। सबसे स्पष्ट परिदृश्य स्वचालित स्क्रीन रोटेशन है: सिस्टम एक्सलरोमीटर डेटा के आधार पर पोर्ट्रेट और लैंडस्केप के बीच स्विच करता है। गेम्स में, एक्सलरोमीटर एक नियंत्रण इनपुट के रूप में काम करता है — डिवाइस को झुकाने से स्टियरिंग वील घूमती है या पात्र चलता है। फ़िटनेस एप्लिकेशन चलने के दौरान चार्कित्रिक त्वरण शिखरों के आधार पर कदमों की गणना करते हैं। नीचे विशिष्ट परिदृश्यों और संवेदक आवश्यकताओं की एक तालिका है।
| परिदृश्य | आवृत्ति (Hz) | सटीकता | फ़िल्टरिंग |
|---|---|---|---|
| स्वचालित स्क्रीन रोटेशन | 5–10 | कम | LPF |
| कदम गिनती | 20–50 | मध्यम | HPF + शिखर डिटेक्टर |
| गेम्स (रेसिंग) | 50–200 | उच्च | अंशांकन + LPF |
| कैमरा स्थिरीकरण | 200–1000 | अधिकतम | पूरक फ़िल्टर |
| इशारा पहचान | 50–100 | मध्यम | HPF + सीमा डिटेक्टर |
एक्सलरोमीटर को लागू करते समय, ध्यान रखें कि डिवाइस का गर्म होना और संवेदक की उम्र रीडिंग सटीकता को प्रभावित कर सकती है। महत्वपूर्ण मापों (वीडियो स्थिरीकरण, कंपास) के लिए, संवेदक फ़्यूजन के भाग के रूप में गैरोस्कोप और मैग्नेटोमीटर का उपयोग करने की भी सिफ़ारिश की जाती है।
एक्सलरोमीटर कई प्रकार की त्रुटियों के अधीन होते हैं: शून्य पहरेला — जब संवेदक आराम में गैर-शून्य मान दर्शाता है; पैमाना गुणक त्रुटि — जब अक्षों के बीच संवेदनशीलता भिन्न होती है; और माप शोर, जो एक रीडिंग की सटीकता को कम करता है। MEMS संवेदकों को निर्माण के दौरान अंशांकित किया जाता है, लेकिन समय के साथ तापमान और यांत्रिक तनाव के कारण पैरामीटर में बहाव आ सकता है। एप्लिकेशन में क्षतिपूर्ति के लिए, एक सरल अंशांकन लागू किया जा सकता है: आराम में, औसत मान (पहरेला) रिकॉर्ड करें और इसे सभी बाद के मापों से घटाएँ। अधिक सटीक अंशांकन के लिए डिवाइस को सभी अक्षों पर घूमाने की आवश्यकता होती है — इस विधि को छह-बिंदु अंशांकन कहा जाता है और यह 0.5% से कम त्रुटि प्राप्त करता है।
अक्सर पूछे जाने वाले प्रश्न
स्मार्टफ़ोन में एक्सलरोमीटर लगभग 1 मिमी का एक MEMS संवेदक है जो तीन अक्षों पर त्वरण मापता है। यह बाहरी स्रोतों का उपयोग किए बिना डिवाइस की स्थिति (पोर्ट्रेट या लैंडस्केप), झटका, कदम और गति का पता लगाता है।
एक्सलरोमीटर रैखिक त्वरण (गुरुत्वाकर्षण सहित) मापता है, जबकि गैरोस्कोप कोणीय वेग (घूर्णन) मापता है। एक्सलरोमीटर स्थिति निर्धारित करता है, गैरोस्कोप घूर्णन का पता लगाता है। साथ में वे अंतरिक्ष में सटीक गति ट्रैकिंग (संवेदक फ़्यूजन) प्रदान करते हैं।
संवेदक प्राप्त करने के लिए SensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER) का उपयोग करें, फिर SensorEventListener के साथ registerListener करें। onSensorChanged में, event.values सरणी में X, Y, Z मान m/s² में होते हैं। onPause में हमेशा रजिस्टर रद्द करें।
magnitude = sqrt(x² + y² + z²) की गणना करें। यदि मान 2–3 g (गुरुत्वाकर्षण को फ़िल्टर करने के बाद) से अधिक है, तो डिवाइस को झटका दिया गया है। iOS में, 2.5 g की सीमा के साथ CMMotionManager का उपयोग करें; Android में, 15 m/s² की सीमा के साथ Sensor.TYPE_LINEAR_ACCELERATION का उपयोग करें।
हाँ, एक सरल अंशांकन के लिए, डिवाइस को एक समतल सतह पर रखें, 2–3 सेकंड के लिए प्रत्येक अक्ष की औसत रीडिंग रिकॉर्ड करें और इन मानों को सभी बाद के मापों से घटाएँ। यह शून्य पहरेले की क्षतिपूर्ति करता है लेकिन पैमाना त्रुटि की नहीं।
सारांश
हम एक मोबाइल एप्लिकेशन टर्नकी विकसित करेंगे
IT Sectr 2017 से स्टार्टअप और व्यवसायों के लिए iOS और Android एप्लिकेशन बनाता है। हम आपको सलाह देंगे और सर्वोत्तम समाधान प्रस्तावित करेंगे।
यह भी पढ़ें