杭州科技職業(yè)技術(shù)學(xué)院機(jī)電工程學(xué)院 杭州 311402
象棋作為中國傳統(tǒng)文化的一部分,是一種在人們業(yè)余休閑生活中極常見的娛樂方式[1]。較多研究機(jī)構(gòu)采用機(jī)器視覺作為識別定位棋子的方法[2-5],在考慮研制成本、應(yīng)用范圍、娛樂性和觀賞性等方面后,筆者研制了一款基于無線射頻識別(RFID)技術(shù)的自識別象棋機(jī)[6],并在文獻(xiàn)[6]的基礎(chǔ)上,對自識別象棋機(jī)的控制系統(tǒng)進(jìn)行設(shè)計。
控制系統(tǒng)采用STC12C5A60S2單片機(jī)對各個模塊進(jìn)行控制[7-8]。集棋模塊電路包括一個步進(jìn)電機(jī)驅(qū)動器和一個RFID檢測模塊,用于棋子的收集、分離和檢測。擺棋模塊電路包括兩個步進(jìn)電機(jī)驅(qū)動器、兩個光電傳感器和一個機(jī)械卡爪舵機(jī),用于棋子的精確擺放。升降模塊電路主要由支撐架、電動推桿和棋面平臺組成。電源模塊采用LM2596電源芯片,可將24 V輸入電壓降壓為5 V,為單片機(jī)供電??刂葡到y(tǒng)電路框圖如圖1所示。
▲圖1 控制系統(tǒng)電路框圖
集棋模塊電路主要由電機(jī)驅(qū)動電路和RFID檢測電路組成。步進(jìn)電機(jī)驅(qū)動器與電機(jī)連接比較簡單,直接與電機(jī)繞組相連即可。電機(jī)驅(qū)動電路中,步進(jìn)電機(jī)驅(qū)動器的CP+控制脈沖信號正極連單片機(jī)的P0.4引腳,DIR+方向信號正極連單片機(jī)的P0.5引腳[9]。RFID檢測電路中,MF-RC522讀取芯片有IRQ (中斷請求)、NSS(串行數(shù)據(jù)信號)、SCK(串行時鐘)、MOSI(主出從入)、MISO(主入從出)、RST(復(fù)位電路)等數(shù)據(jù)接口,其中:IRQ接口可以不連接;NSS接口與P2.7引腳相連,是進(jìn)行數(shù)據(jù)傳輸時向數(shù)據(jù)連接線輸出數(shù)據(jù)的接口;SCK接口與P2.6引腳相連,向單片機(jī)提供時鐘信號;MOSI接口與P2.5引腳相連,實現(xiàn)主器件數(shù)據(jù)的輸出及從器件數(shù)據(jù)的輸入;MISO接口與P2.4引腳相連,實現(xiàn)主器件數(shù)據(jù)的輸入及從器件數(shù)據(jù)的輸出;RST接口與P2.3引腳相連,實現(xiàn)電路復(fù)位。集棋模塊電路連接如圖2所示。
▲圖2 集棋模塊電路連接
擺棋模塊電路包括三坐標(biāo)定位機(jī)構(gòu)的兩路步進(jìn)電機(jī)驅(qū)動電路、兩路光電傳感器連接電路和舵機(jī)連接電路,如圖3所示。步進(jìn)電機(jī)驅(qū)動器將單片機(jī)發(fā)出的脈沖信號轉(zhuǎn)換為步進(jìn)電機(jī)的角位移信號,CP+控制脈沖信號正極連單片機(jī)P1.3和P1.5引腳,DIR+方向信號正極連單片機(jī)P1.4和1.6引腳。舵機(jī)轉(zhuǎn)動帶動齒輪實現(xiàn)機(jī)械卡爪抓取的功能,舵機(jī)的信號口與單片機(jī)的P0.0引腳相連。光電傳感器起限位作用,其中,光電傳感器1的信號口與P0.1引腳相連,光電傳感器2的信號口與P0.2引腳相連,兩者的控制方式為低電平有效。
▲圖3 擺棋模塊電路連接
升降模塊電路主要由電動推桿連接電路和直流電機(jī)驅(qū)動電路組成,如圖4所示。直流電機(jī)驅(qū)動器驅(qū)動電動推桿,單片機(jī)向直流電機(jī)驅(qū)動器發(fā)送信號。電壓從直流電機(jī)驅(qū)動器A端輸出,連接到電動推桿VCC和GND端。單片機(jī)的P1.0和P1.1引腳與直流電機(jī)驅(qū)動器的信號口連接,當(dāng)P1.0置1、P1.1置0時,電機(jī)正轉(zhuǎn),反之,則電機(jī)反轉(zhuǎn)。
▲圖4 升降模塊電路連接
以RFID識別反饋和單片機(jī)控制電機(jī)運動為主程序,具體運行過程是:把棋子集入集棋模塊,按下啟動按鈕,在延時10 s后棋面下降;此時棋子分離機(jī)構(gòu)的電機(jī)轉(zhuǎn)動,帶動凹形輪使一顆棋子落到夾取平臺;再通過MF-RC522芯片進(jìn)行棋子識別,如果棋子被檢測到,那么分離機(jī)構(gòu)電機(jī)停止轉(zhuǎn)動,否則繼續(xù)轉(zhuǎn)動;被檢測到的棋子被機(jī)械卡爪夾取,并由三坐標(biāo)機(jī)構(gòu)進(jìn)行擺放,直至32顆棋子擺放完成后,棋面上升。
棋子放入集棋機(jī)構(gòu),步進(jìn)電機(jī)轉(zhuǎn)動,使其中一顆棋子下落到夾取平臺。通過MF-RC522芯片對棋子進(jìn)行身份識別,識別身份反饋給單片機(jī)進(jìn)行信息處理。棋子識別完畢后,電機(jī)停止工作,若未識別完成,則電機(jī)繼續(xù)轉(zhuǎn)動。集棋模塊程序流程如圖5所示。
▲圖5 集棋模塊程序流程
擺棋模塊由三坐標(biāo)定位機(jī)構(gòu)和機(jī)械卡爪組成,能夠?qū)崿F(xiàn)棋子抓取與棋子擺放的功能。其中:舵機(jī)控制卡爪,然后由三坐標(biāo)定位機(jī)構(gòu)實現(xiàn)棋子的位移;夾取平臺處的檢測模塊將檢測到的棋子信息發(fā)至單片機(jī)進(jìn)行識別,之后單片機(jī)將脈沖脈沖數(shù)據(jù)發(fā)送至步進(jìn)電機(jī),使機(jī)械卡爪運動到夾取平臺處;卡爪夾起棋子,并把棋子抓取至指定位置。擺棋模塊程序流程如圖6所示。
▲圖6 擺棋模塊程序流程
升降模塊由支撐架、電動推桿和升降棋面組成,利用單片機(jī)對電動推桿進(jìn)行控制,實現(xiàn)升降功能。當(dāng)識別完32顆棋子信號并擺放完成后,將信號反饋給單片機(jī),再由單片機(jī)發(fā)送信號至直流電機(jī)驅(qū)動器,使電動推桿上升。下降時,觸發(fā)啟動按鈕,并由定時器產(chǎn)生20 ms延時,然后單片機(jī)發(fā)送信號,使電動推桿下降。升降模塊程序流程如圖7所示。
▲圖7 升降模塊程序流程
為了驗證控制系統(tǒng)的正確性,采用3030鋁合金型材搭建了實物模型,進(jìn)行了大量試驗。試驗結(jié)果表明,自識別象棋機(jī)控制系統(tǒng)能按分離棋子(圖8)、抓取棋子(圖9)、擺放棋子(圖10)和升降棋子(圖 11)的步驟完成象棋的自動擺放,節(jié)省了整理象棋的時間,提高了弈者的興趣。
▲圖8 分離棋子
▲圖9 抓取棋子
▲圖10 擺放棋子
▲圖11 升降棋子