發布日期:2022-10-09 點擊率:49
如果你是第二次世界大戰(WWII )的飛機或那個時代的其他類似機器的粉絲,就會發現陀螺儀的用處。在當時,M-7陀螺儀是現代技術的奇跡,但它個頭比較大。這些陀螺儀的尺寸大小與內燃機類似。
70多年后,這些設備經歷了令人難以置信的小型化。你會發現陀螺儀、加速度計,甚至是內置在單個芯片中的溫度傳感器 - 稱為慣性測量單元(IMU) - 甚至比你的指甲還要小。這其中一個非常受歡迎的加速度計是InvenSense的MPU-6050,您可以同擴展板一同購買,以及需要使用的所有組件,大約一美元。
該芯片使用微機電系統(MEMS)技術根據外力改變內部電容值。雖然其內部工作非常吸引人,但芯片可以接收所有傳感數據。將它產生的值輸入到Arduino開發板或您選擇的任何其他計算系統。更加方便的是,芯片以I2C格式輸出這些數據,允許它使用兩條線和一個中斷引腳來檢測:
● 加速數據
● 陀螺儀數據
● 溫度數據
Arduino開發板連接加速度計
在本篇文章中,我們將使用帶有MPU-6050芯片的GY-521模塊,將數據傳輸到Arduino Uno開發板。各種開發板和計算系統都與I2C標準兼容,因此即使您使用不同的特定引腳和庫,您也應該能夠在許多情況下應用這些概念。
首先,我們將根據以下方式連接GY-521板:
● VCC:+ 5V
● GND:GND
● SCL:A5
● SDA:A4
● XDA:未連接
● XCL:未連接
● AD0:GND
● INT:DIO 2
我們還在SCL和地之間連接了一個4.7kΩ電阻,在SDA和地之間連接了另一個電阻。您可以找到不使用外部電阻的示例,因此對于每個應用可能都不需要。
更多內容請參考以下鏈接:
很早就聽說Arduino,早就想玩了。最近搞了快Arduino板子,就是前面介紹的Arduino Leonardo,最近需要用到傳感器,從三軸加速度ADXL345開始。
開發環境:
系統:XP
單板:Arduino Leonardo
平臺:Arduino-1.5.2
目標:讀三軸加速度ADXL345的原始數據,并通過串口顯示
一、硬件介紹
ADXL345是一款小而薄的超低功耗3 軸加速度計,分辨率高(13位),測量范圍達±? 16g 。數字輸出數據為16 位二進制補碼格式,可通過SPI(3線或4線)或I2C數字接口訪問。ADXL345非常適合移動設備應用。它可以在傾斜檢測應用中測量靜態重力加速度,還可以測量運動或沖擊導致的動態加速度。其高分辨率(3.9mg/LSB),能夠測量不到1.0° 的
傾斜角度變化。ADXL345模塊原理圖如下:
這里只用到SCL、SDA、VCC_3.3V、GND分別連接到Arduino的對應接口上。Arduino Leonardo上直接標有SDA、SCL連上即可,其它Arduino根據自己的板子連接。
二、編寫測試代碼
其實在Arduino上寫代碼非常簡單,很多庫都幫你做好了,直接調用即可,十分方便。但Arduino的版本很多,特別是Arduino-1.0以后,有些庫有所改變,需要看對應版本的參考手冊arduino-1.5.2-windowsarduino-1.5.2 eference下面有詳細說明,我也是結合網上找的程序參考這些修改。代碼如下
文件adx1345.ino
需要對著手冊操作,根據手冊上介紹的寄存器設置、讀寫。寄存器FORMAT-OX31使用默認值0x0,設置加速度范圍-2g~2g,根據手冊
我們設置的采樣范圍-2g~2g,根據手冊知道我們的加速度傳感器采樣值最大范圍 -282~282,其中存在偏差。10位分辨率,采樣范圍-2g~2g,則1024/(2g-(-2g))=256LSB/g,也就是說理想值是256對應2g的加速度,呆會測試時水平放置時,讀到垂直方向的值應該是128,對應重力加速度1g.開始測試,看是不是這樣
3.編譯、測試
Arduino還是很方便操作的,選擇好單板、參考,直接點上面的“對勾”就開始編譯,編譯沒問題,點“->”箭頭狀的,開始上傳程序,直至上傳進度條完成。
?
接著打開Tools/Serial Monitor 顯示如下:
這是水平放的,Z方向垂直加速度。不是很平
這是X方向,向X方向舉起
這是向Y方向,其實模塊后面有個坐標軸,朝坐標方向測試。
基本正常,但是這些數據還不能直接拿來用,還要進一步優化,以后會結合卡爾曼濾波等算法優化。
?
?
?
如果你是第二次世界大戰(WWII )的飛機或那個時代的其他類似機器的粉絲,就會發現陀螺儀的用處。在當時,M-7陀螺儀是現代技術的奇跡,但它個頭比較大。這些陀螺儀的尺寸大小與內燃機類似。
70多年后,這些設備經歷了令人難以置信的小型化。你會發現陀螺儀、加速度計,甚至是內置在單個芯片中的溫度傳感器 - 稱為慣性測量單元(IMU) - 甚至比你的指甲還要小。這其中一個非常受歡迎的加速度計是InvenSense的MPU-6050,您可以同擴展板一同購買,以及需要使用的所有組件,大約一美元。
該芯片使用微機電系統(MEMS)技術根據外力改變內部電容值。雖然其內部工作非常吸引人,但芯片可以接收所有傳感數據。將它產生的值輸入到Arduino開發板或您選擇的任何其他計算系統。更加方便的是,芯片以I2C格式輸出這些數據,允許它使用兩條線和一個中斷引腳來檢測:
● 加速數據
● 陀螺儀數據
● 溫度數據
Arduino開發板連接加速度計
下載.png (344.9 KB, 下載次數: 108)
下載附件
保存到相冊
2018-12-14 13:56 上傳
在本篇文章中,我們將使用帶有MPU-6050芯片的GY-521模塊,將數據傳輸到Arduino Uno開發板。各種開發板和計算系統都與I2C標準兼容,因此即使您使用不同的特定引腳和庫,您也應該能夠在許多情況下應用這些概念。
accelerometer-and-arduino-tutorial_image-1.jpg (94.54 KB, 下載次數: 112)
下載附件
保存到相冊
2018-12-14 13:56 上傳
首先,我們將根據以下方式連接GY-521板:
● VCC:+ 5V
● GND:GND
● SCL:A5
● SDA:A4
● XDA:未連接
● XCL:未連接
● AD0:GND
● INT:DIO 2
我們還在SCL和地之間連接了一個4.7kΩ電阻,在SDA和地之間連接了另一個電阻。您可以找到不使用外部電阻的示例,因此對于每個應用可能都不需要。
原始數據
以下是獲取原始數據的基本步驟:
1. 連接完所有內容后,在Arduino開發板上加載“Short Example Sketch”。
2. 打開串行監視器并將其設置為9600波特率。
然后,您將看到以下值:
● AcX:X方向的加速度計讀數
● AcY:加速度計在Y方向讀數
● AcZ:Z方向的加速度計讀數
● Tmp:溫度讀數
● GyX:關于X軸的陀螺儀讀數
● GyY:關于Y軸的陀螺儀讀數
● GyZ:關于Z軸的陀螺儀讀數
我們在下面的草圖中說明了這些軸及其方向。每個值都應在設備移動時響應。當芯片上的字朝上放置時,Z軸將讀為正,表示重力方向。如果X軸或Y軸朝上,它們將產生類似的讀數。每個軸的曲線將指示滾動值。
關于滾動方向的注釋:它遵循我們在物理學中遇到的“右手規則”。如果右拇指指向與軸相同的方向,則手指將沿正旋轉方向彎曲。
Raw data.png (302.14 KB, 下載次數: 112)
下載附件
保存到相冊
2018-12-14 13:56 上傳
傳感器融合
您可以在許多應用程序中使用這些原始值,但MPU-6050還有另一個技巧:數字運動處理器(DMP)。該處理器可以融合加速度計和陀螺儀值,以獲得更高的精度。
InvenSense在很大程度上對如何使用這些數據表示不滿,但Jeff Rowberg廣泛的I2C設備庫(i2cdevlib)可以利用DMP的功能,使用巧妙的逆向工程工作。根據Rowberg的說法,此時代碼需要一些更新,但他使用MPU6050庫和附帶的MPU6050_DMP6示例代碼來生成偏航、俯仰和滾動的值。您還可以取消注釋代碼中的多個選項,以根據需要生成不同的輸出。
加載代碼后,請按照下列步驟操作:
1. 打開串行監視器,確保將其設置為波特。
2. 輸入一個字符。
你會看到輸出被列為偏航、俯仰和滾轉的“ypr”,芯片上的X方向對應于飛機的前部。滾動和偏航的方向與您對我們之前討論的原始值的預期方向相同。當理論飛機的機頭指向下方時,俯仰會減小,但當機頭指向上方時,其俯仰值會增加。用這種方式表達事物在飛行環境中是有意義的;告訴你“減少你的俯仰角”起飛的教練肯定會引起混亂 - 或者更糟。
無論您是制造模型飛機,還是設計新的游戲控制器,或者您只是想確保您的手機能夠正常自動旋轉,微型IMU芯片都可以實現這一切。憑借其低成本和預先編寫的Arduino庫,定制應用程序只需插入一些導線和編寫代碼即可。
如果你是第二次世界大戰(WWII )的飛機或那個時代的其他類似機器的粉絲,就會發現陀螺儀的用處。在當時,M-7陀螺儀是現代技術的奇跡,但它個頭比較大。這些陀螺儀的尺寸大小與內燃機類似。
70多年后,這些設備經歷了令人難以置信的小型化。你會發現陀螺儀、加速度計,甚至是內置在單個芯片中的溫度傳感器 - 稱為慣性測量單元(IMU) - 甚至比你的指甲還要小。這其中一個非常受歡迎的加速度計是InvenSense的MPU-6050,您可以同擴展板一同購買,以及需要使用的所有組件,大約一美元。
該芯片使用微機電系統(MEMS)技術根據外力改變內部電容值。雖然其內部工作非常吸引人,但芯片可以接收所有傳感數據。將它產生的值輸入到Arduino開發板或您選擇的任何其他計算系統。更加方便的是,芯片以I2C格式輸出這些數據,允許它使用兩條線和一個中斷引腳來檢測:
● 加速數據
● 陀螺儀數據
● 溫度數據
Arduino開發板連接加速度計
在本篇文章中,我們將使用帶有MPU-6050芯片的GY-521模塊,將數據傳輸到Arduino Uno開發板。各種開發板和計算系統都與I2C標準兼容,因此即使您使用不同的特定引腳和庫,您也應該能夠在許多情況下應用這些概念。
首先,我們將根據以下方式連接GY-521板:
● VCC:+ 5V
● GND:GND
● SCL:A5
● SDA:A4
● XDA:未連接
● XCL:未連接
● AD0:GND
● INT:DIO 2
我們還在SCL和地之間連接了一個4.7kΩ電阻,在SDA和地之間連接了另一個電阻。您可以找到不使用外部電阻的示例,因此對于每個應用可能都不需要。
更多內容請參考以下鏈接:
下一篇: PLC、DCS、FCS三大控
上一篇: 電氣控制線路圖控制原