精品国产人成在线_亚洲高清无码在线观看_国产在线视频国产永久2021_国产AV综合第一页一个的一区免费影院黑人_最近中文字幕MV高清在线视频

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

如何使用MPU6050構建的傾角儀或精神調平器

科技觀察員 ? 來源:circuitdigest ? 作者:阿斯文斯·拉吉 ? 2022-11-17 17:43 ? 次閱讀

MPU6050是一個 IC 3 軸加速度計和一個 3 軸陀螺儀組合成一個單元。它還包含一個溫度傳感器和一個DCM,用于執行復雜的任務。MPU6050通常用于構建無人機和其他遠程機器人,如自平衡機器人。在這個項目中,我們將學習如何使用MPU6050構建的傾角儀或精神調平器。眾所周知,傾角儀用于檢查表面是否完美調平,它們既可以作為氣泡式儀表,也可以作為數字儀表使用。在這個項目中,我們將構建一個可以使用Android應用程序進行監控的數字傾角儀。使用手機等遠程顯示器的原因是,我們可以監控 MPU6050 的值而無需查看硬件,當 MPU6050 放置在無人機或其他一些無法訪問的位置時,這將非常方便。

所需材料:

Arduino Pro-mini (5V)

MPU6050 陀螺儀傳感器

HC-05 或 HC-06 藍牙模塊

富貿發展板

面包板

連接線

智能手機

poYBAGN2AmCAFjx_AACIAuIl-5o476.jpg

電路圖:

poYBAGN2AmSASWfjAACVhEZ5MWA003.png

此Arduino傾斜傳感器項目的完整電路圖如下所示。它只有三個組件,可以很容易地在面包板上構建。

MPU6050在I2C的幫助下進行通信,因此SDA引腳連接到Arduino的A4引腳,即SDA引腳,SCL引腳連接到Arduino的A5引腳。HC-06藍牙模塊在串行通信的幫助下工作,因此藍牙的Rx引腳連接到引腳D11,藍牙的Tx引腳連接到Arduino的引腳D10。這些引腳 D10 和 D11 將通過對 Arduino 進行編程配置為串行引腳。HC-05模塊和MSP6050模塊工作在+5V電壓下,因此它們由Arduino的Vcc引腳供電,如上所示。

我使用了一些面包板連接線,并在一個小面包板上構建了設置。連接完成后,我的電路板如下所示。

pYYBAGN2AmaABOcYAACyJr05Xb8685.jpg

為您的設置提供動力:

您可以像我一樣通過FTDI編程板為電路供電,也可以使用9V電池或12V適配器并將其連接到Arduino pro mini的Raw引腳。Arduino Pro-mini有一個內置的穩壓器,可以轉換這個外部電壓調節+5V。

poYBAGN2AmeAM-PSAABpW9zId-A976.jpg

對 Arduino 進行編程:

硬件準備就緒后,我們可以開始對Arduino進行編程。與往常一樣,該項目的完整代碼可以在此頁面底部找到。但是為了更好地理解該項目,我將代碼分解為小問題,并按照以下步驟進行解釋。

第一步是將MPU6050與Arduino接口。

下載 ZIP 文件并將其添加到您的 Arduino IDE。然后前往文件->示例->Arduino_MPU6050_Master-> MPU6050_gyro_pitch_roll_yaw。這將打開使用我們剛剛下載的庫的示例程序。因此,單擊上傳并等待程序上傳到Arduino Pro mini。完成后,打開串行監視器并將波特率設置為115200,然后檢查是否得到以下內容。

連續獲取俯仰滾偏航的值

最初,所有三個值都將為零,但是當您移動面包板時,您可以觀察到這些值正在發生變化。如果他們更改,則表示您的連接正確,否則請檢查您的連接?;c時間在這里注意俯仰滾動和偏航三個值如何根據您傾斜傳感器的方式而變化。如果您感到困惑,請按Arduino上的重置按鈕,值將再次初始化為零,然后將傳感器向一個方向傾斜并檢查哪些值正在變化。下圖將幫助您更好地理解。

解釋橫滾俯仰和偏航

在這三個參數中,我們只對滾動和俯仰感興趣。滾動值將告訴我們 X 軸的傾角,俯仰值將告訴我們 Y 軸的傾角?,F在我們已經了解了基礎知識,讓我們開始對Arduino進行編程,以讀取這些值,通過藍牙將其發送到Arduino。與往常一樣,讓我們首先包含此項目所需的所有庫

