新聞中心

EEPW首頁(yè) > 物聯(lián)網(wǎng)與傳感器 > 設(shè)計(jì)應(yīng)用 > 基礎(chǔ)知識(shí)之姿態(tài)傳感器

基礎(chǔ)知識(shí)之姿態(tài)傳感器

作者: 時(shí)間:2024-03-01 來(lái)源:電子森林 收藏

是一種用于檢測(cè)和測(cè)量物體的姿態(tài)或位置的設(shè)備。它們通常使用各種傳感器技術(shù),如加速度計(jì)、陀螺儀和磁力計(jì)等,來(lái)獲取物體在空間中的方向、旋轉(zhuǎn)角度和位置信息。廣泛應(yīng)用于許多領(lǐng)域,包括航空航天、機(jī)器人技術(shù)、虛擬現(xiàn)實(shí)、運(yùn)動(dòng)追蹤和醫(yī)療設(shè)備等。通過(guò)實(shí)時(shí)監(jiān)測(cè)和記錄物體的姿態(tài),姿態(tài)傳感器可以幫助實(shí)現(xiàn)精確的導(dǎo)航、運(yùn)動(dòng)控制和姿勢(shì)分析等功能。

本文引用地址:http://butianyuan.cn/article/202403/455922.htm

姿態(tài)傳感器的工作原理取決于其具體的傳感器技術(shù)。以下是幾種常見(jiàn)的姿態(tài)傳感器及其工作原理:

加速度計(jì)(Accelerometer):加速度計(jì)通過(guò)測(cè)量物體的加速度來(lái)確定其姿態(tài)。加速度計(jì)通常使用微機(jī)電系統(tǒng)(MEMS)技術(shù),其中包含微小的質(zhì)量和彈簧系統(tǒng)。當(dāng)物體發(fā)生加速度變化時(shí),質(zhì)量會(huì)受到力的作用而移動(dòng),通過(guò)測(cè)量這種移動(dòng)可以確定物體的加速度和姿態(tài)。

常見(jiàn)的三軸加速度傳感器使用微電機(jī)加速度計(jì)(MEMS accelerometer)技術(shù)。它們通常包含三個(gè)獨(dú)立的加速度傳感器,分別測(cè)量物體在X軸、Y軸和Z軸方向上的加速度。只記得加速度測(cè)量機(jī)測(cè)量到的加速度和受力方向相反,當(dāng)初使用這個(gè)是為了判斷受力是超重還是失重,變化時(shí),加速度傳感器會(huì)感知到這種變化并產(chǎn)生相應(yīng)的電信號(hào)。這些信號(hào)經(jīng)過(guò)放大和處理后,可以轉(zhuǎn)換為數(shù)字信號(hào),并通過(guò)數(shù)字接口(如I2C或SPI)傳輸給微控制器或其他處理器。

陀螺儀(Gyroscope):陀螺儀通過(guò)測(cè)量物體的角速度來(lái)確定其姿態(tài)。陀螺儀通常使用旋轉(zhuǎn)的轉(zhuǎn)子或振蕩器來(lái)感知角速度的變化。當(dāng)物體發(fā)生旋轉(zhuǎn)時(shí),轉(zhuǎn)子或振蕩器會(huì)受到力的作用而發(fā)生相應(yīng)的位移,通過(guò)測(cè)量這種位移可以確定物體的角速度和姿態(tài)。

這里介紹以下兩個(gè)內(nèi)容:地面坐標(biāo)系(Earth-fixed coordinate system)是一種以地球表面為參考的坐標(biāo)系,用于描述物體在地球上的位置和運(yùn)動(dòng)。地面坐標(biāo)系通常使用經(jīng)度、緯度和高度(或海拔)來(lái)表示位置。

機(jī)體坐標(biāo)系(Body-fixed coordinate system)是一種以物體自身為參考的坐標(biāo)系,用于描述物體內(nèi)部或相對(duì)于物體的位置和方向。機(jī)體坐標(biāo)系通常使用前后、左右和上下(或X、Y、Z)來(lái)表示物體的方向。

