文章

顯示從 11月, 2022 起發佈的文章

分析 Keyes 自動平衡車的原理

圖片
        將 Keyes 平衡車套件組裝起來後,系統的核心控制器是 Arduino 的核心晶片,搭配三軸加速度感測器以及馬達驅動模組,組合成一套自動平衡車的系統。首先,三軸感測器負責偵測出車子動態的情況,當偵測到車子有前傾或後仰的情況時,立刻輸出馬達驅動讓輪子往前進或往後退來達到車子的動態平衡。         系統在尋求動態平衡的過程中,採用 PID (Proportional Integral Derivative) 機制,將一個偏差的比例透過積分與微分的線性組合構成一個控制量,用這一控制量對被控制的對象進行控制。以平衡車的系統,透過 "傾斜的角度" 與 "角速度" 的變化量來控制馬達驅動。底下開始分析每個細節與操作。 MPU6050         平衡車上面有一顆三軸加速度感測元件 MPU6050,用於偵測 X, Y, Z 三軸的角速度與角度的變化,它們之間的關係如下圖一所示。圖一中的右手邊代表車子前進的方向,也就是 Y 軸的方向,車子朝上方就是 Z 軸方向,而我們眼睛正視車輪的輪軸就是 X 軸的方向。從 MPU6050 感測器可以讀取到每一軸的角速度,以及每一軸的重力加速度數值,參考前面文章的說明 https://han-ya.blogspot.com/2015/12/gyro-accelerometer.html 。我們從 Y 與 Z 軸的重力加速度 g 值,可以計算出傾斜的角度,如下圖二所示。 圖一:三軸感測器的角速度與角度之關係         假設車子往前傾斜了, Z 軸往 Y 軸順時針旋轉了一個角度後,依據物理分量的觀念,重力加速度可看成具有  gy  和  g z 的分量,而這兩個分量分別可從晶片量測而得到。再根據三角函數的定義,我們可以計算出旋轉的角度,如下圖二所示,因此角度等於 atan( gy / gz)。 圖二:傾斜角度的計算 Kalman濾波器         前段我們從 MPU6050 感測器計算出角度與角速度之後,這裡需要加上一個 Kalman 濾波器,用來消除雜訊的干擾,並根據過去的動態來預估未來的動態。網上有不少 Kalman Filter 的介紹  卡爾曼濾波 (Kalman Filter) , 【演算法】卡爾曼濾波器 Kalman Filter ,等文章供參考。