#include //Lib for IIC communication
#include //Lib for MPU6050
#include // import the serial library
然后我們初始化藍牙模塊的軟件序列號.這是可能的,因為Arduino中的軟件串行庫,IO引腳可以編程為串行引腳。這里我們使用數字引腳 D10 和 D11,其中 D10 id Rx 和 D11 是 Tx。

SoftwareSerial BT(10, 11); // RX, TX
接下來,我們初始化程序所需的變量和對象,然后轉到setup()函數,在其中指定串行監視器和藍牙的波特率。對于 HC-05 和 HC-06,波特率為 9600,因此必須使用相同的波特率。然后我們檢查Arduino的IIC總線是否連接到MPU6050,如果沒有,我們會打印警告消息,只要設備已連接,就會保持在那里。之后,我們校準陀螺儀并使用其各自的功能設置其閾值,如下所示。

void setup()
{
Serial.begin(115200);
BT.begin(9600); //start the Bluetooth communication at 9600 baudrate
// Initialize MPU6050
while(!mpu.begin(MPU6050_SCALE_2000DPS, MPU6050_RANGE_2G))
{
Serial.println("Could not find a valid MPU6050 sensor, check wiring!");
delay(500);
}
mpu.calibrateGyro(); // Calibrate gyroscope during start
mpu.setThreshold(3); //Controls the sensitivty
}
“mpu.calibrateGyro();”行校準MPU6050當前放置的位置。每當需要校準MPU6050并將所有值設置為零時,可以在程序內多次調用此線路?!癿pu.setThreshold(3);”此功能控制傳感器上移動的值變化程度,太低的值會增加噪聲,因此在擺弄它時要小心。

在void loop()內部,我們反復讀取陀螺儀和溫度傳感器的值,計算俯仰,滾動和偏航的值,將其發送到藍牙模塊。以下兩行將讀取原始陀螺儀值和溫度值

Vector norm = mpu.readNormalizeGyro();
temp = mpu.readTemperature();
接下來,我們通過乘以時間步長并將其與先前的值相加來計算俯仰、橫滾和偏航。時間步長只不過是連續讀數之間的間隔。

pitch = pitch + norm.YAxis * timeStep;
roll = roll + norm.XAxis * timeStep;
yaw = yaw + norm.ZAxis * timeStep;
為了更好地理解時間步長,讓我們看一下下面的行。放置此行以 10mS 或 0.01 秒的間隔精確讀取 MPU6050 的值。所以我們聲明 timeStep 的值為 0.01。如果還有更多時間,請使用下面的行來保持程序。(millis() – timer()) 給出到目前為止程序執行所花費的時間。我們只需用 0.01 秒減去它,在剩余的時間內,我們只需使用延遲函數將程序保留在那里。

delay((timeStep*1000) - (millis() - timer));
完成讀取和計算值后,我們可以通過藍牙將它們發送到我們的手機。但這里有一個問題。我們使用的藍牙模塊只能發送 1 字節 (8 位) 這允許我們僅發送從 0 到 255 的數字.因此,我們必須拆分我們的值并將其映射到此范圍內。這是通過以下行完成的

if (roll>-100 && roll<100)
x = map (roll, -100, 100, 0, 100);
if (pitch>-100 && pitch<100)
y = map (pitch, -100, 100, 100, 200);
if (temp>0 && temp<50)
t = 200 + int(temp);
正如您可以計算的那樣,滾動的值映射到變量 x 中的 0 到 100,音高映射到變量 y 中的 100 到 200,溫度映射到變量 t 中的 200 及以上。我們可以使用相同的信息從我們發送的內容中檢索數據。最后,我們使用以下行通過藍牙寫入這些值。

BT.write(x);
BT.write(y);
BT.write(t);
如果您已經了解了完整的程序,請向下滾動以查看該程序并將其上傳到Arduino板。

使用處理準備 Android 應用程序:
這個Arduino傾角儀的安卓應用程序是使用處理IDE開發的。這與Arduino非常相似,可用于創建系統應用程序,Android應用程序,網頁設計等等。

在ZIP文件中,您可以找到一個名為data的文件夾,其中包含要加載到android應用程序中的所有圖像和其他來源。以下行決定藍牙應自動連接到哪個名稱

bt.connectToDeviceByName("HC-06");
在 draw() 函數中, 這些東西將在這里重復執行,我們繪制圖像, 顯示文本并根據藍牙模塊中的值對條形進行動畫處理.您可以通過通讀程序來檢查每個函數內部發生的情況。

