各位大神看見我這凌亂的布線就不要吐槽了,畢竟不是電子專業(yè)出身,這些工具什么的都是自學(xué)的,如果哪位大神有關(guān)于PCB方面比較好的書籍推薦我學(xué)習(xí)學(xué)習(xí)我會非常樂意接受的,嘿嘿~
上面是關(guān)于硬件設(shè)計部分,接下來是軟件了:
軟件流程:
軟件部分分為兩個大部分:
1數(shù)據(jù)部分
數(shù)據(jù)部分圍繞MPU6050傳感器展開。分為數(shù)據(jù)獲取,濾波,數(shù)據(jù)處理
1.1數(shù)據(jù)獲取
STM32通過I2C和MPU6050進(jìn)行通訊,其中涉及到基礎(chǔ)的I2C通信協(xié)議實現(xiàn),在I2C基礎(chǔ)上,涉及到MPU6050各種參數(shù)的設(shè)置,比如加速度的范圍等。不同的設(shè)置獲取到的數(shù)據(jù)會不一樣并且精度也不一樣。
1.2濾波
在獲取到原始數(shù)據(jù)后經(jīng)過簡單轉(zhuǎn)化變?yōu)榻嵌龋沁@個數(shù)據(jù)是不準(zhǔn)確的,因此需要濾波處理,由于小車比較簡單,濾波就用的是互補濾波。這樣就能獲取比較精確的數(shù)據(jù)的了。
1.3數(shù)據(jù)處理
在濾波前需要對獲取的原始數(shù)據(jù)進(jìn)行處理,這個需要一點點物理知識,還有一個就是角速度的積分操作,這個需要使用定時器來完成。
2控制部分
控制部分主要分為PID算法,電機驅(qū)動
2.1PID算法
PID算法就是比例,積分,微分這三個變量相互作用最后輸出到控制器上去。剛開始時以為需要P就夠了,最后發(fā)現(xiàn)效果不好,在加入了D之后,效果就很好了。
2.2電機驅(qū)動
電機驅(qū)動主要設(shè)計的知識就是PWM波的控制,STM32有相關(guān)的庫操作,只需要按要求設(shè)置好就OK了。然后將PID算法產(chǎn)生的結(jié)果作為參數(shù)輸入到這里就可以實現(xiàn)控制了。
軟件部分涉及的東西不多,就算是單片機新手,花功夫肯琢磨也不會用多久時間。
七七八八說了那么多,沒有視頻說個毛線,在這里錄了個小視頻,讓大家見笑了:
做這個小車還是花了些時間,目的是希望給后來者多填坑,小車目前還有很多不足需要改進(jìn),由于選型問題,沒有找到合適的碼盤測速,所以目前這個小車還沒有車輪的速度反饋,如果解決這個問題,小車的性能會更上一層樓。
希望大家能給我多多提出意見,如果有什么疑惑,我也會盡可能幫助解決~
差點把資料的事情給忘記了,我的這個小車的所有相關(guān)資料都放在github上面,地址:
https://github.com/bigbearishappy/BBear_balance_car
如果覺得還行的話給我點個星星,如果覺得做的不好的話也希望大家能夠幫我一起改進(jìn)~