基于STM32F103的貼片機(jī)控制系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)
摘要:本文采用STM32F103RBT6芯片設(shè)計(jì)并實(shí)現(xiàn)了一款小型化桌面型的貼片機(jī)。首先介紹了貼片機(jī)的結(jié)構(gòu)及各個(gè)模塊的組成,分析了其中運(yùn)動(dòng)控制系統(tǒng)模塊的硬件組成、軟件設(shè)計(jì)方案,對(duì)核心電路部分、舵機(jī)的驅(qū)動(dòng)程序以及串口通訊數(shù)據(jù)包的設(shè)計(jì)做了詳細(xì)的介紹。經(jīng)過(guò)調(diào)試,該設(shè)計(jì)方案能夠較為準(zhǔn)確和高效的完成自動(dòng)貼片工作。
本文引用地址:http://cafeforensic.com/article/201610/306800.htm貼片機(jī)又稱(chēng)“表面貼裝系統(tǒng)”(Surface Mount System),是一種通過(guò)移動(dòng)、吸取、安放動(dòng)作把表貼元件精準(zhǔn)放置在指定位置的一種自動(dòng)化設(shè)備。在實(shí)際生產(chǎn)線中,先由點(diǎn)膠機(jī)對(duì)PCB板進(jìn)行點(diǎn)膠操作,然后由貼片機(jī)進(jìn)行貼裝操作,最后由回流焊機(jī)焊接,完成整個(gè)PCB板的焊接任務(wù),是SMT流水線中不可或缺的一環(huán)。目前發(fā)達(dá)國(guó)家壟斷了貼片機(jī)的主要領(lǐng)域,我國(guó)的貼片機(jī)產(chǎn)業(yè)完全靠進(jìn)口。而且在實(shí)際生產(chǎn)中,國(guó)際上的自動(dòng)貼片機(jī)雖然效率與精度最高,但大都造價(jià)昂貴,功能單一,適用于大型企業(yè)。而手動(dòng)貼片機(jī)造價(jià)低廉,但效率極低,精度取決于操作者得水平,且無(wú)法解放雙手。
本文以STM32F103RBT6為主控芯片,設(shè)計(jì)了一種適應(yīng)于個(gè)體經(jīng)營(yíng)者、學(xué)校實(shí)驗(yàn)以及科研制板等領(lǐng)域的自動(dòng)貼片機(jī),既能解放雙手,增加效率,又能不失精度,價(jià)格適中。
1 貼片機(jī)模塊設(shè)計(jì)方案
本文將貼片機(jī)模塊化的進(jìn)行設(shè)計(jì)與編程,模塊化后的整機(jī)系統(tǒng)由3個(gè)部分組成:機(jī)械傳動(dòng)系統(tǒng)、機(jī)器視覺(jué)系統(tǒng)和運(yùn)動(dòng)控制系統(tǒng),如圖1所示。
1.1 貼片機(jī)機(jī)械傳動(dòng)系統(tǒng)的設(shè)計(jì)方案
1.1.1 貼片機(jī)X軸Y軸設(shè)計(jì)方案
本方案采用X—Y軸兩軸聯(lián)動(dòng),Z軸獨(dú)立運(yùn)動(dòng)的設(shè)計(jì)方案。其中X-Y軸由步進(jìn)電機(jī)通過(guò)同步帶傳動(dòng)進(jìn)行機(jī)械運(yùn)動(dòng)。具體實(shí)現(xiàn)結(jié)構(gòu)如圖2所示。
如圖所示,Y軸步進(jìn)電機(jī)固定于底座上,帶動(dòng)同步帶輪旋轉(zhuǎn),同步輪帶動(dòng)同步帶做直線運(yùn)動(dòng),光軸滑塊與同步帶相連。從而跟隨同步帶演光軸導(dǎo)軌做Y軸方向的的運(yùn)動(dòng)。X軸整體機(jī)構(gòu)與Y軸相似,提供X軸方向上的直線運(yùn)動(dòng)。其整體固定與Y軸滑塊之上,當(dāng)Y軸運(yùn)動(dòng)時(shí)同時(shí)帶動(dòng)X軸運(yùn)動(dòng)。從而實(shí)現(xiàn)X—Y兩軸聯(lián)動(dòng)。
1.1.2 貼片機(jī)Z軸設(shè)計(jì)方案
本設(shè)計(jì)方案中Z軸由舵機(jī)、光軸導(dǎo)軌、吸筆、拖拽針、攝像頭組成。其結(jié)構(gòu)如圖3所示。
其中吸筆由空心軸步進(jìn)電機(jī)制作而成,當(dāng)步進(jìn)電機(jī)旋轉(zhuǎn)時(shí),帶動(dòng)吸筆吸盤(pán)選擇,從而提供了貼片機(jī)旋轉(zhuǎn)軸的運(yùn)動(dòng)。旋轉(zhuǎn)吸筆用于改變?cè)骷N裝方向。拖拽針與吸筆固定在同一直線上,用于拖拽料盤(pán),從而實(shí)現(xiàn)送料功能。拖拽針與吸筆分別固定在2組光軸導(dǎo)軌上,底部安裝有彈簧,用于拖拽針與吸筆復(fù)位。舵機(jī)控制壓桿左右旋轉(zhuǎn),從而壓動(dòng)吸筆與拖拽針進(jìn)行向下運(yùn)動(dòng),當(dāng)壓桿處于中間態(tài)時(shí),彈簧將吸筆與拖拽針
彈起,回到初始位置。攝像頭安裝在工作臺(tái)上方,用于俯視PCB板。
1.2 機(jī)器視覺(jué)系統(tǒng)設(shè)計(jì)方案
本方案采用兩臺(tái)CCD相機(jī)、環(huán)形LED光源及圖像處理設(shè)備組成。其中一臺(tái)CCD相機(jī)安裝在貼片機(jī)Z軸上。與貼裝頭一起運(yùn)動(dòng),用于俯視PCB板,采集各定位點(diǎn)坐標(biāo)信息,計(jì)算X—Y軸運(yùn)動(dòng)偏移量,輔助定位。另外一臺(tái)CCD相機(jī)固定在工作臺(tái)上,向上仰視。當(dāng)貼裝頭吸取原件后,運(yùn)動(dòng)至相機(jī)上方,相機(jī)采集元器件圖像。計(jì)算旋轉(zhuǎn)角度偏移量及X—Y軸運(yùn)動(dòng)偏移量。環(huán)形LED光源提供相機(jī)采集圖像時(shí)的背光,提高成像質(zhì)量。計(jì)算機(jī)用于處理采集到的圖像數(shù)據(jù),分析計(jì)算后將控制指令傳送至運(yùn)動(dòng)控制系統(tǒng)。
1.3 運(yùn)動(dòng)控制系統(tǒng)設(shè)計(jì)方案
運(yùn)動(dòng)控制部分由軟件系統(tǒng)與硬件設(shè)備組成。其中軟件部分分為上位機(jī)及下位機(jī)。上位機(jī)即計(jì)算機(jī)。下位機(jī)采用STM32F103RBT6微控制器作為核心控制器。上位機(jī)與下位機(jī)由串口數(shù)據(jù)線連接。硬件設(shè)備由步進(jìn)電機(jī)、步進(jìn)電機(jī)驅(qū)動(dòng)器、舵機(jī)、電磁閥等組成。
運(yùn)動(dòng)控制系統(tǒng)工作流程如圖4所示。
2 運(yùn)動(dòng)控制系統(tǒng)硬件設(shè)計(jì)
2.1 運(yùn)動(dòng)控制系統(tǒng)結(jié)構(gòu)
貼片機(jī)控制系統(tǒng)模塊所完成的主要任務(wù)是,在上層控制器的控制下,對(duì)步進(jìn)電機(jī)驅(qū)動(dòng)器進(jìn)行控制,使各軸能夠進(jìn)行“受控運(yùn)動(dòng)”,實(shí)現(xiàn)運(yùn)動(dòng)控制系統(tǒng)所需求的各軸起制動(dòng)、正反轉(zhuǎn)、調(diào)速和保護(hù)等功能。
控制系統(tǒng)的控制模式是以PC機(jī)為平臺(tái)、以微控制器為核心協(xié)調(diào)工作。通用PC機(jī)負(fù)責(zé)數(shù)控程序編輯、人機(jī)界面管理等功能;微控制器用來(lái)管理子程序以及負(fù)責(zé)機(jī)械本體的運(yùn)動(dòng)控制和邏輯控制,支持用戶的開(kāi)發(fā)和擴(kuò)展,并具有上、下兩級(jí)的開(kāi)放性。
本設(shè)計(jì)方案采用STN32F103微控制器作為核心器件,協(xié)調(diào)3個(gè)步進(jìn)電機(jī)驅(qū)動(dòng)器控制步進(jìn)電機(jī)的運(yùn)行。同時(shí)獲取編碼器數(shù)據(jù),限位開(kāi)關(guān)狀態(tài),并控制舵機(jī)、電磁閥等器件的運(yùn)行。各器件連接圖如圖5所示。
本設(shè)計(jì)方案所采用的主控芯片STM32F103RBT6是一款基于ARM Codex—M3內(nèi)核的32位處理器,具有杰出的功耗控制與眾多外設(shè)。該芯片內(nèi)置128K FLASH、20K SRAM、2個(gè)SPI、3個(gè)串口、1個(gè)USB、1個(gè)CAN、2個(gè)12位的ADC、RTC、51個(gè)可用IO口。其電路圖如圖6所示。
2.2 電源電路
電源電路采用AMS1117—3.3作為電壓轉(zhuǎn)換芯片。AMS1117是一款正電壓輸出低壓差的三端線性穩(wěn)壓電路,在輸出1 A電流時(shí),輸入輸出的電壓差典型值為1.8 V,內(nèi)部集成過(guò)熱保護(hù)和限流電路,確保芯片和電源系統(tǒng)的穩(wěn)定性。
該電路輸入端與輸出端各接1個(gè)0.1μF的非極性獨(dú)石電容和1個(gè)220μF的極性電容。這兩組電容起到了穩(wěn)壓濾波的作用。
2.3 串口電平轉(zhuǎn)換電路
串行接口是嵌入式系統(tǒng)中較為常用的一種接口。本系統(tǒng)采用RS-232總線于上位機(jī)進(jìn)行通信,采用MAX232芯片來(lái)完成RS-232串行接口的電平轉(zhuǎn)換。串口通信電路如圖8所示。
2.4 步進(jìn)電機(jī)驅(qū)動(dòng)電路
步進(jìn)電機(jī)必須有驅(qū)動(dòng)器和控制器才能正常工作。驅(qū)動(dòng)器的作用是對(duì)控制脈沖進(jìn)行環(huán)形分配、功率放大,使步進(jìn)電機(jī)繞組按一定順序通電,控制電機(jī)轉(zhuǎn)動(dòng)。本設(shè)計(jì)采用DM442數(shù)字式步進(jìn)電機(jī)驅(qū)動(dòng)器。該驅(qū)動(dòng)器可以設(shè)置512內(nèi)的任意細(xì)分以及額定電流內(nèi)的任意電流值,能夠滿足大多數(shù)場(chǎng)合的應(yīng)用需要。電路連線如圖9所示。
通過(guò)步進(jìn)電機(jī)驅(qū)動(dòng)器控制步進(jìn)電機(jī)的方法較為簡(jiǎn)單,僅需通過(guò)單片機(jī)IO口給出不同頻率的方波脈沖信號(hào)即可控制步進(jìn)電機(jī)的速度,通過(guò)另一個(gè)IO口給出高低電平控制電機(jī)旋轉(zhuǎn)方向。本文所采用的步進(jìn)電機(jī)步距角為1.8°,因此驅(qū)動(dòng)器每接收200個(gè)脈沖信號(hào),步進(jìn)電機(jī)旋轉(zhuǎn)一周。
3 運(yùn)動(dòng)控制系統(tǒng)軟件設(shè)計(jì)
下位機(jī)控制程序由串口收發(fā)程序,限位開(kāi)關(guān)檢測(cè)程序,舵機(jī)驅(qū)動(dòng)程序、步進(jìn)電機(jī)驅(qū)動(dòng)等部分組成。下面將對(duì)舵機(jī)驅(qū)動(dòng)和串口收發(fā)部分做詳細(xì)的介紹。
3.1 舵機(jī)驅(qū)動(dòng)程序
根據(jù)1.1.2中的介紹,舵機(jī)用來(lái)控制吸筆和拖拽針的運(yùn)動(dòng),在單片機(jī)的控制中常用PWM(Pulse Width Modulation)調(diào)制來(lái)驅(qū)動(dòng)它。脈沖寬度調(diào)制(PWM)是利用微處理器的數(shù)字輸出來(lái)對(duì)模擬電路進(jìn)行控制的一種非常有效的技術(shù),其優(yōu)越性在于驅(qū)動(dòng)電子設(shè)備的簡(jiǎn)單性和計(jì)算機(jī)接口的容易性。在舵機(jī)控制系統(tǒng)中,輸出的PWM信號(hào)通過(guò)功率器件將所需的電流和能量傳送到舵機(jī)線圈繞組中,來(lái)控制舵機(jī)的正反轉(zhuǎn)。
STM32的定時(shí)器除了TIM6和TIM7,其他的定時(shí)器都可以用來(lái)產(chǎn)生PWM輸出。其中高級(jí)定時(shí)器TIM1和TIM8可以同時(shí)產(chǎn)生多達(dá)7路的PWM輸出。而通用定時(shí)器也能同時(shí)產(chǎn)生多達(dá)4路的PWM輸出,這樣,STM32最多可以同時(shí)產(chǎn)生30路PWM輸出。由于只控制一個(gè)舵機(jī),這里我們僅利用TIM3的CH2產(chǎn)生一路PWM輸出。具體步驟如下:
1)開(kāi)啟TIM3時(shí)鐘,配置PA7為復(fù)用輸出。
2)設(shè)置TIM3的ARR和PSC,控制輸出PWM的周期。
3)設(shè)置TIM3_CH2的PWM模式。
4)使能TIM3的CH2輸出,使能TIM3。
5)修改TIM3_CCR2來(lái)控制占空比。
由于舵機(jī)所需的控制信號(hào)標(biāo)準(zhǔn)周期是20毫秒,最低不得少于15毫秒。中位脈沖寬度是1.5毫秒,脈沖寬度在加減1.5毫秒之間內(nèi)變化。可控范圍一般都是0.5~2.5毫秒。即控制舵機(jī)運(yùn)行至兩個(gè)機(jī)械極限位置的信號(hào)周期為0.5~2.5毫秒,對(duì)應(yīng)占空比為2.5%-12.5%。本方案中舵機(jī)需保持在3個(gè)狀態(tài),分別是左極限,右極限和中間位置。用于控制拖拽針下移,吸筆下移和復(fù)位。
因此,要控制舵機(jī),首現(xiàn)需要一個(gè)頻率為50赫茲的PWM波,然后調(diào)節(jié)其占空比為2.5%-12.5%。PWM輸出頻率的計(jì)算公式為:
這里系統(tǒng)時(shí)鐘頻率為72000000赫茲,所需PWM頻率為50赫茲。為方便計(jì)算,同時(shí)保證自動(dòng)重裝載值和預(yù)分頻系數(shù)均為整數(shù),這里取自動(dòng)重裝載值為1000。計(jì)算得預(yù)分頻系數(shù)為1440-1=1439。因此調(diào)用PWM初始化函數(shù)為:PWM_Init(1000,1439);
PWM輸出波形占空比計(jì)算公式為:
由此計(jì)算得到:
左極限位置時(shí)TIM3->CCR2=25,
右極限位置時(shí)TIM3->CCR2=125,
中間位置時(shí)TIM3->CCR2=75。
3.2 串口通信配置
STM32的串口資源相當(dāng)豐富的,最多可提供5路串口(STM32F103RBT6只有3個(gè)串口),有分?jǐn)?shù)波特率發(fā)生器、支持同步單線通信和半雙工單線通訊、支持LIN、支持調(diào)制解調(diào)器操作、智能卡協(xié)議和IrDA SIR ENDEC規(guī)范(僅串口3支持)、具有DMA等。
STM32的串口配置需要開(kāi)啟串口時(shí)鐘,并設(shè)置相應(yīng)IO口的模式,配置波特率、數(shù)據(jù)位長(zhǎng)度、奇偶校驗(yàn)位等信息。STM32的串口波特率計(jì)算公式如下:
上式中,fPCLKx是給串口的時(shí)鐘;USARTDIV是一個(gè)無(wú)符號(hào)定點(diǎn)數(shù)。
3.3 串口數(shù)據(jù)包格式設(shè)計(jì)
表1為串口與單片機(jī)通信的數(shù)據(jù)包格式,每幀有9個(gè)字節(jié),開(kāi)始六個(gè)字節(jié)是包頭標(biāo)志、器件地址、數(shù)據(jù)類(lèi)型、起始地址以及數(shù)據(jù)長(zhǎng)度,其中數(shù)據(jù)類(lèi)型有:讀數(shù)據(jù)指令r(0x72)、預(yù)設(shè)參數(shù)w(0x77)、運(yùn)動(dòng)指令m(0x6D)、請(qǐng)求重發(fā)指令c(0x63)、正常返回指令b(0x62)和放棄通信指q(0x71)。然后是10個(gè)字節(jié)的數(shù)據(jù)位,通常數(shù)據(jù)位為2個(gè)4字節(jié)的數(shù)據(jù),為了避免出現(xiàn)數(shù)據(jù)對(duì)齊問(wèn)題,在后面加入兩個(gè)值為0的字節(jié)。最后是兩
個(gè)字節(jié)的校驗(yàn)位和結(jié)束標(biāo)志位,采用CRC16進(jìn)行校驗(yàn)。
數(shù)據(jù)由上位機(jī)即PC主動(dòng)發(fā)送,下位機(jī)即單片機(jī)被動(dòng)等待接收,系統(tǒng)在每次上電初始化時(shí)進(jìn)行一次握手,下位機(jī)在接收到的包頭數(shù)據(jù)中匹配自己的器件地址,一致時(shí)則接收命令,否則將收到的數(shù)據(jù)包拋棄。當(dāng)上層控制器向單片機(jī)發(fā)送讀數(shù)據(jù)指令r(0x72)時(shí),其數(shù)據(jù)位均為0;單片機(jī)收到指令后,將狀態(tài)信息填入數(shù)據(jù)位,回發(fā)給上位機(jī)。當(dāng)上位機(jī)向單片機(jī)發(fā)送預(yù)設(shè)參數(shù)w(0x77)數(shù)據(jù)包時(shí),將參數(shù)信息填入相應(yīng)數(shù)據(jù)位;單片機(jī)收到后,將數(shù)據(jù)寫(xiě)入EEPROM中并發(fā)送反饋,反饋幀以同樣的類(lèi)型、將存好的數(shù)據(jù)再次讀出填入數(shù)據(jù)位,發(fā)送給上位機(jī)進(jìn)行匹配校驗(yàn)。當(dāng)上位機(jī)向單片機(jī)發(fā)送運(yùn)動(dòng)指令m(0x6D)時(shí),將數(shù)據(jù)位按設(shè)定的格式填入數(shù)據(jù)位;單片機(jī)讀取并按照指令內(nèi)容進(jìn)行運(yùn)動(dòng)。
單片機(jī)正確接收到除預(yù)設(shè)參數(shù)之外的數(shù)據(jù)時(shí)向主機(jī)回發(fā)正常返回指b(0x62);若收到上一組主機(jī)的數(shù)據(jù)后發(fā)現(xiàn)數(shù)據(jù)出錯(cuò),則請(qǐng)求重發(fā)指令c(0x63),主機(jī)接收到此回應(yīng)指令后執(zhí)行重發(fā)操作;若連續(xù)通信錯(cuò)誤并超過(guò)最大限制后則發(fā)送的放棄指令q(0x71)。因?yàn)椴簧婕坝行?shù)據(jù),所以這三種指令的起始地址、數(shù)據(jù)長(zhǎng)度、有效數(shù)據(jù)均為0。
4 結(jié)束語(yǔ)
本文根據(jù)目前貼片機(jī)市場(chǎng)上的應(yīng)用現(xiàn)狀,提出了低成本,小型化的設(shè)計(jì)方案。對(duì)貼片機(jī)整機(jī)的機(jī)械結(jié)構(gòu)進(jìn)行了優(yōu)化設(shè)計(jì)。分別對(duì)貼片機(jī)的機(jī)械傳動(dòng)系統(tǒng),機(jī)器視覺(jué)系統(tǒng)及運(yùn)動(dòng)控制系統(tǒng)給出了設(shè)計(jì)思路。針對(duì)運(yùn)動(dòng)控制系統(tǒng),設(shè)計(jì)了具體的硬件與軟件實(shí)現(xiàn)方案,并對(duì)整機(jī)工作過(guò)程進(jìn)行詳細(xì)說(shuō)明。本文設(shè)計(jì)的貼片機(jī)運(yùn)動(dòng)控制程序經(jīng)過(guò)調(diào)試,達(dá)到了預(yù)期目標(biāo),現(xiàn)已在學(xué)校實(shí)驗(yàn)室的應(yīng)用中取得了不錯(cuò)的成果。
- STM32單片機(jī)中文官網(wǎng)
- STM32單片機(jī)官方開(kāi)發(fā)工具
- STM32單片機(jī)參考設(shè)計(jì)
評(píng)論