吳 琳
(遼寧裝備制造職業(yè)技術(shù)學(xué)院,遼寧沈陽 110161)
傳統(tǒng)運動小車的嵌入式系統(tǒng)通常使用單片機,從構(gòu)成上來看,包括硬件系統(tǒng)和軟件系統(tǒng)。軟件系統(tǒng)可以使用STM32CubeIDE,是ST公司基于Eclipse/CDT框架和GUN GCC工具鏈制作的免費IDE,并集成了STM32CubeMX,可以實現(xiàn)STM32系列芯片的外圍設(shè)備配置、代碼生成、代碼編輯、代碼編譯、在線調(diào)試,并且支持?jǐn)?shù)百個Eclipse現(xiàn)有插件[1]。
運動小車主要由STM32單片機開發(fā)板、DRV8837驅(qū)動模塊、編碼直流電機模塊、OLED顯示模塊、電源模塊等組成,圖1是運動小車系統(tǒng)組成圖[2]。采用編碼器對電機速度進行檢測,采用STM32CubeIDE軟件配置定時器PWM、硬件編碼器和SPI來控制直流電機的運動形態(tài)并在顯示屏上顯示速度。

圖1 運動小車控制系統(tǒng)組成圖
STM32單片機通過定時器輸出PWM來控制編碼直流減速電機,通過改變PWM波的占空比來實現(xiàn)電壓大小的調(diào)節(jié),從而控制直流電機的轉(zhuǎn)速[3]。STM32單片機輸出電壓為3.3 V,而要驅(qū)動的編碼直流減速電機的電壓一般都大于3.3 V,所以STM32單片機是無法直接驅(qū)動電機的。因此可以使用電機驅(qū)動DRV8837來幫助單片機來驅(qū)動電機轉(zhuǎn)動,由電機驅(qū)動來提供驅(qū)動電機的電壓與電流。直流電機的轉(zhuǎn)速特別快,直流減速電機內(nèi)部安裝了一個減速器來降低電機的轉(zhuǎn)速,因為減小轉(zhuǎn)速后可以增強電機可控性。
電機上有高精度編碼器,電機轉(zhuǎn)動一圈,電機上的A、B兩個霍爾傳感器就會輸出A相和B相固定個數(shù)的方波,精度越高的編碼器輸出方波的個數(shù)就越多。所以測量單位時間內(nèi)A相輸出的方波個數(shù)就可以知道電機在單位時間內(nèi)轉(zhuǎn)了幾圈,也就是轉(zhuǎn)速。也可以測量B相輸出的方波來測量速度,這里采用四倍頻技術(shù)獲得更高的精度。判別直流電機正反轉(zhuǎn)時,當(dāng)A相“正跳變”時,如果B相是高電平,那么就是正轉(zhuǎn),反之是反轉(zhuǎn)[4]。
GA12-N20編碼直流電機模塊如圖2所示,首先需要P2排座給電機輸入5 V電源,通過圖中U2模塊的AMS1117[5]電壓轉(zhuǎn)換芯片,將5 V電源轉(zhuǎn)換成3.3 V,這個3.3 V電壓主要是為了U1模塊DRV8837電機驅(qū)動芯片進行供電。電機驅(qū)動芯片DRV8837需要輸入兩路PWM信號,可由P2端口提供,再由電機驅(qū)動芯片輸出兩路信號控制編碼直流電機[6]。編碼直流電機轉(zhuǎn)動時,高精度編碼器會輸出兩路脈沖信號,通過P5模塊采集脈沖信號,計算轉(zhuǎn)速。