區(qū)別:

  • 參考對(duì)象:地面坐標(biāo)系以地球?yàn)閰⒖紝?duì)象,而機(jī)體坐標(biāo)系以物體自身為參考對(duì)象。
  • 坐標(biāo)軸方向:地面坐標(biāo)系的坐標(biāo)軸通常與地球的經(jīng)度、緯度和高度相關(guān),而機(jī)體坐標(biāo)系的坐標(biāo)軸通常與物體自身的方向相關(guān)。
  • 變化性:地面坐標(biāo)系通常是固定的,而機(jī)體坐標(biāo)系可以隨著物體的旋轉(zhuǎn)、移動(dòng)或變換而改變。

聯(lián)系:

  • 物體運(yùn)動(dòng)的描述:地面坐標(biāo)系和機(jī)體坐標(biāo)系都可以用于描述物體的位置和運(yùn)動(dòng)。地面坐標(biāo)系適用于描述物體在地球上的位置和運(yùn)動(dòng),而機(jī)體坐標(biāo)系適用于描述物體相對(duì)于自身的位置和運(yùn)動(dòng)。
  • 坐標(biāo)轉(zhuǎn)換:在某些情況下,需要將地面坐標(biāo)系和機(jī)體坐標(biāo)系相互轉(zhuǎn)換。例如,在航空航天領(lǐng)域,需要將飛機(jī)的機(jī)體坐標(biāo)系轉(zhuǎn)換為地面坐標(biāo)系,以便進(jìn)行導(dǎo)航和飛行控制。

總的來(lái)說(shuō),地面坐標(biāo)系和機(jī)體坐標(biāo)系是兩種不同的坐標(biāo)系,用于描述不同的參考對(duì)象和位置關(guān)系。它們?cè)诓煌膽?yīng)用領(lǐng)域中起著重要的作用,并且在某些情況下需要進(jìn)行坐標(biāo)轉(zhuǎn)換。

那么我們得到坐標(biāo)位置是為了什么呢,主想借大學(xué)物理和高數(shù)內(nèi)容介紹一下歐拉角:

歐拉角(Euler angles)是一種常用的描述物體姿態(tài)的方法。它由三個(gè)旋轉(zhuǎn)角度組成,通常分別稱為滾轉(zhuǎn)角(roll)、俯仰角(pitch)和偏航角(yaw)。

滾轉(zhuǎn)角表示物體繞其自身的X軸旋轉(zhuǎn)的角度。俯仰角表示物體繞其自身的Y軸旋轉(zhuǎn)的角度。偏航角表示物體繞其自身的Z軸旋轉(zhuǎn)的角度。

歐拉角的旋轉(zhuǎn)順序可以有多種,最常見(jiàn)的是ZYX順序,也稱為航向-俯仰-滾轉(zhuǎn)順序。在這種順序下,先繞Z軸旋轉(zhuǎn)偏航角,然后繞旋轉(zhuǎn)后的Y軸旋轉(zhuǎn)俯仰角,最后繞旋轉(zhuǎn)后的X軸旋轉(zhuǎn)滾轉(zhuǎn)角。

歐拉角的優(yōu)點(diǎn)是直觀且易于理解,可以直接對(duì)物體的姿態(tài)進(jìn)行描述。它廣泛應(yīng)用于飛行器、機(jī)器人、游戲開(kāi)發(fā)和計(jì)算機(jī)圖形學(xué)等領(lǐng)域。

然而,歐拉角也存在一些問(wèn)題。由于旋轉(zhuǎn)順序的選擇和旋轉(zhuǎn)角度的限制,歐拉角存在萬(wàn)向鎖問(wèn)題(gimbal lock),即在某些情況下,兩個(gè)旋轉(zhuǎn)角度會(huì)變得冗余或無(wú)法唯一確定物體的姿態(tài)。為了避免這個(gè)問(wèn)題,有時(shí)候會(huì)使用四元數(shù)

