2020電賽總結—依靠“黑白間隔點”巡跡的四輪電動“爬坡”小車

6小天才6發表於2020-10-20

依靠黑白間隔點巡跡的四輪電動爬坡小車


2020年電賽終於結束了,因為疫情的原因,今年的電賽也推遲了,所以我先參加了智慧車競賽再參加的電子設計競賽。準備時間不是很充分,就準備了一個國慶的時間,因此我們準備的小車就是智慧車的舵機和電機,為了符合比賽要求,底板是我們重新打的,然後在國慶期間,我找到了Ti晶片的MSP430F5529的硬體裝置庫並且分別將S3010舵機,RS380電機,按鍵,撥碼,OLED螢幕等外設調通,小車上使用了智慧車的穩壓電源和電機驅動,至此完成小車執行的任務,調通了一輛可以執行的小車。

題目

在這裡插入圖片描述

我們選擇了C題的小車控制題目。拿到了題目,我們當時“膨脹”了,以為很簡單哈哈哈,結果現實打了我們一個大耳光啊哈哈。

第一天

第一天的早上我們討論了一下小車前輪的安裝情況(其實並沒有啥用),然後開始搭車,因為我國慶摸魚了,沒有搭出一輛可以跑的車子,只是把外設調通了而已,所以第一天的白天我和隊友A就是在搭一輛可以下地跑的小車。
看了題目之後我們覺得小車控制速度非常關鍵,但是我們用的MSP430F5529晶片只有4個定時器,一個產生電機PWM,一個產生舵機PWM,還有一個做定時中斷使用,而後面2路的正交解碼訊號也需要2個定時中斷進行解碼,因此我使用了2塊Ti晶片,晶片A進行正交解碼,並且以波特率115200通過串列埠將資料傳輸給晶片B,由晶片B進行小車外設的控制
512線正交解碼時序圖:在這裡插入圖片描述
當後車輪往前轉的時候,編碼器方向輸出為高電平(1),反之為低電平(0),同時輸出脈衝數(當編碼器轉完一圈的時候輸出512個脈衝,因此是512線編碼器)表示輪子轉過的角度。基於這種資料傳輸方式我寫了對應的正交解碼程式。
以後左輪為例,右輪相同。初始化一個定時器作為脈衝計數,具體配置方式如下,我用的是大佬的開源庫,大家最好還是用官方的庫吧。同時設定GPIO口判斷後輪轉動的方向,這些都是小問題。
在這裡插入圖片描述
接下來是在脈衝中斷函式中做的事情了,每次脈衝讀取中斷觸發一次,便進入一次中斷函式,因此在中斷函式中進行脈衝計數變數的自加操作。
在這裡插入圖片描述
然後在定時中斷(我設定了50ms)裡面通過前面的g_left_over_flow變數數值結合脈衝計數函式獲得脈衝數,然後通過串列埠傳送出去,資料傳送完畢之後將變數清零,同時將脈衝計數器裡面的脈衝計數清零。至此完成了脈衝計數採集以及傳送。
在這裡插入圖片描述

至於巡跡模組,我們當時看了準備材料,買了一個openmv攝像頭,打算用這個來進行黑白巡線,所以隊友B在調openmv的尋跡程式碼,下午隊友B也做了題目裡面要求的賽道。
晚上在調晶片B的串列埠接收程式,摸魚中進行度過,看了隊友B調出來的openmv效果不是很滿意,仔細詢問,居然全是調庫,遂噴其一頓,結束了第一天的摸魚工作。回寢室睡了個美滋滋的覺。

第二天

第一天晚上晶片B串列埠接收脈衝資料還有些問題,花了一早上的時間才將其糾正過來。因為我們之前做的車子實在是太長了,所以攝像頭放不下了,因此我們不得不尋找新的巡跡模組。我的騷想法又冒了出來,想用光電巡跡模組

今天太晚啦,明天繼續發哦,晚安咯各位~

相關文章