|
才開(kāi)始寫帖子,大家多多包涵。
Balance.7z
(393.91 KB, 下載次數(shù): 25)
2020-3-24 14:43 上傳
點(diǎn)擊文件名下載附件
平衡車項(xiàng)目工程文件
STM32F407平衡車.zip
(7.24 MB, 下載次數(shù): 48)
2020-3-24 10:02 上傳
點(diǎn)擊文件名下載附件
輔助軟件與資料
本帖子采用以STM32F407為控制器的平衡小車。我是因?yàn)橄雽W(xué)32,然后F4比較強(qiáng)大,所以就沒(méi)采用F1或者stm8之類的單片機(jī)。
先從硬件準(zhǔn)備開(kāi)始:
1.編碼電機(jī)兩個(gè),電機(jī)驅(qū)動(dòng)器l298n一塊(我用了他上面的5v電,所以沒(méi)加穩(wěn)壓模塊,正規(guī)的話應(yīng)該加上)
2.MPU6050模塊一個(gè)
3.藍(lán)牙模塊
4.IIC協(xié)議的oled屏幕一塊(32當(dāng)然也可以用其他協(xié)議的,換一下相應(yīng)文件就好)
5.stm32f407最小系統(tǒng)板一塊
6.無(wú)源蜂鳴器來(lái)一個(gè)用來(lái)放音樂(lè)不錯(cuò)
7.導(dǎo)線、洞洞板、排針、接頭自己備一些,我是自己焊的拓展板 ,也可以直接畫(huà)pcb
8.3s的18650電池和充電器
9.支架的話我為了省事買了電機(jī)加底板支架,看視頻里大家要是有鉆,螺絲,銅柱的話整兩個(gè)電機(jī)支架一塊亞克力可輕松搞定,而且整潔美觀,布局也方便
再就到了硬件連接,我這里就不詳細(xì)說(shuō)那個(gè)了 l298n上面有in1~4四個(gè)引腳,分別接到單片機(jī)對(duì)應(yīng)的引腳, 1,2一組,控制motor1方向;3,4一組,控制motor2方向。同時(shí)電機(jī)驅(qū)動(dòng)模塊上還有兩根enable和5v引腳,剛買的一般是通過(guò)兩根跳線帽將兩個(gè)enable與兩個(gè)5v分別短接,我們需要將兩根短接帽拔掉,給每個(gè)enable接一路pwm,才能夠?qū)崿F(xiàn)我們所需要的直流電機(jī)速度控制。編碼電機(jī)連接時(shí)注意區(qū)分動(dòng)力線和編碼器信號(hào)線,動(dòng)力線兩條不做區(qū)分,接上后續(xù)如果電機(jī)方向不正確可以改in1,2的高低電平即可;編碼器有其電源線5v和gnd,不可接反,另外兩根即編碼器信號(hào)輸出,用來(lái)記脈沖就好。本小車中各引腳定義及相應(yīng)定時(shí)器在文末統(tǒng)一描述。到這,電機(jī)及其驅(qū)動(dòng)均已連接完成。
接下來(lái)是mpu6050,我對(duì)這個(gè)模塊的認(rèn)識(shí)其實(shí)也只存在于使用階段,我采用的直接是原子哥開(kāi)發(fā)板例程里的.c文件和.h文件,我們?cè)谑褂脮r(shí)只需要注意兩個(gè)文件中關(guān)于引腳的定義即可,其余均不用改動(dòng),包括iic地址,其默認(rèn)就為0x68,除非一組IIC上掛載多個(gè)設(shè)備,才存在不同地址訪問(wèn)問(wèn)題,正常使用可不關(guān)心。我在這里提一個(gè)我自己的認(rèn)識(shí),揭開(kāi)了iic的面紗,其本身在了解了其通信協(xié)議之后,根本就不會(huì)在意其是不是單片機(jī)上標(biāo)的特定的某個(gè)或某對(duì)引腳,尤其是使用開(kāi)發(fā)板的朋友,一定注意這個(gè)問(wèn)題,這么說(shuō),單片機(jī)上任何兩個(gè)可以控制高低電平切換的引腳都可以被你用來(lái)進(jìn)行iic通信,當(dāng)你的iic設(shè)備用了別人的程序后沒(méi)反應(yīng),首先第一步先把你的iic設(shè)備斷開(kāi),在不該動(dòng)現(xiàn)有iic配置的前提下,通過(guò)對(duì)scl和sda兩個(gè)引腳單獨(dú)置高和置低用以檢測(cè)你的配置是否有問(wèn)題以及你的引腳本身是否有問(wèn)題,排除這兩個(gè)問(wèn)題后你的設(shè)備要是還沒(méi)反應(yīng)你再考慮換程序試,記住先硬件后軟件的原則。本帖中設(shè)計(jì)的oled和mpu6050兩款iic設(shè)備我使用了兩對(duì)scl,sda,這樣做的一個(gè)巨大好處就是移植性非常強(qiáng),很方便使用者修改。oled驅(qū)動(dòng)時(shí)注意一下這個(gè)模塊僅接上vcc和gnd是毫無(wú)反應(yīng)的,這不用慌,只有寫上相應(yīng)代碼才能有所顯示,本帖中的oled程序是我找了好久且試了沒(méi)問(wèn)題的,其中對(duì)于iic引腳配置的過(guò)程很有思想,只需要在.h文件里面修改,其余均可不用改變。大家若在其他32設(shè)備上使用時(shí)可參考,其避免了很多問(wèn)題。
藍(lán)牙模塊的話,我個(gè)人建議大家還是采用usb轉(zhuǎn)ttl模塊將藍(lán)牙模塊與電腦相連進(jìn)行設(shè)置,切記,接法就是rx與tx相接,與正常使用時(shí)一樣,連接好后按住藍(lán)牙模塊上的按鍵再插到電腦上上電,這樣就會(huì)進(jìn)入初始化模式,此時(shí)串口波特率應(yīng)調(diào)到38400,停止位為1,校驗(yàn)位為無(wú),隨后按照hc-05的AT指令集進(jìn)行設(shè)置即可。設(shè)置完成后先不急著裝在設(shè)備上,而是直接拔掉電源,此次不按小按鍵,直接上電,用串口助手,將波特率、停止位、校驗(yàn)位等調(diào)至你的設(shè)定值,打開(kāi)串口,并用手機(jī)藍(lán)牙串口app進(jìn)行測(cè)試,試著互發(fā)數(shù)據(jù),測(cè)試無(wú)誤后再上設(shè)備,這樣在使用時(shí)僅需將單片機(jī)的串口設(shè)置好即可直接使用藍(lán)牙。熟悉之后,加上對(duì)于AT指令的理解,可以在程序中加上藍(lán)牙模塊的初始化程序,這樣會(huì)更加正規(guī)一些。
OLED在說(shuō)陀螺儀的時(shí)候就說(shuō)過(guò)了,對(duì)于本帖發(fā)的工程中的相關(guān)文件具有很好地移植性,僅修改scl,sda引腳,其余不動(dòng)即可。大家可能會(huì)有疑問(wèn),為什么不用改iic地址,這其實(shí)也是我對(duì)oled的IIC地址的一個(gè)知識(shí)誤區(qū),尤其是32當(dāng)中。我買的oled屏幕官方給的地址是0x3c,但在程序中我楞是沒(méi)找到相關(guān)的語(yǔ)句與設(shè)置,大家要是有深刻理解了這部分的朋友麻煩回我一些,謝謝。我在arduino上使用這款oled時(shí)他會(huì)有很明確的iic地址設(shè)置。而在32中,大家買到的oled應(yīng)該是和我的頭文件是匹配的,所以就使用而言可忽略地址設(shè)置。
引腳定義:
in1(AIN1)》PA3
in2(AIN2)》PA2
in3(BIN1)》PA1
in3(BIN1)》PA0
PWMA TIM13->CCR1 PF8
PWMB TIM14->CCR1 PF9
編碼器1 PA6 PA7 TIM3
編碼器2 PB6 PB7 TIM4
MPU6050 IIC
SCL PD5
SDA PD6
OLED IIC
SCL PD1
SDA PD2
uart1 連接電腦的串口
RX PA10
TX PA9
uart3 連接藍(lán)牙模塊的串口
RX PB11
TX PB10
1.https://wenku.baidu.com/view/b46da6ee26d3240c844769eae009581b6bd9bdf5?ivk_sa=1023194j這是個(gè)stm32各個(gè)定時(shí)器通道與引腳的關(guān)系,很重要,在這個(gè)基礎(chǔ)上引腳可以按需要自己隨意設(shè)置
2.有任何本帖相關(guān)內(nèi)容可聯(lián)系1562231483,大家相互交流學(xué)習(xí),尤其是沒(méi)黑幣的新朋友,我可以直接把文件發(fā)你們 |
評(píng)分
-
查看全部評(píng)分
|