(quaternions)或旋轉(zhuǎn)矩陣(rotation matrices)來(lái)替代歐拉角。哈哈哈我不會(huì)四元數(shù),就不bb了。

總的來(lái)說(shuō),歐拉角是一種常用的姿態(tài)描述方法,具有直觀和易于理解的特點(diǎn),但在某些情況下可能存在萬(wàn)向鎖問(wèn)題。

磁力計(jì)(Magnetometer):磁力計(jì)通過(guò)測(cè)量物體周圍磁場(chǎng)的強(qiáng)度和方向來(lái)確定其姿態(tài)。磁力計(jì)利用磁敏材料的特性,當(dāng)材料受到磁場(chǎng)作用時(shí),其電阻或電壓會(huì)發(fā)生變化。通過(guò)測(cè)量這種變化可以確定物體所處的磁場(chǎng)方向,從而確定其姿態(tài)。

這些傳感器通常會(huì)結(jié)合在一起,形成姿態(tài)傳感器系統(tǒng)。通過(guò)同時(shí)測(cè)量加速度、角速度和磁場(chǎng)等參數(shù),姿態(tài)傳感器可以計(jì)算出物體的姿態(tài),包括方向、旋轉(zhuǎn)角度和位置等信息。這些數(shù)據(jù)可以通過(guò)算法進(jìn)行處理和解析,從而實(shí)現(xiàn)對(duì)物體姿態(tài)的準(zhǔn)確測(cè)量和跟蹤。

以下是一般的使用姿態(tài)傳感器的步驟:

  • 連接傳感器:首先,將姿態(tài)傳感器與目標(biāo)設(shè)備進(jìn)行連接。這可能涉及到使用適當(dāng)?shù)碾娎|或接口將傳感器連接到設(shè)備的主板或控制器上。
  • 初始化傳感器:在使用姿態(tài)傳感器之前,需要進(jìn)行初始化。這個(gè)過(guò)程包括設(shè)置傳感器的初始狀態(tài)和參數(shù),以確保其正常工作和準(zhǔn)確測(cè)量姿態(tài)。
  • 讀取傳感器數(shù)據(jù):使用設(shè)備的軟件或編程接口,讀取傳感器提供的姿態(tài)數(shù)據(jù)。姿態(tài)數(shù)據(jù)通常包括設(shè)備的姿勢(shì)、朝向、角度和加速度等信息。
  • 解析和處理數(shù)據(jù):根據(jù)應(yīng)用的需求,對(duì)傳感器提供的姿態(tài)數(shù)據(jù)進(jìn)行解析和處理。這可能涉及到使用算法和數(shù)學(xué)模型來(lái)計(jì)算設(shè)備的姿態(tài)、運(yùn)動(dòng)狀態(tài)或其他相關(guān)參數(shù)。
  • 應(yīng)用數(shù)據(jù):根據(jù)解析和處理后的姿態(tài)數(shù)據(jù),進(jìn)行相應(yīng)的應(yīng)用。這可能包括控制設(shè)備的運(yùn)動(dòng)、調(diào)整設(shè)備的姿態(tài)、提供用戶反饋或進(jìn)行其他相關(guān)操作。
  • 錯(cuò)誤校正和校準(zhǔn):定期進(jìn)行錯(cuò)誤校正和校準(zhǔn),以確保姿態(tài)傳感器的準(zhǔn)確性和可靠性。這可能包括校正傳感器的偏差、校準(zhǔn)傳感器的靈敏度或進(jìn)行其他相關(guān)調(diào)整。

