依靠黑白間隔點巡跡的四輪電動爬坡小車
- 題目
- 第一天
- 第二天
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串口接收脈沖資料還有些問題,花了一早上的時間才將其糾正過來,因為我們之前做的車子實在是太長了,所以攝像頭放不下了,因此我們不得不尋找新的巡跡模塊,我的騷想法又冒了出來,想用光電巡跡模塊
今天太晚啦,明天繼續發哦,晚安咯各位~
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/185313.html
標籤:java
上一篇:RFID環衛車輛管理系統應用方案
