(2-3合刊) 基於MEMS慣性傳感器的兩輪自平衡小車設計

2021-01-08 電子產品世界

摘要:著重分析了兩輪自平衡小車的設計原理與控制算法,採用卡爾曼濾波算法融合陀螺儀與加速度計信號,得到系統姿態傾角與角速度最優估計值,通過雙閉環數字PID 算法實現系統的自平衡控制。設計了以MPU-6050傳感器為姿態感知的兩輪自平衡小車系統,選用8位單片機HT66FU50A為控制核心處理器,完成對傳感器信號的採集處理、車身控制以及人機互動的設計,實現小車自主控制平衡狀態、運行速度以及轉向角度大小等功能。

本文引用地址:http://www.eepw.com.cn/article/201602/287501.htm

引言

  兩輪自平衡小車一般都是以倒立擺的結構模型為基礎,是移動機器人研究中的一個重要領域,是一個非線性、強耦合、多變量和不穩定的動態系統,可以很好地驗證控制理論及控制方法的優秀平臺,具有很高的研究價值[1]。

  平衡車論文普遍側重理論研究[2],首先建立直立車體的運動學和動力學數學模型(Euler-Lagran方法),設計反饋控制器來保證車體的平衡(極點配置和LQR兩種算法),在此基礎上進行基於LabVIEW的計算及仿真,或者基於Matlab搭建控制系統模型,給定參數,顯示機器人的運動仿真圖和系統響應曲線,獲得兩種算法的最優反饋矩陣,係數K對應圖1四個電位器實時修正。

  本文的側重點是理論與實踐結合,硬體電路設計、軟體設計與調試。其中,傳感器數據融合與電機控制PID算法是實現小車平衡的核心內容,硬體設計結合關鍵原始碼分析是本文的亮點。

  平衡車設計過程中一般是整定PID,難點是如何運用仿真模擬車體平衡的參數,換算不同係數,將控制器設計實施到實際的設計當中。

1 基本工作原理

  利用HT66FU50微控制器,使用PID 閉環控制算法和卡爾曼濾波算法完成數據融合處理,得到平滑而穩定車體控制值,通過電機驅動模塊來驅動電機產生前進或後退的加速度來控制車體保持平衡,同時系統還要根據速度的反饋量來完成對車體速度和方向的控制。通過藍牙模塊與外部設備連接來控制小車的運動狀態。自平衡小車的基本原理框圖如圖1所示。


2 加速度傳感器及其原始碼分析

  加速度傳感器的輸出=地球重力(1g)×傾斜角的正弦(sin)(如圖2)。當傾斜角接近90°時,相對角度變化加速度傳感器的輸出變化就會越來越小。將加速度傳感器的輸出換算成傾斜角度時需使用反正弦函數arcsin。

  根據單軸加速度求角度(含弧度換算):

  Accel=arcsin(Ax)*180/π (1)

  Ax加速度傳感器的輸出值,Accel傾斜角X軸。單軸求角度範圍為+90°~-90°,超出部分出錯,因此,程序要限幅,1≤Ax≤-1。

  如圖3(y=sinθ),若傾斜角接近±30°的話,傾斜角與傳感器輸出的關係就會接近正比例關係,就沒必要取正弦函數進行計算了。

  Accel≈k*Ax*180/π (2)

  當係數取0.92時,角度範圍可以擴大到-45°~+45°。

  2條檢測軸需要相互正交,並且都與旋轉軸垂直,隨著一個軸的靈敏度下降,另一個軸的靈敏度會上升,通過使用雙軸加速度傳感器就能精確測量傾斜角。雙軸求角度範圍為+180° ~-180°,通過公式(3)計算得到。

  Accel=arctan(Ax/Ay)*180/π (3)

  Ax與Ay加速度傳感器的輸出值,Accel傾斜角。

  關鍵原始碼如下:

  //加速度範圍為±2g時,換算關係:16384 LSB/g,角度較小時,也可以採用近似x=sinx得到角度(弧度), deg = rad*180/3.14。

  Accel_x= GetData(ACCEL_XOUT_H);

  //讀取X軸加速度

  Angle_ax = (Accel_x - 800) /16384;

  //去除零點偏移800,計算得到加速度g

  Angle_ax = asin(Angle_ax)*180/3.14;

  //Angle_ax = Angle_ax*180/3.14;

  //反正弦求角度,而後弧度轉換為度

  //傾斜角與arctan(Ax/Ay)成正比(如圖4)

  // acc = atan2(Ax,Ay)*180/π

  //角速度範圍為2000deg/s時,換算關係16.4 LSB/(deg/s)

  Gyro_y = GetData(Gyro_Yout_H);

  //靜止時角速度Y軸輸出為-80左右,去除偏移

  Gyro_y = -(Gyro_y + 80)/16.4;

  //去零點偏移,計算角速度值,負號為方向處理

  Kalman_Filter(Angle_ax,Gyro_y);

  //執行卡爾曼濾波,平滑角度與角速度。