需要注意的是,具體使用姿態(tài)傳感器的方法會(huì)因應(yīng)用的不同而有所變化。例如,在航空航天領(lǐng)域中,可能需要更復(fù)雜的姿態(tài)控制算法和系統(tǒng)來(lái)實(shí)現(xiàn)精確的導(dǎo)航和飛行控制。在虛擬現(xiàn)實(shí)領(lǐng)域中,可能需要更高的實(shí)時(shí)性和精度來(lái)跟蹤用戶的頭部和手部姿態(tài)。因此,在具體應(yīng)用中,需要根據(jù)需求和要求進(jìn)行相應(yīng)的定制和調(diào)整。 姿態(tài)傳感器在許多領(lǐng)域中都有廣泛的應(yīng)用。以下是一些姿態(tài)傳感器的應(yīng)用示例:

STMicroelectronics:STMicroelectronics是一家全球領(lǐng)先的半導(dǎo)體公司,提供各種姿態(tài)傳感器解決方案,包括加速度計(jì)陀螺儀磁力計(jì)等。

InvenSense(現(xiàn)為T(mén)DK公司):InvenSense是一家專注于慣性傳感器技術(shù)的公司,提供高性能的加速度計(jì)和陀螺儀等姿態(tài)傳感器產(chǎn)品。

Bosch Sensortec:Bosch Sensortec是博世集團(tuán)的子公司,專注于傳感器技術(shù)。他們提供各種姿態(tài)傳感器解決方案,包括加速度計(jì)、陀螺儀和磁力計(jì)等。

Analog Devices:Analog Devices是一家領(lǐng)先的半導(dǎo)體公司,提供各種傳感器解決方案,包括姿態(tài)傳感器。他們的產(chǎn)品范圍包括加速度計(jì)、陀螺儀和磁力計(jì)等。

Honeywell(霍尼韋爾):Honeywell是一家全球知名的工業(yè)自動(dòng)化和控制技術(shù)供應(yīng)商,他們提供各種姿態(tài)傳感器產(chǎn)品,包括加速度計(jì)、陀螺儀和磁力計(jì)等。

這只是一些主要的姿態(tài)傳感器供應(yīng)商,市場(chǎng)上還有許多其他供應(yīng)商提供各種姿態(tài)傳感器解決方案。在選擇供應(yīng)商時(shí),可以根據(jù)產(chǎn)品性能、可靠性、技術(shù)支持和供應(yīng)鏈等因素進(jìn)行評(píng)估和比較。

  • 航空航天:姿態(tài)傳感器在飛機(jī)、無(wú)人機(jī)和航天器中被用于導(dǎo)航、飛行控制和姿態(tài)穩(wěn)定等方面。它們可以幫助飛行器準(zhǔn)確測(cè)量和控制其姿態(tài),以確保平穩(wěn)和穩(wěn)定的飛行。
  • 機(jī)器人技術(shù):姿態(tài)傳感器在機(jī)器人中起著關(guān)鍵作用,能夠幫助機(jī)器人感知和調(diào)整其姿態(tài),以適應(yīng)不同的任務(wù)和環(huán)境。例如,在機(jī)器人導(dǎo)航和操作中,姿態(tài)傳感器可以幫助機(jī)器人確定其位置、朝向和運(yùn)動(dòng)狀態(tài)。
  • 虛擬現(xiàn)實(shí)(VR)和增強(qiáng)現(xiàn)實(shí)(AR):姿態(tài)傳感器在VR和AR設(shè)備中被用于跟蹤用戶的頭部、手部和身體姿態(tài),從而實(shí)現(xiàn)沉浸式的虛擬體驗(yàn)或與現(xiàn)實(shí)世界的交互。它們可以幫助設(shè)備準(zhǔn)確追蹤用戶的動(dòng)作和位置,以實(shí)現(xiàn)更真實(shí)和自然的交互體驗(yàn)。
  • 運(yùn)動(dòng)追蹤:姿態(tài)傳感器在運(yùn)動(dòng)追蹤領(lǐng)域中被廣泛應(yīng)用。例如,在體育訓(xùn)練中,姿態(tài)傳感器可以用于監(jiān)測(cè)運(yùn)動(dòng)員的姿勢(shì)和動(dòng)作,以提供反饋和改進(jìn)訓(xùn)練效果。此外,姿態(tài)傳感器還可以用于運(yùn)動(dòng)分析、姿勢(shì)矯正和康復(fù)治療等方面。
  • 醫(yī)療設(shè)備:姿態(tài)傳感器在醫(yī)療設(shè)備中的應(yīng)用包括姿勢(shì)監(jiān)測(cè)和姿勢(shì)輔助。例如,在手術(shù)中,姿態(tài)傳感器可以幫助醫(yī)生準(zhǔn)確測(cè)量和調(diào)整手術(shù)工具的位置和角度,以實(shí)現(xiàn)精確的手術(shù)操作。

