SL.pro
Blog · · 9 min membaca

Cara Kerja Aplikasi Waterpass: Akselerometer Telefon Dijelaskan

Telefon anda tahu arah mana yang menuju ke bawah kerana ia mempunyai penderia kecil yang dipanggil akselerometer MEMS. Penderia itu mengukur bagaimana graviti menarik telefon di sepanjang tiga arah serentak. Aplikasi waterpass membaca tiga nombor itu, menjalankan sedikit trigonometri, dan memaparkan sudut kepada anda. Ia melakukan ini ratusan kali sesaat, di dalam cip yang anda sukar melihat dengan mata kasar. Artikel ini menerangkan apa yang sebenarnya berlaku.

Pengambilan Utama
  • Akselerometer mengukur bagaimana graviti tersebar merentasi tiga paksi. Ia tidak mengukur gerakan apabila telefon duduk diam.
  • Pitch dan roll diperoleh daripada formula arctan yang dikenakan pada tiga bacaan graviti tersebut.
  • Spirit Level Pro menyalurkan bacaan mentah melalui purata bergerak eksponen (alpha=0.15) untuk menghentikan gelembung bergegar.
  • Penderia MEMS hanyut mengikut suhu, jadi tentukur di tempat anda bekerja.
  • Untuk telefon yang dipegang diam pada permukaan, akselerometer melakukan keseluruhan kerja. Anda tidak perlukan giroskop.
Foto makro dekat bagi cip akselerometer tri-paksi MEMS Kionix daripada peranti mudah alih
Cip akselerometer MEMS di dalam telefon anda lebih kecil daripada sebutir beras namun mengukur graviti dengan tepat.

Apakah itu akselerometer MEMS?

MEMS bermaksud Micro-Electro-Mechanical Systems. Elemen penderia di dalam akselerometer telefon adalah sangat kecil, beberapa ratus mikron lebarnya, lebih kecil daripada sebutir garam. Ia terletak pada silikon yang sama dengan elektronik cip biasa dan dibuat dengan cara yang sama. Itulah sebabnya penderia ini murah dan berakhir dalam hampir setiap telefon.

Mekanismanya mudah sebaik sahaja anda bayangkannya. Satu jisim kecil tergantung pada spring silikon yang diukir ke dalam cip. Apabila anda condongkan cip, graviti menarik jisim itu sedikit terpesong dari tengah. Gerakan itu mengubah jurang antara jari logam berbentuk sikat, dan perubahan jurang mengubah kapasitans di antaranya. Cip membaca perubahan itu dan menukarnya kepada nombor pecutan, diukur dalam unit g.

Inilah bahagian yang membolehkan waterpass wujud. Apabila telefon duduk diam, akselerometer tidak membaca gerakan. Ia membaca berapa banyak graviti menarik di sepanjang setiap satu daripada tiga paksinya. Graviti ialah daya yang tetap dan diketahui. Sebaik sahaja anda tahu bagaimana ia terbahagi antara tiga paksi, anda boleh mengira dengan tepat bagaimana telefon dicondongkan.

Bagaimanakah akselerometer paksi 3 mengukur kecondongan?

Akselerometer tiga paksi memberikan telefon set arahnya sendiri: X berjalan kiri ke kanan, Y berjalan atas ke bawah, dan Z berjalan hadapan ke belakang. Letakkan telefon rata di atas meja dan graviti menarik hampir sepenuhnya di sepanjang Z, jadi Z membaca kira-kira 9.81 m/s² manakala X dan Y membaca hampir sifar. Condongkan telefon dan graviti beralih, kurang pada Z, lebih pada X dan Y, mengikut kadar sudut.

Menukar tiga bacaan itu kepada sudut ialah trigonometri asas. Pitch ialah kecondongan hadapan ke belakang, roll ialah kecondongan kiri ke kanan, dan kedua-duanya diperoleh daripada tangen songsang:

Pitch = arctan( Y / sqrt(X² + Z²) ) Roll = arctan( X / sqrt(Y² + Z²) )

Dua baris itu ialah keseluruhan teras matematik bagi aplikasi waterpass. Masukkan tiga nilai mentah, jalankan pengiraan, dan anda mendapat pitch dan roll dalam radian. Darabkan dengan 180/π untuk mendapatkan darjah. Itulah nombor yang muncul di skrin anda.

