0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

三軸加速度計(jì)MMA8451和TS-7680開(kāi)發(fā)板的應(yīng)用

星星科技指導(dǎo)員 ? 來(lái)源:嵌入式計(jì)算設(shè)計(jì) ? 作者:Michael Schmidt ? 2022-10-12 09:53 ? 次閱讀

本項(xiàng)目所用的 TS-7680 開(kāi)發(fā)板搭載 MMA8451 三軸加速度計(jì)芯片,Linux 支持該芯片通過(guò)輪詢驅(qū)動(dòng)。不幸的是,這種輪詢架構(gòu)嚴(yán)重限制了采樣率。在實(shí)踐中,它每秒產(chǎn)生20-30個(gè)樣本,即使在最高的輪詢速率下,與芯片能夠達(dá)到的800 Hz的原始速率相比也是如此。使用像泰諾系統(tǒng)公司設(shè)計(jì)的定制驅(qū)動(dòng)器可以實(shí)現(xiàn)更高的采樣率。但是,對(duì)于我們的目的,低采樣率就足夠了。

TS-7680 上的默認(rèn)磁盤(pán)區(qū)目前并未編譯 MMA8451 芯片支持。雖然版本將載入日后,但該內(nèi)核必須先編譯并安裝于主板上 TS-7680 使用手冊(cè)中的說(shuō)明。

注意:加速度計(jì)是電路板選項(xiàng)。如果您的開(kāi)發(fā)板上沒(méi)有加速度計(jì),您仍然可以運(yùn)行此演示。但是,您需要從 中刪除或注釋掉以下行:ts7680-demo-server.js

.API(“mma8451”)

如果您的內(nèi)核不支持加速計(jì),則這樣做尤其重要,因?yàn)槿鄙倌承┪募?dǎo)致服務(wù)器終止。

設(shè)置加速度計(jì)

加速度計(jì)可以通過(guò)/特殊文件訪問(wèn)。每次讀取此文件都將返回整數(shù)個(gè)事件,因此無(wú)需設(shè)置某種狀態(tài)機(jī)來(lái)處理部分?jǐn)?shù)據(jù)返回。但是,每個(gè)加速度計(jì)示例通常由至少 4 個(gè)事件組成:一個(gè)事件用于加速度計(jì)的每個(gè)軸,另一個(gè)表示數(shù)據(jù)已完成。

在實(shí)現(xiàn)中只有三個(gè)函數(shù)。第一個(gè)要查看的變量被分配給變量,該變量在包首次初始化時(shí)被調(diào)用。該函數(shù)將從檢查選項(xiàng)開(kāi)始。如果有字符串選項(xiàng),則該選項(xiàng)將用作終結(jié)點(diǎn),而不是默認(rèn)終結(jié)點(diǎn):

接下來(lái),我們向日志發(fā)送一條消息,指示已輸入服務(wù)。雖然日志記錄框架已經(jīng)記錄了調(diào)用方的 IP 地址和 URL,但這是指示請(qǐng)求路由正確的附加信息

之后,需要初始化加速度計(jì)??梢酝ㄟ^(guò)將 值 寫(xiě)入 sys 文件系統(tǒng)中的相應(yīng)文件來(lái)啟用加速度計(jì):1

輪詢周期應(yīng)設(shè)置為 10 毫秒。這是我們可用于此內(nèi)核的最小值。

比例因子應(yīng)設(shè)置為 +/-2 gs,或最多 2 gs (19.62 m/s^2),方法是寫(xiě)入值 。如果需要更高的加速度范圍,但以較低的分辨率為代價(jià),則可以將其設(shè)置為更高的值,例如+/-4 gs(通過(guò)寫(xiě)入)或+/-8 gs(通過(guò)寫(xiě)入)。

最后,調(diào)用快速應(yīng)用,通過(guò)調(diào)用函數(shù)來(lái)響應(yīng)來(lái)自終結(jié)點(diǎn)的 GET 請(qǐng)求。將參數(shù)附加到提供的基本終結(jié)點(diǎn) – express 會(huì)將提供的名稱轉(zhuǎn)換為傳遞給我們的服務(wù)函數(shù)的請(qǐng)求對(duì)象中“param”對(duì)象中的鍵:

現(xiàn)在將調(diào)用該函數(shù)來(lái)處理以“”開(kāi)頭的任何URL或選項(xiàng)中傳遞的任何端點(diǎn)上對(duì)加速度計(jì)數(shù)據(jù)的HTTP請(qǐng)求。將接受此字符串之后的 URL 中的任何其他字符,從而允許傳遞參數(shù)。處理程序的函數(shù)原型看起來(lái)與其他快速處理程序類似,采用請(qǐng)求對(duì)象 () 和響應(yīng)對(duì)象 ()。

處理加速度計(jì)數(shù)據(jù)的 HTTP 請(qǐng)求

在函數(shù)中要做的第一件事是將參數(shù)解釋為一個(gè)數(shù)字 - 這是加速度計(jì)將被采樣的毫秒數(shù)。健全性檢查此值,允許任何正時(shí)間最多一小時(shí)。在實(shí)踐中,這么長(zhǎng)的采樣時(shí)間可能沒(méi)有用,但我們必須在某個(gè)地方畫(huà)線:

此時(shí),我們致力于將加速計(jì)值發(fā)送到客戶端,因此請(qǐng)繼續(xù)寫(xiě)出 HTTP 標(biāo)頭。

我們將發(fā)送純文本,每行一個(gè)樣本,其中逗號(hào)分隔時(shí)間值(自 Epoch 以來(lái)的毫秒數(shù)),x、y 和 z 軸值作為原始加速度計(jì)報(bào)告的整數(shù)。要開(kāi)始采樣,需要調(diào)用該函數(shù),該函數(shù)采用回調(diào)函數(shù),每當(dāng)收到樣本時(shí),它將向該函數(shù)傳遞時(shí)間,x,y和z值。將這些值直接寫(xiě)入響應(yīng)數(shù)據(jù):listen

這存儲(chǔ)了變量中的返回值。返回值是一個(gè)包含名為 的函數(shù)的對(duì)象,當(dāng)調(diào)用該函數(shù)時(shí)將終止采樣過(guò)程。調(diào)用 setTimeout 以客戶端指定的毫秒數(shù)接收回調(diào),并在收到時(shí)調(diào)用 stop 函數(shù),然后結(jié)束對(duì)客戶端的響應(yīng):

現(xiàn)在進(jìn)入函數(shù),其中發(fā)生了流式傳輸數(shù)據(jù)并將其轉(zhuǎn)換為示例的實(shí)際工作。

流式處理和采樣加速度計(jì)數(shù)據(jù)

首先,聲明一些局部變量:

該變量將保存事件文件的文件描述符。、 、 和 變量將保存每個(gè)樣本的分量,直到它們準(zhǔn)備好發(fā)送給調(diào)用方。該變量保存輸入流的當(dāng)前狀態(tài)(每個(gè)樣本作為多個(gè)事件發(fā)送,并且此變量將跟蹤何時(shí)收到整個(gè)樣本)。最后,該變量將保存返回值,該值將是一個(gè)包含停止采樣過(guò)程的函數(shù)的對(duì)象。fdxyztstateret

首先打開(kāi)事件設(shè)備文件。完成此操作后,加速度計(jì)將開(kāi)始采集樣本。

每當(dāng)采集樣本時(shí),都會(huì)收到多個(gè)事件。Node.js將負(fù)責(zé)在數(shù)據(jù)可用時(shí)自動(dòng)讀取數(shù)據(jù),因此請(qǐng)?jiān)O(shè)置回調(diào)以接受此數(shù)據(jù)并對(duì)其進(jìn)行處理:

該參數(shù)將是包含從文件中讀取的數(shù)據(jù)的緩沖區(qū)。首先要做的是從塊中讀取事件。每個(gè)事件的長(zhǎng)度為 16 個(gè)字節(jié)。在 C 中,事件的結(jié)構(gòu)如下所示:chunk

來(lái)自事件設(shè)備的數(shù)據(jù)將始終以 16 字節(jié)的倍數(shù)提供,因此不需要特殊的邏輯來(lái)處理部分事件。下面是處理事件數(shù)據(jù)塊的代碼:

while 循環(huán)讓我們一直閱讀,只要至少剩下一個(gè)數(shù)據(jù)塊。索引變量 用于跟蹤接下來(lái)要處理的塊中的偏移量。Buffer 函數(shù),用于從緩沖區(qū)中的指定偏移量以小字節(jié)序格式讀取 16 位和 32 位整數(shù)。

讀取事件后,前進(jìn)索引。然后檢查事件是否為3,表示存在示例元素;如果是,請(qǐng)查看代碼以確定它是示例的 x、y 或 z 軸部分。type

請(qǐng)注意,時(shí)間在每個(gè)事件中都是冗余的,并且對(duì)于同一示例的所有部分應(yīng)該相同,因此可以直接使用來(lái)自事件的值。當(dāng)收到事件 0, 0 時(shí),這表示示例已完成。但是,您可以使用該變量來(lái)跟蹤已記錄的樣本的哪些部分,并且僅當(dāng)已收到所有部分時(shí)才發(fā)送樣本。通常,只有在樣本中間開(kāi)始讀取事件(實(shí)際上確實(shí)發(fā)生)時(shí),才會(huì)遺漏樣本的某些部分。typecodestate

最后,在設(shè)置函數(shù)以處理從內(nèi)核流式傳輸?shù)臉颖竞?,使用該函?shù)設(shè)置返回值對(duì)象,這會(huì)關(guān)閉文件描述符以停止流式處理。

在下一期中,我們將介紹如何實(shí)現(xiàn)對(duì)模數(shù)轉(zhuǎn)換器ADC) 的支持。