這只是姿態(tài)傳感器應(yīng)用的一小部分示例,實(shí)際上,姿態(tài)傳感器在許多其他領(lǐng)域中也有各種應(yīng)用,如游戲控制、智能家居、運(yùn)動(dòng)裝備等。隨著技術(shù)的不斷發(fā)展,姿態(tài)傳感器的應(yīng)用領(lǐng)域?qū)⒗^續(xù)擴(kuò)大和創(chuàng)新。

此外,結(jié)合自己的電賽經(jīng)歷略述一二,向大家介紹的是MPU6050,是一款集成了三軸陀螺儀和三軸加速度計(jì)的傳感器模塊。它由英飛凌(InvenSense)公司開(kāi)發(fā),廣泛應(yīng)用于姿態(tài)測(cè)量、運(yùn)動(dòng)追蹤和穩(wěn)定控制等領(lǐng)域。

MPU6050內(nèi)部集成了三軸陀螺儀和三軸加速度計(jì),能夠同時(shí)測(cè)量物體的旋轉(zhuǎn)和線性加速度。陀螺儀用于測(cè)量物體的旋轉(zhuǎn)速度和方向,而加速度計(jì)則用于測(cè)量物體的線性加速度和傾斜角度。

MPU6050采用數(shù)字輸出,通過(guò)I2C總線與微控制器或其他設(shè)備進(jìn)行通信。它具有高精度、低功耗和快速響應(yīng)的特點(diǎn),適用于需要實(shí)時(shí)姿態(tài)測(cè)量和運(yùn)動(dòng)追蹤的應(yīng)用。

除了陀螺儀和加速度計(jì),MPU6050還提供了一些額外的功能和傳感器,如溫度傳感器和數(shù)字運(yùn)動(dòng)處理器(DMP)。溫度傳感器可用于測(cè)量環(huán)境溫度,而DMP則可以通過(guò)內(nèi)部算法提供更高級(jí)的運(yùn)動(dòng)處理功能,如姿態(tài)解算和方向估計(jì)。

初始化MPU6050傳感器:

初始化I2C總線,復(fù)位MPU6050,再次喚醒mpu6050后,設(shè)置陀螺儀傳感器為±200dps,加速度傳感器±2g,設(shè)置采樣率50HZ,關(guān)閉中斷配置INT引腳低電平有效。器件id正確后,設(shè)置pll,clksel,xz的水平軸為參考

讀取傳感器數(shù)據(jù):

使用官方empl庫(kù)所帶的函數(shù)獲取加速度值和陀螺儀值,理由歐拉公式計(jì)算得到俯仰角和偏航角(ps:需要設(shè)置延時(shí)函數(shù)如果要輸?shù)缴衔粰C(jī),需要提供串口等接口)

解析和處理數(shù)據(jù):