3 卡爾曼濾波及其原始碼分析

  卡爾曼濾波器可分為:時間更新方程和測量更新方程。時間更新方程也可視為預估方程,測量更新方程可視為校正方程。根據上一狀態的估計值和當前狀態的觀測值推出當前狀態的估計值。

  卡爾曼濾波標識:ˉ代表先驗,^代表估計。如表1所示,對於角度估算,先預測,可以近似認為是上一時刻的角度值加上此刻陀螺儀測得的角速度值乘以時間,因為。通過重力加速度來矯正陀螺儀的角度漂移[7],即為多傳感器數據處理,通俗稱為「數據融合」。

  卡爾曼方程1:先驗估計。

(4)

先驗估計值,前次運算估計值,後驗估計值(算後數值,也是再次換算的為此刻陀螺儀測的角速度的值。A與B是系統參數。

  卡爾曼方程4:由觀測變量zk,更新估計。

(5)

  為卡爾曼增益,對應原始碼中的K_0 、K_1,zk就是此刻測得角度Accel,是測得角度與先驗估計的誤差比較,對應原始碼中的Angle_err。

  部分原始碼如下:

  float Q_angle=0.001; //初始值

  float Q_gyro=0.003;

  float R_angle=0.5;

  char code C_0 = 1;

  void Kalman_Filter(float Accel,float Gyro)

  {

  //Accel角度(由加速度計求得角度)

  //Gyro角速度(陀螺儀測得角速度)

  Angle= Angle +(Gyro - Q_bias) * dt;

  …

  …

  …

  Angle_err = Accel - Angle;//誤差

  Angle = Angle + K_0 * Angle_err;/

  Q_bias = Q_bias + K_1 * Angle_err; /

  Gyro_x = Gyro - Q_bias;

  // Angle誤差與卡爾曼增益來修正後的角度

  // Q_bias誤差與卡爾曼增益來修正偏移

  // Gyro_x卡爾曼修正後的角速度

  }

  理解卡爾曼濾波方程1:

  等號左邊Angle為此刻的角度預測值,等號右邊Angle為上一時刻的值,Gyro為陀螺儀測的角速度的值,dt是兩次濾波之間的時間間隔, Q_bias是上一時刻陀螺儀靜態偏移量。(Gyro-Q_bias)*dt就是當前狀態的觀測值。陀螺儀有個靜態漂移,而且還是變化的,計算時要除去。

  陀螺儀與加速度經過卡爾曼濾波前後波形的優劣比較,採用上位機調試工具(串口虛擬示波器)Serial_Digital_Scope V2實時觀察,參考文獻[4],本文略。

4 電機控制PID算法

  數字式PID控制算法可以分為直接計算法(也稱位置式PID)和增量計算法。所謂增量計算法就是相對於標準算法的相鄰兩次運算之差,得到的結果為增量。

  位置式PID算法如下:

  其中k是採樣序號,k=0,1,2,……;

uk是k第次採樣時刻的計算機輸出值;

ek是k第次採樣時刻輸入的偏差值;

ek-1是k-1第次採樣時刻輸入的偏差值;

ki是積分係數,;

kd是微分係數,

  Arduino平衡車的PID代碼如下:

  Output = kp * error+ki * errSum+kd * dErr

  電機PWM控制數據,靜止過程的平衡,為角度與角速度採用PD算法;行駛過程的平衡,為速度與位移採用PI算法[4]。

  PWM1 =Angle_Kp* Angle + Angle_Kd*Gyro_x;

  Angle反映傾角,Gyro_x反映快慢。Angle_Kd是微分控制,具有超前性,他的控制是和偏差輸入的變化率有關,也就是角速度。

  PWM2 =moto_Kp* speed + moto_Kpn* position;

  speed為速度,position為n次速度的累積,理解為速度的積分(位移),moto_Kpn為積分係數[6],慎重調節。此處係數代號,編者特意不寫moto_Ki,根據PID係數的公式,應為累積偏差係數。諸多文獻前後係數倒置,如文獻[6];文獻[1]解釋為D係數;文獻[5],文字解釋透徹,但論文圖中PID係數與原始碼有不符。

  最終控制參數PWM = PWM1+ PWM2,也就是雙閉環PID控制。

  Angle_Kp、Angle_Kd、moto_Kp、moto_Kpn對應四個電位器(如圖1),經過單片機ADC轉換,可以實時PID係數的調節,可以由上位機或者液晶監控數據。

  PID調參步驟:

  首先,程序內置PWM2=0;

  第二,設定D=0,逐漸增加P,當車體出現震蕩,加入D,當出現抖動,增加P,反覆調節P、D即可實現直立;

  第三,加入PWM2,先P由小變到大,觀察各次響應,直至得到反應快、超調小的響應,再調節積分控制作用I參數來消除控制穩態誤差。

  電機轉速和位移值計算,關鍵原始碼如下:

  speed_dot=(speed_real_LH+speed_real_RH)*0.5;

  // speed_dot為此時左右車輪速度,求平均

  speed *=0.85; //車輪速度濾波,k-1時刻取值

  speed += speed _dot*0.15;//車輪速度濾波+k時

  position+=speed; //速度的累積

  position+=Speed_Need; // Speed_Need給定速度


本文來源於中國科技核心期刊《電子產品世界》2016年第2期第51頁,歡迎您寫論文時引用,並註明出處。

相關焦點

  • 基於STM32和MPU-6050的兩輪自平衡小車系統設計與實現
    引言兩輪自平衡小車系統類似於倒立擺系統,具有多變量、非線性、強耦合等特點,是研究各種控制方法的理想平臺。
  • STM32實現的兩輪自平衡車,藍牙APP遙控(原理圖、原始碼、APP、視頻)
    兩輪自平衡車特點:1、小車底盤使用的是一體成型的鈑金件,且表面做了黑色陽極化處理,更耐髒,更堅固,而非其他的使用亞克力固定電機座的做法。2、上兩層使用黑色亞克力,與底盤渾然一體,更加時尚美觀。3、電機光柵碼盤有保護蓋,避免了小車行進碰撞導致損壞光柵,如果光柵損壞了,小車想再站起來就不可能了。
  • 新手入門超聲自平衡小車最佳方案
    在等快遞送貨期間,才看到各種說用「香蕉電機」做自平衡小車的問題,最大的問題就是電機啟動對傳感器和單片機的幹擾問題,還有就是平衡的穩定性不好等問題。在我以Arduino + MPU6050 + L298N($2.3338)為核心做完後,閒得沒事幹,就想做一款成本低,易上手,最小配置和最基本功能的自平衡小車,其目的就是給那些沒有什麼經驗的剛入行的新手們提供一個入門的解決方案。
  • 分析MEMS慣性傳感器有哪些趨勢?
    從我國MEMS各產品市場佔比來看,MEMS慣性傳感器佔有超過30%的份額。其中,加速度計和陀螺儀是最常見的MEMS慣性傳感器,加速度計是敏感軸向加速度並轉換成可用輸出信號的傳感器;陀螺儀則是能夠測量敏感運動體相對於慣性空間的運動角速度的傳感器。此外,MEMS慣性組合測量單元由於可以實現組合導航、減少誤差,也廣泛應用於需要運動控制的設備上。
  • 智能小車再不玩就out了,十款小車隨便挑!
    2、51單片機的安卓藍牙小車 智能遙控小車普通的遙控小車已經滿足不了大眾的需求,要是手機能控制那就好玩多啦。這個小車材料很簡單,四個電機輪子、一個驅動模塊,把程序下載到51單片機就可以直接玩啦,手機上位機程序更是直接安裝使用。有了附件裡的文件,零基礎這樣能玩轉小車。3、三輪智能小車設計腿的蛤蟆不好找,但是三個輪子的小車還是可以設計出來的。
  • 基於MEMS的慣性導航教學實驗系統*
    基於此,設計了一套基於MEMS的慣性導航實驗系統,系統由慣性測量單元,上位機,雙軸電動轉臺及轉臺控制器組成。該慣性測量單元由六軸慣性測量組合[2-4],包含三軸陀螺儀、三軸加速度計,該實驗平臺能滿足導航、制導與控制專業的學生了解慣性導航原理,有助於學生理解、熟悉、掌握慣性導航和運動狀態採集的原理、技術及應用。
  • 基於慣性導航、RFID 及圖像識別的 AGV 融合導航系統
    1 整體方案設計AGV 小車利用慣性導航作為導引技術,由於系統中所用數據都是採樣得到的,而且是由前一狀態量推到下一狀態量,因此,在算法解算的過程中,所有誤差都會隨著時間被算法累積下來,可能造成很大的累積誤差[2]。
  • 技術控做的玩具就是酷,小車蹺蹺板平衡控制系統設計,完整解決方案
    項目背景及可行性分析本文引用地址:http://www.eepw.com.cn/article/201706/348670.htm項目名稱、項目的主要內容及目前的進展情況項目名稱:基於FPGA的小車蹺蹺板平衡控制系統設計
  • 慣性傳感器(IMU)
    2、MEMS慣性傳感器組成及原理慣性傳感器是對物理運動做出反應的器件,如線性位移或角度旋轉,並將這種反應轉換成電信號,通過電子電路進行放大和處理。加速度計和陀螺儀是最常見的兩大類MEMS慣性傳感器。加速度計是敏感軸向加速度並轉換成可用輸出信號的傳感器;陀螺儀是能夠敏感運動體相對於慣性空間的運動角速度的傳感器。
  • 平衡車是什麼?電動平衡車的原理是怎樣的?
    利用車體內部的陀螺儀和加速度傳感器,來檢測車體姿態的變化,並利用伺服控制系統,精確地驅動電機進行相應的調整,以保持系統的平衡。是現代人用來作為代步工具、休閒娛樂的一種新型的綠色環保的產物。 隨著人們環保意識的加強,電動車的數量與日俱增。與此同時,科學家經過潛心的研究,終於開發出新款兩輪電動平衡車。
  • 常見電容式mems加速度計的工作原理詳解
    微機械加速度計又稱mems加速度計,是微機械傳感器中最重要的一種,屬於慣性感器。智騰微電子生產的SiA200系列Mems加速度計主要用於航空、航海等中高端慣性領域,具有體積小、高可靠、高穩定等特點。電容式mems加速度計SiA230外觀圖傳感器由兩個差分電容組成,活動電極與兩側固定電極分別構成平行板電容C1和C2。。
  • 基於STM32的重力感應無線智能遙控小車設計
    圖1 手持遙控端設計框圖 傾角傳感器模塊使用ADI公司生產的基於iMEMS技術的3軸、數字輸出傾角傳感器ADXL345。 NUCLEO-L053為ST推出的一種基於Cortex-M0+內核的遙控端控制模塊,其CPU最高系統時鐘可達32MHz,可充分滿足本設計所用的模塊時鐘頻率;內含64KBFlash和8KBRAM,可提供足夠大的堆棧空間,滿足複雜程序;具有本設計所需的I2C、SPI、USB全速接口,提供MCU和模塊間高速的通信方式;板載獨立按鍵和LED,可供用戶自定義使用。
  • MEMS慣性導航的應用
    航姿測控系統主要由GPS天線、GPS接收板、捷聯式磁傳感器、慣性測量單元、高度空速傳感器以及調理單元構成。傳感器的精度直接決定無人機位姿的精度,傳感器採集到的數據通過導航算法計算出無人機的位置姿態信息。目前無人機的導航主要採取將MEMS慣性導航系統與GPS組合的手段,這樣既可以提高系統精度,又可以縮短初始對準的時間。
  • 基於Kinetis60的智能循跡小車設計
    本方案採用攝像頭作為信號採集的傳感器,根據攝像頭採集的圖像進行精密計算,確定速度參考和舵機轉向參考。攝像頭組的智能車對於道路信息預測能力強,而且攝像頭對道路的探測精細,視角範圍大,因此受到眾多智能車設計者的歡迎。但攝像頭圖像受周圍光線的影響大;算法運算量大,算法複雜,需要佔用較多的NCU資源,因此其中圖像識別算法的設計成為系統設計的關鍵步驟。
  • 基於雷射二極體的智能循跡小車的硬體設計
    摘要 介紹了一種基於紅外雷射二極體的智能循跡模型車硬體系統的設計方法。該系統以MC9S12XS128為控制核心,採用紅外雷射二極體及紅外接收傳感器採集路徑信息,同時應用內部集成H橋電路的MC33886晶片進行電機驅動,並運用LM331晶片來設計測速電路。
  • 13個基於STM32的經典項目設計實例,全套資料~
    本文引用地址:http://www.eepw.com.cn/article/201706/346863.htm1.開源硬體-基於STM32的自動剎車燈設計自動剎車燈由電池供電並內置加速度傳感器,因此無需額外連接其他線纜。使用兩節5號電池時,設計待機時間為一年以上(待機功耗66微安),基本可以實現永不關機,即裝即忘。
  • 《mCube晶圓級晶片封裝(WLCSP)MEMS加速度計:MC3672》
    MEMS加速度計MC3672封裝尺寸MC3672在25Hz的ODR(數據輸出速率)下,功耗僅為0.9uA,不到競爭對手同級產品的1/2。與其主要競爭對手(Bosch Sensortec和意法半導體)不同,mCube採用WLCSP封裝,提供單晶片集成傳感器。作為mCube MC3600系列超低功耗3軸加速度計的新成員,MC3672沿用了公司屢獲殊榮的3D單晶片MEMS技術平臺,在臺積電代工生產。
  • 體驗兩輪自平衡車:回頭率500%
  • 美國MicroStrain微型慣性傳感器
    美國MicroStrain公司,創建於1987年,是一家專門從事微型傳感器的研發與製作工作的企業。其下的慣性傳感器產品包括有戰術級、工業級和準工業級三個模塊。各個模塊的產品又分為輔助慣導系統、AHRS航姿參考系統、IMU慣性測量三個類型。
  • 博世眼中的2018年MEMS傳感器智能化
    csxesmc起初,工程師只是通過MEMS傳感器偵測到的數據設計相關應用,現在,計步的同時進行動作識別、運動檢測等這些豐富的需求,使得不再只依靠單純的硬體傳感器來提供數據輸出,同時要結合預先編程的軟體,綜合判斷,這個過程中,不只使用慣性傳感器,加速度傳感器,還需加入環境傳感器等。