此小車是我們做的21年送藥小車練習(xí).
由于時(shí)間匆忙(7月初放假開始制作編程),只做了單車的基本送藥功能.其主要目的還是熟悉梁山派的各個(gè)功能外設(shè).
電機(jī)控制使用TB6612,四個(gè)GPIO做通用輸出口,兩個(gè)做PWM輸出.PWM使用TIM8_CH0&CH1.
編碼器使用了TIM2&TIM3.
留有兩個(gè)I2C接口,一個(gè)OLED,顯示基本調(diào)試信息;一個(gè)MPU6050,用來精確轉(zhuǎn)向
兩個(gè)UART,分別給openMV和K210通訊
PCB工程里有兩塊PCB,一塊是供電系統(tǒng),連接電機(jī),編碼器,降壓模塊,穩(wěn)壓芯片;一塊是簡(jiǎn)單的主控固定板,引出上述所用到的引腳.
兩塊板通過1.25連接座連接編碼器,電機(jī)驅(qū)動(dòng)的6PIN,5V供電
總結(jié)一下練習(xí)過程.
開啟一個(gè)100Hz的定時(shí)器進(jìn)行電機(jī)速度控制.
openMV識(shí)別圖像最上面5個(gè)框來檢測(cè)紅線,梁山派UART開啟DMA循環(huán)接收數(shù)據(jù),并進(jìn)行錯(cuò)誤檢測(cè).
K210識(shí)別到數(shù)據(jù)后會(huì)先處理,然后直接發(fā)送命令給小車.實(shí)際中發(fā)現(xiàn)K210每次啟動(dòng)后需要手動(dòng)復(fù)位一下才可以運(yùn)行(還不知道什么原因),所以K210的復(fù)位引腳連接了一個(gè)GPIO,由程序復(fù)位.
MPU6050轉(zhuǎn)向沒有使用DMP而是直接讀取陀螺儀角速度來計(jì)算,會(huì)有一定的誤差.
硬件方面
一:設(shè)計(jì)的小車底盤夠低,但是采用了極其簡(jiǎn)單的滾珠,在我們實(shí)驗(yàn)場(chǎng)的會(huì)有很大的阻力,使得小車運(yùn)行效果不理想.
攝像頭支撐柱不夠高,導(dǎo)致K210識(shí)別速度不夠.之后使用銅柱增高,得以解決.
三:電池本來是可更換的,但由于使用了魔術(shù)貼使得難以取下來.
軟件方面:
一:GD32的一些外設(shè)驅(qū)動(dòng)庫找了有一會(huì),沒注意看梁山派模塊征集令里都有.但有一個(gè)問題:同學(xué)們GD32的I2C的硬件驅(qū)動(dòng)都是采用的讀取標(biāo)志位,但沒看到有同學(xué)做超時(shí)處理,在oled或者6050壞了的時(shí)候容易死機(jī).
二:openMV一開始打算發(fā)送線的偏移量和傾角,進(jìn)行PID控制,調(diào)試了三天都沒有結(jié)果.放棄并使用了尋找色塊的方法.也就類似紅外傳感器.
三:K210訓(xùn)練的模型量太少,以及一些人為的失誤,導(dǎo)致準(zhǔn)確度很不理想.之后借用了學(xué)長(zhǎng)訓(xùn)練的模型.
查看原理圖請(qǐng)點(diǎn)擊主控
最后來個(gè)演示(只能識(shí)別內(nèi)側(cè)的數(shù)字,外側(cè)的還未處理)
!注意:請(qǐng)使用瀏覽器自帶下載,迅雷等下載軟件可能無法下載到有效資源。
歡迎加入EEWorld參考設(shè)計(jì)群,也許能碰到搞同一個(gè)設(shè)計(jì)的小伙伴,群聊設(shè)計(jì)經(jīng)驗(yàn)和難點(diǎn)。 入群方式:微信搜索“helloeeworld”或者掃描二維碼,備注:參考設(shè)計(jì),即可被拉入群。 另外,如您在下載此設(shè)計(jì)遇到問題,也可以微信添加“helloeeworld”及時(shí)溝通。
EEWorld Datasheet 技術(shù)支持