孫會澤,吳蓬勃,張金燕,王拓,南陪鈞,于逸龍,劉慧,劉濤
(1.石家莊郵電職業(yè)技術學院,河北石家莊,050021;2.河北工程技術學院,河北石家莊,050091)
隨著電商與互聯(lián)網(wǎng)技術的飛速發(fā)展,快遞包裹的業(yè)務量激增,這對快遞分揀效率提出了更高要求[1~3]。交叉帶分揀機作為快遞分揀中心的核心裝備,對快遞業(yè)提質(zhì)增效起著關鍵作用。
在交叉帶分揀機的供包環(huán)節(jié),需要大量的人力完成包裹掃碼上車工作,人工成本高,供件效率低,與高速運轉的分揀機不相匹配。本裝置可以代替人工完成包裹掃碼工作,通過翻轉機構和旋轉臺,在2臺相機的配合下,完成包裹六面掃描,獲取包裹條碼信息,提高供件效率。與現(xiàn)有大型六面掃碼設備相比,本裝置具有更低的成本,而且更加適配分揀機供包的場景。
系統(tǒng)架構如圖1所示。翻轉板A和B通過中間軸進行連接,分別由2臺電機控制。翻轉板A上面有一個360度旋轉臺。在翻轉板A和B的兩側分別有D1和D2兩個位置傳感器,檢測兩個翻轉板的位置。在垂直方向有一臺側面掃碼相機,可在旋轉臺的配合下,對包裹四個側面進行條碼掃描。在頂部有一臺正反面掃碼相機,可以在翻轉板A和B的配合下,完成包裹正反面的條碼掃描。兩側的傳輸帶分別完成包裹的送入和輸出,如果包裹六面都未掃到條碼,則通過撥桿裝置,送入人工核驗箱。
圖1 系統(tǒng)架構圖
系統(tǒng)硬件組成,如圖2所示。STM32通過兩路串口分別連接兩臺掃碼相機,通過中斷引腳連接兩個紅外感應位置傳感器A和B,通過GPIO控制撥桿動作,通過PWM接口連接步進電機驅動模塊,分別驅動翻轉電機A、B以及旋轉電機C;其掃描結果通過CAN總線傳送到中控計算機。
圖2 系統(tǒng)硬件組成
STM32最小系統(tǒng)(如圖3所示)以STM32F103RET6為核心,該芯片采用Cortex-M3內(nèi)核,72MHz主頻,內(nèi)置512K Flash和64K SRAM,配有4路通用16位定時器、兩路PWM定時器、5路USART和1路CAN控制器。
圖3 STM32最小系統(tǒng)
STM32F103RET6通過USART1和USART2連接兩路掃描相機;內(nèi)部定時器通過GPIO口PB7、PA6和PB10輸出PWM脈沖,在使能引腳Mx_EN和方向控制引腳Mx_DIR的配合下,控制三路步進電機驅動電路,進而控制翻轉電機A、B和旋轉電機C的運動狀態(tài)。
步進電機驅動電路以TB67S109A為核心,如圖4所示。TB67S109A是具備PWM斬波器的雙極步進電機驅動器,可通過PWM控制步進電機運動,允 許 全 步、1/2、1/4、1/8、1/16、1/32步運行,內(nèi)置錯誤檢測電路、熱關斷、過流關斷和上電復位。
圖4 步進電機驅動電路[4~6]
為防止驅動電路對STM32的干擾,STM32的方向引腳DIR、使能引腳EN和步進脈沖引腳PWM分別通過光耦TLP521和6N137送入TB67S 109A。由于脈沖PWM信號為高頻信號,所以采用了10Mbit/s的高速光耦6N137。
TB67S109A的39、46、47引腳為細分引腳,用于設置步進電機的細分值,通過撥碼開 關SM1進 行 設 置;7、8、29、30引腳用于電流采樣,可以通過采樣電阻R11和R12和基準電壓Vref,設置峰值輸出電流值Iout,計算公式為:Iout=Vref/5/RS,其中RS為采用電阻;10、11、16、17、20、21、26、27引腳連接電機繞組A相和B相,向步進電機輸出電流,驅動電機運動。
圖5 為步進電機驅動電路的低功耗管理電路,74HC123D為單穩(wěn)態(tài)觸發(fā)器,當2腳1B有脈沖信號時,觸發(fā)器輸出13腳1Q為高電平,電阻R35與R36并聯(lián),然后與RP1分壓;當2腳1B沒有脈沖信號時,觸發(fā)器輸出13腳1Q為低電平,電阻R35與RP1并聯(lián),然后與R36分壓,Vref電壓變低,從而降低TB67S109A峰值輸出電流Iout,進而實現(xiàn)在無脈沖信號輸入時,降低驅動電路功耗的目標。
圖5 低功耗管理電路
CAN總線通信電路如圖6所示,采用了NXP公司的第三代高速、低功耗CAN收發(fā)器TJA1042,傳輸速率可達1Mbit/s;在電流極低的待機模式,可以通過主機總線喚醒。在圖6中,TJA1042的1腳和4腳連接STM32的CAN接口;8腳STB為待機模式控制輸入,當STB接低電平時為正常模式,接高電平時進入待機模式;5腳VIO為IO電平適配器,允許與供電壓3~5V的MCU直接連接。
圖6 CAN總線通信電路
系統(tǒng)軟件流程如圖7所示。傳輸帶將包裹送入裝置后,位置傳感器會檢測到包裹,觸發(fā)STM32外部中斷,STM32控制頂部相機進行掃碼,如果檢測到條碼,則將掃描結果通過CAN總線傳輸?shù)街锌赜嬎銠C,然后通過翻轉電機將包裹傾倒在輸出傳輸帶上,準備進入分揀環(huán)節(jié)。如果頂部相機未掃描到條碼,則STM32控制旋轉電機運動,開啟側面條碼掃描,如果檢測到條碼,則傳輸結果到中控計算機;如果包裹旋轉一周都未掃描到條碼,則STM32控制翻轉電機對包裹進行翻轉,頂部相機對包裹底面進行掃描。如果六個面都未掃描到條碼,則包裹送到輸出傳送帶后,STM32控制撥桿將包裹撥動到人工核驗箱,等待人工核驗。
圖7 軟件流程圖
驅動步進電機運轉,需要脈沖信號,通過脈沖頻率調(diào)整電機速度,通過脈沖數(shù)量控制步進電機旋轉角度。通過STM32輸出PWM脈沖,一般通過定時器中斷實現(xiàn)[7~8],但這樣會占用大量的MCU資源,尤其是多路PWM脈沖的輸出。為實現(xiàn)三路步進電機的高效控制,本系統(tǒng)采用定時器TIM+DMA方式驅動步進電機。定時器通過GPIO口輸出頻率可調(diào)的PWM信號,控制步進電機運動速度;通過DMA設置輸出的脈沖數(shù)量,控制步進電機旋轉角度。下面以旋轉步進電機驅動為例,詳細講解STM32采用TIM+DMA方式輸出有限數(shù)量PWM波形的方法。
旋轉電機的PWM驅動GPIO為STM32的PB10口,通過GPIO重映射,可映射到定時器2的通道3,即:TIM2_CH3。定時器2初始化的步驟如下:
(1)開啟外設時鐘,包括:定時器TIM2,GPIOB,以及復用時鐘AFIO。由于PB10默認復用功能不是TIM2_CH3,所以需要進行GPIO重映射:GPIO_PinRemapConfig(GPIO_PartialRemap2_TIM2,ENABLE)。
(2)配置GPIO口模式:配置PB10為復用推挽模式GPIO_Mode_AF_PP,配置步進電機方向和使能引腳PB9和PB10為輸出推挽模式GPIO_Mode_Out_PP。
(3)配置定時器2基礎參數(shù),包括:重裝載值、預分頻值、計數(shù)模式等。本系統(tǒng)設置分頻后的頻率為100kHz,計數(shù)值為100,即輸出PWM頻率為1kHz。
(4)配置定時器2輸出比較參數(shù),包括:PWM輸出比較模式設置,占空比設置為50%,配置TIM2與DMA對應的通道,使能TIM2等。
定時器2通道3——TIM2_CH3對應DMA1的通道1。DMA的配置部分,主要負責建立內(nèi)存數(shù)組send_buf到定時器2自動重裝載值TIM2->ARR的通道。通過設置send_buf數(shù)組中連續(xù)非零值元素的數(shù)量,可以控制輸出脈沖的個數(shù),從而可以準確控制電機旋轉角度。圖8為STM32的PB10口輸出的PWM波形圖。
圖8 STM32輸出的PWM波形圖
本文基于STM32設計了一款快遞包裹六面掃碼裝置。通過STM32控制三路步進電機,對包裹進行旋轉和翻轉,在頂部和側面掃碼相機的配合下,對快遞包裹的六面進行掃描,獲取條碼信息,通過CAN總線傳輸?shù)街锌赜嬎銠C。從而代替人工完成快遞包裹條碼掃描,助力快遞分揀中心提速增效。