審核編輯:郭婷

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 加速度計(jì)
    +關(guān)注

    關(guān)注

    6

    文章

    695

    瀏覽量

    45799
  • 開(kāi)發(fā)板
    +關(guān)注

    關(guān)注

    25

    文章

    4838

    瀏覽量

    96855
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    基于加速度計(jì)的評(píng)估的設(shè)計(jì)演示

    加速度計(jì)是任何需要響應(yīng)運(yùn)動(dòng)或設(shè)備方向的便攜式或非固定式設(shè)備的關(guān)鍵部件 - 不僅僅是游戲控制器和手機(jī),還包括工業(yè)機(jī)器人和過(guò)程控制機(jī)械。僅從其數(shù)據(jù)表中選擇加速度計(jì)是不夠的;你需要在實(shí)踐中評(píng)估它的表現(xiàn)。本文將介紹飛思卡爾和德州儀器公司的兩款基于
    的頭像 發(fā)表于 03-07 08:18 ?4542次閱讀

    加速度計(jì)加速度計(jì)的使用區(qū)別?

    有個(gè)問(wèn)題請(qǐng)教一下:在靜態(tài)測(cè)量的情況下,兩加速度計(jì)在測(cè)得X、Y上的加速度后,是不是就可以根據(jù)這兩個(gè)值和重力加速度g算出Z
    發(fā)表于 12-29 06:06

    論,MPU6050,MMA8451加速度傳感器X,Y,Z加速度原始值的穩(wěn)定性

    最近本人在研究使用加速度傳感器 計(jì)算傾角角度研究了幾款芯片,MPU6050,MMA8451,以及SCA3000,通過(guò)對(duì)芯片加速度原始值的
    發(fā)表于 08-07 14:17

    請(qǐng)問(wèn)兩加速度計(jì)加速度計(jì)的使用區(qū)別是什么?

    有個(gè)問(wèn)題請(qǐng)教一下:在靜態(tài)測(cè)量的情況下,兩加速度計(jì)在測(cè)得X、Y上的加速度后,是不是就可以根據(jù)這兩個(gè)值和重力加速度g算出Z
    發(fā)表于 08-08 09:12

    2460-010加速度計(jì)

    `SDI的2460和2466型低成本MEMS可變電容加速度計(jì)是堅(jiān)固的即插即用測(cè)量設(shè)備,適用于各種苛刻的應(yīng)用程序。兩種型號(hào)在零到中等方面都出類拔萃頻率商業(yè)和工業(yè)應(yīng)用,特別是在可靠的情況下性能,極低
    發(fā)表于 05-28 14:41

    MMA8451模塊 數(shù)字加速度模塊 高精度傾斜度模塊

    MMA8451模塊 數(shù)字加速度模塊 高精度傾斜度模塊
    發(fā)表于 11-20 17:07 ?0次下載

    使用I2C的通信方式驅(qū)動(dòng)MMA8451加速度計(jì)的代碼免費(fèi)下載

    本文檔的主要內(nèi)容詳細(xì)介紹的是使用I2C的通信方式驅(qū)動(dòng)MMA8451加速度計(jì)的代碼免費(fèi)下載。
    發(fā)表于 07-31 17:35 ?11次下載
    使用I2C的通信方式驅(qū)動(dòng)<b class='flag-5'>MMA8451</b><b class='flag-5'>加速度計(jì)</b>的代碼免費(fèi)下載

    digilentPmodACL加速度計(jì)介紹

    PmodACL是一個(gè)數(shù)字加速度計(jì)模塊,可為主板提供相應(yīng)的輸入。
    的頭像 發(fā)表于 12-02 11:23 ?2166次閱讀
    digilentPmodACL<b class='flag-5'>三</b><b class='flag-5'>軸</b><b class='flag-5'>加速度計(jì)</b>介紹

    UG-242:加速度計(jì)評(píng)估

    UG-242:加速度計(jì)評(píng)估
    發(fā)表于 03-19 13:26 ?11次下載
    UG-242:<b class='flag-5'>三</b><b class='flag-5'>軸</b><b class='flag-5'>加速度計(jì)</b>評(píng)估<b class='flag-5'>板</b>

    微機(jī)械數(shù)字加速度計(jì)MMA8451Q的主要特性及應(yīng)用解決方案

    飛思卡爾公司的MMA8451Q是智能低功耗容性微機(jī)械數(shù)字加速度計(jì),具有14位分辨率,3x3x1mmQFN封裝,電源電壓1.95V-3.6V,接口電壓1.6V-3.6V,動(dòng)態(tài)替代滿刻
    的頭像 發(fā)表于 03-30 15:04 ?4121次閱讀
    微機(jī)械數(shù)字<b class='flag-5'>加速度計(jì)</b><b class='flag-5'>MMA8451</b>Q的主要特性及應(yīng)用解決方案

    ADXL311EB:雙加速度計(jì)評(píng)估

    ADXL311EB:雙加速度計(jì)評(píng)估
    發(fā)表于 04-26 15:39 ?2次下載
    ADXL311EB:雙<b class='flag-5'>軸</b><b class='flag-5'>加速度計(jì)</b>評(píng)估<b class='flag-5'>板</b>

    EVAL-ADXL325Z:加速度計(jì)評(píng)估

    EVAL-ADXL325Z:加速度計(jì)評(píng)估
    發(fā)表于 05-13 11:29 ?11次下載
    EVAL-ADXL325Z:<b class='flag-5'>三</b><b class='flag-5'>軸</b><b class='flag-5'>加速度計(jì)</b>評(píng)估<b class='flag-5'>板</b>

    EVAL-ADXL335Z:加速度計(jì)評(píng)估

    EVAL-ADXL335Z:加速度計(jì)評(píng)估
    發(fā)表于 05-14 16:26 ?2次下載
    EVAL-ADXL335Z:<b class='flag-5'>三</b><b class='flag-5'>軸</b><b class='flag-5'>加速度計(jì)</b>評(píng)估<b class='flag-5'>板</b>

    EVAL-ADXL327Z:加速度計(jì)評(píng)估

    EVAL-ADXL327Z:加速度計(jì)評(píng)估
    發(fā)表于 05-24 12:31 ?5次下載
    EVAL-ADXL327Z:<b class='flag-5'>三</b><b class='flag-5'>軸</b><b class='flag-5'>加速度計(jì)</b>評(píng)估<b class='flag-5'>板</b>

    加速度計(jì)、陀螺儀和磁力計(jì)的應(yīng)用原理

    加速度計(jì)是一種慣性傳感器,能夠測(cè)量物體的比力,即去掉重力后的整體加速度或者單位質(zhì)量上作用的非引力。當(dāng)加速度計(jì)保持靜止時(shí),
    的頭像 發(fā)表于 10-09 15:43 ?7033次閱讀