無錫科技職業(yè)學(xué)院 史 萍 張 瑾
為了實(shí)現(xiàn)電機(jī)測(cè)速的高性能、低成本、低功耗,本文設(shè)計(jì)了一種基于STM32F103CET6單片機(jī)控制的電機(jī)轉(zhuǎn)速測(cè)量?jī)x,用OLED屏顯示其每分鐘轉(zhuǎn)速和電機(jī)圖片。采用霍爾傳感器接收電機(jī)旋轉(zhuǎn)信號(hào),經(jīng)過上拉處理后送STM32單片機(jī),單片機(jī)用中斷的方式進(jìn)行處理,通過連續(xù)兩次接收到傳感器信號(hào)的時(shí)間差確定每分鐘電機(jī)的轉(zhuǎn)速。該測(cè)速儀便于功能擴(kuò)展、電路結(jié)構(gòu)簡(jiǎn)潔、性能價(jià)格比高、實(shí)用性強(qiáng)。
隨著芯片技術(shù)及其開發(fā)軟件的不斷發(fā)展,許多控制功能可以采用嵌入式技術(shù)來完成,這樣就為電機(jī)的精準(zhǔn)測(cè)速提供了便捷,通過測(cè)速可以反應(yīng)設(shè)備運(yùn)行是否正常以及確定定位精度。本測(cè)速儀把嵌入式STM32單片機(jī)技術(shù)運(yùn)用到電機(jī)測(cè)速系統(tǒng)中,不但可以提高性能,而且還可以降低功耗,進(jìn)而減少系統(tǒng)成本。另外,霍爾傳感器利用磁感應(yīng)測(cè)速抗外界干擾能力強(qiáng)且靈敏度高,進(jìn)一步提高了測(cè)速精度。
電機(jī)測(cè)速儀硬件設(shè)計(jì)框圖如圖1所示,霍爾傳感器模塊將感應(yīng)到的電機(jī)信號(hào)經(jīng)過處理成為脈沖信號(hào),該脈沖信號(hào)作為中斷信號(hào)送STM32F103CET6單片機(jī),單片機(jī)進(jìn)行信息處理,最后送ALIENTEK OLED顯示模塊,該模塊采用8080并行模式,OLED屏顯示中英文漢字、電機(jī)轉(zhuǎn)速和電機(jī)圖片。
圖1 電機(jī)測(cè)速儀硬件設(shè)計(jì)框圖
霍爾傳感器模塊組成如圖2所示,圖中霍爾傳感器型號(hào)為3144,1腳接電源(電源范圍為4.5V至24V,本設(shè)計(jì)選擇5V供電),2腳接地,3腳接10K的上拉電阻連3.3V電源,然后接STM32單片機(jī)的PE2腳。
霍爾傳感器模塊中的霍爾傳感器預(yù)先安裝固定,在電機(jī)的旋轉(zhuǎn)部位安裝導(dǎo)磁性能優(yōu)良的磁鋼,當(dāng)電機(jī)旋轉(zhuǎn)時(shí)將帶動(dòng)磁鋼接近霍爾傳感器,此時(shí)霍爾傳感器3腳將輸出信號(hào)送給單片機(jī),電機(jī)不轉(zhuǎn)時(shí)霍爾傳感器輸出高電平,當(dāng)電機(jī)旋轉(zhuǎn)時(shí)霍爾傳感器接近磁鋼將輸出低電平。
圖2 霍爾傳感器模塊組成
STM32F103ZET6單片機(jī)為中低端的32位增強(qiáng)型微處理器,由意法半導(dǎo)體公司制造,其內(nèi)核基于Cortex-M3即采用哈佛結(jié)構(gòu),運(yùn)用三級(jí)流水線處理機(jī)制并增加了分支預(yù)測(cè)功能,完全基于硬件進(jìn)行中斷處理,中斷處理速度快;最高工作頻率達(dá)72MHz,片內(nèi)Flash為512K,指令運(yùn)行周期短;3.3V供電,為低功耗芯片;該芯片集成了Timer、ADC、SPI,I2C及UART等多種外設(shè)功能,易于功能擴(kuò)展。其端口PA~PG可根據(jù)需要定義成輸入或輸出及多種復(fù)用口,這樣PCB板的設(shè)計(jì)人員不必把某些信號(hào)在板上繞一大圈完成聯(lián)接,既便于PCB的設(shè)計(jì)又減少了信號(hào)的交叉干擾。
圖3 單片機(jī)和OLED模塊插座連接圖
單片機(jī)和OLED模塊插座連接如圖3所示,圖中U3為STM32F103ZET6單片機(jī),J1為OLED模塊連接插座,OLED的片選信號(hào)OLED_CS和單片機(jī)的PD6相連,OLED的寫數(shù)據(jù)信號(hào)OLED_WR和單片機(jī)的PG14相連,OLED的讀數(shù)據(jù)信號(hào)OLED_RD和單片機(jī)的PG13相連,OLED的硬復(fù)位信號(hào)OLED_RST和單片機(jī)的PG15相連,OLED的命令/數(shù)據(jù)標(biāo)志信號(hào)OLED_RS和單片機(jī)的PD3相連,OLED的數(shù)據(jù)信號(hào)D0~D7分別和單片機(jī)的PC0~PC7相連。
圖3中U3的PE2接霍爾傳感器模塊送來的信號(hào)。U3的8腳和9腳間接外部低頻32.768KHz晶振,晶振JZ2和電容C7、C6構(gòu)成晶體振蕩電路。U3的23腳和24腳間接外部高頻8MHz晶振,同樣晶振JZ1和電容C2、C3也構(gòu)成晶體振蕩電路。U3的33腳接電源并對(duì)地接電容作去耦處理,起保護(hù)芯片作用,30腳接地。
圖4 OLED顯示模塊
OLED顯示模塊如圖4所示,圖中OLED1為OLED12864液晶顯示屏,可以顯示128×64個(gè)點(diǎn),J2為OLED顯示模塊插頭,與圖3中的J1配對(duì)使用,OLED1的BS1和BS2分別接J3和J4的TP信號(hào),通過跳線帽短接3.3V電源或地,接電源時(shí)信號(hào)值為‘1’,接地時(shí)信號(hào)值為‘0’,BS1、BS2為不同信號(hào)值代表不同的工作模式,如表1所示,當(dāng)BS1和BS2為“00”時(shí),OLED工作于4線SPI模式;當(dāng)BS1和BS2為“10”時(shí),OLED工作于I2C模式;當(dāng)BS1和BS2為“01”時(shí),OLED工作于8位6800模式;當(dāng)BS1和BS2為“11”時(shí),OLED工作于8位8080模式。本設(shè)計(jì)中OLED模塊采用8位8080工作模式。
表1 OLED模塊工作模式
OLED的優(yōu)點(diǎn)是具備自發(fā)光特性,不需背光源,高辨率為128×64;其使用了非常薄的涂層和玻璃基板,厚度可以做得較薄,可用于撓曲性面板。其缺點(diǎn)是尺寸難以實(shí)現(xiàn)大型化和沒有顯存,它的顯存依賴于SSD1306驅(qū)動(dòng)芯片,顯存大小為128×64位,這些顯存分8頁,每頁包含了128個(gè)字節(jié)。
電機(jī)測(cè)速儀軟件流程圖如圖5所示,先進(jìn)行初始化,然后調(diào)用函數(shù)顯示相關(guān)文字和電機(jī)圖片。當(dāng)STM32第一次接收到傳感器信號(hào)時(shí),定時(shí)器計(jì)數(shù)值清零;當(dāng)接收不到第二次傳感器信號(hào)時(shí),定時(shí)器TIM5溢出;當(dāng)定時(shí)器溢出次數(shù)超過預(yù)設(shè)值時(shí),表示電機(jī)電機(jī)不轉(zhuǎn),顯示轉(zhuǎn)速值為0。當(dāng)?shù)诙谓邮盏絺鞲衅餍盘?hào)時(shí),單片機(jī)讀取定時(shí)器計(jì)數(shù)值TIM5_CNT,此值即為定時(shí)器計(jì)數(shù)總時(shí)長(zhǎng),也就是電機(jī)轉(zhuǎn)1圈所花的時(shí)間,已知通用定時(shí)器的時(shí)鐘為72MHz,則電機(jī)轉(zhuǎn)速的計(jì)算公式為(60×72×106)/定時(shí)器計(jì)數(shù)值。
圖5 電機(jī)測(cè)速儀軟件流程圖
圖5中傳感器信號(hào)作為中斷信號(hào)送STM32單片機(jī)。STM32F103的中斷很強(qiáng)大,每個(gè)GPIO口都可以作為中斷使用,STM32F103ZET6的16條外部中斷線最多可連接112個(gè)GPIO,PA0~PG0共用1條EXIT0外部中斷線,PA1~PG1共用另1條EXIT1外部中斷線,其他IO口共用外部中斷線,以此類推。STM32F103的中斷優(yōu)先級(jí)寄存器NVIC_IPRX用于配置外部中斷的優(yōu)先級(jí),使用IPR的高4bit配置若干種中斷優(yōu)先級(jí),其數(shù)值越小優(yōu)先級(jí)越高,即外部中斷EXIT0優(yōu)先級(jí)最高。中斷編程分四大步驟:(1)配置相關(guān)寄存器使能中斷請(qǐng)求稱為外設(shè)使能,如單片機(jī)接收到傳感器送來的外部中斷信號(hào),這個(gè)中斷由外部中斷控制寄存器的相關(guān)中斷使能位來控制;(2)通過NVIC_PriorityGroup函數(shù)配置中斷優(yōu)先級(jí)分組;(3)配置NVIC寄存器,初始化NVIC_InitTypeDef函數(shù),指定中斷源、搶占優(yōu)先級(jí)、子優(yōu)先級(jí)、內(nèi)核中斷使能或失能;(4)編寫中斷服務(wù)函數(shù)。
以下代碼為主程序,執(zhí)行了延時(shí)、LED端口、TIM5、中斷分組、OLED初始化,調(diào)用若干函數(shù)顯示中英文和圖片,while循環(huán)語句實(shí)現(xiàn)LED燈翻轉(zhuǎn)指示。
圖6 OLED顯示
以下代碼為外部中斷EXIT2服務(wù)函數(shù),當(dāng)?shù)诙谓邮盏絺鞲衅餍盘?hào)后,經(jīng)計(jì)算顯示電機(jī)速度,并清除外部中斷2。
OLED顯示內(nèi)容如圖6所示,顯示了中英文、轉(zhuǎn)速和圖片。OLED顯示屏能顯示128列64行點(diǎn)陣,圖中中文漢字采用14×16點(diǎn)陣,英文采用8×16點(diǎn)陣,圖片采用32×32點(diǎn)陣。
結(jié)語:本設(shè)計(jì)采用嵌入式單片機(jī)STM32F103為控制芯片,利用霍爾傳感器3144進(jìn)行電機(jī)測(cè)速,OLED屏顯示轉(zhuǎn)速信息,實(shí)現(xiàn)電路結(jié)構(gòu)簡(jiǎn)捷,成本低、可靠性高、抗干擾能力強(qiáng)、擴(kuò)展性好,實(shí)踐效果良好。