親愛的工程師朋友和喜愛電子的朋友,大家好,我是zero,一名熱愛diy的在校學(xué)生,很高興能來到這個(gè)平臺分享自己做的產(chǎn)品,來這個(gè)平臺的目的最主要想跟大家分享一下自己做東西的時(shí)候遇到的問題和理解,想讓大家一起進(jìn)步。
? ? 本期我做的是平衡車,平衡車大家應(yīng)該很熟悉不過了,很多相關(guān)專業(yè)的學(xué)生或者工程師一般都應(yīng)該有所了解,或者自己也動手做過,但是我想把我做的過程分享出來,我想把我的心得和體會也分享給大家,希望對大家有所幫助,以下如果有講的不對的地方還望大家提出來,我也隨著一起進(jìn)步。
? ?為了節(jié)省大家時(shí)間,我主要講一下我接下來要給大家講的,以及可能對大家有幫助的地方;
? ? 1.平衡車的硬件搭建。
? ? 2.平衡車的程序編寫。
? ? 3.平衡車的PID調(diào)節(jié)。(主要講一下,我想把我的pid調(diào)節(jié)心得給大家,絕對好用)
? ? 4.機(jī)械外殼制作。(主要是如何將自己制作的pcb結(jié)合建模軟件制作外殼)
? ? 5.拓展功能。(應(yīng)該是沒有時(shí)間做了,但是我會給大家流出來程序接口,供大家拓展)
? ??6.我下面主要解釋一下,上面我說的這幾點(diǎn);
我想在接下來的過程當(dāng)中主要給大家講一講如何處理mpu6050的數(shù)據(jù),如果大家在實(shí)際當(dāng)中可能遇到過mpu6050的應(yīng)該了解,有一種現(xiàn)成的處理方式叫做DMP,我們不采用這種,采用四元數(shù)解算出歐拉角的方式。
我會告訴大家過程中應(yīng)該注意的事項(xiàng),以及濾波算法選擇等等應(yīng)該注意的事項(xiàng),其中我會結(jié)合matlab給大家更直觀的分析數(shù)據(jù),證明我們的濾波算法選擇的可行性,不是空談。
最主要想給大家講講PID的調(diào)節(jié),PID一直都是我們比較頭疼的問題,我想把我遇到以及自己的經(jīng)驗(yàn)告訴給大家,希望在以后的diy過程中會有所用途。
(其中這個(gè)過程當(dāng)中很多是我自己的理解,如果有不對的地方,也希望大家給提出來。)
最后我會跟大家簡單說一下,如何將自己制作的pcb導(dǎo)入到3d建模軟件中,制作自己的產(chǎn)品的外殼。
我會把我制作過程中的代碼分成兩種一種是非操作系統(tǒng)的(先寫的),一種freeRTOS操作系統(tǒng)的供大家參考(后改的),還有其他所有制作過程中所需要的軟件等;
? ?7.最后祝大家都能學(xué)到知識,都成為大佬。
好啦,第一期就嘮嗑到這里啦,接下來,我將陸續(xù)分享“基于STM32來DIY一款炫酷的mini平衡車”項(xiàng)目的各個(gè)步驟的內(nèi)容,如果對這個(gè)項(xiàng)目感興趣,想深入了解和溝通,請?jiān)谟覚诟幽K中掃碼申請加入“來實(shí)戰(zhàn)技術(shù)交流群”(Q群)。
歡迎點(diǎn)擊下方【收藏按鈕】收藏本項(xiàng)目,持續(xù)更新中,敬請關(guān)注...
步驟一:初步設(shè)計(jì)方案
本期我們主要是簡單陳述一下平衡車的總體概況,包括我們需要什么軟件,平衡車的總體框架是什么,這為我們下一步電路繪制和程序編寫起到鋪墊作用,因?yàn)槲覀冊O(shè)計(jì)了什么樣的電路,也就意味著以后的功能的局限性。
圖1:平衡車的總體框架
圖2:OLED顯示模塊
圖3:電機(jī)
圖4:編碼器接線方法
硬件方面
首先先說一下我為什么選擇stm32f103tu這塊芯片,最主要原因它是f10x系列最小的stm32芯片,而且最主要原因它是QFN封裝的,在我們非機(jī)器焊接的時(shí)候遇到最難的也就是QFN封裝,stm32的球體封裝一般廠商難以做出來,工藝太高,做出來也是高層板和高價(jià)格,對于我們來說那就是給我們自己找麻煩。所以這樣可以鍛煉我們焊接的基本功,在我們?nèi)粘5腄IY過程中,難免會遇到硬件軟件一起抓,芯片選型等等一系列的工作,所以不要讓焊接功底成為我們的攔路虎。
軟件方面
視頻中只是給大家介紹了一下我在制作過程中所用到的軟件,不限于別的軟件。接下來的視頻中大家可以留意一下J-scope的使用,真的很好用,如果不喜歡的同學(xué)亦可以使用自帶的藍(lán)牙模塊使用透傳,電腦端使用串口調(diào)試助手來實(shí)現(xiàn)。
安裝方面
所有的視頻我并不講軟件的安裝方式,伸手黨很可恥,我們動動小手都能搞定。
PS:在過程中可能會遇到很多同學(xué)沒聽明白或者不清楚,都可以留言,在一段時(shí)間內(nèi)我都回答大家的問題,如果我沒有及時(shí)回復(fù)大家,大家可以度娘搜索關(guān)鍵詞,一般都可以搞定。最后我想說的是,在錄制視頻的時(shí)候一直很緊張,錄了很多遍都一樣,所以大家請諒解。
如果有不明白的可以給我留言,我會及時(shí)回復(fù)的。
預(yù)告:下一期主要講講電路圖架構(gòu),為了節(jié)省大家的時(shí)間我會把所有的電路和原理圖繪制完成,最后給大家講講中間應(yīng)該注意的問題。我們下一期見!
步驟二:硬件系統(tǒng)設(shè)計(jì)
?? ?本期我們主要講如何設(shè)計(jì)硬件原理圖和PCB制圖,在我們做之前我們要想好我們想要什么功能,這涉及到我們設(shè)計(jì)硬件原理圖的時(shí)候要將這些功能添加進(jìn)去,我們在DIY過程中,一定要把我們想實(shí)現(xiàn)的功能想周全,這樣后期就不會因?yàn)樵O(shè)計(jì)前想的不周到而造成自己想要實(shí)現(xiàn)功能卻無法實(shí)現(xiàn)。
圖1:電路板3D圖
圖2:電路板反面布線圖
圖3:電路板正面布線圖
?? ?首先我們先把我們的電源,最小系統(tǒng),藍(lán)牙,oled和電機(jī)驅(qū)動電路一部分一部分的畫好,我們在設(shè)計(jì)的過程中還要檢查一遍,我們設(shè)計(jì)的原理圖是不是有問題,硬件原理不能出現(xiàn)問題,這時(shí)候我們可以選擇芯片的datasheet,在芯片資料中會明確說明每個(gè)引腳的作用,有的芯片還會給出參考的最小系統(tǒng)設(shè)計(jì),我們完全可以按照它給定的和規(guī)定的設(shè)計(jì),這樣也是對我們設(shè)計(jì)的原理圖的一種糾錯(cuò),確認(rèn)沒有任何錯(cuò)誤之后我們就可以進(jìn)行下一步PCB制圖的制作。
圖4:電路板面3D圖
圖5:電路板整體SW圖
?? ?在PCB制圖之前我們要先得到我們pcb板子的大小和形狀,這時(shí)候我們就需要SW了,我們在SW中建好相應(yīng)元器件的模型,我們將這些模型堆砌到一起,最后由我們自己確定最后的電路板板框圖,導(dǎo)出板框圖,我們的電路最終就在電路板的板框圖上繪制。在繪制過程中,我們可以按照實(shí)際當(dāng)中電路的需要而實(shí)時(shí)更改電路的原理圖,以便我們能更好地布線,布的更美觀,在布線當(dāng)中我們要分清信號線和電源線,電源線我們要加粗處理,以防載流值不夠燒壞電路板,注意其中我們設(shè)計(jì)的螺絲孔,不要忘記它的周圍不要放元器件,在銅皮上寫logo的時(shí)候不要忘記加上阻焊層,畫好之后我們最終用3D圖功能看一下我們的電路板,以防我們在設(shè)計(jì)當(dāng)中出現(xiàn)錯(cuò)誤能及時(shí)發(fā)現(xiàn)。最后我們將電路板打樣,此階段完成。
? ? PS:我在視頻當(dāng)中有口誤的地方,這時(shí)候大家不要聽我說的,可以看我的操作,最后說一下,下期我將更新平衡車的軟件部分(程序編寫)。
步驟三:軟件系統(tǒng)設(shè)計(jì)
?? ??? ?軟件模塊的程序編寫主要是依據(jù)硬件設(shè)計(jì)來的,我們主要設(shè)計(jì)的硬件功能有OLED顯示模塊,藍(lán)牙模塊,陀螺儀模塊,電機(jī)驅(qū)動模塊,和RGB顯示模塊和電壓采集模塊。
1、OLED顯示模塊
主要的人機(jī)交互模塊,驅(qū)動方式我們選擇的是軟件IIC,沒有選擇硬件IIC,因?yàn)镾TM32的硬件IIC有BUG,咱們索性也就不用了吧,驅(qū)動見程序源碼。我們主要完成的功能是把我們想要顯示的內(nèi)容通過屏幕顯示出來,由于我沒有過多的顯示出內(nèi)容,只是顯示出來了平衡車的LOGO,更多功能大家可以自己自定義去實(shí)現(xiàn)。
?? ?2、藍(lán)牙模塊
藍(lán)牙模塊傳輸原理就是藍(lán)牙透傳模式,也就是我們電腦或者手機(jī)連上藍(lán)牙的時(shí)候不用專門寫驅(qū)動,我們可以通過串口的方式將我們的數(shù)據(jù)讀取出來。由于我并不用藍(lán)牙來調(diào)試主要是為了后續(xù)加入手機(jī)APP的功能而加入的,在程序中我們就正常初始化STM32的串口功能,TX,RX相反鏈接就可以了。
?? ?3、陀螺儀模塊
我們平衡車當(dāng)中最重要的一部分,我們主要依靠陀螺儀確定平衡車的姿態(tài)。陀螺儀也是用的軟件IIC。具體源碼見程序源碼。
?? ?4、電機(jī)驅(qū)動
電機(jī)驅(qū)動如果想驅(qū)動電機(jī)我們必須用至少一路pwm和兩個(gè)GPIO,所以我們在程序中初始化一個(gè)定時(shí)器為pwm模式,剩下我們可以任意找兩個(gè)IO口當(dāng)作方向。
?? ?5、電壓采集和RGB燈光
電壓采集我們主要用的STM32的硬件外設(shè)ADC來完成,我們通過外部設(shè)計(jì)電路將電壓用電阻分壓的方式分到3.3V以下,這個(gè)時(shí)候我們就可以用內(nèi)置的ADC采集電壓,之后當(dāng)ADC采集完成,我們再按照比例反推回去,我們就可以知道電源的電壓了。RGB模塊其實(shí)就是一個(gè)LED燈里面同時(shí)裝了紅、藍(lán)、綠三種顏色的燈珠,我們可以將RGB模塊當(dāng)作正常的燈珠使用就好,注意的是當(dāng)同時(shí)點(diǎn)亮兩個(gè)或者三個(gè)的時(shí)候會有混光。
PS:軟件設(shè)計(jì)完成差不多我們的項(xiàng)目也就完成,最后我會給大家演示一下平衡車平衡,希望大家學(xué)到。
步驟四:實(shí)物制作+項(xiàng)目總結(jié)
最后跟大家說一下軟件版本:
1、AD 16
2、KEIL-MDK 5.20以上
3、SW 2016
4、CAD 2010
如果大家下載下來的開源包都是好用的,大家可以盡情下載,下載方式SWD,不支持JTAG下載,我在程序中給禁用了,焊接溫度最好保持在220度左右。
版權(quán)聲明:本文內(nèi)容為電路城原創(chuàng)內(nèi)容,未經(jīng)授權(quán)禁止轉(zhuǎn)載,侵權(quán)必究!