void draw() //The infinite loop
{
background(0);
imageMode(CENTER);
image(logo, width/2, height/1.04, width, height/12);
load_images();
textfun();
getval();
}
最后,還有一件重要的事情需要解釋,請記住,我們將俯仰、滾動和溫度的值拆分為 0 到 255。因此,在這里,我們再次通過將其反向映射到正常值來將其恢復為正常值。

if (info<100 && info>0)
x = map(info, 0, 100, -(width/1.5)/3, +(width/1.5)/3);//x = info;
else if (info<200 && info>100)
y = map(info, 100, 200, -(width/4.5)/0.8, +(width/4.5)/0.8);//y = info;
else if (info>200)
temp = info -200;
println(temp,x,y);
有更好的方法將數據從藍牙模塊傳輸到手機, 但由于這只是一個愛好項目,我們忽略了它們, 如果有興趣,您可以深入挖掘.

Arduino測斜儀的工作:
準備好硬件和應用程序后,是時候享受我們構建的內容了。將Arduino代碼上傳到開發板,您還可以刪除Serial.println行上的注釋,并使用串行監視器檢查硬件是否按預期工作。無論如何,這是完全可選的。

上傳代碼后,在手機上啟動Android應用程序。應用程序應自動連接到您的 HC-06 模塊,它將在應用程序頂部顯示“連接到:HC-06”,如下所示。

pYYBAGN2AmmAQuo1AAC9UbH8FZw269.jpg

最初,除溫度值外,所有值都將為零。這是因為Arduino已針對此位置校準了MPU-6050作為參考,現在您可以傾斜硬件并檢查移動應用程序上的值是否也隨著動畫而變化。該應用程序的完整工作可以在下面給出的視頻中找到。因此,現在您可以將面包板放置在任何地方,并檢查表面是否完全平整。

/*


MPU6050 Librarey: https://github.com/jarzebski/Arduino-MPU6050; (c) 2014 by Korneliusz Jarzebski

*/


#include //Lib for IIC communication

#include //Lib for MPU6050

#include // import the serial library


SoftwareSerial BT(10, 11); // RX, TX


MPU6050 mpu;


unsigned long timer = 0;


unsigned long timer2 = 0;


float timeStep = 0.01;

float pitch = 0;

float roll = 0;

float yaw = 0;

float temp =0;


void setup()

{

Serial.begin(115200);


BT.begin(9600); //start the Bluetooth communication at 9600 baudrate


// Initialize MPU6050

while(!mpu.begin(MPU6050_SCALE_2000DPS, MPU6050_RANGE_2G))

{

Serial.println("Could not find a valid MPU6050 sensor, check wiring!");

delay(500);

}



mpu.calibrateGyro(); // Calibrate gyroscope during start


mpu.setThreshold(3); //Controls the sensitivty

}


void loop()

{

timer = millis();


//Read Gyro and Temperature sensor values

Vector norm = mpu.readNormalizeGyro();

temp = mpu.readTemperature();


// Calculate Pitch, Roll and Yaw

pitch = pitch + norm.YAxis * timeStep;

roll = roll + norm.XAxis * timeStep;

yaw = yaw + norm.ZAxis * timeStep;


// Print values

Serial.print(" Pitch = ");

Serial.print(pitch);

Serial.print(" Roll = ");

Serial.print(roll);

Serial.print(" Yaw = ");

Serial.print(yaw);

Serial.print(" Temp = ");

Serial.print(temp);

Serial.println(" *C");


delay((timeStep*1000) - (millis() - timer)); //makes sure we read only at a an interval of 0.01 secounds


if ((millis()-timer2) > 200)

send_BT();

}


void send_BT()

{

int t;

int x;

int y;


if (roll>-100 && roll<100)

x = map (roll, -100, 100, 0, 100);


if (pitch>-100 && pitch<100)

y = map (pitch, -100, 100, 100, 200);


if (temp>0 && temp<50)

t = 200 + int(temp);



BT.write(x);

BT.write(y);

BT.write(t);


timer2 = millis();

}

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • Android
    +關注

    關注

    12

    文章

    3925

    瀏覽量

    127156
  • MPU6050
    +關注

    關注

    39

    文章

    307

    瀏覽量

    71208
  • 傾角儀
    +關注

    關注

    0

    文章

    9

    瀏覽量

    2624