Anda mungkin tertanya-tanya mengapa penyebut menggunakan punca kuasa dua bagi dua paksi lain, bukan hanya satu. Ia mengekalkan bacaan stabil sepanjang putaran penuh. Jika anda bahagikan dengan satu paksi sahaja, matematik rosak berhampiran menegak, kerana paksi itu jatuh ke sifar dan anda berakhir dengan membahagi dengan nilai yang hampir tiada. Menggunakan magnitud gabungan kedua-dua paksi lain mengelakkan hal itu.

Papan pecah akselerometer MEMS paksi 3 Freescale Semiconductor pada latar belakang putih
Akselerometer paksi 3 mengukur tarikan graviti pada paksi X, Y, dan Z pada masa yang sama.
Lihat fizik berfungsi secara masa nyata

Spirit Level Pro memaparkan sudut pitch dan roll secara langsung dengan pelicinan EMA, lima pratetap toleransi, dan penentukuran satu ketik. Tiada muat turun diperlukan.

Cubalah Spirit Level Pro Percuma

Mengapa data sensor mentah begitu bising?

Keluaran akselerometer mentah melompat-lompat lebih daripada yang anda jangka. Malah telefon yang duduk betul-betul diam menunjukkan goyangan kecil dalam bacaannya. Sebahagiannya ialah hingar elektrik dalam penderia itu sendiri, sebahagiannya ialah getaran yang datang melalui permukaan, dan sebahagiannya ialah ralat pembundaran apabila isyarat analog ditukar menjadi nombor. Paparkan aliran mentah itu di skrin dan gelembung bergegar tanpa henti, yang tidak berguna untuk kerja teliti.

Hingar itu datang daripada beberapa sumber. Hingar haba ialah turun naik elektrik rawak akibat kepanasan. Anda tidak boleh membuangnya, dan ia menetapkan had bawah bagi seberapa senyap penderia boleh menjadi. Hingar getaran datang daripada persekitaran anda: pemampat peti sejuk, bunyi langkah kaki, lalu lintas di luar. Dan titik sifar penderia hanyut perlahan-lahan dengan sendirinya dari masa ke masa. Setiap satu memerlukan penyelesaian berbeza.

Penyelesaian perisian biasa ialah penapis laluan-rendah. Ia membenarkan perubahan perlahan lalu, seperti kecondongan sebenar, dan menahan perubahan cepat, seperti getaran. Cara lazim untuk melakukannya ialah purata bergerak eksponen, atau EMA. Setiap bacaan baru dikira sebagai sebahagian kecil, alpha, dan selebihnya dibawa daripada nilai tertapis sebelumnya:

filtered = alpha × new_reading + (1 - alpha) × previous_filtered

Spirit Level Pro menggunakan EMA dengan alpha=0.15. Kami menetap pada nombor itu selepas mencuba pelbagai nilai secara manual. Pada alpha=0.05 bacaan sangat licin tetapi lambat, dan gelembung ketinggalan di belakang telefon apabila anda menggerakkannya. Pada alpha=0.3 ia mengikut dengan baik tetapi bergegar cukup sehingga bacaan tepat sukar ditangkap. Alpha=0.15 terletak di antara. Gelembung terasa hidup tanpa terasa gemuruh.

Pertukarannya: Alpha yang lebih tinggi menjadikan paparan lebih pantas mengikut kecondongan sebenar, tetapi ia juga membenarkan lebih banyak getaran lalu. Alpha yang lebih rendah melicinkan dengan lebih kuat tetapi menambah ketinggalan. Alpha=0.15 mengimbangi kedua-duanya dan mendap dalam kira-kira 150ms.

Apakah peranan giroskop?

Giroskop mengukur berapa cepat telefon berpusing, dalam darjah sesaat. Ia tidak mengukur arah mana telefon menghala. Perbezaan itu penting. Dengan sendirinya, giroskop tidak boleh memberitahu anda sama ada telefon rata. Ia hanya tahu sama ada ia berpusing dan berapa cepat. Untuk bacaan aras dengan telefon dipegang diam, akselerometer sudah pun mempunyai apa yang anda perlukan.

