恩智浦智能汽车竞赛电磁组总结
大家可以在我個人空間來查看我發的我們車的視頻。https://blog.csdn.net/u011078253/article/details/123807766?spm=1001.2014.3001.5501
你們好,剛入手智能車可能不知所措,會浪費很多的時間,不知所措,我把這一年走的彎路告訴大家,讓大家開始就有一個目標,快速進入實驗室的狀態,首先我要告訴大家,其實學長們的確開始比你們懂得要多,但是經過一段時間我相信你們會比我們做的還要好,相信自己,自己的想法是很珍貴的,每一年的智能車規則不一樣,車模也不一樣,如果電磁明年變成直立,很多關于電機的控制都用不到了,但是每一個模塊的控制還得一個個來,我就給大家講一些控制,希望大家以后能用得到。
如果你們剛到實驗室還沒有智能車的一些材料,那么你盡量學習51郭天祥10天學會單片機視頻,做一些小的玩意,智能車也是需要一定的基礎的,做出小的作品對你以后參加智能車特別有用的,建議你們買一套51開發板,你們可以邊看邊寫,照著視頻里面的寫,一旦你們點亮led燈后,會很有成就感,你們也會發現其他東西也并不是想象中的那么難,增加你們的信心,這也對你們參加挑戰杯,其他比賽很有用的,我們會把51歷程會發給大家的,同時安裝好IAR,這也是智能車的調試軟件,看一下山外的視頻講解。
如果你們接觸到了智能車材料,而不知所措的話,你們一定要先知道,做智能車先要分配好任務,每個人都要有事做,做車千萬不要自己的事做完了就不管了,既然是一個團隊,就要互相幫助,單獨的調車很痛苦的,多陪陪隊友,才有動力,很多隊半途放棄了,五六十個隊只能留下十二個隊,只要能堅持下來,會成功的,一直調半年的車,再大的興趣也被磨得差不多了,所以提前做好準備。
下面開始主題,首先建議你們買成品板,買電機驅動,主板,如果還是可以用K60的話,強烈建議買山外K60FN(UD版)芯片,原因就是因為他歷程給的多,省了大家很多很多時間,有了山外的庫,我們就可以直接調用就行了,買過山外的板子后,我們當初寒假留校一星期,每一天都要給自己一個目標,比如第一天定目標完成電機控制,第二天完成舵機控制,第三天完成傳感器采集,然后嘗試把這幾個程序合在一起,一起控制,前提一定要先買好材料,可以再考期末試的時候把開發板,主板,驅動板買回來,以防開始無所事事。
K60有四個中斷,FNK60有4個FTM,大家盡量把程序分在各個中斷里面,不要把所有程序都放在while中,事實證明,放在while會讓單片機處理信息特別大,單片機容易熱,也容易燒,放在中段里面,大大減少了單片機的工作量,而且處理速度反而更快,四個中斷,一個用于舵機,舵機極限是300HZ,也就是他最大只能達到300HZ,也就是1000/300=3.3ms,就是說他最快反應時間也只是3毫秒,所以沒必要讓他在while中一直循環做無用功,同樣的時間越短,舵機力量越小,在轉彎的時候顯得沒力,所以我才用200HZ,也就是5MS反應一次,所以舵機中斷時間我給的是5MS,最大限度的減少了單片機的工作量,同樣的,我電機給的是50HZ,中斷給20ms,傳感器檢測我也是給5ms中斷和舵機放在一起,我的編碼器中斷給50ms,這個中斷我給的大了,你們可以給20ms,讓編碼器速度檢測的更快一點,屏幕給的是100ms,因為屏幕只是方便調試,不用太占用單片機的處理時間的,中斷還會有優先級,優先級就是假如5ms的中斷和10ms中斷,5ms處理倆次之后同時到了10ms中斷,當他們中斷相遇時,就要有優先級來決定先處理哪一個中斷,這里我給的是舵機(傳感器采集)為第一優先級,電機為第二優先級,編碼器為第三優先級,屏幕為第四優先級,,K60有4個FTM,我是B車模,只有一個電機,所以一個用于舵機,一個電機,一個編碼器,注意的是,一個FTM只能控制一樣東西,假如控制了舵機,就不能控制電機了。
我發了一個最終版的程序,里面可能加的東西有點多,不容易看,還有一份源程序,特別簡潔,你們可以先按源程序改,在參考我最終程序,也不用完全按我的來,有一個好的想法真的可以把速度提升好多,珍惜你們的想法。
如果你們的車可以跑起來了,電磁組歸一化很有必要的,因為不同的賽道,信號強弱也不同,不能車在本校的賽道可以跑,換個賽道就不行了,所以,要讓他在其他賽道檢測到的值轉化到和本校賽道一樣的值,這樣車才能跑出更好的狀態,歸一化其實很簡單,最終程序也詳細注釋了,就是在5秒內搖晃車子,每一個電感檢測到的最大值和最小值記錄下來,然后車子跑的時候采集到的值/(最大值-最小值)*100,這樣檢測到的值就會范圍在0-100之間,特別容易處理這些值。
注意事項:
1.編碼器當時我讀了很長時間也讀不出來速度,首先建議大家采用K60正交解碼,可以測正反轉,以后停車和剎車會好用一點,編碼器有四根線,倆跟正負極,一根可以檢測速度,一根檢測正反轉,當時讀了很長時間也讀出來是因為編碼器倆跟信號線沒有接上拉電阻,大家可以倆跟信號線分別接10k上拉電阻到5v電源上。
2.歸一化之后的值正常在0-100,如果有時0-110,也正常,甚至在十字彎路段時,值可能會達到120多,所以大家在處理上坡時,給大家個方法中間加一個電感,中間歸一化之后的的值大于130,說明到上坡了,然后就可以利用編碼器記錄距離,例如倆米,在上坡中可以加速,控制舵機小幅度打角.
///特重要的
本程序控制舵機電感源代碼當中就三個電感,其實倆個就行了,我就用倆個(三個是因為外側電感值減去中間電感值,而倆個可以外側減去另一外側,只是為了確定左轉還是右轉,為丟線做準備的),中間也可以再放一個電感檢測上坡,這三個是控制舵機的,這三個電感其實不用PID,只要處理好,電機給固定占空比,速度就可以達到2米以上了,如果速度還要提升,就要用PID了,還要加倆個豎直電感在最外側(25cm寬度限制),豎直電感的最大的優勢就是在直道上怎么晃基本沒值,或者值很少,但是一到彎道,提前值就會變得好大,有很好的預測性,給單片機更好的處理來面對,所以我的想法就是如果舵機在1.5米的距離之內沒有出現打死的情況(小幅度的晃動不算,)則判斷為直道,如果被判斷為直道且豎直電感值很大的話,則判斷為長直道入彎,開始用PID減速,如果過了一會舵機打死,則判斷為完全進入彎道,開始加速,這樣最大化的減少了速度損失,使車在拐彎時十分的迅速,
3.關于大S彎判斷:,很多車子發現都是大S連續彎容易將車子甩出去,想要處理好大S彎有不影響其他彎道的速度,就必須先把大S識別出來,識別很容易,我的想法是,舵機每打死一次,記一下,如果向左打死,記錄一下為1,然后用編碼器記距離,如果在1米內他向相反的方向(向右打死記為0)打死,則判斷為大S ,然后給予處理,減速慢行,
4.十字彎也是,十字彎的特征是我倆邊的電感值在經過十字彎時都特別大,所以我就記為十字彎,然后前半段減速,后半段加速,直到再次經過十字彎,判斷為出十字彎,不過有風險,就像今年的比賽,有十字彎的不一定真的就是十字彎的一個圓,所以我不建議十字彎加速。
5.上坡的問題我前面也說過了,其實一個中間的水平電感就可以了,當他大于一定的值就判斷為上坡,然后給一段上坡的距離,比如1.5米為上坡,在這1.5米內你可以加速,讓舵機小幅度打角,讓車平穩的過去,關于飛坡也要注意一下,雖然可以在上坡加速,但也要注意萬一比賽像2017年的賽道,上坡后很快到彎道,車不容易減速。
6.如果你可以跑起來了,最好可以跑完一圈的,基本車在起跑的時候速度提的很慢,如果想提速,大家可以從起點記距離設定在開始1米內給特別高的占空比,讓車把速度瞬間提起來,這樣可以節約一定的時間,但是注意一下速度和距離不要太長,因為比賽的時候不知道開始的知道距離有多長,如果太長的話,可能車在第一個彎道減不下來(前提是有豎直電感,可以用PID控速的)。
7.在比賽的時候要留一個最低速,我當初留了一個大約1.7米每秒的最低速度,大家可能會發現車慢了反而會內切(大家可以修改丟線電感值來控制打死角),還有一個就很粗暴,我當時在很近的地方放倆個水平電感,因為近所以,所以電感也很低,倆電感的距離也近了,所以監測的值也大了,所以丟線也會變化的快一點,讓車子能沿著漆包線走,當然直接在程序修改也是可以的。
8.大家無論選擇什么組,在畫板子是一定要加上LED 屏,因為加了屏幕,在以后的調試中真的可以起到很大的作用,節約很多時間,還有電磁組畫傳感器的時候,盡量畫8個,最少6個,你多畫幾個就算不用也沒事,萬一以后用也不至于重新畫板子,還有電磁碳素桿之間的連接,碳素桿要用實心的,2mm,2.5mm.3mm,在淘寶搜一下就行了,我們做的時候沒有想到好的方法,所以采用了熱熔槍固定,但是實踐表明熱熔膠容易變形,不夠堅硬,直到我在快比賽的時候看到安工程的銜接處全部用3D打印機打印的一個小固件,很輕,而且不占地方,所以我希望你們可以借鑒一下。
我的程序在https://download.csdn.net/download/u011078253/83901419
總結
以上是生活随笔為你收集整理的恩智浦智能汽车竞赛电磁组总结的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: js 文件上传 图片上传 传输速度计算
- 下一篇: 机械臂手眼标定原理及代码