這里介紹當(dāng)時(shí)使用的方法:讀取數(shù)據(jù)判斷是否在設(shè)置的閾值范圍內(nèi),并記錄最后的數(shù)據(jù)用于比較下一次的變化情況,根據(jù)自己的算法要求進(jìn)行處理。要結(jié)合編碼器的使用,使用了STM32正交編碼器,是指在STM32系列微控制器中用于讀取旋轉(zhuǎn)編碼器信號(hào)的硬件模塊。旋轉(zhuǎn)編碼器是一種用于測(cè)量旋轉(zhuǎn)運(yùn)動(dòng)的傳感器,通常由兩個(gè)光電傳感器組成,可以測(cè)量旋轉(zhuǎn)方向和速度。而STM32正交編碼器模塊支持兩種常見(jiàn)的編碼器類型:增量式編碼器和絕對(duì)式編碼器。這里吧主將自己的理解的原理放進(jìn)來(lái):編碼器軸每旋轉(zhuǎn)一圈,A相和B相都發(fā)出相同的脈沖個(gè)數(shù),但是A相和B相之間存在一個(gè)90°(電氣角的一周期為360”)的電氣角相位差,可以根據(jù)這個(gè)相位差來(lái)判斷編碼器貨轉(zhuǎn)的方向是正轉(zhuǎn)還是反轉(zhuǎn),正轉(zhuǎn)時(shí),A相超前B相90°先進(jìn)行相位輸出,反轉(zhuǎn)時(shí),B相超前A相90°先進(jìn)行相位輸出。

增量式編碼器通過(guò)兩個(gè)光電傳感器(我使用的是光碼盤(pán)和光電二極管)檢測(cè)旋轉(zhuǎn)編碼盤(pán)上的刻度,并生成兩個(gè)相位差90度的方波信號(hào)。通過(guò)檢測(cè)這兩個(gè)方波信號(hào)的變化,可以確定旋轉(zhuǎn)方向和速度。STM32正交編碼器模塊可以直接讀取這兩個(gè)方波信號(hào),并提供相應(yīng)的硬件計(jì)數(shù)器和中斷功能,使得編碼器的讀取和處理變得更加簡(jiǎn)單和高效。

絕對(duì)式編碼器則通過(guò)在編碼盤(pán)上添加更多的刻度,以實(shí)現(xiàn)對(duì)旋轉(zhuǎn)位置的絕對(duì)測(cè)量。STM32正交編碼器模塊可以支持多種絕對(duì)式編碼器的協(xié)議和接口,如SSI(同步串行接口)、BiSS(雙向同步串行接口)和SPI(串行外設(shè)接口)等。通過(guò)讀取這些接口的數(shù)據(jù),可以準(zhǔn)確地獲取旋轉(zhuǎn)位置信息。

在使用STM32正交編碼器模塊時(shí),需要配置相關(guān)的寄存器和中斷,以使其與編碼器信號(hào)同步工作??梢愿鶕?jù)實(shí)際需求選擇不同的計(jì)數(shù)模式、計(jì)數(shù)方向和中斷觸發(fā)條件等。此外,還可以通過(guò)使用DMA(直接內(nèi)存訪問(wèn))功能,將編碼器數(shù)據(jù)直接傳輸?shù)絻?nèi)存,減輕CPU的負(fù)擔(dān)。

總的來(lái)說(shuō),STM32正交編碼器模塊為STM32微控制器提供了方便、高效的編碼器信號(hào)讀取和處理功能,使得我們使用者可以更加輕松地實(shí)現(xiàn)旋轉(zhuǎn)運(yùn)動(dòng)的測(cè)量和控制。通過(guò)把編碼器放在pwm直流電機(jī)轉(zhuǎn)軸處,把AB兩相接入單片機(jī)接口可以獲得具體的信息。

欸,大家可能疑惑了,我這里將姿態(tài)傳感器那為什么說(shuō)到了編碼器了呢。hhhh,因?yàn)榘骋v如何在軟件上去調(diào)試姿態(tài)傳感器,那我就要再?gòu)U話了,我的目標(biāo)是什么呢,結(jié)合電賽,我想說(shuō)小車直立行走任務(wù)分解