Giroskop mendapat tempatnya apabila telefon bergerak, melalui gabungan sensor. Akselerometer membaca kecondongan statik dengan baik tetapi menjadi lambat dan bising semasa gerakan cepat. Giroskop menjejak putaran cepat dengan baik tetapi hanyut, kerana ralat kecilnya terkumpul dari masa ke masa. Penapis pelengkap atau penapis Kalman mengadun kedua-duanya: giroskop mengendalikan gerakan cepat, dan akselerometer menarik bacaan jangka panjang kembali kepada nilai sebenar.

Kebanyakan aplikasi waterpass, termasuk Spirit Level Pro, melangkau gabungan sensor kerana kerjanya adalah statik. Anda letakkan telefon, ia mendap, anda baca sudut. Akselerometer mengendalikannya dengan baik secara sendiri. Gabungan sensor lebih penting apabila sesuatu bergerak di udara, seperti dron yang menjejak gerakannya sendiri, berbanding apabila anda menyemak rak.

Mengapa penentukuran begitu penting?

Setiap penderia MEMS keluar dari kilang dengan sedikit ofset terbina dalam. Ia ialah bias yang ditetapkan semasa pembuatan, dan ia sama pada setiap bacaan: jumlah tetap, dalam arah tetap. Jadi cip boleh membaca satu atau dua darjah tersasar walaupun telefon benar-benar rata. Inilah sebab tunggal terbesar mengapa aplikasi waterpass kelihatan salah sebaik sahaja dibuka.

Penentukuran membetulkannya dengan mengukur ofset itu pada permukaan yang anda percaya rata, kemudian menyimpannya. Spirit Level Pro menyimpan nilai itu dalam localStorage di bawah calibrationPitch dan calibrationRoll. Selepas itu, setiap bacaan menolak nombor tersimpan itu sebelum ia muncul di skrin. Ofset itu hilang.

Perbezaannya besar. Langkau penentukuran dan telefon dengan bias 1.5° membaca 1.5° salah pada segala-galanya. Ia boleh menunjukkan 0.0° sementara duduk pada cerun 1.5° yang sebenar. Tentukur telefon yang sama dan ia turun kepada beberapa persepuluh darjah. Itulah peningkatan ketepatan tunggal terbesar yang anda boleh dapat, dan ia hanya memerlukan beberapa saat.

Bagaimanakah suhu mempengaruhi ketepatan?

Penderia MEMS bertindak balas terhadap suhu. Spring silikon yang menggantung jisim bukti mengembang dan mengecut apabila cip memanas dan menyejuk, yang mengalihkan titik sifar. Jadi bawa telefon daripada kereta yang panas ke garaj yang sejuk dan bacaan hanyut sedikit sebelum penderia mendap pada suhu baharu. Ia bukan peralihan besar, tetapi ia nyata.

Pengajaran praktikalnya mudah: tentukur pada suhu yang anda rancang untuk bekerja. Penentukuran yang dilakukan dalam pejabat yang hangat tidak akan bertahan sepenuhnya dalam garaj yang sejuk. Anda tidak perlu risau tentang ini untuk setiap kerja. Untuk menggantung gambar atau menyemak rak, hanyut itu terlalu kecil untuk dilihat. Untuk kerja rapi dalam beberapa persepuluh darjah, beri telefon satu atau dua minit untuk mendap selepas perubahan suhu yang besar, kemudian tentukur.

Waterpass yang dipasang pada kamera menunjukkan cara pengukuran sudut berfungsi
Beberapa penderia bekerja bersama untuk menetapkan orientasi peranti dalam tiga dimensi.

iPhone berbanding Android: adakah perkakasan penderia berbeza?

Ya, dan ia menampakkan diri dalam rasa aplikasi. Apple membina timbunan gerakannya sendiri. iPhone dari 6s ke atas membawa koprosesor gerakan Apple yang mengendalikan data penderia berasingan daripada CPU utama. Galaxy flagship Samsung bergantung pada bahagian STMicroelectronics yang memadatkan akselerometer paksi 3 dan giroskop paksi 3 pada satu die. Telefon Pixel Google telah menggunakan penderia Bosch dan TDK InvenSense, bergantung pada tahun.

Selepas penentukuran, iPhone flagship dan Android flagship keluar lebih kurang sama. Jurang yang benar-benar penting ialah antara flagship dan Android bajet. Telefon bajet menggunakan MEMS lebih murah dengan resolusi lebih rendah, dan keluaran mentahnya lebih bising. Penentukuran masih menariknya rapat, dan untuk kebanyakan kerja DIY hasilnya memadai.

