天天看點

stm32f1 平衡小車 (準備章節一)

本人小白一個,利用課外時間學習32,最近想利用手頭資源做一輛平衡小車,但是這個新東西感覺還是有難度的。本篇部落格就是對自己最近搜集的相關的資料進行一個梳理,明确思路。同時督促自己學習,不能再散漫下去了。本片部落格純屬自己做項目中的心得,雞毛蒜皮可能都會被記錄到,大牛不喜勿噴。

想要做平衡小車,我覺得一定要跨過”三座大山“,他們分别是“MU6050子產品的運用”、“算法代碼以及了解”、“平衡原理以及實際調試”。

最近幾天,從網上搜集了很多資料,由于手頭就有一個MPU6050子產品,是以今天晚上想要實作該子產品資料的讀取以及知道這些資料如何用。我會在接下來的過程中記錄我所遇到的每一個問題以及解決的方法。

第一個問題:如何連接配接stm32f103mini 和mpu6050

我查閱了正點原子自帶的産品手冊,得知VCC連接配接3.3V或者5V,GND連接配接GND,SDA連接配接PC11,SCL連接配接PC12.(注意,這裡不管是用的正點原子的MPU6050還是市面上的普通MPU6050都是這麼連接配接的,親測可行)

至于為什麼要這麼連接配接,我查了一下。

stm32f1 平衡小車 (準備章節一)

在此奉上正點原子的MPU6050的原理圖。為什麼隻有四根線連接配接呢?

首先電源和地我不做解釋,連接配接SCL和SDA是因為MPU6050在采用的IIC通信方式,而IIC通信的特點就是隻有兩根線進行通信。

第二步:讀取子產品回傳的資料:(有些小夥伴可能會疑惑,這樣是不是太快了,我們不是程式員嗎?為什麼不先寫代碼呢?

我在此的了解是:先了解原理,然後看懂代碼,會對照資料手冊修改代碼就可以。不必糾結于這種子產品的代碼編寫,網上随手一抓一大把。不用在此浪費時間。)

我将正點原子的代碼下載下傳後,我得到了四個資料,分别是Temp、Pitch、Roll、Yaw。我查閱了一下,代碼中,它們分别代表溫度、俯仰角、翻滾角、偏航角,合稱:歐拉角。pitch():俯仰,将物體繞X軸旋轉     yaw():航向,将物體繞Y軸旋轉    roll():橫滾,将物體繞Z軸旋轉。

這裡必須提到DMP,什麼是DMP,他的全稱是數字運動處理器。通過IvenSense公司提供的運動處理資料庫,非常友善地實作姿态解算(就不需要通過單片機進行姿态解算),最原始的資料通過DMP處理計算之後得到的是四元數,然後經過計算得出歐拉角,其中的過程我在這裡不多描述,一切都有現成的公式,對這部分有興趣的話可以去看正點原子的教學視訊。我在這裡有點糾結為什麼有的代碼中單獨列出DMP,而有的混合在了一起寫,有點不好了解,以後在做平衡車代碼時到底應當仿照哪個呢?暫時在這裡還不定,以後再回答吧。

這時我産生了一個疑問:如何通過這些資料使小車實作平衡效果呢?

剛才在網上浏覽部落格時,又發現了一個問題,為什麼平衡電機要接兩根12V的線呢?

這兩個問題下篇再解決。

繼續閱讀