我們要求車模在直立的狀態(tài)下以兩個(gè)輪子在地面上隨意行走,相比四輪著地狀態(tài),車??刂迫蝿?wù)更為復(fù)雜。為了能夠方便找到解決問(wèn)題的辦法,首先將復(fù)雜的問(wèn)題分解成簡(jiǎn)單的問(wèn)題進(jìn)行討論。 從控制角度來(lái)看,車模作為一個(gè)控制對(duì)象,它的控制輸入量是兩個(gè)電轉(zhuǎn)動(dòng)速度。車橫運(yùn)動(dòng)控制任務(wù)可以分解成以下三個(gè)基本控制任務(wù)
(1)控制車模平衡:通過(guò)控制兩個(gè)電機(jī)正反向運(yùn)動(dòng)保持車模直立平衡化
(2)控制車橫速度:通過(guò)調(diào)節(jié)車模的傾角來(lái)實(shí)現(xiàn)車模速度控制,實(shí)際上還是演變成通過(guò)控制電機(jī)的轉(zhuǎn)速來(lái)實(shí)現(xiàn)車輪速度的控制
(3)控制車模方向:通過(guò)控制兩個(gè)電機(jī)之間的轉(zhuǎn)動(dòng)差速實(shí)現(xiàn)車模轉(zhuǎn)
哎呀這么復(fù)雜,我們考慮的核心在哪里,哈哈就是負(fù)反饋,是否平衡是否轉(zhuǎn)彎無(wú)法缺少的就是將采集到的數(shù)據(jù)比較反饋了,大家讀到這里就明白我在數(shù)據(jù)處理時(shí)存儲(chǔ)最后一次數(shù)據(jù)的用意了哈哈,最后結(jié)合pid控制。PID控制是一種常用的反饋控制算法,用于調(diào)節(jié)系統(tǒng)的輸出以使其達(dá)到期望值。PID是Proportional-Integral-Derivative的縮寫(xiě),分別代表比例、積分和微分三個(gè)控制項(xiàng)。

  • 比例項(xiàng)(P項(xiàng))根據(jù)實(shí)際輸出與期望值之間的差異進(jìn)行調(diào)節(jié)。它與差異成正比,越大的差異會(huì)導(dǎo)致更大的調(diào)節(jié)輸出。比例項(xiàng)可以快速響應(yīng)系統(tǒng)的變化,但可能導(dǎo)致系統(tǒng)的震蕩和超調(diào)。
  • 積分項(xiàng)(I項(xiàng))根據(jù)實(shí)際輸出與期望值之間的累積差異進(jìn)行調(diào)節(jié)。它可以消除系統(tǒng)的穩(wěn)態(tài)誤差,并使系統(tǒng)更好地追蹤期望值。積分項(xiàng)可以幫助系統(tǒng)達(dá)到精確的控制,但過(guò)大的積分項(xiàng)可能導(dǎo)致系統(tǒng)的過(guò)沖和振蕩。
  • 微分項(xiàng)(D項(xiàng))根據(jù)實(shí)際輸出的變化率進(jìn)行調(diào)節(jié)。它可以預(yù)測(cè)系統(tǒng)的未來(lái)變化趨勢(shì),并提前調(diào)整控制輸出,以減小超調(diào)和振蕩。微分項(xiàng)可以提高系統(tǒng)的穩(wěn)定性和響應(yīng)速度,但過(guò)大的微分項(xiàng)可能導(dǎo)致系統(tǒng)對(duì)噪聲和干擾過(guò)于敏感。

PID控制通過(guò)將比例、積分和微分項(xiàng)加權(quán)求和,得到最終的控制輸出。權(quán)重因子可以根據(jù)系統(tǒng)的特性和需求進(jìn)行調(diào)整,以達(dá)到最佳的控制效果。

在實(shí)際應(yīng)用中,PID控制廣泛用于工業(yè)自動(dòng)化、機(jī)械控制、溫度控制、飛行器控制等領(lǐng)域。通過(guò)不斷調(diào)整PID參數(shù),可以實(shí)現(xiàn)系統(tǒng)的穩(wěn)定性、精度和響應(yīng)速度的平衡。

