陳榮林,魏陳鴻,王仁平
(福州大學(xué)物理與信息工程學(xué)院,福建 福州 350108)
隨著人民生活現(xiàn)代化和智能化的發(fā)展,由芯來(lái)科技開(kāi)發(fā),是國(guó)內(nèi)第一個(gè)完善的開(kāi)源人們對(duì)處理器的性能要求和功能越來(lái)越高,RISC-V處理器項(xiàng)目,提供了一套從模塊到Arm架構(gòu)和 Intel的 x86架構(gòu)壟斷了全球幾SoC,從硬件到軟件,從運(yùn)行到調(diào)試的完整乎所有主流的微處理器指令集架構(gòu)[1],2010解決方案,并且配備完整的文檔,書(shū)籍和開(kāi)年在伯克利分校( University of發(fā)板,使用穩(wěn)健的 Verilog 2001語(yǔ)法編寫(xiě)California at Berkeley)發(fā)布的全新的指的可綜合的 RTL代碼,以工業(yè)級(jí)標(biāo)準(zhǔn)進(jìn)行開(kāi)令集架構(gòu)——RISC-V指令集,有希望打破這發(fā),注釋豐富、可讀性強(qiáng)、易于理解[3]。一種芯片架構(gòu)被 arm和 X86壟斷的格局,給現(xiàn)在市面上常見(jiàn)的分揀機(jī)器大多數(shù)基中國(guó)自主發(fā)展處理器 IP帶來(lái)一個(gè)新的機(jī)會(huì),本都是正方形,以最多只能同時(shí)將快遞分成尤其對(duì)于嵌入式系統(tǒng)的開(kāi)發(fā)應(yīng)用,RISC-V3類(lèi)。那么如果遇到需要多分類(lèi)的時(shí)候,就需要多個(gè)裝置串接。當(dāng)裝置的數(shù)量越多,對(duì)整體分揀設(shè)備的占地面積的要求會(huì)更大,同時(shí)購(gòu)買(mǎi)分揀裝置的成本也會(huì)上升。對(duì)于一些中小型的收寄中心和一些中小型的快遞寄送點(diǎn)來(lái)說(shuō),這些要求是他們無(wú)法達(dá)成的。因此,本文設(shè)計(jì)如圖1所示多通道圓形分揀結(jié)構(gòu),連接更多的傳輸通道。
圖1 多通道圓形分揀結(jié)構(gòu)
本設(shè)計(jì)中將蜂鳥(niǎo) E203 Core和配套 SoC源代碼通過(guò) Vivado生成 bit流文件燒寫(xiě)入Artix-7XC7A100T開(kāi)發(fā)板,并通過(guò)軟件編程配置成所需要的工作模式。其軟件設(shè)計(jì)如圖2所示。
圖2 軟件設(shè)計(jì)圖
對(duì)蜂鳥(niǎo) E203的外設(shè)進(jìn)行初始化。第一,蜂鳥(niǎo) E203 MCU SoC中的 GPIO為芯片提供一組 32個(gè) I/O的通用輸入輸出接口,其特點(diǎn)是可以進(jìn)入 IOF模式與其他外設(shè)連接,如圖3所示。
圖3 GPIO復(fù)用關(guān)系圖
設(shè)計(jì)中用到的32位可配置寄存器如表1所示。
表1 GPIO部分可配置寄存器
第二,蜂鳥(niǎo) E203支持 3個(gè) PWM模塊,每個(gè) PWM模塊都具有四路 PWM輸出。因?yàn)檎麄€(gè)設(shè)計(jì)中需要對(duì)兩種直流電機(jī)進(jìn)行驅(qū)動(dòng),所以只需要復(fù)用一個(gè) PWM模塊的兩路輸出。具體配置過(guò)程如下:
(1)將GPIO_IOF_EN寄存器對(duì)應(yīng)的兩個(gè) I/O配置為 1,使其進(jìn)入 IOF模式。
(2)配置寄存器PWMCFG就行 PWM初始化,另外通過(guò)配置寄存器 PWMCMP0、PWMCMP1設(shè)置占空比。
本設(shè)計(jì)中將寄存器 PWMCFG的pwmdeglitch、 pwmzerocmp、 pwmenalways域配置為 1,具體作用如表2所示。
第三,蜂鳥(niǎo) E203 MCU SoC支持兩個(gè) UART模塊,分別為 UART0和 UART1,兩個(gè) UART的特性和功能完全相同。使用 UART時(shí),需要將對(duì)應(yīng)的 GPIO的 I/O配置為 IOF模式連接 UART。
本設(shè)計(jì)中是 UART0用于將 OpenMv攝像頭采集的條形碼識(shí)別譯碼出的 ASCII碼處理后發(fā)送給 MCU進(jìn)一步判斷以控制電機(jī)運(yùn)轉(zhuǎn)。另外為了方便對(duì)數(shù)據(jù)庫(kù)進(jìn)行修改,利用UART1連接 WIFI模塊。
第四,在本設(shè)計(jì)中,因?yàn)椴捎玫?0.96寸OLED顯示屏的主控芯片是SSD1306,其特點(diǎn)是可以不需要數(shù)據(jù)反饋,因此采用普通的I/O口來(lái)模擬I2C端口輸出I2C信號(hào)。其配置過(guò)程是選取兩個(gè)普通I/O,將寄存器GPIO_OUTPUT_EN對(duì)應(yīng)的 I/O配置為 1進(jìn)行輸出使能,作為SDA線(xiàn)和SCL線(xiàn)的接口即可。
蜂鳥(niǎo) E203實(shí)現(xiàn)了一個(gè) CLINT模塊,用于產(chǎn)生一組定時(shí)器中斷。其中中斷函數(shù)主要完成每一次中斷翻轉(zhuǎn)一次 I/O,每 4000次中斷更新一次顯示屏內(nèi)容。
由于在本設(shè)計(jì)中步進(jìn)電機(jī)精度要求較高,無(wú)法直接使用 PWM模塊進(jìn)行驅(qū)動(dòng),所以通過(guò)定時(shí)器中斷法,即每進(jìn)入一次中斷,I/O翻轉(zhuǎn)一次的方式完成脈沖信號(hào)的輸出。
另外,考慮到步進(jìn)電機(jī)失步、越步的現(xiàn)象,設(shè)計(jì)中加入了步進(jìn)電機(jī)的梯形加速算法進(jìn)行優(yōu)化,數(shù)學(xué)模型如圖 4所示。
圖4 梯形優(yōu)化算法模型
實(shí)際設(shè)計(jì)中,步進(jìn)電機(jī)本身的轉(zhuǎn)角是每個(gè)脈沖 1.8°需要 200個(gè)脈沖步進(jìn)電機(jī)旋轉(zhuǎn)一圈,在步進(jìn)電機(jī)驅(qū)動(dòng)的 4分頻系數(shù)下,需要 800個(gè)脈沖完成旋轉(zhuǎn)一圈。在設(shè)定為 1s轉(zhuǎn)一圈的情況下,輸出的脈沖頻率在 800Hz即可,即正常運(yùn)行的頻率為 800Hz。同時(shí),在裝置設(shè)計(jì)時(shí),不同的輸出路徑直接的角度差應(yīng)該在 9°以上,因此加速和加速環(huán)節(jié)應(yīng)該在 3.6°內(nèi)完成,即在 8個(gè)脈沖內(nèi)完成。加速增量如式(1)所示。同理完成減速部分。
(1)
OpenMv攝像頭因?yàn)樽詭C(jī)器識(shí)別的庫(kù),所以將其初始化后,再調(diào)用庫(kù)里面的函數(shù) codes=img.find_barcodes()以及 print_args=(code.payload())就可以得到從攝像頭拍攝到的圖像中讀出圖片中條形碼的數(shù)值,然后通過(guò) UART發(fā)送到 MCU上進(jìn)行后續(xù)的數(shù)據(jù)處理。
軟件配置完成后,進(jìn)行電路的搭建,因考慮到實(shí)際設(shè)計(jì)中所用到的直流電機(jī)以及步進(jìn)電機(jī)的工作電壓和電流的要求,需要在端口和電機(jī)之間加入驅(qū)動(dòng)電路。整體架構(gòu)如圖 5所示。
圖5 整體架構(gòu)圖
由于兩種直流電機(jī)在整體設(shè)計(jì)中有不同作用,其正常工作所需要的工作電壓和工作電流也有所不同。在結(jié)合了成本和功耗的考慮下選擇用 TB6612FNG作為大電機(jī)的電機(jī)驅(qū)動(dòng),選擇使用 L298N作為轉(zhuǎn)輪的電機(jī)驅(qū)動(dòng)。
TB6612FNG是一種雙路全橋驅(qū)動(dòng)芯片,該芯片輸出的單通道最大連續(xù)電流可達(dá)到1.2A,峰值電流可以達(dá)到 3.2A。本設(shè)計(jì)中,大電機(jī)控制傳送帶轉(zhuǎn)動(dòng),所以只需要控制其運(yùn)行和停止。另外,以 L298N作為電機(jī)驅(qū)動(dòng)電路的核心驅(qū)動(dòng)芯片,則具有驅(qū)動(dòng)能力強(qiáng)——輸出峰值電流可以達(dá)到 3A,只單路工作時(shí)輸出電流為 2A,雙路輸出時(shí)在 1A左右,同時(shí)功率可達(dá)到 25W[4]。本設(shè)計(jì)中,L289N驅(qū)動(dòng)電路為驅(qū)動(dòng)轉(zhuǎn)盤(pán)上的轉(zhuǎn)輪,不僅要能夠控制轉(zhuǎn)輪正反轉(zhuǎn),還需要控制電機(jī)的轉(zhuǎn)速以及電機(jī)的運(yùn)行和停止,所以需要把所有的接口留出,等待 MCU的控制信號(hào)[5]。
另外,步進(jìn)電機(jī)在相應(yīng)的步進(jìn)電機(jī)驅(qū)動(dòng)的協(xié)助下可做到精確的位置控制,表現(xiàn)為MCU每輸入一個(gè)脈沖信號(hào)到步進(jìn)電機(jī)驅(qū)動(dòng)里,步進(jìn)電機(jī)就得到一個(gè)固定的位置增量。本次步進(jìn)電機(jī)驅(qū)動(dòng)選用 TB6600驅(qū)動(dòng)器,這是一款專(zhuān)門(mén)用于兩相步進(jìn)電機(jī)(42步進(jìn)電機(jī)和57步進(jìn)電機(jī))的步進(jìn)電機(jī)驅(qū)動(dòng)??蓪?shí)現(xiàn)步進(jìn)電機(jī)的正反轉(zhuǎn)控制,通過(guò)驅(qū)動(dòng)器上方的 3位撥碼(s1,s2,s3)開(kāi)關(guān)選擇步進(jìn)電機(jī)的 7檔細(xì)分控,也可以通過(guò)后 3位撥碼開(kāi)關(guān)(s4,s5,s6)選擇 8檔電流輸出控制[6]。
本設(shè)計(jì)實(shí)現(xiàn)了基于蜂鳥(niǎo) E203結(jié)合軟硬件通過(guò)電機(jī)控制的貨物分揀裝置,其整個(gè)工作過(guò)程如下:貨物表面的條形碼通過(guò) OpenMv攝像頭與蜂鳥(niǎo) E203連接的串口,將其有效信息傳送到蜂鳥(niǎo) E203中,蜂鳥(niǎo) E203進(jìn)行數(shù)據(jù)處理后,與可通過(guò) WIFI修改的數(shù)據(jù)庫(kù)進(jìn)行比對(duì),得到貨物的分類(lèi)數(shù)據(jù)。之后,將已經(jīng)被傳送帶送到轉(zhuǎn)盤(pán)上的貨物,根據(jù)分類(lèi)數(shù)據(jù),控制步進(jìn)電機(jī)旋轉(zhuǎn)至既定角度并送出,之后將轉(zhuǎn)盤(pán)復(fù)位等待下一個(gè)貨物的到來(lái)。整個(gè)過(guò)程中會(huì)將傳送帶的轉(zhuǎn)速,當(dāng)前轉(zhuǎn)盤(pán)的角度,顯示在顯示屏上,多通道智能化貨物分揀裝置如圖 6所示。實(shí)驗(yàn)結(jié)果表明:該實(shí)驗(yàn)裝置均能準(zhǔn)確的實(shí)現(xiàn) 7個(gè)通道貨物分揀。
圖6 多通道智能化貨物分揀裝置