Apa yang membezakan iPhone dalam aplikasi waterpass bukanlah akselerometer, sebaliknya koprosesor gerakan itu. Ia terus mengumpul data penderia pada kadar tinggi walaupun aplikasi tidak berada di hadapan, jadi penapis pelicinan mempunyai lebih banyak sampel untuk digunakan. Itulah sebahagian besar sebab mengapa iPhone terasa begitu licin di sini, walaupun berbanding telefon Android dengan penderia yang di atas kertas sama baik.

Soalan lazim

Bagaimanakah aplikasi waterpass berfungsi di telefon?

Ia membaca akselerometer MEMS telefon, yang mengukur bagaimana graviti menarik di sepanjang tiga paksi (X, Y, Z). Condongkan telefon dan graviti beralih antara paksi itu. Aplikasi menjalankan formula arctan untuk mendapat pitch dan roll, melicinkan hasilnya untuk menenangkan hingar sensor, dan menunjukkannya sebagai gelembung atau nombor. Keseluruhannya berjalan ratusan kali sesaat.

Seberapa tepat akselerometer telefon untuk kegunaan waterpass?

Telefon flagship yang ditentukur membaca dalam beberapa persepuluh darjah. Telefon Android bajet membaca lebih teruk tanpa penentukuran, kerana penderianya lebih murah dan lebih berbeza antara unit. Faktor tunggal terbesar ialah penentukuran: ia membuang ofset kilang dan menarik hampir mana-mana telefon rapat. Untuk kebanyakan kerja DIY dan perdagangan, telefon jangkauan tengah yang ditentukur sudah cukup tepat.

Adakah aplikasi waterpass menggunakan giroskop?

Untuk telefon yang diam, tidak. Akselerometer memberikan anda sudut kecondongan dengan sendirinya. Giroskop mengukur kelajuan putaran, bukan kedudukan, jadi ia tidak boleh memberitahu anda sama ada telefon rata, hanya berapa cepat ia berpusing. Sesetengah aplikasi mengadun kedua-dua penderia untuk bacaan lebih licin semasa bergerak, tetapi untuk menekan telefon pada dinding dan membaca sudut, akselerometer melakukan keseluruhan kerja.

Mengapa aplikasi waterpass saya membaca sedikit tersasar walaupun pada permukaan rata?

Biasanya ia ialah ofset kilang. Setiap cip MEMS mempunyai bias kecil terbina dalam yang menjadikannya membaca bukan sifar walaupun telefon rata. Menentukur pada permukaan yang anda percayai membersihkannya. Punca lain ialah hanyut suhu, sarung telefon yang mengangkat satu tepi pada permukaan, atau habuk di bawah telefon. Menentukur pada meja kaca yang bersih selepas sebarang perubahan suhu yang besar menyelesaikan kebanyakannya.

Gambaran lengkap

Aplikasi waterpass berfungsi kerana fizik di sebaliknya boleh dipercayai. Graviti tetap, akselerometer mengukurnya sepanjang masa, dan trigonometri menukar tiga nombor kepada sudut. Laluan dari elemen penderia ke gelembung ialah matematik tetap sepanjang jalan. Tiada tekaan padanya.

Apa yang menjadikan satu aplikasi waterpass lebih baik daripada yang lain bukanlah perkakasan. Setiap telefon flagship sudah dihantar dengan penderia yang lebih daripada cukup baik. Perbezaannya ialah perisian: seberapa baik aliran mentah ditapis, bagaimana penentukuran disimpan dan digunakan, bagaimana pratetap toleransi sepadan dengan kerja sebenar. Betulkan perkara itu dan cip MEMS yang murah boleh menandingi alat khusus yang berharga jauh lebih tinggi.

Mengetahui cara penderia berfungsi juga menjadikan anda lebih mahir menggunakannya. Tentukur pada suhu kerja. Tanggalkan sarung untuk bacaan tepat. Biarkan nombor mendap sesaat sebelum anda mempercayainya. Setiap tabiat itu datang terus daripada memahami apa yang perkakasan sedang lakukan.

Cubalah Spirit Level Pro Percuma

Berfungsi pada mana-mana telefon atau tablet. Tiada muat turun diperlukan. Ciri-ciri pro daripada $10 sekali sahaja.

Buka Spirit Level Pro

Tiada akaun diperlukan · Berfungsi offline · 20 bahasa