總的來(lái)說(shuō),PID控制是一種簡(jiǎn)單而有效的控制算法,通過(guò)比例、積分和微分三個(gè)控制項(xiàng)的組合調(diào)節(jié)系統(tǒng)的輸出,以實(shí)現(xiàn)期望的控制效果。 這里借用了matlab仿真進(jìn)行了預(yù)測(cè)和優(yōu)化,打字累了不想說(shuō)了,哈哈,結(jié)合姿態(tài)傳感器使用一下把哈哈哈哈哈哈 偷懶嘎嘎嘎,

含mpu6050芯片的姿態(tài)傳感器模塊

基于stm4與串口調(diào)試結(jié)果圖

最后結(jié)合電賽,我想說(shuō),除了姿態(tài)傳感器我們應(yīng)該還要結(jié)合編碼器,超聲波測(cè)距,步進(jìn)電機(jī)CDD攝像頭,正交碼盤(pán)的使用,pwm步進(jìn)電機(jī),我們不僅僅要考慮到以上電子相關(guān)內(nèi)容,應(yīng)當(dāng)考慮類似的,在小車開(kāi)發(fā)中,扭矩通常用于描述引擎或電動(dòng)機(jī)對(duì)車輪的驅(qū)動(dòng)力。較大的扭矩可以提供更大的驅(qū)動(dòng)力,使車輛能夠加速或克服阻力。在小車開(kāi)發(fā)中,摩擦力對(duì)于車輛的制動(dòng)、轉(zhuǎn)彎和牽引等方面起著重要作用。合理控制摩擦力可以提高車輛的操控性和安全性。為了最大限度地利用摩擦力,需要對(duì)車輛的重心、輪胎和地面之間的摩擦系數(shù)等因素進(jìn)行優(yōu)化和調(diào)整。

mpu6050驅(qū)動(dòng)

import machine

class accel():

def __init__(self, i2c, addr=0x68):

   self.iic = i2c

   self.addr = addr

   self.iic.start()

   self.iic.writeto(self.addr, bytearray([107, 0]))

   self.iic.stop()


def get_raw_values(self):

   self.iic.start()

   a = self.iic.readfrom_mem(self.addr, 0x3B, 14)

   self.iic.stop()

   return a


def get_ints(self):

   b = self.get_raw_values()

   c = []

   for i in b:

       c.append(i)

   return c


def bytes_toint(self, firstbyte, secondbyte):

   if not firstbyte & 0x80:

       return firstbyte << 8 | secondbyte

   return - (((firstbyte ^ 255) << 8) | (secondbyte ^ 255) + 1)


def get_values(self):

   raw_ints = self.get_raw_values()

   vals = {}

   vals["AcX"] = self.bytes_toint(raw_ints[0], raw_ints[1])

   vals["AcY"] = self.bytes_toint(raw_ints[2], raw_ints[3])

   vals["AcZ"] = self.bytes_toint(raw_ints[4], raw_ints[5])

   vals["Tmp"] = self.bytes_toint(raw_ints[6], raw_ints[7]) / 340.00 + 36.53

   vals["GyX"] = self.bytes_toint(raw_ints[8], raw_ints[9])

   vals["GyY"] = self.bytes_toint(raw_ints[10], raw_ints[11])

   vals["GyZ"] = self.bytes_toint(raw_ints[12], raw_ints[13])

   return vals  # returned in range of Int16

   # -32768 to 32767


def val_test(self):  # ONLY FOR TESTING! Also, fast reading sometimes crashes IIC

   from time import sleep

   while 1:

       print(self.get_values())

       sleep(0.05)

主程序

from machine import I2C,Pin
i2c = I2C(scl=Pin("X9"), sda=Pin("X10"))
accel = mpu6050.accel(i2c)
accel_dict = accel.get_values()
print(accel_dict)

運(yùn)行結(jié)果如下 

樹(shù)莓派_MMA7660姿態(tài)傳感器



關(guān)鍵詞: 姿態(tài)傳感器

評(píng)論


技術(shù)專區(qū)

關(guān)閉