收藏 人收藏

    評論

    相關推薦

    跪求mpu6050解算傾角的程序

    最近在做塔機的檢測平臺,但是在測水平方面遇到了問題,本想用MPU6050模塊檢測塔機的垂直度,但是這個傳感好像不能直接輸出傾斜角度(Z軸的傾角或者XY方向的傾角),顯示
    發表于 03-30 17:04

    STM32 實現 MPU6050 數據讀取與傾角檢測

    都不懂的東西。事實上如果你只是想從傳感讀出陀螺儀和加速度值,并簡單計算一下坐標傾角(不涉及姿態解算、四元素等),其實沒有想象中那么難。PS:MPU6050 的確涉及到許多令人敬畏的數學知識,但如果
    發表于 05-05 18:02

    關于MPU6050的簡介

    關于MPU6050前言簡介首先,個人是通過野火的視頻,有專門介紹MPU6050的版塊來做的了解。然后關于MPU6050基本認識跟坐標系就不做闡述了MPU6050主要是陀螺
    發表于 08-03 07:37

    MPU6050簡介

    時,MPU-60X0提供完整的9軸運動融合輸出到其主I2CSPI端口(SPI僅在MPU-6000上可用)。MPU6050, 該芯片內部集成一個三軸加速度傳感
    發表于 02-11 07:46

    MPU6050陀螺原理圖代碼

    MPU6050陀螺使用( 原理圖代碼 )
    發表于 10-29 15:24 ?96次下載

    MPU6050(硬件IIC)

    MPU6050(硬件IIC)MPU6050(硬件IIC)
    發表于 04-02 16:29 ?79次下載

    mpu6050測試程序

     InvenSense公司的三軸陀螺MPU6050測試程序。IIC接口,51單片機驅動,LCD1602同步顯示。
    發表于 11-07 14:01 ?6110次閱讀
    <b class='flag-5'>mpu6050</b>測試程序

    Arduino與MPU6050的通信

    為避免糾纏于電路細節,我們直接使用集成的MPU6050模塊。MPU6050的數據接口用的是I2C總線協議,因此我們需要Wire程序庫的幫助來實現Arduino與MPU6050之間的通信。請先確認你的Arduino編程環境中已安裝
    發表于 11-07 14:25 ?7755次閱讀
    Arduino與<b class='flag-5'>MPU6050</b>的通信

    mpu6050怎么與單片機連接

    本文開始介紹了mpu6050的定義和mpu6050的感測范圍,其次闡述了mpu6050特征,最后介紹了mpu6050與單片機的連接方法。
    發表于 03-09 08:42 ?2.7w次閱讀

    mpu6050姿態解算原理_mpu6050姿態解算程序

    mpu6050常用作提供飛控運行時的姿態測量和計算。本文首先介紹了MPU6050姿態解算的原理,其次詳細的介紹了mpu6050姿態解算程序。
    的頭像 發表于 03-09 09:15 ?4.3w次閱讀

    MPU6050簡介

    MPU6050簡介什么是MPU6050MPU6050的特點MPU6050框圖MPU6050初始化MPU6050—DMP使用介紹
    發表于 12-06 11:51 ?76次下載
    <b class='flag-5'>MPU6050</b>簡介

    MPU6050常見問題的分析與處理

    # MPU6050常見問題的分析與處理本文主要針對STM32使用MPU6050過程中產生的問題進行分析和處理,部分內容也適用于其他單片機。本文基于MPU6050自帶的DMP算法。文章內容對于M
    發表于 12-06 12:21 ?42次下載
    <b class='flag-5'>MPU6050</b>常見問題的分析與處理

    MPU6050( )

    MPU6050( )
    發表于 12-06 15:06 ?31次下載
    <b class='flag-5'>MPU6050</b>( )

    如何使用MPU6050和Arduino構建一個數字量角

    MPU6050是一款 集成 了 IC 3 軸加速度計和 3 軸陀螺的 單元。它還包含一個溫度傳感和一個 DCM 來執行復雜的任務。MPU6050 常用于
    發表于 08-31 15:42 ?5449次閱讀
    如何使用<b class='flag-5'>MPU6050</b>和Arduino<b class='flag-5'>構建</b>一個數字量角<b class='flag-5'>器</b>

    MPU6050的Arduino陀螺游戲

    電子發燒友網站提供《帶MPU6050的Arduino陀螺游戲.zip》資料免費下載
    發表于 11-11 11:20 ?1次下載
    帶<b class='flag-5'>MPU6050</b>的Arduino陀螺<b class='flag-5'>儀</b>游戲