圖2 編碼直流電機和驅(qū)動模塊
GA12-N20直流電機內(nèi)部有減速比為1∶30的減速裝置,即理論上電機轉(zhuǎn)軸旋轉(zhuǎn)1圈碼盤旋轉(zhuǎn)30圈。碼盤上有兩個開關(guān)型霍爾傳感器,有7個磁點。當(dāng)采集單個開關(guān)型霍爾傳感器的一路脈沖時,碼盤旋轉(zhuǎn)1圈,就會產(chǎn)生7個脈沖信號。所以當(dāng)電機轉(zhuǎn)軸旋轉(zhuǎn)1圈時,碼盤就會旋轉(zhuǎn)30圈,采集一路信號就會產(chǎn)生210個脈沖。
編碼器硬件連接如圖3所示,利用16p排線通過P11端口將核心板與擴展版連接,連接后,通過4p排線將P9端口與P5端口再進行連接,P9端口引出的D0、D1可以對應(yīng)不同的核心板,在這里就是對應(yīng)的P11端口定時器中斷I/O口PI5、PI6,通過查詢數(shù)據(jù)手冊可知,PI5是TIM8_CH1,PI6 是 TIM8_CH2,STM32CubeIDE軟件要按照定時器端口進行配置。

圖3 編碼器硬件連接
如圖4所示,通過4p排線將擴展版中的P10端口與編碼直流電機和驅(qū)動模塊的P2端口連接就可以控制直流電機。A0和A1端口分別對應(yīng)PA5和PA1,這兩個引腳都支持PWM輸出,通過PWM輸出脈沖來控制直流電機。

圖4 直流電機連接
OLED顯示模塊電路主要由4個部分組成,包括OLED 2.42寸液晶顯示屏U5、P1端口、電壓轉(zhuǎn)換電路U4和升壓轉(zhuǎn)換電路U3,如圖5所示。P1是通信顯示接口,U4將5 V電壓轉(zhuǎn)換成3.3 V電壓提供給OLED作為邏輯電平,U3是將5V轉(zhuǎn)換成13V給OLED提供顯示電壓。

圖5 OLED顯示模塊電路
2.2.1 OLED2.42寸液晶顯示屏
在控制液晶顯示屏?xí)r,OLED屏每個像素點都是獨立的,需要為每一個像素點進行賦值。如果直接用單片機通過地址進行賦值,那么屏幕顯示速度非常慢,所以在屏幕上用一個控制器,當(dāng)單片機將數(shù)據(jù)發(fā)送給控制器時,控制芯片直接將數(shù)據(jù)寫入屏幕中呈現(xiàn)出相應(yīng)的圖形。
控制器使用SSD1309控制芯片,它是一款用于有機/聚合物發(fā)光二極管點陣圖形顯示系統(tǒng)的帶控制器的單片CMOS OLE/PLED驅(qū)動器。它有128個段和64個公共區(qū)組成,專為普通陰極型OLED面板設(shè)計。
SSD1309控制器有5種總線接口模式:8-bit 8080、8-bit 6800、3-wire SPI、4-wire SPI和I2C。此時SSD1309控制器中BS1和BS2接地,所以需要通過4-wire SPI進行通信。SPI通信是一種高速、全雙工、同步的通信總線,并且在芯片的管腳上只占用四根線,節(jié)約了芯片的管腳,同時為PCB的布局節(jié)省空間。使用OLED片選信號端CS#、復(fù)位OLED端RES#、命令/數(shù)據(jù)標(biāo)志端DC#(0讀寫命令、1讀寫數(shù)據(jù))、時鐘線 D0(SCLK)、數(shù)據(jù)輸入端 D1(SDIN)。
2.2.2 升壓轉(zhuǎn)換電路
升壓轉(zhuǎn)換電路的作用就是將5 V電壓轉(zhuǎn)換成13 V電壓,利用MT3608升壓轉(zhuǎn)換器來實現(xiàn)。MT3608升壓轉(zhuǎn)換器是一個恒定頻率,6腳SOT23電流模式階躍變換器,開關(guān)頻率1.2 MHz,允許使用微型低成本電容器,該芯片的特點是在輕負載時自動切換到脈沖頻率調(diào)制模式,并且包括低壓閉鎖、限流和熱過載保護。升壓轉(zhuǎn)換電路輸出電壓可以利用式(1)求得。

