一款基于STM32的貼片機控制系統設計與實(shí)現
2.2 電源電路
本文引用地址:http://dyxdggzs.com/article/247184.htm電源電路采用AMS1117—3.3作為電壓轉換芯片。AMS1117是一款正電壓輸出低壓差的三端線(xiàn)性穩壓電路,在輸出1 A電流時(shí),輸入輸出的電壓差典型值為1.8 V,內部集成過(guò)熱保護和限流電路,確保芯片和電源系統的穩定性。
該電路輸入端與輸出端各接1個(gè)0.1μF的非極性獨石電容和1個(gè)220μF的極性電容。這兩組電容起到了穩壓濾波的作用。
2.3 串口電平轉換電路
串行接口是嵌入式系統中較為常用的一種接口。本系統采用RS-232總線(xiàn)于上位機進(jìn)行通信,采用MAX232芯片來(lái)完成RS-232串行接口的電平轉換。串口通信電路如圖8所示。

2.4 步進(jìn)電機驅動(dòng)電路
步進(jìn)電機必須有驅動(dòng)器和控制器才能正常工作。驅動(dòng)器的作用是對控制脈沖進(jìn)行環(huán)形分配、功率放大,使步進(jìn)電機繞組按一定順序通電,控制電機轉動(dòng)。本設計采用DM442數字式步進(jìn)電機驅動(dòng)器。該驅動(dòng)器可以設置512內的任意細分以及額定電流內的任意電流值,能夠滿(mǎn)足大多數場(chǎng)合的應用需要。電路連線(xiàn)如圖9所示。

通過(guò)步進(jìn)電機驅動(dòng)器控制步進(jìn)電機的方法較為簡(jiǎn)單,僅需通過(guò)單片機IO口給出不同頻率的方波脈沖信號即可控制步進(jìn)電機的速度,通過(guò)另一個(gè)IO口給出高低電平控制電機旋轉方向。本文所采用的步進(jìn)電機步距角為1.8°,因此驅動(dòng)器每接收200個(gè)脈沖信號,步進(jìn)電機旋轉一周。
3 運動(dòng)控制系統軟件設計
下位機控制程序由串口收發(fā)程序,限位開(kāi)關(guān)檢測程序,舵機驅動(dòng)程序、步進(jìn)電機驅動(dòng)等部分組成。下面將對舵機驅動(dòng)和串口收發(fā)部分做詳細的介紹。
3.1 舵機驅動(dòng)程序
根據1.1.2中的介紹,舵機用來(lái)控制吸筆和拖拽針的運動(dòng),在單片機的控制中常用PWM(Pulse Width Modulation)調制來(lái)驅動(dòng)它。脈沖寬度調制(PWM)是利用微處理器的數字輸出來(lái)對模擬電路進(jìn)行控制的一種非常有效的技術(shù),其優(yōu)越性在于驅動(dòng)電子設備的簡(jiǎn)單性和計算機接口的容易性。在舵機控制系統中,輸出的PWM信號通過(guò)功率器件將所需的電流和能量傳送到舵機線(xiàn)圈繞組中,來(lái)控制舵機的正反轉。
STM32的定時(shí)器除了TIM6和TIM7,其他的定時(shí)器都可以用來(lái)產(chǎn)生PWM輸出。其中高級定時(shí)器TIM1和TIM8可以同時(shí)產(chǎn)生多達7路的PWM輸出。而通用定時(shí)器也能同時(shí)產(chǎn)生多達4路的PWM輸出,這樣,STM32最多可以同時(shí)產(chǎn)生30路PWM輸出。由于只控制一個(gè)舵機,這里我們僅利用TIM3的CH2產(chǎn)生一路PWM輸出。具體步驟如下:
1)開(kāi)啟TIM3時(shí)鐘,配置PA7為復用輸出。
2)設置TIM3的ARR和PSC,控制輸出PWM的周期。
3)設置TIM3_CH2的PWM模式。
4)使能TIM3的CH2輸出,使能TIM3。
5)修改TIM3_CCR2來(lái)控制占空比。
由于舵機所需的控制信號標準周期是20毫秒,最低不得少于15毫秒。中位脈沖寬度是1.5毫秒,脈沖寬度在加減1.5毫秒之間內變化??煽胤秶话愣际?.5~2.5毫秒。即控制舵機運行至兩個(gè)機械極限位置的信號周期為0.5~2.5毫秒,對應占空比為2.5%-12.5%。本方案中舵機需保持在3個(gè)狀態(tài),分別是左極限,右極限和中間位置。用于控制拖拽針下移,吸筆下移和復位。
因此,要控制舵機,首現需要一個(gè)頻率為50赫茲的PWM波,然后調節其占空比為2.5%-12.5%。PWM輸出頻率的計算公式為:

這里系統時(shí)鐘頻率為72000000赫茲,所需PWM頻率為50赫茲。為方便計算,同時(shí)保證自動(dòng)重裝載值和預分頻系數均為整數,這里取自動(dòng)重裝載值為1000。計算得預分頻系數為1440-1=1439。因此調用PWM初始化函數為:PWM_Init(1000,1439);
PWM輸出波形占空比計算公式為:

由此計算得到:
左極限位置時(shí)TIM3->CCR2=25,
右極限位置時(shí)TIM3->CCR2=125,
中間位置時(shí)TIM3->CCR2=75。
3.2 串口通信配置
STM32的串口資源相當豐富的,最多可提供5路串口(STM32F103RBT6只有3個(gè)串口),有分數波特率發(fā)生器、支持同步單線(xiàn)通信和半雙工單線(xiàn)通訊、支持LIN、支持調制解調器操作、智能卡協(xié)議和IrDA SIR ENDEC規范(僅串口3支持)、具有DMA等。
STM32的串口配置需要開(kāi)啟串口時(shí)鐘,并設置相應IO口的模式,配置波特率、數據位長(cháng)度、奇偶校驗位等信息。STM32的串口波特率計算公式如下:

上式中,fPCLKx是給串口的時(shí)鐘;USARTDIV是一個(gè)無(wú)符號定點(diǎn)數。
3.3 串口數據包格式設計
表1為串口與單片機通信的數據包格式,每幀有9個(gè)字節,開(kāi)始六個(gè)字節是包頭標志、器件地址、數據類(lèi)型、起始地址以及數據長(cháng)度,其中數據類(lèi)型有:讀數據指令r(0x72)、預設參數w(0x77)、運動(dòng)指令m(0x6D)、請求重發(fā)指令c(0x63)、正常返回指令b(0x62)和放棄通信指q(0x71)。然后是10個(gè)字節的數據位,通常數據位為2個(gè)4字節的數據,為了避免出現數據對齊問(wèn)題,在后面加入兩個(gè)值為0的字節。最后是兩
個(gè)字節的校驗位和結束標志位,采用CRC16進(jìn)行校驗。

評論