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