查詢技術(shù)手冊可知VREF=0.6 V,而電路中R7=10KΩ,R8=470Ω所以計算可得Vout=13.37 V,這樣就實現(xiàn)了升壓目的。
按照系統(tǒng)硬件構(gòu)成在軟件STM32CubeIDE中配置STM32芯片引腳[7],配置時鐘源、時鐘中斷、通道及模式、分頻系數(shù)等參數(shù)保證編碼直流電機和OLED有正確的控制功能。利用參數(shù)配置可以控制電機、OLED的顯示和計算電機的轉(zhuǎn)速。
例如配置定時器輸出PWM信號的步驟如圖6所示。首先將PA5端口配置為“TIM2_CH1”,PA1端口配置為“TIM2_CH2”模式。然后配置TIM2,選擇內(nèi)部時鐘源,通道1和通道2都選擇PWM形式,最后配置定時器的頻率,如圖7所示,這樣PWM信號就配置完成。

圖6 配置PA5和PA1端口

圖7 配置定時器TIM2
車輛運動控制系統(tǒng)的關(guān)鍵是編碼直流電機的轉(zhuǎn)動和OLED的顯示。其中編碼直流電機的轉(zhuǎn)動需要STM32單片機發(fā)出PWM信號給驅(qū)動芯片來控制電機正轉(zhuǎn)、反轉(zhuǎn)和停止,所以要完成PWM比較值的設(shè)定以及OLED顯示程序的設(shè)計。
3.2.1 PWM控制程序
PWM的模式選擇采用向上計數(shù)時,當(dāng)計數(shù)值大于比較值時,輸出高電平,當(dāng)計數(shù)值小于比較值時,輸出低電平。PWM設(shè)定程序如下:當(dāng)value大于零時,將此值賦予通道1并且通道2賦予0,這時就實現(xiàn)電機正轉(zhuǎn)功能;反之value小于零,則將此負值取反變成正值賦予通道2,而通道1賦予0,此時實現(xiàn)電機反轉(zhuǎn)功能。比較值變低時,高電平時間變長,即PWM占空比變大,可以通過調(diào)節(jié)PWM占空比調(diào)節(jié)電機轉(zhuǎn)速;當(dāng)比較值變成0時,整個周期輸出是高電平,此時驅(qū)動芯片輸入兩路高電平,電機就停止。


3.2.2 OLED顯示程序
首先觸發(fā)編碼器定時器,設(shè)定碼盤初始值、電機初始轉(zhuǎn)速、初始速度,通過Get_Motor_Encoder_Val()函數(shù)獲得實時狀態(tài)的碼盤值、電機轉(zhuǎn)速,并在OLED中顯示。

運動小車速度顯示如圖8所示,通過按鍵啟動系統(tǒng),占空比初始值為50%,調(diào)節(jié)占空比可以看出隨著占空比變大,碼盤值變大,速度也變快,車輛控制系統(tǒng)得以實現(xiàn)。

圖8 車輛控制系統(tǒng)顯示
本文通過使用STM32CubeIDE、STM32單片機、編碼直流電機和OLED顯示屏進行軟硬件結(jié)合,進行運動小車的設(shè)計。該系統(tǒng)的設(shè)計是基于STM32CubeMX的開發(fā)模式,這種方法可以根據(jù)應(yīng)用需求使用圖形化配置工具對MCU片上外設(shè)進行配置,然后生成基于HAL庫和LL庫的初始化代碼,最后將生成的代碼導(dǎo)入集成開發(fā)環(huán)境并進行編輯。從以上研究可以看出,利用嵌入式技術(shù),基于STM32的小車設(shè)計,能夠?qū)崿F(xiàn)精準(zhǔn)的速度控制和啟停控制,控制性能優(yōu)越,具有較高的應(yīng)用價值。