發布日期:2022-10-09 點擊率:80
產品介紹:
ADXL345 是一款小巧纖薄的低功耗三軸加速度計,可以對高達±16 g的加速度進行高分辨率(13 位)測量。數字輸出數據為 16 位二進制補碼格式,可通過SPI (3 線或 4 線)或者I2C數字接口訪問。ADXL345 非常適合移動設備應用。它可以在傾斜檢測應用中測量靜態重力加速度,還可以測量運動或沖擊導致的動態加速度。它具有高分辨率(4 mg/LSB),能夠測量約 0.25°的傾角變化。使用 ADXL345 等數字輸出加速度計時,無需進行模數轉換,從而可以節省系統成本和電路板面積。此外,ADXL345是一款小而薄的超低功耗3軸加速度計,分辨率高(13位),測量范圍達± 16g。數字輸出數據為16位二進制補碼格式,可通過SPI(3線或4線)或I2C數字接口訪問。ADXL345非常適合移動設備應用。它可以在傾斜檢測應用中測量靜態重力加速度,還可以測量運動或沖擊導致的動態加速度。其高分辨率(3.9mg/LSB),能夠測量不到1.0°的傾斜角度變化。該器件提供多種特殊檢測功能。活動和非活動檢測功能通過比較任意軸上的加速度與用戶設置的閾值來檢測有無運動發生。敲擊檢測功能可以檢測任意方向的單振和雙振動作。自由落體檢測功能可以檢測器件是否正在掉落。這些功能可以獨立映射到兩個中斷輸出引腳中的一個。正在申請專利的集成式存儲器管理系統采用一個32級先進先出(FIFO)緩沖器,可用于存儲數據,從而將主機處理器負荷降至低,并降低整體系統功耗。低功耗模式支持基于運動的智能電源管理,從而以極低的功耗進行閾值感測和運動加速度測量。ADXL345采用3 mm × 5 mm × 1 mm,14引腳小型超薄塑料封裝。
產品圖片:
ADXL345三軸加速度 小巧纖薄
可以在傾斜檢測應用中測量靜態重力加速度
還可以測量運動或沖擊導致的動態加速度
相關視頻:
有問有答:
1.用stm8s103f3單片機控制adxl345三軸加速度傳感器:
2.AS-4WD輪式機器人三軸加速度計操控功能演示: mod=viewthread&tid=4015
3.三軸加速度計的測試角度是多少?:
4.Arduino uno R3+雙H橋驅動板+紅外遙控小車編程問題 :
5.雙H橋直流電機驅動板如何給arduino供電:
6.Arduino驅動安裝失敗? 最全的解決的方法:
7.采用現成零件 在家自制Arduino手機:
8.利用Xbee模塊實現兩個UNO控制器的通信:
前沿科技:
1.用Arduino結合重力感應玩轉lfs賽車:
2.Arduino與Kinect打造“體感智能車”:
3.玩轉Arduino-編譯環境軟件:
4.Arduino IDE錯誤提示問題原因匯總:
5.Arduino+Processing 制作極客風格繪圖機:
6.Arduino兼容的3D手勢控制器:
7.玩轉Arduino-閃爍的LED:
教學視頻:
1.AS-4WD輪式機器人三軸加速度計操控功能演示:
2.運用Arduino三軸加速度計實現云臺姿態控制:
3.Arduino-4WD移動機器人尋線功能演示網址:
4.Arduino-4WD移動機器人碰撞功能演示網址:
5.Arduino-4WD移動機器人追光功能演示網址:
6.Arduino-4WD移動機器人尋線與避障功能演示網址:
7.Arduino-4WD移動機器人偵測避障功能演示網址:
8.直流減速電機驅動實例:
百度百科:
1.Arduino百度百科 (點擊名稱)
2.三軸加速度傳感器 (點擊名稱)
3.“機器人爸爸”于欣龍(點擊名稱)
技術博客:
1.MMA7260三軸高靈敏度加速度傳感器:
2.奧松機器人帶你“走進科學世界” :
3.借助Arduino做一個RFID門禁系統:
4.Arduino 控制舵機:
5.Arduino控制直流電機:
6.Arduino PWM:
7.Arduino與32路舵機控制器通信實例:
8.Arduino通過Mini紅外傳感器測電機轉速:
維基百科:
ADXL345三軸加速度計(點擊名稱)
【為了給親們提供更方便快捷的技術服務與支持,奧松機器人特開設技術社區為大家答疑解惑,即有專門的技術人員為您回帖,更有眾多的電子愛好者可以一起交流學習心得!
在加速度傳感器中有一種是三軸加速度傳感器,同樣的它是基于加速度的基本原理去實現工作的,加速度是個空間矢量,一方面,要準確了解物體的運動狀態,必須測得其三個坐標軸上的分量;另一方面,在預先不知道物體運動方向的場合下,只有應用三軸加速度傳感器來檢測加速度信號。由于三軸加速度傳感器也是基于重力原理的,因此用三軸加速度傳感器可以實現雙軸正負90度或雙軸0-360度的傾角,通過校正后期精度要高于雙軸加速度傳感器大于測量角度為60度的情況。現在無人機領域應用廣泛。
一、有啥用
這里用的是LIS3DH三軸加速計,輸出為X、Y、Z軸的加速度,通過串口連接電腦,電腦里運行matlab腳本通過串口實時獲取數據并做可視化顯示。
這里雖然是針對LIS3DH的,其實稍作修改即可適用其他型號的運動傳感器,如:MPU6050,甚至是其他格式的串口數據。
二、具體分析
首先通過串口傳來的數據格式為:6位X軸加速計整數+空格+6位Y軸+空格+6位Z軸+換行
printf("%6d %6d %6d
", data.AXIS_X/16, data.AXIS_Y/16, data.AXIS_Z/16);
那么matlab如何讀取串口并對其數據進行可視化展示的呢?
serial.m
1 %
2 clc;3
4 globalt;5 globalx;6 global ii;%數組下標7
8 global m_x;%3軸加速度9 globalm_y;10 globalm_z;11
12 global d_a;%差分13
14 t = [0];15 ii = 0;16 x = -100;17
18 m_x = [0];19 m_y = [0];20 m_z = [0];21 d_a = [0];22
23 subplot(1,2,1);%將x,y,z軸加速度圖像繪制在整個1X2界面中的第1格
24 p = plot(t,m_x,t,m_y,t,m_z,'EraseMode','background','MarkerSize',5);%初始化圖像,圖像中有3條線(t,m_x),(t,m_y),(t,m_z)
25 axis([x-200 x+200 -1600 1600]);%設置顯示窗口,前兩個是x軸的最小、最大極限;后兩個是y軸最小、最大極限
26 grid on;%繪制網格(如果不加這句就不繪制網格)27 subplot(1,2,2);28 q = plot(t,d_a,'EraseMode','background','MarkerSize',5);%同理,這里只有一條線29 axis([x-200 x+200 -1600 1600]);30 grid on;31
32 %%
33
34 try
35 s=serial('com5');36 catch
37 error('cant serial');38 end
39 set(s,'BaudRate', ,'DataBits',8,'StopBits',1,'Parity','none','FlowControl','none');%設置串口屬性等40 s.BytesAvailableFcnMode = 'terminator';41 s.BytesAvailableFcn = {@callback,p,q};%設置串口回調函數,串口有數據傳輸過來就會轉到回調函數,p、q為參數42
43 fopen(s);%打開串口44
45 pause;%按任一按鍵結束46 fclose(s);47 delete(s);48 clear s49 close all;50 clear all;
該文件是主文件,首先聲明各種全局變量(matlab全局變量其他函數使用時需要用global聲明),然后對這些全局變量初始化,接著實例化兩個繪圖窗口(第一個窗口3條線——分別是x、y、z三軸的加速度隨時間變化曲線;第二個窗口一條線——是差分隨時間變化曲線)。34行之后為設置串口、打開串口,接下來動態繪圖所有操作均在回調函數中進行了。
來看看回調函數
callback.m
1 %%
2 function callback(s,BytesAvailable,p,q)3
4 global t; %引用全局變量(4-12行)
5 global x;
6 global ii;%數組下標
7
8 global m_x;%3軸加速度
9 global m_y;
10 global m_z;
11
12 global d_a;%差分13
14 out = fscanf(s);%讀取串口數據,轉換為num數據存儲在data中
15 data = str2num(out);16
17 t = [t ii];%數組插入最新數據在最后面
18 m_x = [m_x data(1,1)];
19 m_y = [m_y data(1,2)];
20 m_z = [m_z data(1,3)];21
22 d_a = [d_a abs(m_x(1,ii+2)-m_x(1,ii+1))+abs(m_y(1,ii+2)-m_y(1,ii+1))+abs(m_z(1,ii+2)-m_z(1,ii+1))];23
24
25 set(p(1), 'XData',t,'YData',m_x(1,:));%用新數據更新圖
26 set(p(2), 'XData',t,'YData',m_y(1,:));
27 set(p(3), 'XData',t,'YData',m_z(1,:));
28
29 set(q(1), 'XData',t,'YData',d_a(1,:));30
31 drawnow %重新繪制圖,并移動兩個圖的窗口,使之呈現運動效果
32 x = x + 1;
33 subplot(1,2,1)
34 axis([x-200 x+200 -1600 1600]);
35 subplot(1,2,2)
36 axis([x-200 x+200 -1600 1600]);
37 ii=ii+1;38 end
每次串口有數據均會觸發回調函數。在回調函數中,首選獲取串口流,并將串口數據流轉換為data數組。接著用讀取的新的data數據插入到老的數組(17~22行)。第25~29行則是用新的3+1個曲線的數據更新圖。第31行之后的負責移動視窗,使之呈現出數據在滾動的效果。
三、最終效果
四、樓主講話
好長時間沒寫文章了!就拿這個水水的小工具作為開篇~
現如今,很多現代人都非常注重自己的日常鍛煉,計步作為一種有效記錄監控鍛煉的監控手段,被廣泛應用在移動終端的應用中。
目前,大部分的計步都是通過GPS信號來測算運動距離,再反推行走步數實現的。這種方法很是有效,但在室內或沒有GPS信號的設備上無法工作。同時,GPS精度對結果的干擾也比較大。
為避免上述問題的出現,我們可以考慮一種新的測步方法,即:通過設備上的加速度傳感器來計算步數,在不支持GPS的設備上也可正常工作。還可以與GPS互相配合測步,這樣可令使用場景變得多樣。
1.先要摸清模型的特征
目前,大部分設備都提供了可以檢測各個方向的加速度傳感器。以iOS設備為例,我們利用了其三軸加速度傳感器(x,y,z軸代表方向如圖)的特性來分析。分別用以檢測人步行中三個方向的加速度變化。
iOS設備的三軸加速度傳感器示意圖
用戶在水平步行運動中,垂直和前進兩個加速度會呈現周期性變化,如圖所示。在步行收腳的動作中,由于重心向上單只腳觸地,垂直方向加速度是呈正向增加的趨勢,之后繼續向前,重心下移兩腳觸底,加速度相反。水平加速度在收腳時減小,在邁步時增加。
反映到圖表中,可以看到,在步行運動中,垂直和前進產生的加速度與時間大致為一個正弦曲線,而且在某點有一個峰值。其中,垂直方向的加速度變化最大,通過對軌跡的峰值進行監測計算和加速度閥值決策,即可實時計算用戶運動的步數,還可依此進一步估算用戶步行距離。
2.計步的合理算法
因為用戶在運動中可能用手平持設備,或者將設備置于口袋中。所以,設備的放置方向不定。為此,通過計算三個加速度的矢量長度,我們可以獲得一條步行運動的正弦曲線軌跡。
第二步是峰值檢測,我們記錄了上次矢量長度和運動方向,通過矢量長度的變化,可以判斷目前加速度的方向,并和上一次保存的加速度方向進行比較。如果是相反的,即是剛過峰值狀態,則進入計步邏輯進行計步,否則舍棄。通過對峰值的次數累加,可得到用戶步行的步伐。
最后,就是去干擾。手持設備會有一些低幅度和快速的抽動狀態,或是我們俗稱的手抖,或者某個惡作劇用戶想通過短時快速反復搖動設備來模擬人走路,這些干擾數據如果不剔除,會影響記步的準確值,對于這種干擾,我們可以通過給檢測加上閥值和步頻判斷來過濾。
人體最快的跑步頻率為5HZ,也就是說相鄰兩步的時間間隔的至少大于0.2秒,如圖所示,我們設置了timespan在記步過程中我們過濾了高頻噪聲,即步頻過快的情況。同時我們通過和上次加速度大小進行比較,設置設立一定的閥值Threshold來判斷運動是否屬于有效,有效運動才可進行記步。
3.關于計步器的擴展
以上是一個依靠加速度測算的計步器實現原理,已知步行和跑步的步伐經驗值,那么稍微改進下即可變成一個測距測速計。
通過三軸加速度傳感器,我們可以知道用戶的運動狀態。除了計步,還可以通過加速器的變化曲線判斷用戶摔倒狀態,做成一個老人和兒童摔倒檢測自動報警器。
下一篇: PLC、DCS、FCS三大控
上一篇: 電氣控制線路圖控制原