才開始寫帖子,大家多多包涵。
本帖子采用以STM32F407為控制器的平衡小車。我是因為想學32,然后F4比較強大,所以就沒采用F1或者stm8之類的單片機。
先從硬件準備開始:
1.編碼電機兩個,電機驅(qū)動器l298n一塊(我用了他上面的5v電,所以沒加穩(wěn)壓模塊,正規(guī)的話應該加上)
2.MPU6050模塊一個
3.藍牙模塊
4.IIC協(xié)議的oled屏幕一塊(32當然也可以用其他協(xié)議的,換一下相應文件就好)
5.stm32f407最小系統(tǒng)板一塊
6.無源蜂鳴器來一個用來放音樂不錯
7.導線、洞洞板、排針、接頭自己備一些,我是自己焊的拓展板 ,也可以直接畫pcb
8.3s的18650電池和充電器
9.支架的話我為了省事買了電機加底板支架,看視頻里大家要是有鉆,螺絲,銅柱的話整兩個電機支架一塊亞克力可輕松搞定,而且整潔美觀,布局也方便
再就到了硬件連接,我這里就不詳細說那個了 l298n上面有in1~4四個引腳,分別接到單片機對應的引腳, 1,2一組,控制motor1方向;3,4一組,控制motor2方向。同時電機驅(qū)動模塊上還有兩根enable和5v引腳,剛買的一般是通過兩根跳線帽將兩個enable與兩個5v分別短接,我們需要將兩根短接帽拔掉,給每個enable接一路pwm,才能夠?qū)崿F(xiàn)我們所需要的直流電機速度控制。編碼電機連接時注意區(qū)分動力線和編碼器信號線,動力線兩條不做區(qū)分,接上后續(xù)如果電機方向不正確可以改in1,2的高低電平即可;編碼器有其電源線5v和gnd,不可接反,另外兩根即編碼器信號輸出,用來記脈沖就好。本小車中各引腳定義及相應定時器在文末統(tǒng)一描述。到這,電機及其驅(qū)動均已連接完成。
接下來是mpu6050,我對這個模塊的認識其實也只存在于使用階段,我采用的直接是原子哥開發(fā)板例程里的.c文件和.h文件,我們在使用時只需要注意兩個文件中關(guān)于引腳的定義即可,其余均不用改動,包括iic地址,其默認就為0x68,除非一組IIC上掛載多個設(shè)備,才存在不同地址訪問問題,正常使用可不關(guān)心。我在這里提一個我自己的認識,揭開了iic的面紗,其本身在了解了其通信協(xié)議之后,根本就不會在意其是不是單片機上標的特定的某個或某對引腳,尤其是使用開發(fā)板的朋友,一定注意這個問題,這么說,單片機上任何兩個可以控制高低電平切換的引腳都可以被你用來進行iic通信,當你的iic設(shè)備用了別人的程序后沒反應,首先第一步先把你的iic設(shè)備斷開,在不該動現(xiàn)有iic配置的前提下,通過對scl和sda兩個引腳單獨置高和置低用以檢測你的配置是否有問題以及你的引腳本身是否有問題,排除這兩個問題后你的設(shè)備要是還沒反應你再考慮換程序試,記住先硬件后軟件的原則。本帖中設(shè)計的oled和mpu6050兩款iic設(shè)備我使用了兩對scl,sda,這樣做的一個巨大好處就是移植性非常強,很方便使用者修改。oled驅(qū)動時注意一下這個模塊僅接上vcc和gnd是毫無反應的,這不用慌,只有寫上相應代碼才能有所顯示,本帖中的oled程序是我找了好久且試了沒問題的,其中對于iic引腳配置的過程很有思想,只需要在.h文件里面修改,其余均可不用改變。大家若在其他32設(shè)備上使用時可參考,其避免了很多問題。
lan ya
|